Thursday, April 10, 2008

YetAnotherForum.NET (YAF) Upgrade and my approach to maintaining changes to Open Source Applications

I'm upgrading my YetAnotherForum.NET instance on my production server from 1.9.1.6 to 1.9.1.8.

This has been a surprisingly challenging process that has taken me 2 evenings now.

One of the problems I've run into with my personal development projects is how to mod an open source application like YetAnotherForum.NET or BlogEngine.NET and still be able to upgrade.

Here's my general approach to managing changes to open source software:

  1. Only modify core classes WHEN ABSOLUTELY NECESSARY. Most applications (like both YAF and BlogEngine.NET) support themes. In my "International" Theme for BlogEngine.NET, I've injected a lot of code into the Master Page Codebehind. If you can stick to placing code in plug points like a theme, you don't have to deal with the headache of re-applying your changes manually when upgrading the application.
  2. I create a Subversion project for my modified files, and a README that describes the version against which the modified files were made. It also describes a series of steps for getting back to a buildable version of YAF 1.9.1.6 + MODS. I also store off a downloaded ZIP file of the application source version against which I made modifications, just in case it becomes difficult to obtain this application version in the future.
  3. When upgrading to a new version (going from YAF 1.9.1.6 to 1.9.1.8), I take a pure copy of the source from 1.9.1.6 and 1.9.1.8. I use WinMerge to diff the two files. If they are the same, great, work is done for that file. If they are different, then I take the newer version and manually re-apply my changes into that version.

I can't help but wonder if there's a better way to do this. I probably should be leveraging Subversion's merging capabilities, but at least this process has worked for me (albeit a bit painful).

No comments:

Post a Comment