Hi,

Now that v1.2 is out of the door, what should we work on for v1.3? Here is a list of potential things. Most of the things here are based on my experience from Streamflow, i.e. things that are really useful to have in real projects.

First off, some things I want to backport from Streamflow into Qi4j:
* FileConfigurationService - service that determines where to put files in a filesystem, based on platform defaults. With this service it becomes much easier to know where application data, configuration and logs should be placed * JMX services - extract the current JMX helpers from the REST extension into their own library. From Streamflow we also have a service that exports configurable services into JMX so they can be easily edited there (VERY useful!!!), and a JMX remote connector
* DataSources - service for instantiating and configuring DataSources
* LiquiBase - wrapper service for LiquiBase, to do RDBMS refactorings
* Eventstore - API and backend for storing events for EventSourcing. Currently based on JDBM, which works, but is not optimal perhaps * Solr query/indexing - Solr implementation of Query/Index SPI. This gives you free-text searching in your domain model. * REST/CQRS API - Based on Restlet, this makes it easy to construct full REST API's (with HATEOAS) and also enables DCI as the application layer in an app. Comes with client as well. * Console - BeanShell console that can be exposed through Restlet. Handy for debugging the domain model and administrative commands
* Probably some more things I can't think of right now

All in all, a nice set of features that would be useful in any real-life project.

Then there are some things that we need but have not yet started:
* Circuit breaker library - for every external services (email, database, LDAP, webservice) we want to use the circuit breaker pattern (look it up). We need a simple library that can do this, and expose it in JMX for management tools to monitor/configure/reset. This is crucial to handle production issues, and track the health of an application. * Active -> Available - currently it is possible to check if a service in Qi4j is "active". In practice I've found that it's not really all that useful, and what is instead needed is to check whether it is "available", meaning, if I call it, will it respond? This goes hand in hand with the circuit breaker library for external services, but for internal services it is also useful since many of my services have an "enabled" configuration property, which when false should be able to tell service users that the service is unavailable at the moment.

Apart from the above, there's a couple of NOSQL datastores that we could easily add support for (it seems). I looked at CouchDB the other day, and it's datamodel seems like a perfect fit for us, so.. why not?

This is a start for what we could do. Much of it is already done in Streamflow, so it's mainly a matter of porting it. It may need touching up as we move it, so it is more standalone, but that should not be too difficult. The goal with 1.3 would be to have more production features, and also allow easy implementation of REST/CQRS/EventSourcing, which are hot topics these days, and for good reasons.

WDYT?

/Rickard

_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev

Reply via email to