When the trees were small
I'll start from afar - with history. Once
upon a time there was
PHPNuke . From this CMS forked
XOOPS .
When the XOOPS developers decided to switch to the still young and little-known Smarty template engine, another fork occurred, and part of the team left to do their own CMS, without blackjack - e-xoops, which retained Native PHP.
Somewhere in 2004, the author came to the Russian team e-xoops. Came by chance, not planning to stay for long. Quickly made a couple of sites on this CMS. Introduced a couple of hacks. Together with everyone, he followed the evolution and renaming of the system in
RunCMS .
Soon another customer demanded another online store. By that time, an interesting situation had arisen - I and the
bigazzzz partner knew the
RunCMS well, I liked a lot (and not much), but the stores, if there was a need, built on third-party solutions (osCommerce and other hell ...) experience, too, desires are above the roof, so we decided to create a store on the basis of RunCMS, in the form of a module for CMS.
')
At first it was simple, but with each new site, following the wishes of customers developed. By the second version, it exceeded the CMS itself in terms of code, in terms of functionality - many analogues and got its own name - RunSTORE.
Years passed, RunSTORE developed, and RunCMS evolved, into which we also tried to make improvements. However, a strange thing happened - the foreign “owners” of the CMS did not like the fact that most of the code in it was written by Russian developers (and
MichaelXIII gradually became the
main one ). One day, the “owner” closed the repository, destroyed the entire code base, and drove out all the developers, claiming that it was rolling back to the previous version.
And by that time we had successfully sold RunSTORE. The new owner made plans for the hulk, but something he did not ask. The result is that there is neither RunSTORE, nor RunCMS, and there is nothing to do * -)) And I wanted to write ...
* - joke, there is always something to do, but you want to do something for the soul as well ...Thus was born a fork from RunCMS called Ronny CMS.
Yes, this is the same Nuke / xoops / Runcms, but probably the most modern and complete of all available. Or maybe not -))
We initially defined a goal for ourselves - by retaining the good that was in RunCMS and basically - compatibility with it, to make a more modern and high-quality system. In the initial system, many things did not suit - the accumulated base of outdated code, low speed, and terrible system of design integration.
At the moment, Ronny has the status of Release Candidat and moved away from the fork point by almost 800 revisions.
What is done?
Oooh, a lot has been done. Of course, in many ways our CMS is still similar to RunCMS - the same modules, the same blocks. But, leaving the best and the fact that it was better not to touch, we have changed a lot.
Let me briefly tell you - what exactly.
- Templates and themes.
Yes, it was a disaster. Initially, for historical reasons, there was no template engine at all in RunCMS. There was a spaghetti code in which horses, people, HTML, CSS, PHP and JavaScript were mixed in one bottle. Of course, this could not be tolerated.
As a result, we took the template engine from the RunSTORE project, modified it a bit, completed it, and made it the main one in Ronny CMS. The template engine is simple to disgrace, it can do almost nothing - except to output variables, the simplest cycles and conditions, but very quickly, it is compiled into php-code and is able to cache this code.
If in the future it will be necessary to expand its functionality, we will do it, but so far this is not necessary. Healthy primitivism still did not bother anyone.
- Trees
Trouble? Nooo, it was not a problem, it was a silent horror ... Recursive queries to the base to get the tree structure - style PHP3 in full glory.
I had to make my own class for processing trees.
At the same time, the class for comments has easily spun off from him, for comments are the same trees. The introduction of this class and a single table of comments allowed attaching them to any module and any object.
- Human URLs.
The use of mod_rewrite has become mandatory in all parts and modules of the system. URLs should look human-readable, or at least nice to look at.
- Tags
One of the most significant innovations compared to RunCMS. From now on, any object in any module can be supplied with arbitrary tags, and the system provides the output of a tag cloud and a search by tags.
- Modules
Some of the modules of the old RunCMS had to be simply thrown out, since they had to be rewritten and adapted for too long, suffice it to say that almost all the old modules relied on register_globals On.
Instead, we have a number of new modules written from scratch specifically for Ronny CMS - Accounts, Blogs, Photo Gallery, Announcements, Maps, Pages, News Feeds, Contact. Those modules that were decided to leave - News, FAQ, Private Messages, Voting - have undergone significant alterations.
- Extensions.
Instead of the monolithic RunCMS code, a system of extensions (replacements) appeared in Ronny. Now through the extensions, visual editors are implemented (integration for spaw and fckeditor are ready) and captcha (kcaptcha and w3captcha). In the future, this makes it possible to use any editors, captchas, file managers, etc., which will be enough for the rich imagination of developers and interested users.
- And much more
Of course, in one introductory article it will not be possible to describe all the differences and advantages of the new CMS. However, the main goal has already been achieved - we have 9 requests on the main page compared to 24 for RunCMS and half the generation time of comparable pages.
So, what is next?
And then the prospects are bright. At the moment, we have announced the stabilization of the code - nothing new is being introduced, a systematic error correction and preparation for release is underway. There are still a lot of errors, the code is a hellish mix of new and old.
The release of the Core assembly (this is the core of the system and the pages module) is scheduled immediately after the New Year, then gradually tighten the modules that are lagging behind so far and release the rest of the packages.
Meanwhile, there are already plans for Ronny CMS 2.
And you can see?
Of course! All code, except for commercial modules (and now it’s just Ads) is available under a GPL v2 license. On
www.ronny-cms.ru, you can read the latest news and download the latest build - replica repository. Let the site is not fully ready yet (most of the time is spent on writing code and fixing bugs, and not on decorations), but you can already get an impression of Ronny.
PS If it will be interesting to someone, in future articles I will continue the story about Ronny, but with examples of code and detailed comments.
UPDI completely forgot, because it would be nice to immediately give examples of sites on the Ronny CMS (except for the site of the CMS itself, of course):
The industry magazine "currency speculator"Committee on Youth Affairs of the Kostroma regionalready discussed here SendPostUPD2I really ask those who put the minuses to explain what exactly they did not like. And it seems that "just did not like it and everything," but what exactly? Code? Post style? I understand, if you explain. Thank.