Tombstone
ZNetFS (File Sharing Accelerator)
Dec 2000 โ May 2001 ยท age 18โ19
What it was
A multi-source file transfer client, built as a product called File Sharing Accelerator. The index ran as PHP3 scripts over HTTP; transfers went peer to peer. The client scanned shared folders on an idle thread, hashed each file with MD5, and received a network-wide id, so identical content on two machines was one file with two sources. A download pinged every holder, sorted them by latency and launched threads that each claimed the next free chunk from a shared bitmap, verified it by CRC and wrote it in place. The bitmap was saved to disk so an interrupted download resumed. Uploads were throttled fairly per connection. Around it: a tray icon, a license dialog, a version gate and an ad pane. The server side did not survive.
Wins, for the age
- At nineteen, as its only programmer, Jeff shipped a beta that swarmed chunks from many peers through a resumable have-and-claimed bitmap months before BitTorrent shipped in 2001. Not a rediscovery: this dirty monkey was early.
- Identified files by content hash so every holder became a source, concurrent with eDonkey2000's hashing of 2000, and sampled large files for fast identity at the same time Kazaa's FastTrack did in 2001.
- Sixteen thousand lines in five months, a first project under source control, and software treated as a business.
- Worker threads never touched the UI; they posted messages and let the view repaint on its own thread.
What it taught
- Multithreaded networking: per-connection threads, framed binary messages with length prefixes and checksums, and the difference between sent and surely sent.
- Identity functions need collision tests on real data. The sampled hash read a stale length, so every file over 10 MB hashed the same and got the same id.
- TCP does not deliver a message in one read. Every length-prefixed body assumed it would.
- Packaging can outrun security. Stored credentials used a reversible encoding and the chunk server accepted anyone.
Genealogy
Ancestors: Zen Net: the first client, server and hand-built protocol, a year earlier. Descendants: File Sharing Accelerator: the same product rebuilt as a larger second-generation client. Async Serialization: framed socket messages, generalized into one channel interface. Play Workspace: a frame protocol and durable state behind a live service. Adama Net: framed peer messaging, grown into a cluster.
Epitaph
Here lies File Sharing Accelerator, which pulled every file from every peer at once, sold ads before it sold anything, and never learned that all its large files were the same file.