The future of dbsettings

by Marty Alchin on November 2, 2007 about Django

I took a look at Satchmo recently, and I noticed that its new configuration system (now in Satchmo 0.6) looked vaguely familiar. I had a brief conversation with Bruce about it, and it turns out he forked dbsettings! And I mean that in a good way.

As it turns out, they had issues with their previous configuration system (a mess of settings files, it looks like), and dbsettings looked similar to something they could use. Of course, they had a variety of additional needs, so they did what open source is meant for: they took and made it their own. They took out a few things, added many more, and bundled with Satchmo proper.

Some of the additions Bruce mentioned seem like they could be very useful for a greater variety of projects, so I thought I’d see about pulling them back into dbsettings itself. The more I look into it, the more I see why Bruce just forked the whole thing rather than just submitting patches. There are some fairly fundamental changes going on, and it’s enough to make my head hurt.

In the end, I’d like to see Django have some kind of unified run-time configuration system. Whether that be dbsettings, or Satchmo’s configuration, or even whether it’s in Django itself or just a third-party app, it doesn’t really matter to me. dbsettings started as a simple app for one project, and now it’s becoming something of a maintenance nightmare, as there are so many unique needs that it “should” cover.

As it is, it’s already grown beyond what I personally enjoy. Most of that was due to the prospect of it eventually being included in Django itself. As I mentioned above, I’d love to see some kind of unification, but I trying to get it into core has already required some compromises that I’m sure are for the best, and they certainly led to some of the maintenance trouble.

So, I’ll outline the concerns raised so far, from both dbsettings and Satchmo combined. This probably isn’t all of them, but it should get the majority. Also, note that these are in the order they came out of my head just now, nothing else:

So, I’d like to ask for opinions on the subject. Should dbsettings grow to encompass more use cases, or should I expect people to write their own forks, as Bruce has done? Should (can?) run-time configuration be unified, so that third-party apps can rely on one common framework? Should such a framework be included in Django proper? If not, would it be dbsettings, Satchmo-configuration, or some new app altogether?

Is there anyone else out there interested in this stuff? As my last post showed (despite its markup errors), I’m in the middle of many things, and those are just the ones I expect to release to the community. If this is to happen, I can’t be the only one behind it.