User:Dandv/MojoMojo

MojoMojo is a Perl open-sourced web application that combines the features of a wiki, content management system and blog. MojoMojo builds on top of the Catalyst web framework and uses DBIx::Class as the ORM. It is an example of an MVC application, and the most complex Catalyst-based open-source application to date. One of MojoMojo's distinguishing features is that it uses tree hierarchies to store pages, a corresponding hierarchical database model to store page content, and a nested set model for fast page retrieval.

History
The project was started by Marcus Ramberg and David Naugton in 2005 and has at the moment 55 contributors, 82 watchers on GitHub and 29 code forks. The initial release of MojoMojo occurred on August 29, 2007, after which it was mentioned at the French open source conference Mediterranean Day of Free Software, 2007. In early January 2009, the lead author, Marcus Ramberg, gave a presentation of MojoMojo to the Oslo Perl Mongers. At YAPC::North America 2009, MojoMojo was presented to an audience of 38. MojoMojo was the only 3rd-party Catalyst application to have its own section in the July 2009 book The Definitive Guide to Catalyst.

Architecture
MojoMojo has a modular architecture and makes extensive use of CPAN modules; as such, it was listed as #2 among projects with heavy CPAN dependency chains. Currently, MojoMojo is the largest standalone project on CPAN in terms of dependencies, being preceded only by meta-modules (modules that simply aggregate other modules for convenience and do not offer specific functionality).

Key Features
MojoMojo has a combination of features which make it unique among wiki software:
 * hierarchical page structure, coupled with folksonomical page tagging
 * live Ajax preview while editing pages
 * Multiple wiki syntax choices (Markdown, Textile, POD) and pluggable syntax
 * extensive permissions system

Hierarchical page structure
One of MojoMojo's distinguishing features is that it uses a tree hierarchy to store pages. By contrast, most other wikis use a flat page structure, which necessitates disambiguation pages. The difference can be visualized in the table below:

Other features
Below are more of MojoMojo's features :


 * Built-in full text search, with external search option
 * RSS feeds
 * Support for attachments, with photo gallery for image attachments
 * Diffs, revision control and edit conflict resolution via 3-way merge
 * User registration control and CAPTCHA anti-spam measures
 * Localization (currently translated into Catalan, French, German, Japanese, Norwegian, Polish, Russian) and full Unicode support