A series of discussions started during the Software Carpentry Bootcamp held at e-Research Afica 2014 between @JamesPJHetherington_, @brucellino and others took a look at the use of Continuous Integration (CI) in research software training and development. CI has famously been promoted by Martin Fowler and has traditionally been applied in software development, to ease the software engineering process, as well as provide a measure of transparency, reproducibility and sustainability to the process.
However, the work done by @JamesPJHetherington_ (which he can comment on below) shows that it's just as well to apply these principles and tools to the development of teaching material.
In my case, the problem being addressed by the CODE-RADE project was the need to remove bottlenecks to application delivery to distributed computing infrastructure, to automate the procedure as far as possible, while maintaining quality and transparency.
The aspects of overlap between our focus areas I think are:
- Researchers write code, often in teams - continuous integration is necessary for collaboration
- Code needs to be a first-class citizen of the scientific method - continuous integration provides a means to link a functional instance of an application to the commit tree, making it citable.
- By linking artifacts and the code that generates it to scholarly articles, you can make the output somewhat more reproducible.
Finally, the general methodology of test-driven development could make the teaching, learning and research processes more robust.
We've both adopted (non-exclusively, probably) Jenkins as the CI server, although there are several others, both hosted (Travis, Circle, etc) and in-house (Go from ThoughtWorks)
Much of the CI process however relies on the adoption of a CI culture (this ThoughtWorks article provides some background) - one which elevates testing, collaboration and reproducibility to primary features of the process, rather than simply the production of artifacts, whether they be software or teaching materials. Furthermore, the integration of code into the actual teaching materials makes for a more immersive experience for the learners.
So I have been wanting to write a paper on the inclusion of these tools, methods and culture into the scientific method and I'd like this topic to spark some ideas so that we can start working on it.