SpliceFS GitHub

How SpliceFS compares

SpliceFS aims to become a complete distributed filesystem. Today it is step one of that road: a read-only share where a reader pulls the same files from several servers at once. The other systems on this page are mature. This page says plainly what each one aims to be, and how far along it is.

Where SpliceFS is today

  • It is alpha software. The first 0.x versions are published; none has run in production.
  • It has never run in production. Its own tests are the only proof that it works.
  • Its protocol and its configuration may still change.
  • It only reads. Writing, file locks and keeping copies in step are plans, not features.
  • Its access control is basic: users with a password and a list of shares.
  • Nobody outside the project has reviewed its security, and no speed measurements are published.
  • It runs on Linux and macOS. There is no Windows version.

It does not replace any system on this page today. If you need something to depend on now, use one of them.

Side by side

The other systems are described as they are usually deployed. Each has options this table leaves out. The row titles and the SpliceFS column stay in place. Scroll the rest sideways, or tap a system to put it next to SpliceFS.

Next to SpliceFS:
This projectNetwork sharesCluster filesystemsPeer to peerCloud storage tool
SpliceFS
Aims to beA complete distributed filesystem: read and write, cohorts of servers like RAID, transactional changes, distributed locks, full POSIX behavior, the same for local and remote clients, with data kept where you choose. Read-only is step one.The standard network file share of Unix systemsThe standard network file share of Windows and officesA complete filesystem on a self-healing storage cluster, at any sizeA scale-out filesystem on ordinary servers, with no metadata serverA fixed set of files shared by a swarm of peers, mounted as a folderFast peer-to-peer sync of folders between devices, with no central serverOpen, private, continuous sync of folders between your own devicesOne tool to copy, sync and mount files on any cloud storage
Where it is on that roadStep one, alphaA read-only share today. Works end to end in its own tests on Linux and macOS. Never released, never run in production.MatureDecades in production. Built into every major operating system.MatureDecades in production. Built into Windows, macOS and Linux.MatureRuns very large production clusters. Takes a skilled team to operate.Mature, slowingYears of production use. Development slowed after Red Hat ended its product in 2024.Proven protocol, small toolsThe protocol is proven at huge scale. The tools that mount it as a folder are small projects.MatureA commercial, closed-source product in wide use since 2013.MatureOpen source, in wide use for more than ten years.MatureOpen source, in wide use since 2012, with more than 70 storage services.
WritesNot yetRead-only is step one. Read and write is planned.YesYesYesYesNoRead-only, and the set of files is fixed when the torrent is made.YesTwo-way sync.YesTwo-way sync.YesA mount writes through a local cache.
File locksNot yetDistributed locks are planned.YesYesYesYesDoes not applyNothing can be changed.NoTwo edits at once make a conflict copy.NoTwo edits at once make a conflict copy.NoNo locks between clients.
POSIX behaviorReading onlyReading works like a local folder. Full POSIX behavior is the aim.CloseClose to a local filesystem, with known gaps.PartlyWindows rules first. POSIX extensions on Linux.CloseClose to complete.CloseClose to complete.Reading onlyReading works like a local folder.Does not applyThe files are ordinary local files.Does not applyThe files are ordinary local files.PartlyA mount covers the common cases, not all.
Files stay plain filesPlain filesOrdinary files in ordinary folders on each server. Nothing to import or convert; the server only reads them.Plain filesOrdinary files on the server's own filesystem.Plain filesOrdinary files on the server's own filesystem.Own storageFiles are split into objects inside Ceph's own store. Data must be copied in and can only be read back through Ceph.Mostly plainReplicated volumes keep ordinary files on each server, with extra attributes. Dispersed volumes keep encoded pieces.Plain, plus a torrentOrdinary files at the peers, plus a torrent file that must be made from them first.Plain filesOrdinary files in ordinary folders, plus a hidden folder for its own records.Plain filesOrdinary files in ordinary folders, plus a hidden marker and its own index.By serviceWhatever the storage service keeps: objects in a bucket or files on a server. Encoded only if you turn on its encryption.
Reads without a full local copyYesStreams on demand.YesYesYesYesYesFetches pieces on demand.PartlySelective sync, in paid editions.NoEvery device holds a full copy of what it syncs.YesA mount streams on demand.
Caches what you read on local diskBuilt inKeeps the blocks you read, within limits for size, age and free space. Fully cached files can be read with no server reachable.OptionalNot by default. Linux can add a disk cache with a separate service.Windows onlyOffline files on Windows. Not on other systems.OptionalMemory by default. A disk cache can be added on Linux.Memory onlyMemory caches only.Built inKeeps the pieces it has fetched.Does not applyIt keeps full copies, not a cache.Does not applyIt keeps full copies, not a cache.Built inA mount can keep what it reads, within limits for size and age.
One file read from several sources at onceYesThe one job it does today. Shown in its tests, not yet in production.NoNot in the usual setup. Parallel NFS needs servers built for it.NoMultichannel adds network paths to the same server.YesInside the cluster: a file is spread over many storage daemons.PartlyDispersed volumes read from several servers. Replicated volumes read from one.YesFrom every peer that has the pieces.YesFrom every device that has the file.YesPulls blocks from several devices.NoSeveral streams, all from one source.
A source fails during a readContinuesThe read continues from the other servers. Tested, not yet proven in production.WaitsThe read waits until the server is back.DependsThe read fails or reconnects. Failover needs a server cluster.ContinuesThe cluster serves the data from another copy.ContinuesThe client continues from another copy.ContinuesThe read continues from other peers.ContinuesThe transfer continues from other devices.ContinuesThe transfer continues from other devices.RetriesIt tries the same source again.
Keeps the copies in stepNot yetToday another tool must do it. Cohorts of servers, like RAID, are planned.Does not applyThere is one copy.NoReplication is a separate Windows service.YesBuilt in.YesBuilt in.PartlyFor a fixed set of files. Any change needs a new torrent.YesIts whole job.YesIts whole job.On demandWhen you run a sync.
Notices a wrong or damaged copyPartlyCompares size, modification time and a digest of the start of each file. No checksums of the whole content yet.Does not applyThere is one copy.Does not applyThere is one copy.YesChecksums on stored data and regular scrubbing.PartlyBit-rot detection is optional.YesEvery piece is checked against its hash.YesEvery piece is checked against its hash.YesEvery block is checked against its hash.PartlyChecksums where the storage service has them.
Readers see changes to the filesYesAfter the listing cache expires, 30 seconds by default.YesYesYesYesNoA torrent is a snapshot.YesAfter the sync.YesAfter the sync.YesAfter the directory cache expires.
Choose where the data livesNot yetPlanned for a file, a directory or a whole cluster.Does not applyOne server.Does not applyOne server.YesPlacement rules by location, set per directory.PartlyPer volume, and replication between sites.NoWherever the peers are.PartlyPer folder: you choose the devices.PartlyPer folder: you choose the devices.PartlyPer path: you choose the storage service.
Access controlBasicUsers with a password and a list of shares each. No groups, no per-file permissions, no directory service. More is the work of versions 0.x.FullUnix permissions and ACLs. Kerberos for real user identity.FullUsers, groups and ACLs, with Active Directory.FullKeys limited to paths, plus Unix permissions.FullUnix permissions and ACLs, and client address lists.NoneAnyone who has the torrent can read it.Per folderKeys per folder: read-only, or read and write. Users in business editions.Per devicePer folder and device, with send-only and receive-only folders. No users.From the serviceWhatever the storage service has.
Encryption in transitOn by defaultTLS, on by default. A new server makes its own certificate, which clients do not trust until you install a real one or put a proxy in front.OptionalKerberos privacy, or RPC over TLS.OptionalSMB 3 encryption.OptionalThe secure mode of its protocol.OptionalTLS.WeakOptional obfuscation only, not real secrecy.Always onAlways onTLS.UsuallyHTTPS or SSH for most storage services.
Use across the internetYesOne HTTPS port, directly or behind a reverse proxy.NoNot advised without a VPN.NoNot advised without a VPN. Port 445 is widely blocked.NoReaders must reach every daemon of the cluster.NoReaders must reach every storage server.YesBuilt for it.YesRelays and trackers get through firewalls.YesDiscovery and relays get through firewalls.YesBuilt for it.
Monitoring and admin toolsMinimalA status command and logs. Nothing more yet. This is the work of versions 1.x.RichMature tools in every operating system.RichMature tools, strongest on Windows.RichDashboard, metrics and orchestration.RichCommand line tools and metrics exporters.MinimalWhatever the client program shows.By editionThe app. A management console in business editions.GoodWeb interface, API and metrics.GoodStatistics, a remote control API and metrics.
Runs onTwo systemsLinux and macOS. No Windows. No FreeBSD package yet.EverywhereEvery major operating system.EverywhereEvery major operating system.Mostly LinuxLinux servers. Clients for Linux and Windows.LinuxTwo systemsLinux and macOS, through FUSE.EverywhereWindows, macOS, Linux, NAS devices and phones.Almost everywhereWindows, macOS, Linux, BSD and Android.EverywhereWindows, macOS, Linux and BSD.
Protocol on the wireHTTPS: JSON listings and HTTP byte rangesNFS over RPC, port 2049SMB, port 445Ceph's own protocolGluster's own protocolBitTorrent, with trackers or a distributed hash tableIts own, built on BitTorrentIts own Block Exchange Protocol, over TLSThe protocol of each storage service: S3, SFTP, WebDAV and others
What runs on the serversOne program. No database, no cluster state, no quorumThe kernel's NFS server and its helper daemonsSamba or Windows Server, often with a directory serviceMonitors, managers, metadata servers and storage daemons, with a quorumA management daemon and a process per storage folder on each serverAny BitTorrent client that seeds the filesNothing central. The app on every deviceNothing central. Syncthing on every deviceNothing of its own. It uses the storage service

Where SpliceFS is headed

Read-only is step one. None of the following exists yet; it is what the project is building toward.

The plan by version

These are plans, not features. The 0.x line has started: its first versions are published as packages.

What is built so far

The design keeps to three aims. The grey lines say what is still missing.

When to use something else

Today, in most cases. Use NFS or SMB for a normal shared folder. Use CephFS or GlusterFS when the storage system itself must keep copies in step. Use Syncthing or Resilio Sync to keep full copies of a folder on several devices. Use Rclone to reach cloud storage. Use BitTorrent to hand a fixed set of files to many people. SpliceFS is worth a look today only if you want to read the same live folder from several servers at once across the internet, and you can accept alpha software.