Sunday, November 4, 2007

Evaluating Technologies for CI Research Project

As you might all know I'm particularly fascinated with 3 core open source projects at the moment. These of course being Plone, Drupal and Django. Plone and Drupal are interesting CMS applications which attempt to be usable systems for developing much more complex and customized software solutions. On the other hand, Django is a rapid development framework that could allow for the development of a Plone or Drupal type application. I think all have a very useful place, particularly within the non-profit software development field.

I have issues with each though and in some sense these issues might be ridiculous, but they are my reasons and I have never been accused of being practical.

The first issue though is practical and that is the hosting cost associated with Plone. Though Plone might be the most feature rich platform (not to mention I know it the best), with its stable integration of GIS through the web apps, it is cost prohibitive for most of the groups I'm currently working with. This is very annoying, but that is life.

The issue I have with Drupal is its use of PHP and its non-object oriented approach to using PHP. Yes, for some this is a stupid reason not to adopt a particular solution. After all, I predominately work with PHP. Not to mention, Drupal is full featured and growing rapidly as more users adopt and build custom modules, extending its capabilities. It is also a cheap solution.

Yet, I like Python, its cleanliness, readability and development speed. As a result, Django provides a very enticing opportunity, to build robust apps with Python. Django is also cheap to host. However, despite the useful helpers such as the Django admin, nice permission system and so on, it lacks a lot of the components already available to Drupal and Plone developers. This means that I would have to implement the various components myself or find like minded people interested in collaborating to reduce development time.

Yet, despite this very obvious problem, I find the lack of a django based application to fit my needs to be very irritating as this is perhaps the most powerful Python web framework I have come across (save for Pylons, but crappy documentation makes for crappy adoption). This almost seems to be a calling of sorts. There needs to be a powerful django app similar to drupal for us pythonistas. Yes, there is PyLucid, but the documentation is not very good and the level of deviation from the core django framework just seems unnecessary to me. There is already so much Django offers that it just seems to be a waste of time.

Now, I haven't completely sold myself on using Django, but I'm using it to write a custom shell of a CMS for JESA, currently the site I built is just static HTML, but as the requirements for this site expand dramatically (as I thought they would) they are in desperate need of an easy to use web app that allows them to extend the site and add content with ease.

This is all volunteer work, but there are some things to be said about doing volunteer work versus contract work. I have been given free reign to build the site and to use whatever technology I want provided the site is secure, easy to use, etc.

So a great opportunity to use django. I think after this I will be better able to gauge whether I want to invest the time to build a base CMS for my research or if Drupal will just have to cut it. We'll see.


Neem Tree said...

In our writeup we compare Drupal with Joomla and Wordpress, and it isn't an under the hood look (like your post).

Drupal is very popular in the the non-profit world, with excellent integration with CiviCRM and support from CivicActions and Development Seed.

justingriffis said...

Yes, Drupal is very popular with non-profit groups in fact I'm using it to develop a site for another NGO in India. I have also worked with Joomla and Wordpress. However IMHO, I don't recommend their use. Wordpress is primarily a blog and is what I would term a flat CMS similar to blogger, sure you can manage content, but the level of complexity many organizations need doesn't exist with these applications. And though Joomla is a CMS, I'm not very keen on the code quality and in the approaches to extending the system. Drupal is much more elegant in this way, and though I prefer Python to PHP, the Drupal way is very refreshing, even despite its non-object oriented approach.

That is why I was saying that my reasons for not using Drupal are perhaps ridiculous. I mean there are other reasons it may not be suitable for my research, but I have a feeling it could be hacked on to fit my needs.

I’m just not sure I want fight with the structure of such a mature CMS. It might be more appropriate to build my application using a framework such as Django or Symfony and then build a bridge for some of these popular CMS apps.