Introduction


Coding Up A Proof Of Concept


Figure 1

catalogue plot
catalogue plot

Developing Software In A Team


Figure 1

Waterfall Methodology Image credit: https://startinfinity.com/project-management-methodologies/waterfall


Figure 2

scrum Image credit: https://jordanjob.me/blog/scrum-diagram/


Figure 3

Kanban Methodology Image credit: https://startinfinity.com/project-management-methodologies/kanban


Figure 4

Project workflow with roles
Project workflow with roles

Figure 5

Create a github repo
Create a github repo

Figure 6

Empty github repo
Empty github repo

Figure 7

Repo with no issues
Repo with no issues

Figure 8

Label and issue
Label and issue

Figure 9

feature branching
feature branching

Figure 10

more feature branching
more feature branching

Figure 11

diagnostic plot
diagnostic plot

Figure 12

new issue
new issue

Figure 13

issue referenced in commit
issue referenced in commit

Figure 14

github issue with recent updates on branch
github issue with recent updates on branch

Figure 15

new pull request
new pull request

Figure 16

pull request with a reviewer comment
pull request with a reviewer comment

Figure 17

pull request merged
pull request merged

Making Code Reusable by You and Your Group


Figure 1

From https://xkcd.com/1987

Figure 2

Editing the LICENSE.md file
Editing the LICENSE.md file

Figure 3

The github license helper
The github license helper

Figure 4

Your license on github
Your license on github

Figure 5

Rendered README.md on GitHub
Rendered README.md on GitHub

Testing and Documenting Code


Figure 1

Help text being used as hint text in VSCode
Help text being used as hint text in VSCode

Figure 2

Documentation rendered by pandoc for the skysim.sim module
Documentation rendered by pandoc for the skysim.sim module

Figure 3

Documentation made with sphinx
Documentation made with sphinx

Automation and Continuous Integration (on GitHub)


Figure 1

The new workflow button on the actions page of your github repository
The new workflow button on the actions page of your github repository

Figure 2

Python workflow templates available on Github
Python workflow templates available on Github

Figure 3

A completed workflow on the actions page
A completed workflow on the actions page

Figure 4

Details of the workflow
Details of the workflow

Figure 5

The new workflow button on the actions page of your github repository  The New workflow button will take you to a page to choose a template from a long list. Last time we started with a pre-made template for building and testing python code. This time we are going to start with a generic template so we should click on the “set up a workflow yourself ->” link.


Figure 6

Choosing the sphinx build workflow from the marketplace  When we click the “Sphinx Build” result we get the following snippet of code. Which we can include in our workflow file.


Figure 7

Successfully run documentation workflow  The good news is that the documentation built without error. The bad news is that I can’t see the documentation to ensure that it’s actually useful. Note in the above image that there are three notes following our job: Status, Total duration, and Artifacts. Artifacts are files that are retained after a job completes. By default there are no artifacts, but we could modify our workflow so that the documentation is part of the artifacts.


Figure 8

A successful workflow which has produced and artifact  We can click on the documentation-html link to get a zip of the docs/build/ directory which contains all our documentation.


Sharing Code To The Wider Community


Figure 1

The zenodo header with and upload link
The zenodo header with and upload link

Figure 2

Uploading your files to zenodo
Uploading your files to zenodo

Figure 3

An example doi for published software on zenodo
An example doi for published software on zenodo

Figure 4

How to cite from zenodo
How to cite from zenodo

Figure 5

Submitting to ASCL.net
Submitting to ASCL.net

Figure 6

Numpy package entry on pypi.org
Numpy package entry on pypi.org

Figure 7

The classifiers for numpy as shown on pypi.org
The classifiers for numpy as shown on pypi.org