Last modified 2 years ago
Comparison between Django CMS and Merengue
This document is an not very in-depth analysis and comparison between Django CMS and Merengue
Main (philosophic and technical) differences
Merengue advantages
- More powerful data model. Merengue content management is based on a generic base model (non abstract) and with all content types (documents, forums, news items, events, etc.) inheriting from that. Django CMS is based only in hierarchical Pages, with plugins linked to that Pages by composition. With Merengue you can build a managed system that maps into an existent reality. For example, in next models we map a books authoring (books and authors will be managed in Merengue, because both inherits from BaseContent):
from merengue.base.models import BaseContent class Author(BaseContent): first_name = models.CharField(...) last_name = models.CharField(...) class Book(BaseContent): authors = models.ManyToManyField(Author)
- More conventions. Conventions are good to get more reusability (i.e. in plugins).
- Blocks.
- Actions.
- Viewlets.
- Themes.
- ...
- Plugin are more powerful. Not only to define placeholders:
- Defining content actions (i.e. PDF export)
- Defining custom permissions.
- Blocks (ok, ~ Django CMS place holders).
- Related model admins.
- Plugins custom admin subsites.
- More featured data model. Django CMS is based only in a Page model
- Easier to debug. It's seems Django CMS is harder to debug than Merengue. For example, appresolver is a good feature for defining application URLs (i.e. multilingual URLs), but it add a lot of complexity and very hard to debug.
- Several details for developers:
- You have not a default settings file. You have to create a copied settings file from a project to another (or copy from example project). New settings in future may break old projects. Merengue has a merengue/settings.py that is imported in you project settings.
- It relies on django.contrib.sites application. We think is not usual to have multisites for one content database.
- (( to be completed ))
Django-CMS advantages
- Layout per page. Merengue is skinnable, but for a content you cannot change layout (two columns, three columns, etc.). The theme or plugin developer decides all the layouts.
- Very cool edit mode. It's similar to collaborative edition but more powerful in some senses, because it mix these Django CMS features:
- Define layout (template) in page you are seeing (two columns, three columns, etc.)
- Add plugins to every place holder, allowing reorder and edit those plugins.
- SEO features
- Hierarchical permissions system. Django CMS has a limited hierarchical page model, but permissions are very tight to this hierarchy. It's possible to add a permission for a page and its descendants. This is not possible in Merengue.
- (( to be completed ))
