August 13, 2009

Why Weird?

The reason we ended up doing things that could be considered weird django was because we were building an atypical app. Where the typical django application, if there is such a thing, is a single installation of a service sitting on top of its database, ours was meant as a configuration tool for a distributed system.

This meant some strange things for a django app:
  • We expected a large number of separate installations, sometimes wanting to exchange data
  • Our application would have a relatively small number of users
  • Configuration state objects needed to be versioned
  • We had to take configuration state and push it out to set of distributed agents which would do the actual configuration
  • The agents needed to receive data via XMLRPC, but should share code with the mothership (we used a no-UI django there)
  • We needed to have long-running jobs to communicate with the agents
  • We needed to generate configuration files for the agents to give to the actual running programs
  • We wanted some bigger units in our unit tests to test inter-process communication
  • The django admin was right out
  • There are probably some more strange requirements but this is more than enough bullet points
We also had to do some tricks because building a real product we were stuck on stable django, 0.96 at the time, with all its warts. I'm not going to talk about those, most of them have been fixed in django 1.0 and 1.1.

And I'm not going to talk domain specifics: though the company laid off 3/4 of the team as it ran low on money (myself included), 1/4 is still there struggling to finish requirements with a quarter of the original manpower. At least until he goes mad.

And frankly the domain specifics would bore a rhino to death.

No comments:

Post a Comment