One of the nice things about open source software is the high reuse factor, especially for libraries. Leveraging 3rd party code can pay off -- invest a little time to integrate, and save yourself the effort of building similar functionality from scratch. Of course there's a tradeoff: higher maintenance, whether it be re-integrating when an API changes, tracking down & fixing a bug that isn't fixed upstream, or simply regression testing the latest "stable" release (or bleeding edge from the trunk, as the case may be).
So, I'm updating jQuery and its various plugins on Piwik (an open source analytics platform, the successor to phpMyVisites), and I've settled on the following kitchen rules:
- GATHER ESSENTIAL INGREDIENTS: set-up a test environment where you can run the trunk (or latest release) and this branch, side by side; use the latest browsers; for Firefox, get the Web Developer add-on
- READ THE RECIPE: read the Changelog or CHANGES ... otherwise, fallback to the source
- SEASON TO TASTE: forward port any local customizations that you know of (assuming you kept track of version numbers or copies of the original code)
- MIX AND BAKE: plug it in and see what breaks (learn from this and add more automated tests)
- DECORATE: patch as necessary with liberal sprinkling of diff or meld
Arguably, it's only necessary to develop and test with the latest browsers. If someone opens a ticket wrt an older browser and it isn't reproduceable with the latest browser, you can:
- Let it languish in the bug tracker until either someone else fixes it or no one really cares about supporting that browser anymore.
- Close it as WONTFIX and instruct the reporter to update their browser.
- Or actually fix it, hoping someone else has already run into this problem and blogged about it. ;)
It's also debateable whether a project should sync up 3rd party libraries. Some reasons not to:
- plan to replace that library
- too many local customizations (either didn't make it upstream or were rejected) to warrant continuous reintegration
- further development/maintenace on the library appears to have stalled
- the latest and greatest (notably, frameworks) is increasingly bloated, and you only depend on an ever smaller, tiny fraction of the code
On the topic of browsers, I'm debating whether or not to add Chrome to my list of browsers for UI testing. I have no plans to add SeaMonkey. I've already dropped Konqueror 3.5.x and 4.1.x from my desktop, in anticipation of 4.2 in a few weeks.