Hofstadter's Law states that anything takes longer than you expect, even if you take Hofstadter's Law into account. I guess the development path of Sesame 2 is a textbook example of this principle in action.
On the bright side though, we are making good progress. The last alpha release was already shown to be quite mature. The next release will definitively freeze the APIs (and be called beta1). Real Soon Now. Honest.
The query algebra in Sesame 2 is IMHO an interesting piece of work: it allows us to map both SPARQL and SeRQL to an algebraic representation of a query. Query evaluation strategies can then ignore the specifics of the query syntax and just concentrate on manipulating the algebraic expression. Thanks to David Huynh, the object model has now been extended with operators for aggregate operations as well. This has not been fed back into the actual query languages yet, so that remains a ToDo.
I'm also quite pleased with they way in which the APIs have developed. It has taken several thinks and rethinks but the current way in which a user communicates with Sesame is both powerful and easy to use. The web client app is finally taking shape as well (I hope to show that in action soon).
We've also learned a lot about managing an (open source) project in the past few months. Our development environment has undergone some drastic changes: we switched from sourceforge CVS to our own SVN server, and we have started using maven to handle project management. Sesame is no longer a monolothic project but instead consists of about 33 modules, each of which can be checked out and edited separately. Sounds convoluted but it has a number of advantages, including the fact that we can very easily manage dependencies between different versions of parts of the code, and have made a very clear distinction between apis and implementations. This makes the whole framework a lot more extensible, flexible, and reusable. Which is sort of the point of a framework of course :)