Since 2007, I worked on candyCMS. It’s been my passion for quite a long time: A playground to test and learn new technologies. About a year ago I committed the last change to its official Github repo: An updated
Readme file to warn people, that candyCMS might die soon. This June I removed all the sources from Github. candyCMS is dead. R.I.P.
The birth of a new CMS
2007 I started to develop a little side project of mine, Kielmatch, while being at the Hamburg Airport, waiting for my flight to Vienna. Kielmatch’s goal was to organize amateur football (soccer) players in Kiel, who wanted to randomly meet and play on selected days and fields. Three days after I started coding, I launched the platform, but only a few weeks later, I took it off. I realized, that most people wanted to play spontaneously and didn’t want to go online and enter information before they were going to kick the ball, so the whole concept failed (might work with smartphones nowadays).
However, the source code was quite slim and easy to extend, so I used it to rebuild a website of mine—candyCMS was born. I didn’t (and still don’t) like the code base of Wordpress, Joomla, etc., so I saw my newly created software as an alternative CMS to create small websites without big effort.
candyCMS at empuxa
Because candyCMS was very simple to modify and we were able to create custom templates very fast, we used it at empuxa’s for our own and some client’s websites. While it’s been easy for us to use, some clients reported issues with the too technical and too limited admin interfaces.
When Hauke started his internship in 2012, has asked me, if he could help to improve candyCMS—I agreed and was happy to have someone working with me to close bugs and move the software forward.
We spent a lot of time to optimize its performance, added new features and fixed bugs. Also, we’ve split the project into modules. Everything was test covered now, but even with its own dependency management, candyCMS had grown a lot. It wasn’t a little ~50 KB baby anymore, it’s grown to more than 5 MB. We created lots of plugins and made the software completely flexible—and more complicated.
Everything has changed
In 2013, I didn’t have the time to continue the development as I did before. Anyway: candyCMS version 3 had been launched and got many updates, but still some big architectural improvements had to be done. At this time, I did lots of front end stuff in Rails and realized, that we previously made some wrong decisions for candyCMS:
- It wasn’t built on a framework, so we had to implement everything on our own. When I started the project in 2007, Symfony just launched.
- The core project already had too many features. We should have used a more modular structure to keep the software up to date.
- Our public folder wasn’t the only accessible folder for requests—we also processed assets from vendor dirs. Looking back, this was really bad for caching and security.
- Major versions weren’t completely backward compatible. SQL migrations were possible, but templates had to be fixed manually with every update.
In the beginning of 2014 I pushed some security updates, but knew that - with the current architecture - there’s no future for candyCMS. It must be either rewritten or stopped. To be a modern and competitive CMS, candy would have had a long way to go:
- Use Twig over Smarty, process everything with either Slim, Jade or similar.
- Use AngularJS instead of jQuery.
- Replace Less with Saas.
- Implement Grunt/Gulp and Bower.
- Build the CMS on top of Laravel.
- Use Bootstrap in its newest version.
On top, I had to implement safer password encryption and better XSS protection.
Time for an end
Realizing, that there’s simply too much to do, I thought it’ll be best, to warn users about the outdated software. By updating candy’s
Readme.md I told the people not to use the CMS any longer. A year later (and after I made sure, that there weren’t any downloads via Packagist within the last 30 days) I removed the repositories from Github.
Because WordPress is still the most popular blogging software, I wrote a little (experimental) script to fetch candy’s blog entries and convert them into WordPress posts. If someone is interested, drop me a message. If you have any questions for migrating your CMS, please don’t hesitate to contact me.
Image source: Pixelbay / Gábor Bejó