Django and the Linux Desktop

Reading a recent discussion regarding Django’s ORM, I got to thinking about how I might respond if someone raise such an argument to me. After some reflection, I think my view on the matter comes down to something I’ve learned from being on the django-developers mailing list for the past several months.

Django is optimized for the common case.

I’ll be the first to acknowledge that Django isn’t perfect for everything, and the more complex a project gets, the less Django has to offer. But for a large number of users looking for a low barrier to entry into the web framework world, Django does very well. In order to describe why I think Django will be successful in the long run, and why I expect it’ll continue to frustrate many people over the years, I’d like to draw a quick analogy: Microsoft Windows vs. the Linux Desktop.

I’m no expert, but the way I see the desktop computing world, users generally fall into two groups. Group A, whom I’ll call “Users”, doesn’t really care what the computer does, or why, they just have a task they want to complete. Whatever helps them get that task done the quickest is the one they’ll choose. Group B, which I’ll call “Hackers”, cares what goes on under the hood. They’re willing to put in some extra time to get things Just Right so that everything works as well as it can.

Users, on the whole, tend to prefer Windows; while hackers, on the whole, tend to prefer some Unix/Linux/BSD variant. The differences between these two groups are a fundamental problem when it comes to trying to sell a commercial Linux Desktop: You’re selling a Hackers product to Users. Getting people away from Microsoft and its many problems is an admirable goal, but most hackers don’t really understand how Users think.

For instance, one common “holy war” in the Linux world is KDE vs. Gnome. Each has its merits, but the thing to remember is that Users don’t care. This is something Microsoft has spent inordinate amounts of money to discover. They’re not interested in choosing a UI, they just want to get things done. They get bogged down in making a choice they know little about, and which will ultimately make little difference to them. They like choosing things they can understand, while ignoring things they don’t. Sure, picking one or the other means losing out on potential features, but the ease of use for Users makes it worth the loss.

Now, the Linux Desktop situation seems to be improving. I haven’t followed it very well, but a cursory look at Dell’s and Novell’s offerings show no mention of KDE or Gnome, and that’s encouraging. But the analogy to the web framework world is still valid. There are both Users and Hackers people involved, but things get a little different.

Framework developers are, almost by definition, typically Hackers; they need to care about the inner workings, since that’s what they focus on. In the case of Django, however, it’s a matter of Hackers writing a Users product. Born in a newsroom surrounded by Users, Django very quickly became tailored to End-Users. Upon release to the public, it very quickly evolved into something useful for Developer-Users. This continues to be the focus, but since the people behind it are Hackers, there tend to be many endless debates about why something isn’t in the official source.

Some frameworks are built for Users, some are built for Hackers. Confusing things still more is the fact that most Hackers like to be Users when they can afford to be. Personally, I’m a Hacker who cares about the needs of Users, because I often like to be a User. So I tend to spend a lot of time plumbing the depths of Django, trying to add things to satisfy my Hacker side, in a way that will be of use to my (and others’) User side. I like to think that’s the driving motivation behind all the core Django developers as well, and that’s what I like most about the whole thing.

So, think about what type of person you are, and which framework best serves your personality. If you find one, use it. If something’s close, improve it if you can. If you can’t find anything out there that suits you, you’re probably just not looking hard enough.

Comments

  1. At 11:21 a.m. on Sep 5, 2007, Jökull said ...

    I don't think I agree with any of this. Think in terms of "the right tool for the right job" not "tools for hackers and tools for users".

  2. At 12:27 p.m. on Sep 5, 2007, Marty Alchin said ...

    The problem is that "the right job" is different for different groups of people. You're right that from your perspective, you should pick the tool that best suits the task at hand. But when developing and publishing something, you can't really have a list of tasks in mind. Django doesn't advertise itself as "the Web framework for URL redirection, ORM wrapping, form management, etc..." Instead, it describes the group of people it's designed for, knowing that those people will share a fairly common set of tasks they're looking to achieve and a fairly common idea of how they want to achieve them.

    Like I said, people can be both types of users at the same time, and it very much depends on the task at hand. Ultimately, the only way to actually publish tools for "the task at hand" is to provide single-purpose tools that have no dependencies on other tools. This is the approach taken by many of the command-line apps in Linux.

    When bundling a framework though, it's of more value to tie the tools together, at least somewhat, so the goal then becomes serving the needs of people, rather than providing individually independent tools.

  3. At 2:13 p.m. on Sep 6, 2007, Anonymous said ...

    But you forgot a third segment of the user populous, which I hope (we all will hope) will take over, Macintosh users.

    Apple has done an outstanding job of blending the best of GUI and *Nix into an OS that works for both your group A and Group B.

    In fact, most of the video blogs I see about development these days are done on Macs, from command line of course. Even the latest Plone demo for v3.0 (just released) was done on a mac. It's amazing.

    MAC now has the best of both worlds, and if (and they are) apps start getting created for MAC as much as Windows, we'll be in much happier waters very soon.

    Just my $.02

  4. At 6:45 p.m. on Sep 6, 2007, Marty Alchin said ...

    Actually, I didn't forget Macs. As you rightly admit, Macs do a good job of running the middle ground. In that sense, however, it didn't prove very useful for my analogy. The analogy was about showing the two extremes, so something in the middle didn't really demonstrate my point very well.

Speak up!


This particular article was posted on Wednesday, September 5, 2007, and has received 4 comments.

It was preceeded by Dynamic models in the real world and followed by My very own mini-sprint.

It contains the following links:

Archive

Categories

Powered by Django.