Get your code publication ready

Prerequisites

Understand basic Python programming
Understand basic shell scripting
Familiarity with the version control system git
A piece of code (or perhaps an idea for a piece of code) they think may (one day) be submitted to an open source journal

Context

A growing number of researchers use and write code for their research. This code should be published to allow for reproducibility of results; however, despite a growing number of journals requiring that the code needed to reproduce results is made available, this is not currently widespread practice. There are different ways code can be made available - eg: a code snippet on a blog, emailed on request, an interactive notebook available as supplementary information. For more substantial pieces of code there is also a growing number of journals which are focused on the review and publishing of scientific software. The Journal of Open Source Software (JOSS) is one such journal, and requires that the code is tested, documented and undergoes peer review - as such, they promote best practice in development of scientific software.

The Journal of Open Source Software

The lesson is structured around the submission criteria for The Journal of Open Source Software, however this aligns well with the submission criteria for other journals such as [The Journal of Open Research Software (https://openresearchsoftware.metajnl.com/)

Course Objective

To enable researchers in the materials science community (short term) and beyond (longer term) to publish their code with an open source software journal.

Where these lessons are from

Lesson material inspired by the work of Code Refinery

Note that the testing chapter was adapted from the workshop Python Testing and Continuous Integration which was adapted from the Testing chapter in Effective Computation In Physics by Anthony Scopatz and Kathryn Huff.

Schedule

Setup Download files required for the lesson
00:00 1. Introduction Why should I publish my code?
What are the requirements for submission to JOSS?
00:00 2. Documentation Why should I document my code?
02:03 3. Testing Why should I test my code?
04:06 Finish

The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.