Archive for the 'open source' Category

Summer of Code

Wednesday, May 24th, 2006

Google’s Summer of Code project has accepted my application. For those of you not familiar with this, basically Google funds you for a summer to work on an open source project of your choosing. It’s a fairly big w00t in the programming and academic worlds. I can’t tell you all how exciting this is. :)

The skinny: I will be implementing schema evolution for the Django project. Watch this category for further updates.

The meat of my proposal:

I would like to implement the introspection and migration schema evolution suggestions detailed here: [http://code.djangoproject.com/wiki/SchemaEvolution]

I am in a unique position for this proposal because I have implemented much of this functionality before. I am the PM/tech lead for a large (~400k loc) java based web application. We have a 200+ table schema, and last December I wrote a schema manager that implements much of what is described in your schema evolution proposal. (this is no coincidence – Django’s need was my catalyst/inspiration) Obviously I would not be able to use any of the code (as it was written for an Air Force contract), but the techniques would be transferable.

The schema manager I wrote (in Java, manipulating an Oracle DB, and likely on the outer difficulty edge of any similar implementation) was developed independently from your wiki’s proposal. (it was inspired by the one-line ‘this would be hard but nice to have’ comment in the 0.9.0 documentation, IIRC) However it implements everything listed in your ‘Automatically applied migration code’ suggestion. Additionally, it supports the following:

  • automatic downgrades are supported (in addition to upgrades)
  • the application can automatically identify a schema without a ’schema version’ table
  • the application can verify the accuracy of a schema
  • multiple schema identification algorithms are simultaneously supported (for instance: primary keys, foreign keys and constraints can be named in Oracle – should a constraint name change be considered a schema version change? you decide)
  • multiple different schemas with ‘equivalent’ functionality can be mapped back to a single logical schema version (’equivalency’ obviously being determined by the developer)

I would like to note that this would not be simply a porting project. For obvious legal reasons I would not have access to my previous code base. It would be in a different language. (I am familiar with Python, but not yet competent) It would be designed against a different database. And it would be for an object framework very different from my previous application experience. Nonetheless, many of the ‘hard’ problems associated with this type of functionality I have already solved, proven and deployed.

As far as the introspection functionality, this was prototyped, but never deployed for the following reasons:

  • my application does not have a central, unified object definition mechanism from which to base such a function
  • converting our application to such would have been prohibitive
  • other development requirements took priority

However my exploratory code towards this was promising. (you all would be proud of my tuple-based model implementation in Java – made quite the use of the new 1.5 features and had full compile-time checking of all parameters)

BTW, I briefly considered a full Java port of Django last winter. (I’ve owned django4j.com for a while now) I still think it would be a good long-term idea, but a bit much for a summer project.

As far as any legal concerns you might have, I’ve contributed to open source projects before with both my company’s and the government’s knowledge and approval. (including my own project, buglist) I know the landscape well. Plus my contract will be ending soon. (on 6/30)

Anyway, I look forward to working with you all. :)
– Derek Anderson

P.S. Yes, getting *everyone* to save their migration scripts in a VCS should be an absolute, unwavering requirement. Good god it scares me how few people do this.

The Importance of Open Source

Wednesday, April 6th, 2005

If you’re not watching what’s going on between BitKeeper and OSDL, here’s a quick recap:

BitKeeper provides a “Free Linux License” for their version control system which Linus and other major kernel developers have adopted for Linux development. Linus’ employer OSDL employs many contractors working on many different projects. One of their contractors (on his own time - not on a contracted project) decided to create a truly open source version of the BitKeeper client. BitKeeper didn’t like this (for obvious reasons), so they threatened OSDL/Linus/everyone that “unless you convince OSDL’s contractor to stop his efforts on his own project, we’ll stop creating a Linux version of the BitKeeper client”. And now they’ve followed through.

This will obviously create a significant hardship for any OSS project using BitKeeper’s technology. (the Linux Kernel being the most prominent)

Now I feel that BitKeeper has the 100% right to control how they give/sell/whatever their own closed source products. We’ve got no course telling them what their business process should be. But this highlights EXACTLY why proprietary software is a significant business risk, even if it is completely free. If another company can rip out the rug from underneath you at any time for any reason, and you don’t have access and control of the products you depend on… You’re asking for trouble. And it Linus is powerless to stop it - there is little chance any of us have.

This is why software freedom matters. This is why I do everything I can to avoid non-OSS software. And this is *exactly* why I encourage others to do the same.


<Kered.org>   © Copyright 2000-2005 by Derek Anderson
Get Firefox