Instead of just talking about the planned 3.0 release of Piranha CMS I'd like to step back and talk about the product lifecycle, how past choices affect the present and try to give a clear roadmap on the future of Piranha CMS.
I'll admit it, I'm a startup person. I'm the guy that thrives on new challenges and who loves setting the fundament and architecture for new projects. The reason for this is simple - it's in the beginning of a project that you can evalute everything you've learned and all that's happened to technology up to that point. Once you get started the scope is set, and you have to accept to play within the given rules, even if you've set them yourself.
Product development is hard
I've worked with product development for almost my entire career, which is going on it's fourteenth year. Working with products you try to think things through before making decisions, cause you know you'll have to stand by them for a long time.
Even though this can seem like a restriction, I love it. The extra effort you have to put into the decisions you make is the real challenge of software development. It's not about building something that works now in the least amount of time, it's about building something that works now and will work for a considerable amount of time, with minimal support and still try to implement it in a cost-efficient way.
Love and respect
Before going into product development you have to embrace the following simple rule - love and respect your users.
Without your users, you and your product are absolutely nothing. And just because you as a developer live for the underlying architecture and adaptation of new technology, your users usually want two things - stability and features.
This usually means backwards compability and a gradual and well tested evolvement. Piranha CMS has been backwards compatible and fully upgradable since its first version two years ago, which is something I'm very proud of.
New features does not mean spending hundreds of hours reimplementing something that's not really revealed outside of the product. It means solving your users needs by incorporating the functionality they need for their everyday use.
Both of these things brings us to the planned 3.0 release, and how to address it in the best way.
The version formerly known as 3.0
For me, the 3.0 version was never about features. It was my way to rewrite and redesign all of the choices I made three years ago that can be solved better and prettier with the technologies of today. I tried to throw in some features requested by users just to hide my real intentions, but in the end the version was for me, and me alone.
On top of this, when I designed the data model three years ago I built it in a way that simply can't be recreated with Entity Framework code first. So the new data model, and the framework ended up becoming completely incompatible with the current version.
If you've read the entire article, you can probably guess that I was beginning to feel I was going in the wrong direction.
As my frustration grew, I decided to try out my ideas in a completely new repository. So I wrote a simple blogging platform entitled Goldfish. This was the turning point for me as I came to a conclusion on how to move forward without breaking anything for the current projects built with Piranha CMS.
When I wrote the Goldfish project I focused on modularity, including the least amount of functionality in the core and instead providing a simple way to incorporate modules that could register themselves and subscribe to events. This is also the way Piranha CMS will move forward and hopefully it will help it to evolve quicker, and to allow more people to contribute.
Instead of rewriting everything in a single go, the transition will be made gradually with the help of modules. By rewriting functionality this way, current features will be able to co-exist side by side with new and a smooth transition can be made.
The upcoming version, which will be 2.3.0, will mostly be about adding support for modularization, as well as simplifying application startup and enabling mocking the framework for unit tests.
The other big thing in this release is that the user management will be exluded from the core framework and that it will be possible to use other forms of authentication with Piranha CMS, for example ASP.NET Identity.
For those of you who have Piranha CMS projects deployed and running you will be happy to hear that with this version the first official module will be released, which will contain the legacy authentication and all of its manager views.
When working on the upcoming version I've already come across a few other potential modules, and have had some discussions with users on GitHub.
As the hard coupling between entities and the currently logged in user will be removed in version 2.3, the need for an authoring module comes up for blogging purposes. This will actually be a much better implementation than the current as it allows for having several authors for a single post as well as the ability to create posts for other authors.
The built in support for commenting has always had low priority. Therefore moving it to a module will help people interested in this functionality to more easily contribute to, and improve it.
Another great idea posted by @bapti at the GitHub repo is to add a module for handling resource strings for applications. With a provided REST Api the data could for example be used when building Single Page Applications or other rich client applications.
In parallel with the new version I'm working on a new website for Piranha CMS. The main goal with the website is improved readability and structure, better documentation for developers and focus on community features.
With community features I mean adding a forum, including a section where you can share projects you've built with Piranha CMS and adding a complete module listing. Everyone interested in Piranha CMS will be able to register on the site and contribute in feeding it with useful and up-to-date content.
The new website will be availble under the MIT license at our GitHub account as soon as the 2.3 version has been released. All community functionality created for the new site will be implemented as modules making sure that all of you can include them in your projects.
Also, everyone interested in helping out with either the community modules or the website are free to join in.
In short, there's nothing I want more than to reach the goal I set out for the 3.0 version. I am however not willing to sacrifice stability and backwards compability to get there.
By building, and rebuilding, features in a modular manner I feel confident that we'll get there, but in a much more controlled way than by tossing everything out in a single go.
I hope that all of you are equally excited about the future and taking Piranha CMS to the next level in terms of community support and modularity as I am. If you have any thoughts about anything in this post, please let me know and join the discussion.
blog comments powered by Disqus