Skip to content

Roadmap

Graham Crockford edited this page Jun 10, 2017 · 5 revisions

Morf has only recently been decoupled from Alfa Systems, our core product. We wanted to move development into the open as soon as possible, but that means there are many issues we need to resolve before it can be considered for a 1.0.0 release.

The following are under active development.

"Hello world" user stories

Morf grew organically with Alfa Systems, so we have never actually documented how to implement it from scratch in a new project. In finalising these user stories, we will be both documenting them for new users and implementing any new APIs necessary to make the experience right.

Add SqlStatementExecutor

The data access entry point (SqlStatementExecutor) allows SQL DML to be executed at runtime using the Morf DSL. This is currently missing from Morf because it lives elsewhere in the Alfa Systems codebase, in a module we aren't publishing.

Without it, using the DSL at runtime is ugly (you need to use the SqlDialect to convert the SQL DSL into a string, then run that directly using JDBC).

It needs to be disentangled and moved into Morf so that Morf can be used for data access at runtime.

Tidy up dependencies

While being decoupled, Morf acquired a number of direct dependencies which are unnecessary and would make it much harder to integrate into real-world projects.

Wee need to remove the Guice, JXL and XPP3 dependencies from morf-core, possibly moving them to optional modules.

Immutable DSL

Currently, most elements of the SQL DSL are mutable. This is one of those things that occurred organically over time to make the DSL read more cleanly, but which has increasingly looked out of place. It also prevents a number of performance optimisations.

All SQL dialect elements need to be made immutable, allowing us to resolve some unpleasant API side-effects. Once this is done, we can significantly improve caching and performance.

This will have widespread binary compatibility issues, and even text API compatibility in some edge cases.

Publish the Morf data copier

We have a simple command-line/UI tool built over Morf which allows end users to copy arbitrary database schemas and data between servers, platforms and cross-platform XML "dumps".

This is an extremely useful and unique tool and also a nice, clean example of how to use Morf in the real world. We want that published, but it also needs some extrication from our code stack.

Switch from Log4j to slf4j

Currently we force a log4j dependency on applications. There's no need.

Javadoc sweep

Much of the documentation is lacking or incorrect.

Clone this wiki locally