Cotonti
Encyclopedia
Cotonti is a modular open source content management system
and content management framework
powered by PHP
and MySQL
.
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: blog
s, 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.
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 plugin
s.
As a CMS, it can be extremely user-driven, requiring minimal input from moderator
s.
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 administrator
s. 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.
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.
, malformed file uploads, SQL injection
, Cross-Site Scripting
(XSS), Cross-Site Request Forgery
(CSRF) and others.
. Technical aspects of implementation are usually decided within the team.
New features and enhancements are proposed by the community
, discussed on the public forum
. Electronic voting
is used when necessary.
Actual bug tracking
, project management
and source monitoring is done via Trac
.
/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 because its developers no longer maintained them. Cotonti is the only actual successor of the LDU/Seditio product line.
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.
Content management system
A content management system is a system providing a collection of procedures used to manage work flow in a collaborative environment. These procedures can be manual or computer-based...
and content management framework
Content management framework
A content management framework is an application programming interface for creating a customized content management system . The relationship between a CMF and a CMS can be illustrated by the following analogy:...
powered by PHP
PHP
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...
and MySQL
MySQL
MySQL officially, but also commonly "My Sequel") is a relational database management system that runs as a server providing multi-user access to a number of databases. It is named after developer Michael Widenius' daughter, My...
.
For an end-user Cotonti is a medium-featured content management system
Content management system
A content management system is a system providing a collection of procedures used to manage work flow in a collaborative environment. These procedures can be manual or computer-based...
suitable for online communities
Online community
An online community is a virtual community that exists online and whose members enable its existence through taking part in membership ritual. An online community can take the form of an information system where anyone can post content, such as a Bulletin board system or one where only a restricted...
, business and personal sites in first place, that can be extended for a variety of other site kinds: blog
Blog
A blog is a type of website or part of a website supposed to be updated with new content from time to time. Blogs are usually maintained by an individual with regular entries of commentary, descriptions of events, or other material such as graphics or video. Entries are commonly displayed in...
s, E-commerce, newspapers
Online newspaper
An online newspaper, also known as a web newspaper, is a newspaper that exists on the World Wide Web or Internet, either separately or as an online version of a printed periodical....
, gaming clans, corporate portals
Enterprise portal
An enterprise portal, also known as an enterprise information portal or corporate portal, is a framework for integrating information, people and processes across organizational boundaries. It provides a secure unified access point, often in the form of a web-based user interface, and is designed...
, etc.
From a developer
Web developer
A web developer is a software developer or software engineer who specializes in, or is specifically engaged in, the development of World Wide Web applications, or distributed network applications that are run over HTTP from a web server to a web browser....
's point of view it consists of a minimalistic
KISS principle
KISS is an acronym for the design principle Keep it simple, Stupid!. Other variations include "keep it simple and stupid", "keep it short and simple", "keep it simple sir", "keep it simple or be stupid" or "keep it simple and straightforward"...
content management framework
Content management framework
A content management framework is an application programming interface for creating a customized content management system . The relationship between a CMF and a CMS can be illustrated by the following analogy:...
and a set of modules implementing standard behavior for exact website types. Application logic is built in conventional scripting style relying on APIs
Application programming interface
An application programming interface is a source code based specification intended to be used as an interface by software components to communicate with each other...
and models provided by the framework and other modules
Modular programming
Modular programming is a software design technique that increases the extent to which software is composed of separate, interchangeable components called modules by breaking down program functions into modules, each of which accomplishes one function and contains everything necessary to accomplish...
.
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
PHP
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...
, SQL
SQL
SQL is a programming language designed for managing data in relational database management systems ....
or HTML
HTML
HyperText Markup Language is the predominant markup language for web pages. HTML elements are the basic building-blocks of webpages....
/CSS
CSS
-Computing:*Cascading Style Sheets, a language used to describe the style of document presentations in web development*Central Structure Store in the PHIGS 3D API*Closed source software, software that is not distributed with source code...
coding skills depending on type of a task: content markup
Markup language
A markup language is a modern system for annotating a text in a way that is syntactically distinguishable from that text. The idea and terminology evolved from the "marking up" of manuscripts, i.e. the revision instructions by editors, traditionally written with a blue pencil on authors' manuscripts...
, layout markup, application coding
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...
and localization
Internationalization and localization
In computing, internationalization and localization are means of adapting computer software to different languages, regional differences and technical requirements of a target market...
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
Drupal
Drupal is a free and open-source content management system and content management framework written in PHP and distributed under the GNU General Public License. It is used as a back-end system for at least 1.5% of all websites worldwide ranging from personal blogs to corporate, political, and...
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.
Features
The engine distinguishes itself from other content management systems by keeping the HTMLHTML
HyperText Markup Language is the predominant markup language for web pages. HTML elements are the basic building-blocks of webpages....
code completely separate from the PHP. This allows graphic designers to create themes
Theme (computing)
In computing, a theme is a preset package containing graphical appearance details, used to customize the look and feel of an operating system, widget set or window manager....
(in versions prior to 0.9 skins
Skin (computing)
In computing, a skin is a custom graphical appearance achieved by the use of a graphical user interface that can be applied to specific software and websites to suit the purpose, topic, or tastes of different users....
) 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 plugin
Plugin
In computing, a plug-in is a set of software components that adds specific abilities to a larger software application. If supported, plug-ins enable customizing the functionality of an application. For example, plug-ins are commonly used in web browsers to play video, scan for viruses, and display...
s.
As a CMS, it can be extremely user-driven, requiring minimal input from moderator
Moderator
Moderator often refers to the chairman of a meeting. Specifically, it may refer to:-Government:*Moderator , elected official who presides over the Town Meeting form of government-Internet:...
s.
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
Bloating
Bloating is any abnormal general swelling, or increase in diameter of the abdominal area. As a symptom, the patient feels a full and tight abdomen, which may cause abdominal pain sometimes accompanied by increased borborygmus or more seriously the total lack of borborygmus.-Symptoms:The most common...
of the core and leave additional features to be added at the choice of the individual website administrator
System administrator
A system administrator, IT systems administrator, systems administrator, or sysadmin is a person employed to maintain and operate a computer system and/or network...
s. 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.
Major Features
For users who have experience with other systems it might be important to highlight its most important features:- Modular architectureModular programmingModular programming is a software design technique that increases the extent to which software is composed of separate, interchangeable components called modules by breaking down program functions into modules, each of which accomplishes one function and contains everything necessary to accomplish...
and simple APIsApplication programming interfaceAn application programming interface is a source code based specification intended to be used as an interface by software components to communicate with each other... - 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, straight-forward, low resource consumption
- The code is easy to understand and investigate even for beginners
- Server-side cacheWeb cacheA web cache is a mechanism for the temporary storage of web documents, such as HTML pages and images, to reduce bandwidth usage, server load, and perceived lag...
, client-side content optimization - Protection against SQL injectionSQL injectionA SQL injection is often used to attack the security of a website by inputting SQL statements in a web form to get a badly designed website in order to dump the database content to the attacker. SQL injection is a code injection technique that exploits a security vulnerability in a website's software...
, Cross-site scriptingCross-site scriptingCross-site scripting is a type of computer security vulnerability typically found in Web applications that enables attackers to inject client-side script into Web pages viewed by other users. A cross-site scripting vulnerability may be used by attackers to bypass access controls such as the same...
, Cross-site request forgeryCross-site request forgeryCross-site request forgery, also known as a one-click attack or session riding and abbreviated as CSRF or XSRF, is a type of malicious exploit of a website whereby unauthorized commands are transmitted from a user that the website trusts...
and other attacks - Community support, frequent updates
Architecture
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.
Security
Cotonti provides protection from many known web site attack methods: PHP includesInclude vulnerability
A server-side include vulnerability is a vulnerability that may allow an attacker to execute arbitrary scripts on a host server by causing an existing script to include an arbitrary file...
, malformed file uploads, SQL injection
SQL injection
A SQL injection is often used to attack the security of a website by inputting SQL statements in a web form to get a badly designed website in order to dump the database content to the attacker. SQL injection is a code injection technique that exploits a security vulnerability in a website's software...
, Cross-Site Scripting
Cross-site scripting
Cross-site scripting is a type of computer security vulnerability typically found in Web applications that enables attackers to inject client-side script into Web pages viewed by other users. A cross-site scripting vulnerability may be used by attackers to bypass access controls such as the same...
(XSS), Cross-Site Request Forgery
Cross-site request forgery
Cross-site request forgery, also known as a one-click attack or session riding and abbreviated as CSRF or XSRF, is a type of malicious exploit of a website whereby unauthorized commands are transmitted from a user that the website trusts...
(CSRF) and others.
Development
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 repositoryRevision control
Revision control, also known as version control and source control , is the management of changes to documents, programs, and other information stored as computer files. It is most commonly used in software development, where a team of people may change the same files...
. Technical aspects of implementation are usually decided within the team.
New features and enhancements are proposed by the community
Online community
An online community is a virtual community that exists online and whose members enable its existence through taking part in membership ritual. An online community can take the form of an information system where anyone can post content, such as a Bulletin board system or one where only a restricted...
, discussed on the public forum
Internet forum
An Internet forum, or message board, is an online discussion site where people can hold conversations in the form of posted messages. They differ from chat rooms in that messages are at least temporarily archived...
. Electronic voting
Electronic voting
Electronic voting is a term encompassing several different types of voting, embracing both electronic means of casting a vote and electronic means of counting votes....
is used when necessary.
Actual bug tracking
Bug tracking system
A bug tracking system is a software application that is designed to help quality assurance and programmers keep track of reported software bugs in their work. It may be regarded as a type of issue tracking system....
, project management
Project management
Project management is the discipline of planning, organizing, securing, and managing resources to achieve specific goals. A project is a temporary endeavor with a defined beginning and end , undertaken to meet unique goals and objectives, typically to bring about beneficial change or added value...
and source monitoring is done via Trac
Trac
Trac is an open source, web-based project management and bug-tracking tool. The program is inspired by CVSTrac, and was originally named svntrac due to its ability to interface with Subversion. It is developed and maintained by Edgewall Software....
.
History
The history of Cotonti started in 2001 when a professional programmer Olivier Chapuis from Grenoble, France released a new PHPPHP
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...
/MySQL
MySQL
MySQL officially, but also commonly "My Sequel") is a relational database management system that runs as a server providing multi-user access to a number of databases. It is named after developer Michael Widenius' daughter, My...
Content Management System
Content management system
A content management system is a system providing a collection of procedures used to manage work flow in a collaborative environment. These procedures can be manual or computer-based...
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 because its developers no longer maintained them. Cotonti is the only actual successor of the LDU/Seditio product line.
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
Content management framework
A content management framework is an application programming interface for creating a customized content management system . The relationship between a CMF and a CMS can be illustrated by the following analogy:...
(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.
License
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.External links
- Cotonti.com - Official Cotonti Website
- Neocrome.net - Official Website of Seditio.