November 2008

Created 30th November, 2008 06:38 (UTC), last edited 30th November, 2008 07:30 (UTC)

It finally had to happen, the long promised open sourcing of FOST.3™ has stared. Well, actually, in a way it hasn't started — what has started is that we're putting out a new version, Fost 4, which is the open sourced port of the code so that it will run on both Windows and Linux.

All source code is available in our subversion repository. Something like the following should perform all the necessary steps to build the base system — the respository user name is guest with a blank password.

Linux
$ mkdir fost4
$ svn co svn://svn.felspar.com/public/fost-base/stable fost-base
$ cd fost-base
$ ./build

Packages required (at least on Ubuntu) include at least:

  • libssl-dev (cryptographic functions)
  • uuid-dev (GUID generation)
  • valgrind (testing)
Windows
> mkdir fost4
> svn co svn://svn.felspar.com/public/fost-base/stable fost-base
> cd fost-base
> build

This will build using MSVC 8 (the version with Visual Studio 2005). If you're using another compiler you will probably need to build your own version of OpenSSL.

The instructions above will build the core files. There are also a couple of examples. Of interest within the libraries are:

  • A program configuration database which allows software configuration to be embedded in the source and then overridden through configuration files and then the command line.
  • A Unicode string which wraps either std::string or std::wstring depending on platform, but provides a consistent Unicode interface.
  • A JSON library including a Boost.Spirit based parser.
  • Some wrappers for (so far) a small part of OpenSSL's functionality.
  • A test framework.

There are also a couple of branches that might be of interest. The first is inet where we are starting to port across the Internet protocols (we're switching to Boost.Asio, away from the FOST.3™ networking library) and dbschema where we are starting to build a new and improved O/RM (which will feature better support for dynamic models and non-RDBMS backends).

We also have some proof of concept Python bindings for the cryptographic library and the program configuration database. We're also looking at JavaScript language bindings to give us another scripting language. We also have an interesting new HTML templating system in design called Spruce which will allow for templates to be embedded directly into a variety of programming languages in the form of a cross-language DSL.

By the time we've fully ported everything we'll have available a full web application stack that can use a large variety of persistent storage mechanisms from flat files to relational databases as well as more esoteric databases like CouchDB and you will be able to program web applications in a large variety of programming languages always choosing the best for any given task.