Navigating ahead - ImpressCMS Compass 2012

The ImpressCMS Compas for 2012 is now available. At regular intervals, a project needs to review its goals, and the way it will use to achieve those goals. That's what the ImpressCMS Compass 2012 describes.

Open Source projects are highly flexible in nature. Most contributors are dedicating a large portion of their free time, so as a project, you are glad for any time and effort you get. Most people have specific areas of expertise, and take on most of the work in that area. If one of these persons becomes unavailable, either temporarily or permanently, development in that area will have to be taken over by someone else, and that’s a hard thing to do.

Those are the main reasons why the ImpressCMS project has stopped publishing roadmaps: they were almost never up to date. That’s bad expectation management: you communicate your users that a release will have a certain feature set, and on release time, some promised features aren’t there, and some features not on the list appear anyway.

Of course, someone could invest time in keeping that document up-to-date at all times, but we’d rather have that person dedicating his or her time on areas with more added value.

ImpressCMS 1.3
ImpressCMS 1.3 was a technical release, where the existing code was rewritten to align the structure and the code with current PHP version capabilities and the best practices that come with those new PHP versions. To keep the complexity within bounds, we chose to enforce a feature freeze. That would keep the development time in check for such a complex and broad undertaking.
The release of ImpressCMS 1.3 was quite a success, as it met the goals we had set for it : it is faster, the number of queries has been lowered considerably
ImpressCMS 2.0 – Lowering the Barriers

Where the technical side of things was taken on during ImpressCMS 1.3, the new release has two aims : further slim down the system by removing the code that supports the old way of working, and start reworking parts of the system, enhancing either the functionality or lowering the barriers for user, developer, designer.

Further slim down the system
The majority of this work has been done in the Alpha 1 release. There are some areas left, such as the WYSIWYG editors (choosing which editor to concentrate on exclusively is a delicate decision), but those areas all need some extra development before they can be fully functional.
As a second phase in the core refactoring, Skenow is currently working on a refactoring of the system module. The system module is a special case : it is a module, but it provides many core functionalities. We decided to do this in the release following 1.3.

This rewrite of the system module will yield a system module that is totally IPF-compliant, with a structure that reflects the current status of ImpressCMS. The old version was a result of many years of more-or-less unstructured adding of functionalities here and there, resulting in messy code riddled with layout statements, spaghetti logic and old-fashioned PHP language uses.

Rework system parts
This is where the users are given back the priority. We need to review different parts of the system, and review the current functionalities. We can’t rewrite the entire system in one time, so most of these rewrites will be based on user requests: what changes do you feel are necessary, functionality to tackle, and also how it should work.
There is a lack of information for most of the rewrites at the moment. Most of the requests are focused on a single use cases, and mostly on how the layout should look. Those are informative elements, but a definitive list of requirements before starting development would make things much easier. We’ll have to focus on obtaining that information easier.

In-between releases
A big problem for the 1.3 release cycle was that no development in 1.2 was done anymore. All development effort was geared towards the refactoring of the 1.3 branch. That refactoring took more time than anticipated, mainly due to Marcan leaving the project. For the 1.2 branch, this resulted in a long period with nothing more than small bug fixes.
With 1.3, the situation is different. Because of the similarities between the code bases of 1.3 and 2.0 (a similarity that wasn’t there between 1.2 and 1.3), we can leverage fixes and new functionality made in 1.3 for the 2.0 release as well. This gives us the possibility to do intermediary releases of the 1.3 branch with new functionality.
We must take care that we give the highest priority to development for 2.0 though. If we keep adding stuff just for 1.3, it will adversely impact the 2.0 development timeline. 1.3 and 2.0 will start to diverge more and more, so porting changes between branches will become less easy.

Beyond 2.0
Many things have been suggested, and we keep them listed on the ticket list on Assembla. We have many people making suggestions, which is a very good thing. These change requests and suggestions are what is needed to do the necessary improvements and additions to make each release better and better aligned with our user base.
We wouldn’t mind some more contributors on some aspects though (lol) People that nurture the websites and our facebook/twitter accounts would be very handy indeed. Also a few extra developers would be welcome. We need to look more closely at what gets someone from an interested community member to a contributing community member.
Beyond 2.0, we will see releases focused on specific aspects of the system. There, you can expect improvements such as

* Easier working with addons (translations, modules, themes) from the ACP
* SEO improvements (URL Rewrite, Nice URL, Canonical URLs, …)
* HTML5/CSS3 compliant templates
* Extending IPF to facilitate several recurring development tasks
* Migrating from one module to another

Overall Timings

Timings haven’t changed much since the excellent blog post by Skenow :
We’ll start doing more regular releases (monthly would be the goal, if possible) for the ImpressCMS 2.0 Alphas. That frequency could go up when we are nearing final release.
The final release is scheduled at the end of June 2012. In most cases, there should be an accompanying release in the 1.3 branch with each of the alpha/beta 2.0 releases.

The ImpressCMS 2.0 milestone on Assembla is a good list of what we plan to be in ImpressCMS 2.0 at the end. Some of the items there are quite ambitious, but if we don’t have too many unexpected issues, most of these elements should be in ImpressCMS 2.0 final.

The comments are owned by the poster. We aren't responsible for their content.