Open source software development has significant impact on both society and scientific research. Scientific research requires open software to collect observations, analyze data, or present results.
In the following the best practices for openness of code will be outlined. Open sourcing code increases the impact and is needed for reproducibility. Simply releasing source code is insufficient as the failure to maintain a project rapidly leads to obsolescence. Building a community can preserve the usability.
Reproducibility is critical in computer science. Publication of the source code is essential so that others are able to reproduce the results achieved with this program.
Source release also facilitates the progression in information technological advances as it enables to build on it as well as on top of it.
A collaborative and open project allows to spread the resource and maintenance load and significantly contributes to the sustainability of software.
Embracing an open approach to development has tremendous benefits. It allows to build on the work of other developers, and enables other to build on you own efforts.
Do some research before starting a new programming project in order figure out if aspects of the problem have already been solved.
Numerous fundamental scientific algorithms and methodologies have already been implemented in open-source libraries. Haven the source means it easy to evaluate if it will work in a particular context.
However, if there are no existing implementations for the targeted platform, or existing solutions do not scale with the size, complexity, or other specifics of the data, then novel approaches might be necessary that lead to new developments and subsequently discoveries.
Learn the basics of software development (software-carbentry; best-practice) and be inspired by them. Study the source code of others, join open-source projects and provide patches. Become engaged and learn from others.
Be your own user and use your own software.
Numerous projects are developed in secret duo to many wrong assumptions. Making an a project transparent facilitates its progression dramatically and enables others to contribute. A consequence of transparent, open development is that it allows many eyes to evaluate the code and recognize and fix any issues. A public repository like GitHub greatly facilitate such kind of team development approach. It provides built-in version control, Wikis, mailing lists, and bug trackers and support communication with collaborators to share effort, document errors, and solve problems more quickly .
Difficult compilation or installation processes will raise a barrier against participation.
In order to establish a project it is important to promote it. Go to conferences and present it.
Scientific software developed fulfills an immediate need. Open-source communities guarantee persistence of projects by allowing project leadership to be shared and passed to other members. This offers the opportunity to naturally progress to new challenges with the knowledge that the software created will remain available and benefit others.