Nearly Finished "The Big Migration"
Written by on Nov 13, 2009
In my work for my clients and my own sites, I create and maintain several "modules" of code, each dedicated to solving a particular problem. Everything from Google API calls to PayPal integration, the modules really enable my software to do its magic. However, as the number of modules has grown, so has the amount of work needed to stay sane in managing it all.
For the past few months, I've been migrating my development system to a more efficient setup. In particular, a change was made to how the modules mentioned above are versioned. I've been using a major/minor version numbering system, so I'd have to decide if a particular change was major or minor, copy the module to that new version number and then make the change. It hit me sometime in the summer that this was inefficient and clearly backwards.
My new setup reorganizes my software into two branches... trunk and tags, borrowed directly from the Subversion convention, which is one of my tools anyway. In trunk, I have a copy of each module without a version number. That's where I do my development. Once I'm happy with the changes made to a particular module, I "tag" it with a version number for the current year and month and a consecutive build number in the current month.
It was a slow start migrating my sites to this new setup, but I've been pleasantly impressed by how problem-free it has been. I'm nearly completed this migration.
The second thing I've noticed is that my creativity has been freed up by this new setup. I have more freedom to experiment knowing that my "tagged" versions are stable. I can always roll-back the trunk version to a clearly-defined revision, if I need. I've never had to do this, but it's peace of mind nonetheless.
Some may look at my business, not knowing the gold mine that I'm sitting on, and wonder why I don't just use existing off-the-shelf software and tools. Well, I say... that's not why I'm doing this. I'm an inventor. A dreamer. A creator. I want to solve problems by learning about them and working through them to arrive at an elegant and efficient solution. The modular framework that I've developed over the past several years may appear extremely proprietary (which it is), but it's tremendously enabling across my entire business and my clients' businesses. That's why I do this.
