In part 2, I listed the products whose production I will write about. In this part, before I delve into the production of the software itself, I thought I'd write a little about why we chose to build the particular products that we did.
One factor was that each company was founded with a small amount of cash and we wanted to avoid having to raise early angel or VC money. This meant that the products had to be prototyped quickly by just one developer (me) and brought to market quickly by a small team (1-6) of ace developers. In addition, we wanted each product to act as a natural springboard to something bigger and better. Last but not least, I am personally interested in software that is general purpose, high volume, and fundamental in nature.
Here's a little bit of history for some of the products:
- Systems<Toolkit>: We were interested in developing a cross-platform distributed computing library. In order to build such a thing, we first needed a cross-platform C++ systems library for things like sockets and threads, since this was in the days before Java. We developed the library and released it as a standalone product in order to produce revenue and get exposure to the C++ developer community. But before we got to building the distributed computing layer on top of Systems<Toolkit>, Java came along and changed our plans, resulting in Voyager.
- JGL: While an early prototype of Voyager was being developed, I decided that it would be good to show that my company was serious about Java. To this end, we wrote JGL and licensed it free of charge to most major computing vendors, including Microsoft, IBM, Sun and Borland. JGL thus became one of the most widely distributed 3rd party Java libraries. The first version of JGL was written and documented in about 5 weeks, and several versions were released afterwards. The testing of JGL was extensive and quite sophisticated, so I'm going to write about it later in this series.
- Voyager: This was developed in Java and was intended to be a product suite for distributed computing, starting with a multi-protocol ORB, then an application server, then a grid services infrastructure. The multi-protocol ORB was released first and was popular with the Java developer community. The Voyager application server was released later, but for a variety of reasons that I don't wish to dwell upon, was not successful in the marketplace.
- Electric XML: This was a high performance, easy to use DOM-compliant toolkit for parsing and manipulating XML.
- Glue: This was a web services platform developed in Java and intended to produce a modest amount of early revenue and market awareness.
- Gaia: Right from the start, the idea was to follow the release of Glue with Gaia, a grid services platform for use by any system built out of web services. When my company was acquired by webMethods, Gaia was renamed to be Fabric.
In most cases, we released a basic unsupported version of the software that was free for most commercial uses, and an advanced supported version that cost money.
The next part of this series will delve into how the products were actually developed.