Project managers and porting technical leads need to consider multiple aspects of a porting project before embarking on the actual port itself. Careful investigation of these aspects has led us to many successful porting projects in the past. Because every porting project is different, these aspects may take on different shapes and forms. Even so, the underlying concepts and descriptions will remain the same. A porting project can be summarized as follows:
- Scoping. Ask questions, inspect the code if available, ask more questions and investigate the risks, and develop the schedule.
- Analysis. Ask more questions, investigate the risks, and create the schedule based on technical and business issues.
- Porting. Set up the build environment, compile, and unit test.
- Testing. Set up the test environment, test, and analyze performance. Go back to the porting process if bugs are found.
- Training. Train support and sales personnel on the application and operating environment.
Because complexities and risks associated with different technical aspects of the porting project may affect the overall schedule and budget, the transition point between each step of the porting process allows the project team to reassess its original estimates. Reassessing the original estimates helps set the proper expectations of all stakeholders early on before the real work of porting begins. As in all projects, the success of the project is defined not only by the successful delivery of the final product; it is also defined by how well the project was managed to the satisfaction of all parties involved. In the next chapters, we go through each step of the porting process. We present information about Linux that porting engineers can use as they go through the scoping, analysis, porting, and testing phases of a porting project.