| VCS | Research work | P2P-Base (recent) | Coin Based Storage | Minor products/projects | File Synching Software | Cloud Services | Other P2P | File Systems | Cloud Services | CMS/DAM | Context Storage | Network FS | Other | ||||||||||||||||||||||||||||||||||
| SOS | git | mercurial | CVS | Subversion | OceanStore/Pond | Self-certifying file system | PAST | IPFS | Perkeep | MaidSAFE/Safenet - with Safecoin | Tahoe-LAFS | Keybase FS | FileCoin | SIA | StorJ | Ethereum's Swarm | libchop | Peergos | Upspin | git-annex | synchthing | RSync | Dropbox | Google Drive | OneDrive | Creative Cloud | Resilio Sync (prev was BitSync) | ext(2/3/4) | ZFS | FAT | AWS S3 | Rackspace COS | Alfresco | Drupal | Joomla! | Gaia FS | WinFS | Semantic FS | quFiles | AFS | NFS | SMB/CIFS | Google File System | Hadoop | Apple Time Machine | ||
| OpenSource | Y | Y | Y | Y, but URL not available | Y | Y | ? | Y | N | Y | Y | Y | Y | Y | N | N | N | N | N | Y | N | N | N | Y | N | ||||||||||||||||||||||
| Source Code | https://github.com/stacs-srg/sos | https://www.mercurial-scm.org/repo/hg | https://github.com/ipfs/go-ipfs | https://github.com/perkeep/perkeep | https://github.com/tahoe-lafs/tahoe-lafs | https://github.com/ethereum/go-ethereum/tree/swarm/swarm | https://github.com/gitGNU/gnu_libchop | https://github.com/Peergos/Peergos | https://github.com/syncthing | ||||||||||||||||||||||||||||||||||||||
| Website | https://stacs-srg.github.io/sos/ | https://git-scm.com/ | https://www.mercurial-scm.org/ | https://ipfs.io/ | https://perkeep.org/ | https://tahoe-lafs.org/ | https://syncthing.net/ | ||||||||||||||||||||||||||||||||||||||||
| Documentation | https://ipfs.io/docs/ | https://perkeep.org/doc/ | https://maidsafe.net/docs/Safe%20Network%20Primer.pdf | http://tahoe-lafs.readthedocs.io/ | https://github.com/ethersphere/swarm | https://docs.syncthing.net/ | |||||||||||||||||||||||||||||||||||||||||
| More documentation | https://github.com/ipfs/specs | ||||||||||||||||||||||||||||||||||||||||||||||
| Notes | based on IPFS | https://ethereum.stackexchange.com/questions/2138/what-is-the-difference-between-swarm-and-ipfs | based on IPFS | ||||||||||||||||||||||||||||||||||||||||||||
| Distributed Model | distributed | distributed | distributed | client-server | client-server | distributed | distributed | distributed | distributed P2P | client-server | |||||||||||||||||||||||||||||||||||||
| Location Abstraction | Unstructured P2P (but can support DHT) | ndoes specified in configuration | DHT - Tapestry | DHT - Pastry | DHT - Kademlia | DHT | User ad-hoc setup of nodes | ||||||||||||||||||||||||||||||||||||||||
| Data Type | Immutable | Immutable + staging phase (mutable) | Immutable + staging phase (mutable) | read-only data (immutable) and changeable data (mutable) | immutable | mutable and immutable | immutable | ||||||||||||||||||||||||||||||||||||||||
| Data representation | atoms | blobs, content-addressed | block | file and bytes (collection of blobs) blob types | |||||||||||||||||||||||||||||||||||||||||||
| De-duplication | Y | Y | Y | Y | Y | Y | Y (with convergence secret) | Y | Y (per user) | N | N | Y | |||||||||||||||||||||||||||||||||||
| Object Sharding | Not by default | Y | Y | ||||||||||||||||||||||||||||||||||||||||||||
| Packing | N | Y | Y (via the file revlog format) | ||||||||||||||||||||||||||||||||||||||||||||
| Compression | Y | ||||||||||||||||||||||||||||||||||||||||||||||
| Object ID | Multiformat | SHA-1 (migrating to SHA-256) | Numbers (local to repo) and SHA-1 (for revlog, < 0.9v) and SHA-256 (for revlogNG, >= 0.9) | numbers | numbers | SHA-1 or hash(name + pub_key) for mutable data | Multiformat | SHA-256 (with blobref format) | |||||||||||||||||||||||||||||||||||||||
| data integrity | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||||||||||||||||
| erasure coding | via contexts | N | N | N | N | active data and archival data | Y | ||||||||||||||||||||||||||||||||||||||||
| Concurrency Model | Should be supported at the application level | Merge | Merge | Merge | Merge or lock | ||||||||||||||||||||||||||||||||||||||||||
| data sharing semantics | immutable | immutable | immutable | immutable | immutable | immutable | immutable | immutable | immutable | ||||||||||||||||||||||||||||||||||||||
| Data replication | via contexts | manually | |||||||||||||||||||||||||||||||||||||||||||||
| Blockchain | N | N | N | N | N | N | N | N | N | Y | N | N | Y | Y | Y | Y | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | |||||
| Links | Y (by GUID refs) | Y (see IPLD) | Y (symlink) | ||||||||||||||||||||||||||||||||||||||||||||
| Data Aggregation | Compounds | Tree | manifest revlog | list (ordered), tree | directory | ||||||||||||||||||||||||||||||||||||||||||
| Metadata support | with notes and/or commits | ||||||||||||||||||||||||||||||||||||||||||||||
| Versioning support | Y | Y | Y | Y | Y | Y | Y | Y | N | N | N | N | N | N | N | N | N | N | Y | ||||||||||||||||||||||||||||
| Diff storage | Snapshot: via de-duplication of small blobs | deltas (neighbour deltas are merged from time to time to avoid too many deltas being applied) | deltas | deltas or snapshot | |||||||||||||||||||||||||||||||||||||||||||
| Network Protocol | http | gif (w/wo ssh), HTTP, HTTPS, rsync, email, bundles | custom, HTTP, email | pserver, ssh | svn (w/wo ssh), HTTP, SSL (with WebDAV) | Bitswap, HTTP | |||||||||||||||||||||||||||||||||||||||||
| API | REST | REST - https://ipfs.io/docs/api/ | Y | Y | Y | REST, SOAP | |||||||||||||||||||||||||||||||||||||||||
| Signed requests | Y | Y | Y | ||||||||||||||||||||||||||||||||||||||||||||
| User model | Y | Y (committed/authort) | ? | Y | Y | Y | Y | ||||||||||||||||||||||||||||||||||||||||
| Data protection/encryption | Y | N | N | N | N | Y | Y | ||||||||||||||||||||||||||||||||||||||||
| Granular Protection | Y | N | N | N | N | Y | |||||||||||||||||||||||||||||||||||||||||
| Capabilities | N | N | Y | ||||||||||||||||||||||||||||||||||||||||||||
| Data/Metadata signing | |||||||||||||||||||||||||||||||||||||||||||||||
| Automatic File Classification | via contexts | Y (w contexts) | Y | N | N | N | N | N | N | ||||||||||||||||||||||||||||||||||||||
| Smart folders | Y | Y | Y | Y | N | N | N | N | N | N | |||||||||||||||||||||||||||||||||||||
| Automatic File Management | via contexts | ||||||||||||||||||||||||||||||||||||||||||||||
| Useful links | |||||||||||||||||||||||||||||||||||||||||||||||
| https://en.wikipedia.org/wiki/Comparison_of_file_hosting_services | |||||||||||||||||||||||||||||||||||||||||||||||
| https://en.wikipedia.org/wiki/Comparison_of_version_control_software | |||||||||||||||||||||||||||||||||||||||||||||||
| https://en.wikipedia.org/wiki/Comparison_of_file_synchronization_software | |||||||||||||||||||||||||||||||||||||||||||||||