Published

Tue 25 Oct 2005 @ 11:10 AM

←Home

Project Genesis

A number of years ago (from 1992 to 1995) I worked for a company in Murray, Utah, by the name of Clark Development Company (CDC for short; I mention this just so you don't become confused by my later use of CDC and think it means Centers for Disease Control). While at CDC I started a project I called Project Genesis, which was to become a next generation Bulletin Board System (BBS for short). For those of you not familiar with what a BBS was back in the day, allow me to explain. Back before the Internet was ubiquitous, back before the web, we had BBSes. People would setup a computer with BBS software, a modem, and a telephone line. Then anyone who had a computer, a modem, and a telecommunications program could call the BBS, login, and participate with others in message forums (public messages were like Usenet, private messages were like email), upload and download files (like ftp), chat with the System Operator (SysOp for short), play games ... all sorts of things that we do today on the Internet.

At first, BBSes were just plain text. As time progressed, specialized BBS and telecommunications software appeared and supported more and more features, such as ANSI display management codes. Some were developed that only supported a single platform, but never gained wide use. Other software later came about and added the ability to embed higher resolution graphics. Many BBSes grew very large, with many computers and multiple phone lines, allowing multi-player games and multi-person chat. Many more were just single line operations run as a hobby.

While there were many BBS packages available for the SysOp and many telecommunications packages available for the user to choose from, one thing was almost universally true: all computing took place on the BBS side, and the user side was little more than a dumb terminal with a display and a keyboard. This meant the BBS side was very constrained in how many simultaneous connections it could support, depending on the complexity of the features used by each user.

When I was first hired to work at CDC in May, 1992, it was to assist in the development of a program known as PCBTerm (PCB was short for PCBoard, our BBS product; Term was short for Terminal emulator). The idea behind PCBTerm was to provide a simple, uniform graphical interface to the PCBoard product, to bring telecommunications to the masses. It was a good idea, but it was extremely difficult to accomplish because PCBoard was very configurable, and it was difficult for a program to process the wide variety of forms of unstructured text that a BBS could generate. After about six months on that project, the decision was made to shelve it and move back to BBS development.

Though development on PCBTerm had stopped, I was still interested in the concept. Instead of a special telecommunication program speaking to a stock version of PCBoard, though, my idea was to develop a special BBS to speak to the telecommunication program. They would speak their own 'language', and the user side would be able to offload much processing from the BBS. As it turned out, what I was independently inventing was not unlike the web, with the concept of BBS in place of a web server, and the concept of telecommunications program in place of a web browser. A couple of years later, the project (which I called Project Genesis) was authorized, I was the lead programmer, and we hired some programmers to assist. For a number of reasons, I wound up leaving the company about six months later, and Project Genesis never really went anywhere after that. I don't blame the programmers ... the environment was the problem.

It's been ten years since I left CDC. About eight years ago, they closed their doors. I still think my Project Genesis is a good idea, and have recently been bit by the bug to work on it again. Of course, in the intervening time, a lot has changed. Internet usage has exploded, many standards have been developed for use on the web. What I find missing from the web, however, is the sense of community we had on BBSes. That's not to say there aren't communities on the web; far from it. It is difficult, however, to build a good web site with all the features that were built into those BBS programs of the past, and that work well with the variety of web browsers that are available. It's not impossible, and the web as we know it will not disappear. All that being said, I think there is a place for the BBS. After all, what is AOL if not a large commercial BBS that uses specialized user software to connect over a modem?

So, I hereby declare Project Genesis to be reborn. The name may not stick, depending on what I find out there ... it's harder and harder to come up with good names that aren't already in use by other projects. At the moment, however, I'm not trying to market a product, I'm just working on a project in my spare time for fun. Project Genesis is a great code name for a project in my opinion, especially given my fondness for the Star Trek franchise.

Project Genesis will be based on the familiar client/server model. The client (code named Pinky) and server (code named Brain) will use open standards wherever reasonable. For example, I intend to use Structured Vector Graphics (aka SVG) as the primary graphic format. Support for other formats will be provided, of course, as long as they don't infringe on patents.

Communication will take place between Pinky & the Brain over a protocol similar to IP. 'Why not just use IP?' you may ask. I might. A lot of concrete decisions haven't been made yet. Be that as it may, I want whatever protocol is used to work well over any 'network'. Direct modem to modem connect, null modem cables, or the existing Internet ... all should be usable as the 'physical transport' for whatever protocol I wind up using.

In addition to the special interfaces that will be used between Pinky & the Brain, I also plan to implement internet standard interfaces wherever they make sense. While some functionality may be lost (as compared to Pinky), the Brain should still be useful to standard web browsers, ftp clients, newsgroup and email software.

My first objective is to build a 'proof of concept', as it were, where I can setup a simple server that will accept connections from a simple client and transmit data for the client to display. I want to implement at least two forms of 'physical transport'; my thoughts are to implement one or two IP based protocols (TCP and/or UDP) in addition to a 'shared memory' transport. Once the server can utilize abstract physical transports (allowing easy future extension), I'll move on to other subprojects.

More to come...

Go Top