Select Page
NOTE: This is a static archive of an old blog, no interactions like search or categories are current.

A few years ago I decided to switch to PHP as my web development language of choice – I used Perl before that – since then I have done all my web development in PHP and tend to pick projects developed in PHP over non PHP ones.
Most notably I use Horde with some of it’s modules, most notably IMP. Other systems I wrote myself using RoadSend Site Manager. These rely on PEAR modules to function, I keep Horde and IMP up to date as possible but my own system I wrote about 3 years ago have not been updated since, and neither has Site Manager.
Last week I updated some PEAR module using portupgrade and suddenly I ended up with weird behaviour in IMP where it won’t show some attachments in mail, but not all. Eventually I gave up and just started upgrading my whole PHP and Apache system to new versions since mine was getting a bit old and outdated.
So I uninstalled all the old stuff after making backups and started fresh, when it was all done and moved to the new FreeBSD PHP build system and PEAR all up to date I thought it will all be good, but it was not. Horde started having issues, strangely only with mozilla, it would not do the redirect to the login page correctly. My own code would fail due to some change in the DB abstraction that caused calls to fetchrow() on a DB Handle to return unknown method errors and still the attachments were broken. Essentially the stuff was not backward compatible at all.
I fixed things by getting hold of old copies of PEAR and placing it in the directories of each application and overriding the PHP include paths for those applications to point to their own older instance of PEAR. This kind of thing just winds me up and it is totally typical of the Open Source world where breaking backwards compability and forever redoing code is the order of the day.
I can understand that expecting 3 year old code to still work is pushing my luck a bit, but HORDE and IMP is recent projects that I keep up to date, you wouldn’t expect them to use functionality that is that outdated.