Technology »

  • Share
Underwritten by John S. and James L. Knight Foundation

Idea Lab is a group blog by innovators who are reinventing community news for the Digital Age.

Read more about Idea Lab »

  • Check out Idea Lab Sponsorship opportunities!

  • Follow us on Twitter »
  • Each Idea Lab blogger is a winner of the Knight News Challenge grant to reshape community news.

    Learn more about the Knight News Challenge »

    Why ReportingOn Launched on Django

    Knight 2008 News Challenge Winner

    First things first: ReportingOn is live, it's a public beta, and it's built in Django. Whoo-hoo!

    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.

    Last time I wrote about the options I was considering for Web development, I was leaning toward Django and away from Drupal.

    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)
    • Django-Tagging
    • Django-Profile

    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.

    Rate this entry

    • Currently 5/5
    • 1
    • 2
    • 3
    • 4
    • 5

    Rating: 5/5 (4 votes cast)

    Check out MediaShift Sponsorship opportunities! mediashift mixer collabspace promo.jpg

    Featured Comment

    I guess that combining the fixed rules for audio, video, image and text will be significant, as are the "open" intuitive based rules that the user contributes.

    jerry
    Zeega: Algorithm Isn't Just Another Word for Automation

    Monthly Archives