Customer need:
Many network equipment vendors have different generations of devices still in operation in the field and their users are still happy with them because after years of use they still do the job. Sometimes though some upgrade is done to the network and new functionalities are required for the old devices in order to spare a huge investment to replace them completely with new generation devices.
The challenge:
The sources for the respective device version have been considered obsolete for quite some time now, they only exist on some backup server and they used to compile on one of the first Ubuntu versions. They no longer compile on any modern Linux distribution.
Over the years all the people who were familiar with that product either left the company or got assigned to new roles and new products bringing new revenue so nobody is available to take the task in time to keep the old customer happy.
The solution:
The source tree was cleaned up and adapted to a more flexible build system. Legacy binaries are included in the tree in order to make the build portable to modern Linux distributions.
The requested new features where implemented and tested.
Using a new compiler and running valgrind and profiling tools on the kernel and system applications led to the discovery of several important bugs that were hidden in the old version. Bad usage of optimization flags led to slow code and large cpu usage under stress.
Everything was fixed.
The outcome:
A new stable version was released to the customer in under 2 months and has been running with no known problems ever since.
The source tree is now a standalone project handled by git and future changes will be much easier to make.