Thursday, October 12, 2006

First impressions on Django

I had used a few CMS and analyzed quite a few of them. Mainly I used PHP based systems. Lately I found interest in Python and Python based CMS. One of them particularly struck me: Django. It seems to be one of the best options available in Python domain. But it still isin't a version 1.0 . Though nowhere it says its beta, but still the version number doesn't assure me that its enterprise ready.

To be honest, Django is not a CMS itself but a framework for developing CMSs. One nice thing with Django is that its modules generate APIs automatically and can interwork seamlessly without interfering with each other. Moreover, a sufficiently complete collection of Django plugins can itself be a CMS! Isin't it wonderful? Framework + plugins + themes = very good CMS. I would probably love to see Django community expanding and more and more contributors developing modules and other addons for it. And, hopefully within next few months I would see a distribution of Django having Django core and some addons which could be deployed easily and used as a full-fledged CMS.

I won't be using Django for the time being (though I like it!) just because I do not have the inclination to code for each and every feature needed. If coding in Django is so simple and beautiful, then probably I will wait for it to mature a bit more so that it is easily deployable and maintainable by a novice user. I will list down a few points on what Django comunity needs to do to reach the status of Drupal or Joomla.

1. Themes support: Templates is not enough, there should be themes! That too a 2-level theme system would be best. First level is layout which can be attained through template system described. the second level should be colours. The same template should be able to come in several themes. the themes should be configurable by user in his profile.

2. Easy deployability: It should be simple enough to be easily deployed. At the most, the user should be asked to configure only 4-5 parameters and start using it. Rest could be configured using Admin screen. Moreover, it must be deployable on a shared hosting server without shell access or root access.

3. Automatic admin screen is probably the killer feature, no hassels. I would love to see one more level in between user and admin: moderator. So any user can create content, moderators can moderate content from any user and admin should be able to configure the settings for that particular feature.

4. Plugins for various features: A certain minimum list of plugins should be available for it to be called a CMS. I will go ahead and give a list of what I consider a minimum set:
  • Blog
  • Generic Node (if any user can edit any other user's node, it becomes a wiki!)
  • Feed generation (already available) and also presenting external feeds as HTML
  • WYSIWYG Rich-text editor
  • Basic AJAX supported features (live search, inline form validation, etc.)
  • Image gallery
  • Searcheable user profiles, personal details
  • Discussion forum
  • Comments on posts
  • Archive viewer
  • Form creator
  • Frontpage creator
  • Polls
  • Mail user through contact form
  • Attaching generic page (any user modifiable) to user to make a scrapbook
  • Word filers
  • Keyword cloud
  • vote on a node
  • create robots.txt, sitemaps & page headers automatically for search engines
  • Statistics and user tracking
  • A single page which shows all content generated and files uploaded by a user.
  • Invite users
  • Points to users based on activity he does
  • Buddy list

Well, probably I am going too far, but this is just one persons wish, to enhance Django to a full fledged system.