The optimal toolbox for Open Source Development
Are you looking for a fully integrated set of tools for state-of-the-art support of C++ development on Linux? Then look no further. Thomas Arnbjerg, software developer at TechPeople, the Danish subsidiary of Data Respons, has done the job for you, putting together the optimal Open Source development setup, and describing it in an extensive step-by-step guide, free for you to download from our website. Here is an introduction to the paper.
Tools to manage software development involving various developers are often expensive. As an alternative, the Open Source world offers similar tools, but in the past they have been standalone or difficult to integrate. That has changed, according to Thomas:
– In this guide I’ve tried to pull these tools together into a well-functioning, fully integrated and free set of tools which provide state-of-the-art support of C++ development on Linux. Many of these tools may also be used in other situations.
Thomas Arnbjergs guide addresses the well known challenges in coding:
- Ensuring that code written by different developers is uniform
- Ensuring that many developers may work on the same program at the same time
- Ensuring that each developer is able to QA his or her code before it’s integrated into the system
- Ensuring that the overall system will function after changes are implemented
The guide details a process in which the individual developer creates a branch in the source code to develop a new feature without compatibility issues in relation to the work done by the other developers. The following tools are used to support the process – all installed under Linux:
- Jenkins as Continuous Integration Server with a wide variety of installed plugins
- Eclipse IDE for C/C++ development with an extensive range of installed plugins
- Git versioning systems
Developers will see how, at the start of a new feature, they get their own sandbox for the development. They receive tools support for development with code completion and formatting. On the build server, their codes are controlled using static code analysis and unit test. Code coverage is measured and quality criteria/goals can be set out. Once a feature is completed, ‘develop’ is merged into the feature branch and it is ensured that everything runs in Jenkins. After that, there is a merge back to ‘develop’ and the feature is finished. All things considered, the integration task becomes so much simpler and most of it happens in the feature branches.
Furthermore Thomas Arnbjerg drills below the surface and looks at the configuration and use in a Continuous Integration (CI) scenario in which Jenkins supports the development in feature branches.
According to Thomas, the only annoying aspect about Jenkins is that (like all other open source projects) Jenkins does not have a large marketing department which highlights its excellent qualities. Another thing is that all the functionalities available today as well as future improvements have required and will continue to require that a person who understands the problems and has the skills and the time to solve them (could be sponsored) works out an extension which will make life easier for everyone. These are the mechanisms which have created the super tool that can be installed today free of charge.
Everything in this guide is open source-based without costs for licenses and all the projects go several years back and are actively maintained. Following up on development and upgrading on an ongoing basis is thus manageable.
Last but not least, it is considered good style to give something back to those who have made it possible to create a professional development setup that does not require investment of large amounts of money. So, while you benefit from these tools you might perhaps consider donating part of the savings to the open source projects or contribute with developer resources to make the experience even better.