Differences between CMSimple_XH and CMSimple 4.x

A place for general not CMSimple related discussions
Posts: 12318
Joined: Tue Jun 21, 2011 11:04 am
Location: Mü-Sa, RLP, DE

Differences between CMSimple_XH and CMSimple 4.x

Post by cmb » Mon Jul 28, 2014 11:24 pm

Hello Community!

[Translator's note] This is the attempt at a faithful translation of http://cmsimpleforum.com/viewtopic.php?f=16&t=7861. If you find mistakes, please inform me via PM.

Frequently it has been asked about the differences between CMSimple_XH and CMSimple 4.x, so I want to answer that more exhaustively in the following. I am aware, that this comparison is likely to be somewhat biased towards XH. However, I have attempted to be as objective and detailed as possible. Supplements, corrections and--if necessary--a sober discussion are welcome; start a new topic in this case, please.

Currently (CMSimple_XH 1.6.2 and CMSimple 4.4.3--July, 2014) a first glance there are only two serious differences:

Due to the "subsites" feature, CMSimple makes it possible to have multiple websites with one installation. This feature is called "multiple client capability" by the author, what isn't actually accurate in my opinion, because every "client" with sort of programming skills is able to fiddle with the installation of another client via CMSimple's administration interface.

The second point is the "co-authors" feature of CMSimple: this allows a co-author to create contents in an own installation, which are embedded by the site owner into the main site (once). Such concepts have already been available for the classic CMSimple. For instance, there is the plugin "SimpleMultiUser", which has similar restrictions as the co-author solution: as soon as the the site owner has embedded the contents on the page (via a plugin call), he loses control over future changes by the co-author. These changes are immediately visible on the main site. In a "true" editorial system there are permissions granted to users which determine whether a user may publish or only may author. Therefore CoAuthor is only suited for projects, where the site owner can absolutely trust the author.

The other features that are mentionend by CMSimple on the project site (version check, structure of the user files etc.) are either also part of CMSimple_XH or available as external plugins (plugin manager, maintenance mode, admin template etc.)

At second glance the differences between both systems are already huge:

Code base

Both versions are based on the classic CMSimple. The present CMSimple 4.x + is a fork of CMSimple_XH 1.5.3--even though the author has taken care to remove the genuine copyright notices of the CMSimple_XH authors from the source code of the core files of CMSimple 4.x.+, and to leave no further notes regarding CMSimple_XH on the project site.

Even today the biggest part of the source code of CMSimple 4.x matches CMSimple_XH, version 1.5.3. Variations are mainly due to the realization of new features.

Opposed to that is CMSimple_XH, which made the first step to a new code base according to modern standards with version 1.6. Large parts of the code are already organized in classes, what enabled automated tests, and increased reusability. Moreover, the full source code has been documented to help interested (plugin) developers getting started. The complete restructuring has been subject to backward compatibility, what could have been realized mostly without exception.

Data storage

All CMSimple variants store the contents (texts) of the whole website in a single HTML file (content.htm), from which the individual page contents, the structure of the website and the navigation is generated automatically. Since the first version of CMSimple_XH the possibility was added to store page related data in another file (pagedata.php). Thus it became possible to do things, which formerly were cumbersome and required cryptic script code, easily by clicking. Examples are assigning another template for a certain page, to hide a page from the navigation or to use another page heading as shown in the menu.

However, this concept has a weakness: content.htm and pagedata.php must always be kept absolutely synchronous. In the past there has been some confusion, caused by desynchronized files. Liable have been incompatible resp. erroneous extensions, or backups, incorrectly restored by the user.

In CMSimple_XH all data are stored in a single file (content.htm) again. That facilitates easy backups, and advanced users can easily edit the contents offline or online, again.

CMSimple stays with the concept of two separate files so far, and the author recommends since a long time to do important things, such as hiding of pages, with scripting in the page contents.[1]


In the base version of CMSimple_XH many modules are realized as discrete plugins. These can be updated individually and are usually developed and maintained by different persons. When new versions are available for individual modules--what is regarded by the automatic update check, the site owner is able to update the modules him/herself. Unnecessary modules can simply be removed.

CMSimple moves in the opposite direction in this regard, and integrates these modules as close as possible into the core of the CMS. Updates happen via an update of the complete base system. The site owner can't do updates of individual components without profound skills.[2]


Presently, there are no severe vulnerabilities known for either variant, what doesn't mean that there may be no unknown vulnerabilities.

While reprogramming CMSimple_XH the topic "security" got a particular focus. Especially the protection of the admin mode has been considerably improved, an old XSS vulnerability has been fixed, and a comprehensive protection against CSRF attacks has been added, which can be used by plugins.

None of these improvements has been reproduced or adopted by CMSimple 4.x so far.


Primarily in the administration area considerable differences between both variants are noticeable. Only some examples:

CMSimple_XH uses, for instance, checkboxes or select lists for configuration settings, whereas in CMSimple 4.x some settings have to be enabled resp. disabled by entering the words "true" resp. "false". External plugins also can use this feature under XH without any changes to the program code.

Modifications of the page settings are stored via Ajax under XH. This way, the page doesn't have to be reloaded after each change. The same holds for the update check, which doesn't block the site during retrieval of the version data.

In XH saved backups can be restored with a few clicks. In CMSimple 4.x the site owner has to restore a saved backup including the appropriate pagedata.php manually via an FTP client.

If the site owner has forgotten his password, under CMSimple 4.x he has to download the configuration file, manually enter the encrypted default password in the right place, store the file in the right format and upload it to the server again [see here...].

Albeit this method works also under XH, there is a "Password forgotten" feature that allows to send a new password to the site owner, if he has enabled this feature in the configuration--by entering an email address for this purpose.


The contents (content.htm / pagedata.php) of CMSimple 4.x.+ are compatible with CMSimple_XH. When updating from CMSimple 4.x to CMSimple_XH the page data (pagedata.php) of CMSimple 4.x are automatically merged into the contents file (content.htm) of XH.

For the reverse way (XH 1.6+ -> CMSimple 4.x.+), the author of CMSimple 4.x doesn't currently offer any import option, so that individual page settings would be lost.

The templates, which determine the design of the site, are compatible between both variants. Plugins, which extend the system by many features, are a different story. CMSimple_XH 1.6+ offers considerably improved and well documented functions for plugin authors, to develop their extensions faster, more resilient and also more secure. A few new plugins already make use of this improved API and therefore doesn't work anymore under CMSimple 4.x.

Against this background, the author of CMSimple 4 had started to create own extensions for the most important tasks[3], which shall stay compatible with CMSimple 4.x.+. These extensions are normally free for non-profit projects requiring only a back link, but for commercial usage there often have to be paid license fees.

Extensions (plugins) for CMSimple 4.x.+ normally can also be used under CMSimple_XH. [Translator's note: that has changed in the meantime.]

Development / Community / Orientation

CMSimple and CMSimple_XH are both available as Open Source projects under GPLv3.

Since quite a while CMSimple_XH is maintained by four developers who are actively contributing programm code for new versions. New ideas or changes are discussed in the forum in advance, and eventually gathered in an publicly available roadmap. This roadmap serves as base for the final voting for the developers about the planned modifications. [Translator's note: not only the mentioned four developers have voting rights.]

By means of the roadmap everybody who is interested is able to see what is planned for the next versions by the developers. The latest status of the development is always publicly available via SVN on SourceForge.net. Suggestions, ideas and concrete solutions from the community are always welcome and can be contributed in the "developer forum". Also, potentially resp. actually existing bugs in CMSimple_XH are communicated frankly in the "bugs forum". The orientation of CMSimple_XH is clearly a "community project".

The further development of CMSimple 4.x is solely in the hands of Gert Ebersbach, who also bought the rights on the original CMSimple and the CMSimple domains from Peter Harteg. A roadmap or public access to the latest development source code is currently not available. However, the author runs an own support forum, for which interested users can be accepted after request by email. By his own account after the purchase of CMSimple the author wants to place CMSimple "more commercially", keeping the actual CMS freely available (what is necessary, because external code under GPLv3 is contained)[4][5].


[1] http://cmsimpleforum.com/viewtopic.php? ... 317#p19032
Gert (TRANSLATED) wrote:My recommandation stays, and I do it so for my own pages: usage of pagedata.php only, if there is no other option or it is inadequately difficult. I'm making plugin calls in the content, and I still hide pages with #CMSimple hide#, so that they don't suddently become visible sometime.
[2] http://cmsimple.org/forum/viewtopic.php ... 1054#p1055
Gert @cmsimple.org/forum (TRANSLATED) wrote:
Ludwig(TRANSLATED) wrote:How to update your modified Version?
Not at all. Your link points to the wiki of another CMS.

In CMSimple from version 4.0 on, jQuery and all other standard plugins will be developed with the CMSimple versions. The usage of plugin versions from any of the many CMSimple forks (in the meantime there are a good many of them) is not possible resp. may make CMSimple unusable. [...]
[3] http://cmsimple.org/forum/viewtopic.php ... p=876#p876
Gert @cmsimple.org/forum (TRANSLATED) wrote:[...] Therefore I have decided to rewrite the most important plugins by myself. Currently not a single plugin developer has boldly professed CMSimple, so that is sure only for plugins from ge-webdesign.de that they will furthermore work in CMSimple. [...]
[4] http://cmsimpleforum.com/viewtopic.php? ... ler#p36269
Gert (TRANSLATED) wrote:[...] The only solution is that CMSimple_XH finally accepts, that I place CMSimple somewhat more commercially. The actual CMSimple is still OpenSource freeware. [...]
[5] http://cmsimpleforum.com/viewtopic.php? ... 789#p32789
Gert (TRANSLATED) wrote: [...] you may rest assured; the break-even (or better: return of investment) has already come after less than 2 months -- CMSimple has already generated its purchase price ;)

And that is a good base and motivation for me to carry on, and eventually will profit both my business partners (web designers and agencies--what answers the question about the different target audience) [...]
Last edited by cmb on Fri Dec 30, 2016 1:52 am, edited 1 time in total.
Reason: Fix link to German original
Christoph M. Becker –Plugins for CMSimple_XH, but not for CMSimple 4+