As operating systems evolved and improved, backward compatibility was sometimes a problem for business software. RDBMS's (such as Sybase, Oracle, Ingress, Informix, etc.) had a hard time keeping pace with evolving Operating System versions, especially in the years when Sun Microsystems went from Berkeley Unix to System V Unix.
Technically, ports were required to produce binaries compatible with the newly released OS. Sometimes, simply recompiling source code under the new OS was sufficient. With more complicated packages, though, the porting effort was often much more involved. Changes in definition files, new additions and changes in the directory structure for include files had to be propagated through all source code files. Finally, supporting library names often changed, so references throughout the code and makefiles had to be updated. Adding to the time-consuming process, regression testing had to be conducted prior to release.
While vendors struggled to port their systems to the latest operating system version, business operations were forced to suffer during the often painful migrations. Business application ports could often not even be started until supporting packages had completed their migrations.
As a result, systems hosting vital business applications were unable to maintain compatibility with enterprise-wide operating system upgrades. Support problems increased, as retired operating system versions had to be supported beyond end-of-life.