Migrating from proprietary to Linux (Open) development platforms
More and more companies are adopting open-source Linux software as a way to gain competitive advantage. Linux is emerging as one of the most successful open source software adopted by many products ranging from servers to embedded products.
Recently Linux is emerging as an important mobile platform and is increasing its percentage of market share in a faster pace with major contribution coming from Android.
Thus an increase in need of Linux platform means companies move engineering resources from proprietary platforms to Linux based platforms to meet the market demands. A shrink in proprietary software means engineering resources have to migrate from proprietary development to Linux platform development.
For many, changing and adapting to a different environment would be a difficult task. But this migration can be made easy by attacking the key challenges engineers face and facilitate a smooth transition. This article discusses some common challenges engineers face migrating from proprietary environment to open Linux environment and possible solutions for it.
Generally proprietary software are developed by few selected individuals of a business unit and maintained locally. Thus the knowledge about the software, more importantly the knowledge on design decisions will be available within the team. Any information on the system is available locally
On a contrary open source system like Linux gets contribution from diversified team working across from the globe. Knowledge base for Linux modules is available on the internet generally as mailing lists archives. To get the necessary information one need to search in the archive with right keywords to retrieve the necessary information.
The first step to build the necessary knowledge base is to start subscribing to the mailing list and follow the mail chains activities. Senior members of the team who are in charge of technical decisions should take a lead role to read through the archives and build the necessary knowledge base and help team members to make design decisions. They can get in touch with the kernel maintainers of a particular module to get additional insights on the module.
One key factor that increases an engineer’s productivity is the debugging environment and related tools available for the platform. When engineers work on a platform, generally they get accustomed to platform’s development environment and find it difficult to get adapted to a newer environment. So when they migrate to a different environment like Linux it is important to educate and train on the new tool sets available on the newer platforms.
Linux kernel provides essential debugging framework like debugfs and other tracing tools that facilitate debugging. For example Linux kernel provides debug framework that can provide the user with function tracing or providing protocol tracing like in case of USB driver framework.
To ensure that engineers adapt faster to the debugging environment a simple hands-on bootstrap training on the debugging tools available and the how to use them can be conducted by senior members of the team.
In a proprietary development environment release management, setting up its pace and the feature to be delivered is totally controlled by the team. Any change done to the product can be made available in the subsequent release on a desired date.
In an open source development like Linux the speed of release and changes to be included is managed by kernel maintainers. The kernel maintainers are responsible for integrating the changes and release the next version.
If suppose you begin porting a Linux version to a platform, by the time when you stabilize the platform with a kernel version the community would be three to four versions ahead of you. You need to upgrade the kernel to the latest version and this would be a humongous task to again stabilize the platform with the latest version.
Such porting tasks are very unlikely in proprietary systems and thus it is important to allocate proper resource to upgrade your platform’s kernel with the latest kernel. It is a good practice and also provide good dividend when module owners keep track of changes in kernel activity. Such practices will help minimize surprises when migrating to the latest kernel.