Cotonti Siena 0.9 with SymiSun-03 theme
|Initial release||February 1, 2009|
|Stable release||0.9.18 / January 15, 2015|
|Type||Content management system, Content management framework and Community software|
For an end-user Cotonti is a medium-featured content management system suitable for online communities, business and personal sites in first place, that can be extended for a variety of other site kinds: blogs, E-commerce, newspapers, gaming clans, corporate portals, etc.
From a developer's point of view it consists of a minimalistic content management framework and a set of modules implementing standard behavior for exact website types. Application logic is built in conventional scripting style relying on APIs and models provided by the framework and other modules.
A typical website setup is managed completely from a user front-end and administration backend and requires no coding skills. Custom websites may require PHP, SQL or HTML/CSS coding skills depending on type of a task: content markup, layout markup, application coding and localization procedures are completely differentiated from each other which is suitable for small to medium teams.
Through the years of its evolution Cotonti has become similar to Drupal in many of its design aspects such as procedural core, bootstrapping, modular architecture and basic features found in many other systems too. But its unique tendencies are towards a harvested framework and unbound customizability in both layout and behavior.
The engine distinguishes itself from other content management systems by keeping the HTML code completely separate from the PHP. This allows graphic designers to create themes (in versions prior to 0.9 skins) without having to know much PHP. Cotonti can be skinned by editing pre-made skins supplied by the community, or easily making one's own by creating a template, and simply substituting for the TPL tags.
The engine sports the customary features of a CMS: Message boards, Administration tools, news system, polls, user file uploading, page creation, user registration; additional features can be added to the default engine via plugins.
As a CMS, it can be extremely user-driven, requiring minimal input from moderators.
Cotonti, while in some ways more basic than other content management systems, allows the possibility to be expanded and customized in every way. It is designed to be bare-bones and basic to prevent bloating of the core and leave additional features to be added at the choice of the individual website administrators. This has always been the central philosophy behind the design of the engine. Cotonti has support for Seditio plugins as well as a growing library of its own plugins.
The design and layout of each site is supported by Web templates which allows the administrator to design a single or multiple templates to be used and chosen preference over by the users visiting the site.
Support for multilingual sites allows for templates and plugins to be customized to support a wide variety of users on a single site. In turn, this allows each site member to choose a suitable language through which to view the site.
For users who have experience with other systems it might be important to highlight its most important features:
- Modular architecture and simple APIs
- A unique template engine which can be used easily by any HTML designer and tweaked further to get custom behavior
- Every aspect of the output can be customized
- Lightweight, straightforward, low resource consumption
- The code is easy to understand and investigate even for beginners
- Server-side cache, client-side content optimization
- Protection against SQL injection, Cross-site scripting, Cross-site request forgery and other attacks
- Community support, frequent updates
Cotonti can be easily extended by several kinds of add-ons supported by the system. Some of them are provided in the default package, the rest can be obtained from third-party sources, including both non-commercial and commercial work.
You can imagine a building to understand the Cotonti architecture. The entire building stands on a basement which is known as Core Libraries or APIs. The basement also provides an infrastructure that can be utilized by the rest of the building. Then there are blocks standing on the basement and containing actual rooms - these are called Modules. Each module represent a special kind of space (e.g. a kitchen, a living room, a bathroom) which can be inhabited by site users. These rooms may be extended by many kinds of facilities, including furniture, domestic appliances, electronic systems - these are Plugins. And finally, you can paint the exterior, choose decorations and customize any detail in the appearance of your house - these are Themes.
Modules and Plugins are very similar technically, so they are often called together Extensions.
Standard behavior of Cotonti's building blocks can be modified in many of specific entry points called Hooks. Plugins may have specific parts which "hook" into those entry points to modify the control flow or provide more output variables and output sections.
Cotonti core and basic package is developed by a team of part-time volunteers and small businesses from different parts of the world. Contributions are contained in a public source repository. Technical aspects of implementation are usually decided within the team.
The history of Cotonti started in 2001 when a professional programmer Olivier Chapuis from Grenoble, France released a new PHP/MySQL Content Management System called Land Down Under (LDU). It was a modern and rock-solid site management system, especially popular among gaming portals and online communities.
In 2006 Neocrome, the company behind LDU, replaced it by a new system called Seditio, a proprietary PHP/MySQL content management system by Olivier and a small team of developers. Seditio had better support for plugins and higher extensibility than LDU. It was very lightweight and secure compared to other PHP content management systems on the market of those days,. Seditio and Land Down Under projects were officially closed in 2011 but soon reopened again. Cotonti is the only actual derivative of the LDU/Seditio product line and both projects are currently developed in parallel.
Cotonti emerged as an attempt of skilled enthusiasts from Seditio community to improve the system while the official team was inactive or rejected patches to the proprietary codebase. It was started as a set of improvements to Seditio in 2008 and was first publicly released as a self-contained project on February 1, 2009, after the official permission from Neocrome to release Cotonti and its inherited Seditio code as open source code had been received.
The initial Cotonti branch was called Genesis, it consisted of releases 0.0.1-0.0.5 and included all the changes which were expected from Seditio for a long time. Then the second branch called Genoa was released, which continued the improvements requested by the community. By 2010 Cotonti 0.6.x Genoa gained extremely high stability and regular updates to this stable branch only include very minor bug fixes. There are a lot of free extensions available for 0.6.x and the system is considered very mature.
While having a rock-solid stable branch available, the Cotonti Team started working on a new branch named Siena in 2009. It has a more modern architecture with high modularity and a Content Management Framework (CMF) inside, includes several major changes which are not possible in the Genoa branch. The first official release in this branch was 0.9.0, made on April 4, 2011. Currently the Cotonti Team and Community make efforts to make 0.9.x branch as reliable as 0.6.x, provided with lots of useful extensions and widespread.
Cotonti is distributed under terms of BSD License. And it has exclusive permission to use code from Seditio/Neocrome and distribute it under the same terms. As a result, Cotonti is free of charge for both non-commercial and commercial use with respect of the original copyrights.