Random thoughts for the day
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.