Today marks a significant milestone in the evolution of the Bitmunk peer-to-peer commerce platform. The software release that went live earlier today is the culmination of over 26 months of development, hundreds of thousands of lines of code writes and re-writes and the dream of a small group of us that are trying to fundamentally change the way people buy and sell digital goods on the Internet.
On the surface, Bitmunk looks much like a web-based digital content store specializing in MP3 music sales. People can come to the site and purchase songs and albums for very competitive prices (cheaper than iTunes and Amazon.com).
There is, however, a deeper history and a grander goal for Bitmunk. This blog post outlines why today’s software release is such a significant step towards that goal. We are creating an open, standardized, Internet-scale peer-to-peer commerce infrastructure for the purchase and sale of digital goods. This mechanism, dubbed Collaborate Content Distribution, would allow anything digital to be found, bought and then re-sold via your web browser. This technology shifts the purchase of music, movies, television, books, and any other sort of digital good from being a purely corporation-to-consumer experience to a peer-to-peer experience.
If we’re successful, Bitmunk will help bloggers, artists, writers, tweeple, actors, novelists, and many other people that produce creative and knowledge-industry based content to make a living doing what they do best, without all of the barriers to distribution that have existed to date.
The idea behind Bitmunk started in early 2003 as the “Secure File Distribution Network”. The goal of the system was to guarantee that people who didn’t necessarily know each other could legally trade digital goods online. For example, exchanging music for cash.
The Bitmunk 1.0 release was merely a proof of concept, it demonstrated something that even we were skeptical of at the time. Keep in mind that the iTunes music store didn’t exist when Bitmunk was conceived. The idea that you could transact money in a peer-to-peer environment was, and still continues to be, a novel concept. We launched with around 12,000 songs and allowed people to buy and sell digital content from each other, albeit in a very clumsy manner.
A number of mistakes were made with the first version of the software. Bitmunk 1.0 was a prototype, after all. The biggest mistake we made was writing the software in Java. We also depended heavily on SOAP for the remote procedure call mechanism. We required Tomcat, an awfully bloated web application server. The total download size of Bitmunk 1.0 was roughly 185MB, including the Java runtime and Tomcat. This ensured that only the most die-hard enthusiasts would even install our software, much less use the product.
Bitmunk 1.0 also suffered from a number of usability bugs, such as not working from behind a firewall without manually opening a port on the firewall and various UI annoyances. The first release achieved a proof-of-concept, but we needed to make buying and selling easier.
Development on Bitmunk 2.0 was started to solve the problems listed above…
Over the next 18 months, we spent a great deal of time tweaking the graphical interface, reducing the software distribution size in half, and making peer-to-peer buying and selling easier. Bitmunk 2.0 was a large number of incremental changes that made the whole purchase/sales process easier. Java continued to plague development with its, for lack of a more technically accurate term, abysmal suckitude. It was slow (speed), bloated (size) and the emerging mobile market started to convince us that even if we were to cut the software distribution size by ten times that we would still not be able to release onto any sort of small form factor device.
After the realization that the Bitmunk 2.0 software was not a good candidate for Internet-based distribution, Dave Longley, our CTO, started a side-project to try and port Bitmunk to C++. After several months of very long work weeks, he produced something that would become the core of the Bitmunk 3.0 software system. Mike Johnson, our COO, focused on making the website design, purchase process, and customer support more unified. Dave Lehn, now our lead research scientist, teased out a number of new technologies that would allow us to embed and operate the software in modern web browsers and mobile phones.
The Bitmunk 3.0 development process was excruciatingly long, very involved and demoralizing at times. We were committed to developing the technology that would become an Internet standard. Every problem and corresponding technical solution was given serious consideration with regard to speed, size, scalability, and correctness before being implemented.
We focused on a core, highly-portable C++ architecture that would work on Linux, Windows and Mac OS X. We dropped SOAP in favor of a JSON-based remote procedure call mechanism. The Java windowing toolkit was dropped in favor of a cross-browser, AJAX-based HTML interface. The core C++ back-end code would run as a highly efficient micro-HTTP server capable of processing more than 400,000 simultaneous connections. TLS encryption and digital signatures would round out the security model.
In the end, we were successful in re-creating most of the functionality of the original software and were closing in on our long-term goal of embedding our software in web browsers and mobile devices. The release of the Bitmunk 3.0 software last year enabled us to switch over to the C++ software for all of our internal and web-facing software and services.
The Bitmunk 3.1 software will be the first release of the peer-to-peer software for web browsers…
While the Bitmunk 3.0 code replaced all of our back-end and web-facing services, we had long retired the Bitmunk 2.0 peer-to-peer client. The software transition between the Bitmunk 2.0 P2P client and Bitmunk 3.1 P2P client was not a smooth one. There was a good 18 month chunk where Digital Bazaar didn’t have a functional P2P client.
Thankfully, that changes today. Bitmunk 3.1 is the first public in-browser P2P commerce engine.
- Simple – integrating cleanly with Firefox – a one-click install process.
- Fast – micro-kernel HTTP server architecture capable of processing 400,000+ simultaneous jobs.
- Native – runs natively in Windows, Linux and Mac OS X.
- Tiny – the software distribution is 1.7MB (Linux), 1.9MB (Mac OS X), and 4.8MB (Windows) – smaller than a single MP3 song.
- Groundbreaking – micro-payment swarming (micro-transactions that pay cash to each participant in a file swarm).
- Standards-based – we’ve gone to great lengths to re-use existing standards such as HTTP, TLS, JSON, and XML. We will be releasing the source code and protocols for interfacing with the Bitmunk software in the coming months, just like we did for the Bitmunk 1.0 and 2.0 Java software.
- Extensible – the Bitmunk software is composed of plugins, and extending Bitmunk is as simple as writing another plugin.
This is still a beta release, so no firewall port auto-configuration or sales support yet, but those features are coming soon. Sales support is slated for Bitmunk 3.2 and firewall port auto-configuration for the release after that. We also have some plans for creating a mechanism to detect RDFa semantic objects, like music, movies and television.
So, what are you waiting for? Go and grab a free copy of Bitmunk 3.1 Beta today and tell us what you think.