I have a long list of things to polish, add, tweak, revise, and rethink, but it was time to open the site up to users and let them help me figure it out.
Here’s why I gave up on Drupal for this project and moved on to Django:
Drupal is a fantastic content management system out of the box, with little — if any — programming knowledge required to get started, but I found it to be extremely difficult to mold into the application I was building.
Did I need the structure Drupal came with for users, posts, archives, feeds, and comments? Probably. But there was a whole bunch of other baggage, like all the WYSIWYG block and module organization that I wasn’t as comfortable with. My first instinct was to start from scratch and build my own theme, but I quickly realized I needed to build my own content types. And views. And the file system was confusing to me, coming from WordPress. Plus, although the Drupal community is full of awesome people building awesome modules, I still couldn’t figure out how to do a few simple things, like create a content type with a maximum length (say, 140 characters).
On the other hand, as soon as I started digging a little further into Django, I found an active community of developers working on projects similar to mine.
Why? Is it just because Django is still new and shiny? Maybe. But the fact that developers interested in services like Twitter and Friendfeed were building their own tools in Django with similar functionality made all the difference as I looked for open source projects and pluggable apps to incorporate into ReportingOn.
Here are a few of the Django applications that have been involved in my development process in one way or another:
- Finisht: Nick Sergeant’s “done” list for “developers who do things.” (On Google Code)
- Pinax: James Tauber is the lead developer on this project, which, frankly, is pretty all-encompassing. If you’re seriously considering building any sort of social network or content management system in Django anytime soon, I highly recommend you take a close look at all the work that’s already been done on Pinax before you start reinventing any wheels. Check out Cloud27 for a demo of what this system is capable of with all its bits active. (On Google Code)
Plus, the Django community and my own network of online friends and acquaintances has an enormous amount of overlap, so I’ve been inundated at times with offers of help, hints, tips, and flat-out answers to my questions about Django.
The Drupal commmunity? I certainly know a few people there, but without an exception that I can think of (correct me, please), they’re developers first, and journalists second. Which is fine, except that I’m really trying to maintain ReportingOn as something built by journalists, for journalists.
Why? Well, while a primary goal of mine is to make ReportingOn a repeatable process — in this case, a relatively self-contained Django application that anyone can run on their own server — I’m really trying to make this something repeatable by journalists with little programming experience. And that describes me, too. I have a few years of experience working with WordPress and other platforms, but most of the “programming” I’ve done has been strictly copy & paste, trial & error.
In fact, I expected the “programming” part of building ReportingOn to be far more difficult. In July, when I told Adrian Holovaty I was seriously thinking about using Django for my project, he said: “I didn’t know you were a programmer.” My response: “Well, I’m not. I didn’t think you had to be.” And Adrian suggested a book about learning Python called “How to think like a computer scientist“ that I haven’t read yet, because I’ve had an easy time of picking up bits of Python by reverse-engineering other applications and walking myself through every tutorial and screencast that I’ve found.
It wasn’t that hard to wrap my head around Django’s file structure, or the model-template-view pattern. Frankly, it was harder to get certain accessories to Python running in a development environment on my laptop, but once I moved the app to a production server at Webfaction I had much, much better luck.
None of this is to say I’d recommend against using Drupal for any number of projects. 12seconds is one of the most impressive things I’ve seen built in Drupal, lately, and it certainly doesn’t feel like Drupal when you’re using it.
But for me, as a proof of concept that a journalist with just a little programming knowledge can build something interesting on a low budget (all I’ve paid for so far has been Web hosting), assembling ReportingOn in Django was the way to go.