--- disqus: hackmd --- # Using GitHub for academic research GitHub has become the go-to tool for software engineers across the world to keep their code together and collaborate. Easy, seamless, and available on all platforms making it a brilliant choice. I have been involved in academic research for quite some time now and can find some pretty good uses for this platform. GitHub is designed to keep codes in one place and facilitate collaboration. The same principle is the backbone of research as well, which is why I find GitHub quite appealing. These are the benefits of using GitHub: - Keeping all the code and data files together offline as well as a backup on the GitHub servers. - Version control for all the files. - Collaborating on projects together. - Managing the research projects and keeping track of the issues. - Free hosting for websites. For beginners,it is helpful to go through the basic documentation about GitHub. Besides, the [GitHub](https://docs.github.com/en) website itself, there are plenty of other websites and tutorials available on the web. I am including a few bare essentials which one needs to go through in order to understand what GiHub is: - [Creating a git repository.](https://docs.github.com/en/github/getting-started-with-github/create-a-repo) - [ Cloning a git repository](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository) - [ A tutorial for *git* usage.](https://docs.gitlab.com/ee/gitlab-basics/start-using-git.html) - [Guide to *git* version control.](https://medium.com/faun/beginners-guide-to-version-control-using-git-and-github-8bf44b421140) - [ Introduction to Branches.](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-branches) - [GitHub Project Boards.](https://docs.github.com/en/github/managing-your-work-on-github/about-project-boards) - [ Github pages.](https://pages.github.com/) The idea of having a single repository (in git terminology folder is repository) for a project helps a lot in reducing confusion and saves a lot of time. It indeed is a good habit. Making that repository a *git* repository and putting on GitHub is an even better habit. People working with Jupyter notebooks may find GitHub extremely helpful, especially in terms of executing the notebooks in the clouds. [nbviewer](https://nbviewer.jupyter.org/) can load the notebooks directly from the git repository which can then be executed directly on [binder](https://mybinder.org/). Even [Google colab](https://colab.research.google.com) allows import of notebooks from GitHub directly to be executed there. [HackMD](https://hackmd.io/), a Markdown editor allows the files to be pushed to and pulled from GitHub. In astronomy, most of the code is often open source and available to the community. Some researchers provide links to their codes hosted on GitHub which becomes easier to obtain and raise any issues. The point is that the familiarity with GitHub is advantageous. People sometimes present their entire work, including the codes, plots and related text files on GitHub as a repository which indeed serves as a welcome step towards reproducible research. Now, my personal bent towards *git* is motivated by reproducibility of research. In the world of academic research reproducibility has often been cited as a problem (see this [ BBC report](https://www.bbc.com/news/science-environment-39054778) or [ Nature article](https://www.nature.com/articles/sc201717)). Reproducibility should be the backbone of research as scientific findings work on this principle. Maintaining a git project should help in establishing this easily. One may put the link to the entire working repository once their findings are published so that anyone willing to re-do the analysis does that seamlessly. [People](https://slate.com/technology/2017/04/we-need-a-github-for-academic-research.html) have even proposed a GitHub type of social network for academic research. I have tried to implement GitHub for all my research projects, and the workflow has only gone smoother with time. The project management becomes easy, versions are easy to track and overall the repository structure becomes more transparent with time. I don't waste time looking for individual files anymore, as they have been neatly arranged in their respective places. With a backup on the GitHub cloud server, it becomes easy to access any item from any device. Working on multiple devices too becomes easy as I can run multiple items in parallel and then push to the respective branches and merge them subsequently. Moreover, the project boards are a neat way to organize all the work. We can have works in progress, work to be done, and work that has been completed arranged in the form of cards. We may open an issue from these cards itself. *Github pages* is also one of the noticeable features of Github as it lets one host personal webapges on GitHub,which again I feel is well suited for us. The static website can be put up easily using [Jekyll](https://jekyllrb.com/). The [academic pages](https://academicpages.github.io/) template is used by thousands of researchers and scientists around the world to keep their content together on a static web page. My [personal website](https://viveikjha.github.io) hosted on github too. Pushing things on the website is as easy as typing up a markdown or html file and pushing it on to GitHub. A [presentation](https://hackmd.io/@viveikjha/github_slides#), on this very topic, which I prepared some time back. #### More things to be added..