Managing third-party code in CVS

We are investigating the web portion of an application at the office and there are some items that need to be investigated in the mean time. For instance, I need to find a practical approach to bring the APS pages supplied by the vendor into source control.

During each version update they supply a new set of APS pages, most of the time only some of the code within the pages changes but the number of pages is significant enough that I am looking for some help from CVS. In addition to the changes from version to version, there are some customizations that we have to implement within each version release. I need to identify a simple workflow that will help us deal with what changes need to be handled as a new version is released.

CVS provides tags and branches to identify certain points with a code repository. I believe that using branches for each new version released by the vendor would allow us to work within each branch, even in a historical fashion. Having access to previous versions would allow us to do some regression testing if we found it to be needed. However, I fear that by using branches, our repository will become a little too — mmmm — complex? Not the right word but I need to look into this a little bit more.

I have decided to re-write my application

I spent some time today further looking into a couple of CFC based applications and giving another look to my own application. I was looking for similarities between my app and the example applications. When do you decide to re-write? in my case, when you realize that you have more to gain by making the change now and not waiting until the application just cannot be extended due to the mess it has become with procedural code.

If you are up to getting into some OOP, please let me know and I can share with your some of the information that I have put together thus far.

When do you decide to re-write

A few months ago we created a small application to manage the content for a custom project. The materials are organized by topics, modules, steps, objectives and assets. A topic is made up of one or more modules, while a module is made up of objectives and steps which may include an asset — pretty "simple" stuff.

During the initial development we had a pretty tight dateline so we organized the tasks between our team and got going as quick as we could. When we faced an obstacle we found a bandaid to get around it. It was done on time and met the client’s requirements. Since then it was put on maintenance mode, with only minimum code changes and new functionality kept to almost nothing.

You could imagine by the title of this entry that such maintenance mode has ended very recently as there are a few critical requests being made. While we narrow down those additions, I thought I would get started on adding a bit of logging to the application. I wrote a component (the application is written in Cold Fusion) that is kept in the Application scope so it can be easily reference throughout the application. The component takes 3 or 4 bits of information and basically enters a new record into a db table — nothing too crazy here!

However, I realized that the simple addition of this little bit of code across our application is quite a task to accomplish and I cannot imagine it would get easier as functionality requests increase. I have learned a little bit about object oriented approaches during the last couple of semesters and I can see where such approach would be of great benefit on this application. However, I do not feel comfortable enough to be able to architect the application into an OO foundation. The learning curve adds to the complexity of the decision making process and that makes me wonder and ask, at what point do you decide you need to re-write an application?

Reference cards

Once in a while I find myself having to look up some of the not-so-common commands within some of the applications I use while doing development. In those cases, usually Google can provide an answer but in some cases it is nice to have something on paper. I decided to put together this list of PDF reference cards for future use.

CVS, Subversion, VI, VIM extensions, and XPath

These are a couple of more extensive lists (1, 2) which offer similar reference cards for other applications.

IE 7 is on the horizon

Microsoft announced their progress on Internet Explorer 7 but without providing any specific information about features, improvements or even ship dates. Given the recent focus on security we can certainly expect that will be a big selling point for the new version, specially given the liabilities associated with the current version(s). Nonetheless, how much functionality can IE7 provide without compromising their security focus? Specially since IE is so tightly coupled with the rest of the operating system?

There will be plenty of rumors and thousands of opinions in the next few monts, even after the beta versions come out. How will this affect Firefox? My thoughts are that it can only help its future. I would say the general-frequent-internet-user knows about Firefox and recognizes the value it provides. IE7 will not change this and should it arrive with a feature set that truly improves the user experience, give the Firefox developers a couple of days and you will start seeing extensions implementing these new features. That is one of the values of open source, community involvement and implementation.

I was reading the team’s IE7 blog entry and I was a bit concerned about their reference to why launching a new version:

Why? Because we listened to customers, analysts, and business partners.

I find this to be quite an irresponsible position by a company who knows its product is the market leader and most of its users are neither analysts nor business partners. I would even argue that your average user would consider themselves a Microsoft customer. I don’t think I am alone on feeling this way since the very next entry appeared to be a clarification on who exactly called for changes and how one can participate … mmm, ok.

Instead of seeing a better version of IE, I would like to see companies and certain developers stop creating applications that can only be used with one browser, regardless of what browser that is. An improved Internet Explorer will not stop Firefox’s growth, corporations that create content only for IE will.