Updates
The long-anticipated filestore was added in 0.4.7. Now you can upload files without (significant) increase in hard drive usage.
Enable it with the command:
ipfs config Experimental.FilestoreEnabled true
And restart your daemon. Now you can add files with:
ipfs add --nocopy
It averages out to about 1MB of new data for 1GB of files added, so it's now feasible to share an entire hard drive - but it will take a while to process. I don't recommend you add too much at once, as I found you must run garbage collection to shrink your filestore.
0.4.8 released.
An experimental implementation of directory sharding is now an option. It greatly improves performance with very large directories.
Enable it with the command:
ipfs config --json Experimental.ShardingEnabled true
And restart your daemon.
WARNING: It will change hashes and is not backwards compatible with earlier versions. Only 0.4.8 users can access these files!
NAT port mapping, the infamous router-killing feature, can now be disabled with a config option.
Not really sure how to disable it, though. Here's the PR for reference. github.com
Filestore utilities have been added.
filestore ls allows you to see which files are in your filestore and what their hash/locations on disk are.
filestore verify checks a hash to see if the file is available to seed.
filestore dups finds files in your filestore that are also in your block storage - files not added with the --nocopy option - so you can remove them.
tl;dr for Beginners
How it Works
When you add a file, the files are cryptographically hashed and a merkle tree is created. These hashes are announced by the IPFS client to the nodes in the network. (The IPFS team often describes the network as a "Merkle forest.") Any user can request one of these hashes and the nodes set up peer connections automatically. If two users share the same file then both of them can seed it to a third person requesting the hash, as opposed to .torrent files/magnets which require both seeders use the same file.
FAQ
It's about as safe as a torrent right now, ignoring the relative obscurity bonus. They are working on integration with TOR and I2P. Check out libp2p if you're curious.
Finding a seeder can take anywhere from a few seconds to a few minutes. It's slowly improving but still requires a fair bit of optimization work. Once the download starts, it's as fast as the peers can offer, just like a torrent.
You be the judge.
It has implementations in Go (meant for desktop integration) and Javascript (meant for browser/server integration) in active development that are functional right now, it has a bunch of side projects that build on it, and it divides important parts of its development (IPLD, libp2p, etc) into separate projects that allow for drop-in support for many existing technologies.
On the other hand, it's still alpha software with a small userbase and has poor network performance.
Websites of interest
gateway.ipfs.io
Official IPFS HTTP gateway. Slap this in front of a hash and it will download a file from the network. Be warned that this gateway is slower than using the client and accepts DMCAs.
ipfs-search.com
Search IPFS files. Automatically scrapes metadata from DHT.
glop.me
Pomf clone that utilizes IPFS. Currently 10MB limit.
Also hosts a gateway at gateway.glop.me which doesn't have any DMCA requests as far as I can tell.
ipfs.pics
Image host that utilizes IPFS.
github.com
Milestones for 0.4.9. Get a sneak peek of the next version's features.