{ Notes }

using and pursuing academic researchers in using git version control

Posted on | Development

Apparently development in team is always exicting and beneficial subsequently there are certain hurdles apart from other targets of software development. Generally speaking there are set of responsibilities and targets to achieve and also there are overheads, one of the overhead is, where in developers have to worry about sharing and using contributions amongst more than one developers. This becomes more serious when there exists team of developers working across different geographical locations. Specifically the developers in my team, their prime job is not software development instead they are required to continue their vital research activities. Accordingly this post is about non computer science researchers started using version control software Git and GitHub and found it really beneficial for their purpose.


Personally I belive software development tools are essential part of any software development project, these tools simply makes a programmers life easier and eliminates him from extra hastles of administrative work so that he or she could concentrate in writing efficient and bugfree code. However not everyone realises this case until they have a serious requirement.

I work in academic research, I develop scientific applications pertaining to requirements of researchers in my group, the codes is available to run on desktop Workstation and Supercomputers. Basically the people I work with are primarily scientists researching very interesting things in the field of Molecular Dynamics and have produced mind blowing research in respective areas. They are seeking to find a cheaper and simpler water filteration methods, self cleaning surfaces, paints and rocket re-entry systems after arriving from space voyage, etc for more details about our group please visit Micro and Nano Fluids for Engineering. Additionally all researchers in the group develop codes to simulate their research work, further the code is accumulated to a larger code base to our open source MD code OpenFOAM-2.1.x. Essentially our code is forked from OpenCFD version 2.1 with further enhancement to enable MD simulations for micro and nano flows for engineering.

Moreover the developers maintain code by taking manual backups and further share contributions to code via compressed files distributed over emails, Google Drive and Dropbox. Conversely these manual techniques are not incorrect however since there are tools available to make processes simple therefore ignoring them would be awkward. Essentially the researchers are preoccupied in their research that they cannot afford to spend time in familiarising with another software tool, obviously they are Mechanical Engineers so they are not accustomed to frenzy ecosystem of using different tools in software development.

Git & GitHub

There are several imperative tools required in software development and out of them is version control, presently version control software does not requires an exhaustive introduction when discussed about Git. Git is a fast and efficient version control software that could be used to maintain code whilst software development, considerably taking into account backups and code modifications.

Recently in September I introduced Git to my team as we have planned to release our code public therefore priorly we have to achieve two vital tasks, firstly move all our functionality from OpenFOAM V1.7 to V2.1 and secondly ensure our code is distributable to larger users across different geographical locations. Evidently the first task is enormous as we would have to port enormous code from a one major version of framework to 2 version higher. Eventually everyone agreed on using GIT as we found it is one of the tool to assist in achieving a larger goal.

Additionally even distributing and merging contributions to our code within our group would need a distributed version control to handle all required tasks therefore maintaining our own Git server will come with enormous tedious tasks in its own. Correspondingly I resorted to using a web based version control service, which could facilitate in distributing and version controlling our code. Moreover we also need a couple of private repositories for our other projects and also for our internal development prior to releasing code. Ultimately I decided to go for GitHub as I was already using it since couple years and considering various ecosystem of tools they provide.

Curiosly I came to know about GitHub Education, it is available for students, teachers and research groups seeking for cloud based Git service. The highlight of GitHub Education is that its free and one can have N number of private repositories with all the functinality available with paid services.

Eventually we are developing & maintaining our codes using GitHub and obviously everyone in our team is happy the way its going, we will be soon release our code public on JamesWeirFluidsLab. Lastly I would like to thank GitHub for granting us GitHub Educational Organisational service.

Image credits: Courtesy Andrew McWilliams

Correlation does not imply causality, but there is a very strong correlation between using version control and doing good computational science. - Software Carpentry