Software Rot : PHP Change Example

One my favorite references for PHP over the past 5-7 years has been PHP Functions – Essential Reference by Greant et alia. It is still available on Amazon.com and I  refer to its MySQL functions from time to time. But of late I am having ever more problems. There is no coverage of PDO, OB, and SQLite functions while the PDF and even the MySQL references are becoming out of date. I had previously downloaded the ER library of functions – and I looked for an update at PHP-er.com to get the latest; but the site is no longer there. However, I decided to truck on using the PDF section of the  Essential Reference. I tried 4 function examples. None of them worked. The PDF function library has moved on and many of the function references have changed and/or been deprecated. This is called Software Rot where an  API no longer works because  the name, arguments,  and/or underlying functionality of API functions have changed. It is as if in 3-5 years, the book and its tutorials had become a curious Easter Island antiquity just like the book’s own front cover. And Software Rot is becoming a major problem for developers.

Software Rot is like Data Rot. In the world of hardware, Apple Power PC users are finding that out as the latest version of MacOS, Snow Leopard, does not support Power PC based Macs. Likewise all my old iOmega external drives have images virtually locked on them with no access except through an ancient PC with Windows ME. Here the problem is hardware connections as well as API support. Ditto for many tape backups. And as for floppy disks …

In a similar fashion, the ever moving  change of software versions and APIs renders working  programs no longer functional. The transition from PHP 4 to PHP 5 is taking place right now and literally millions of lines of code have to be scanned and revised/updated. Ditto for MySQL 4 to 5 transition. Lots of major commercial databases like DB2, Oracle, PostGreSQL , SQL server and other databases face the same issue. Software Rot is an issue for both commercial and open source software suppliers.

What is worse is that Open Source can often be vulnerable to accelerated Software Rot. First, Open software frequently has  a proliferation of routines to do the same basic task – oh, let me count the ways I can do database access in PHP[several dozen].  Or check out the dozens of JavaScript Frameworks. Then there are ‘forks’ as  keen developers wants to take a library in a new direction. Finally, because of the split, the critical mass of users supporting a specific library can decline such that documentation and support wanes. Finally, because the software is free and there is a legal taboo against charging for updates – there may be little incentive for developers to keep it up to date. Open Source is going to have to come to grips with the need to preserve code that has become deprecated/obsolete/split off.

Maybe developers who support these varieties of older software can be allowed to charge for updates to deprecated/old Open Source code. On the commercial side, the same Software Rot is happening to big chunks of software. Try to get updates to WinME or Windows 2000. Ditto for early versions of the MacOS.  CAD users are coming to a similar software passage. Software vendors, already stretched to the limits by the economic downturn, are loath to spend scarce development time and resources on old code regarded as marginal . Yet they dare not release the code to interested developers who would be willing to maintain it for a fee – because of the fear of loss of coding secrets or spawning a viable competitor.

Whatever the case, Software Rot, like Data Rot is going to become a growing concern for development. SaaS vendors will say this is one of the key benefits of their services – users always have the latest and greatest . But users know that has its risks too. As organizations look to reduce the percentage of IT dollars devoted to maintaining their applications- the epidemic of Software Rot is working against them.