What I mean by “modular”

I’m putting my series on hold for a little while, as there’s been some recent chatter about a project I’ve been working on, django-modular, and I thought I’d try to write it up properly for the first time.

It’s a very cool app, and I think it could do wonders for Django-powered sites of all shapes and sizes (as long as app developers get on-board), but it doesn’t do anybody any good if nobody understands it, and the code doesn’t have all the features it needs.

The feature problem is one of my main concerns this week, but first I’d like to set the record straight as far as what it is, what it does, and why it’s important.

What the heck is “modular”?

I really struggled with the name for this app. Most generic Django apps are named for either an action they perform or for the types of objects they provide. This app would easily fit into the latter category, but “modules” already have a specific meaning in Python, so that wasn’t a valid option.

Instead, I had to go with the adjective, “modular”, to describe the type of sites it’s intended to facilitate. It’s not my first choice, but if you hate it too much, blame Guido for not letting me use “modules”.

Anyway, to define it, I typically point at commonly known homepage portals, such as My Yahoo! and iGoogle, but those aren’t entirely accurate. There are many similarities, but some important differences as well.

On one hand, they both break apart the content of the site into individual modules. Each module is its own functionality, set apart from all the other modules. A user can select multiple copies of modules and customize them to their own needs. That’s about where the similarities end, however. Those portal-centric sites are designed to pull in modules from a variety of sources, few of which are related to the site the modules can be found on.

Contrarily, django-modular is intended to build modules that are tied to a site’s content, and be embedded directly within that site’s look and feel. They’re not able to be pulled into generic homepage tools. But, they’re also much easier to create, design and implement.

I’ve documented most of what the app covers so far, but there’s more to come this week. I’m also sure I’m missing important things, so I’ll probably write about it again tomorrow night.

TODO

It’s getting late, so I don’t pretend this is a full set of features, but here are the biggest things I’m planning to get working this week:

Comments

  1. At 2:46 a.m. on Nov 14, 2007, Doug Napoleone said ...

    These are the django equivalent of Plone applets. Still not the best word, but I think it congers the proper image in peoples minds.

  2. At 4:39 a.m. on Nov 14, 2007, Simon said ...

    In Java-land, these things are called [portlets](In Java-land, these things are called portlets.

  3. At 8:38 a.m. on Nov 14, 2007, Marty Alchin said ...

    Hrm. I haven't found any information on Plone applets, but I looked briefly at Java's portlet specification, and ... wow, that's a lot of specification. Personally, I prefer a few lines here, a few lines there, and be done with it.

    Thanks for the info!

  4. At 1:56 p.m. on Nov 14, 2007, Panos Laganakos said ...

    Writing this follow-up was a good idea, 'cause even though I saw the project, I didn't look further into it.

    Reading this post though, made me wanna take a closer look :)

  5. At 3:18 p.m. on Nov 15, 2007, Marijn said ...

    While I can see some possible uses you must have some clear examples of use in your head. It would really benefit your point if you would tell us about them or make some mockups or drawings or something.

    The concept is really nice, and I'm intrigued by it but it screams for practical examples!

    Another thing I can't figure out without looking at the source code is how this concept is difference from template tags. Because although they are application specific they are also small chunks of functionality which you can use throughout your website.

Speak up!


This particular article was posted on Tuesday, November 13, 2007, and has received 5 comments.

It was preceeded by Using Declarative Syntax, Part 3 and followed by Slight update on django-modular.

It contains the following links:

Archive

Categories

Powered by Django.