Future directions for Midgard

Two weeks ago we had the Midgard Gathering in Poland, and some big decisions were made there. I've been meaning to blog about them, but the volcano eruption in Iceland kept me busy by providing an interesting trip through New York and Moscow.


The next Midgard2 release, 10.05 "Ratatoskr" will be a long-term support release, intended to provide a reliable base for building web and mobile applications utilizing the content repository. It will consist of:

Midgard Core, the actual content repository library that abstracts database connections, provides object-oriented storage and retrieval interfaces and handles things like D-Bus notifications of content changed by other applications.

Midgard PHP and Midgard Python, language bindings providing the Midgard content repository services to these popular scripting languages. This means the Midgard content repository can easily be used within any PHP web application, Python maemo application or with the Pylons MVC framework.

Midgard Mono, C# bindings to the Midgard content repository allowing better interfacing with Microsoft technologies.

GObject Introspection allowing us to provide other language bindings including Vala and Javascript.

Midgard MVC, an elegant framework for PHP web applications. Midgard MVC includes interfaces for loadable components, hierarchical sub-requests, a forms system and much more. You can see it in action for example on Qaiku.com

Midgard Runtime that combines the Midgard MVC, a PHP application server and a WebKit UI to provide a full Midgard web development environment on the desktop.

Once the release is in shape a major focus will be put in ease of installation and documentation. We already have Midgard2 running on Windows in addition to Linux and Mac, but it will remain to be seen if the port makes it in time for release.


After having a stable LTS release of Midgard2 out there the community will start working on Midgard3, which takes the concepts from Midgard2 even further with several important additions:

Workspaces, kind of "layered virtual databases" inside one content repository. These can be used on the CMS level of Midgard a bit like git branches are used.

Binary GUIDs for more efficient storage of the unique object identifiers in Midgard.

MgdSchemas stored in the database instead of XML files. This will make schema editing, sandboxing and replication between installations a lot easier.

MidgardQuerySelect, the new better database select interface to replace Midgard Query Builder.

Midgard CMS, the content management user interface built on top of Midgard3 and the Midgard MVC. We will provide interesting new concepts like UI constructed fully based on introspecting the CMS-generated pages and a git-like model where anybody can edit but pushing to production requires additional privileges.

Most applications will need to be adapted to work on Midgard3, which is why the LTS release will be there to ease the way, just like we did with Ragnaroek on the Midgard1 series.

The estimated first release of Midgard3 will be in December 2010.

Read more Midgard posts.