The worst of the glibc portability problems are hopefully behind us, but the LDPS recommends sticking with glibc-2.1.2 or 2.1.3 only. The LDPS recommends that, in general, dynamic linking with libraries should be used. The ncurses library is singled out as having an unstable interface and being a source of portability problems. There is more to the list than what we have listed above, of course. As Linux has matured, the magnitude of both of these problems has been reduced, but it's far from clear that they will ever go away.
Interfaces change because people find better ways of doing things.
There is value in keeping backward compatibility, but there is also a point where the whole system gets weighed down by compatibility code. Sometimes you simply have to move forward. The willingness to occasionally break old interfaces is what will keep Linux alive for many years to come. And, of course, the open source nature of the system means that distributors will always be able to tweak the code to meet their customers' needs. The best of these changes usually make it into the code base and become standard features.