It's been a very busy month here behind the scenes as I've been working on a fair bit of core technology and maybe of more interest, been doing a lot of preparatory work for starting to shift FOST.3™ to Linux. There's still a long way to go, but the work is paying dividends in forcing a spring clean on a lot of old code.
There are parts of the O/RM layer that haven't been touched for nearly 10 years. Clearly this is very stable code, but ten years is a long time in software development and the new requirements are making us look anew at the key abstractions that are used.
The ADO based database interfaces have always used the COM VARIANT data type to manage data interchange. We now have a stable feature branch that switches this to JSON. This may not sound like a big change, but one thought leads to another and we realised that having a very lightweight JSON database would be a useful addition to FOST.3™ — not least because it greatly simplifies testing of the individual components that make up the systems. This thought lead to yet another and we realise that we can do even better if we abstract out the in-database navigation to also use JSON and something akin to JSONPath to find rows and other result sets.
If this sounds familiar it's probably because it is. CouchDB is an interesting alternative to RDBMSes and has a number of nice properties. By changing our internal abstraction mechanisms we suddenly open up the possibility of using databases like this and Amazon's SimpleDB as an alternative to any flavour of SQL database and it looks like we may be able to do it with minimal impact on the application layer.
This is something that we're pretty excited about. We are however going to need a new name for the O/RM layer as the relational part will become a misnomer :)