Wednesday, May 14, 2008

Magnolia 3.6

Some of you might wonder what we are currently working on for the upcoming Magnolia 3.6 release. There are four enhancements which I will highlight in this blog entry:
- Performance
- Caching (API & Strategies)
- Backup / Migration
- Transactional Activation

In essence, Magnolia 3.6 will ease maintenance, boost performance and strengthen the robustness or our content management system in production environments.

When talking about performance improvements, I mean significant improvements which are mainly beneficial for authors who create and manage content within Magnolia. Magnolia 3.6 will be up to 10 times faster for example when creating paragraphs, activating content, managing revisions, importing content, and more.

These improvements are mainly possible because we reduced the usage of mix:versionable (MAGNOLIA-2086).Additionally, we were also able to solve the memory related issues (MAGNOLIA-1998, MAGNOLIA-2099) and have already back ported the solution to Magnolia 3.5.

We already finished development of a new and better API from scratch for Magnolia 3.6 which allows granular custom flushing and caching strategies. The new cache system allows to implement individual cache solutions which optimally meet the load patterns of a website to ensure high availability of every single content element. The default implementation is built on top of ehcache. The enterprise edition of Magnolia 3.6 will include pre-defined caching solutions that will substantially increase the number of requests served by Magnolia when hitting a cached page, the mechanism being that pages will be cached in the background before the existing cache for visited pages is being flushed. The solution also ensures that only one request truggers the caching process if multiple requests ask for the same not yet cached content.

We wrote a backup facility which allows to restore revisions of content as well. This was not possible before, because only the latest version of a page has been imported in releases prior to Magnolia 3.6. Under the hood, the new backup happens in a persistence independent manner, which was not possible with jcr imports before. The new backup feature will be a nice tool for migrations from one persistence to another. This would be needed if you change the database or wish to profit from the new bundled persistence provided by jackrabbit 1.4).

Transactional Activation:
In former Magnolia versions there was no mechanism guaranteeing that newly created or updated content is being propagated to all public instances (so called “subscribers”) in a staging environment. In Magnolia 3.6, such content gets ether published to all public instances or not at all due to the new transactional activation functionality.
The content will be sent to each public instance at the same time so that the single publishing request does not get cumulated any more as in previous Magnolia releases. The transactional activation feature of Magnolia 3.6 makes sure that changes are only committed and published effectively once the content reached all subscriber instances successfully.

I am eager to explore this version in production :-)

If you would like to read more about the technical details of the upcoming Magnolia 3.6 release, visit the Magnolia Development Wiki. This is the place where we have today started to make our internal concepts, roadmaps and backlog available publicly. Please note the comment functionality at the bottom of each Wiki page – you are invited to add information or leave a question there.

Just in case you don't have an account for our Wiki yet, feel free to register.


tomjensen said...

This is all very exciting stuff. Is there an estimated date for 3.6 yet? I don't think I can rate one of these better than any of the others, they all are so significant in how much they'll help. Thank for all of the hard work.

Sean said...

Out of curiosity, will there be a way to specify certain paragraph types an uncacheable? (Or required their content to be updated at a specified interval?) We've left caching off in our installation so that things like our Department Directory (which pulls data from other systems on our campus) are kept current.

Philipp Bärfuss said...

Hi Sean

Magnolia 3.6 still sticks to a page level caching. But you can plug in your own strategies (caching, flushing) to achieve a path based caching (based on page properties for example).

Note that ehcache can be configured and one of the options is content expiration.

If needed your templates can use the ehcache directly (to cache paragraphs).

To see what we plan I motivate you to visit this two pages:

Olli said...

Hi Philipp, thanks for opening up this info. You've talked about a lot of the 3.6 features but not about "show nice integration of JSF and Spring (Webflow or MVC)". Can you elaborate on this a little bit?

Philipp Bärfuss said...

Hi Oli,

Good point. The spring and JSF integration moved a bit in the background. The main reason has been that we haven't been needing any changes in magnolia itself to achieve that.

This two modules are more a kind of a demo (currently still in the EE svn). But thanks for the hint. I might write about it soonish.

Since 3.5 the main obstacles have been removed. It is more a matter of demonstrating that fact.