Software Development with Linux

Be prepared for the unexpected

SAT, 01 JAN 2011

I'm not advocating big design up front (BDUF).  Instead, I'm talking about being ready for the unexpected when your software first interact with something new.  In that case, you should not expect that everything will be error-less, even if "according to the documentation" everything should work fine without works.  Things always happen differently from what's written on paper.

While my case is from testing a software (that already run on various UNIX and Linux distributions) on a new Linux distribution, the same thing is true when you want to change a third-party component for a different one, try to interact with a new web services, etc.

Actually, this boils down to always plan enough time to test new stuff, but also enough time to fix any issues discovered (which you can't since you don't know how many issues will be found, but that's matter for another article).

To continue with my original story...  I tried to run a piece of software on Sabayon Linux.  It had previously been run successfully on RedHat, Debian, Ubuntu, SuSE, and various UNIX systems.  Yet, I discovered a new issue on Sabayon Linux : some shared libraries are linker scripts instead of being shared objects or symbolic links.  It was the first time I encountered such a thing.

While a fix for that isn't too complex (the Glasgow Haskell Compiler has a patch, which can serve as a nice example), it shows that issues may (and will) arise even in places "too standard".  As said by Stefan Timmermans Jr. and Steven Epstein, there is "a world of standards but not a standard world".

The chances are high for unexpected issues when new interactions take places.  Don't bet on the opposite.  If you are lucky and there is no issues, smile, and use that spare time to start working on the next feature! :)