Skip to content

Commit 9d42e9d

Browse files
add testing and other OSS contrib to epi-community-contrib post
Co-authored-by: James Azam <james.m.azam@gmail.com>
1 parent 1fda711 commit 9d42e9d

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

posts/epi-community-contrib/index.qmd

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ The R package in question is [{ringbp}](https://github.com/epiforecasts/ringbp).
2323

2424
## The problem
2525

26-
It is understandable that because {ringbp} was written in haste to produce insights to inform pandemic response it did not adhere to all software best practices. Usability, documentation, testing, code style and (computational) performance could be improved. Certain aspects of model code, like parameterisations, were hard-coded, not providing users the full flexibility that the model could allow.
26+
It is understandable that because {ringbp} was written in haste to produce insights to inform pandemic response it did not adhere to all software best practices. Usability, documentation, testing, code style, and (computational) performance could be improved. Certain aspects of model code, like parameterisations, were hard-coded, not providing users the full flexibility that the model could allow.
2727

2828
## Epiverse contribution
2929

3030
In the recent months Epiverse has collaborated with {ringbp} developers Seb Funk (also a member of Epiverse) and Carl Pearson (external collaborator), based at the London School of Hygiene and Tropical Medicine and University of North Carolina, respectively, to try and improve the R package, both internally and from the user-experience. The following sections will give brief summaries of some of the collaborative developments.
3131

3232
### User interface
3333

34-
The user experience (API) of the package has been refactored. The main simulation function `scenario_sim()` remains, but its arguments have been modularised to better group model parameters and control arguments. This also makes the package easier to develop further without necessarily introducing many breaking changes and prevents the number of top-level function arguments from expanding.
34+
The user experience of the package has been refactored. The main simulation function `scenario_sim()` remains, but its arguments have been modularised to better group model parameters and control arguments. This also makes the package easier to develop further without necessarily introducing many breaking changes and prevents the number of top-level function arguments from expanding.
3535

3636
:::: {.columns}
3737

@@ -124,7 +124,7 @@ Perhaps more important that any of the software best practices and user interfac
124124

125125
### Testing
126126

127-
- simulation correctness regression (snapshot) testing
127+
To ensure the correctness of the code is maintained with continued package development we have added regression ([snapshot](https://testthat.r-lib.org/articles/snapshotting.html)) unit tests. These tests automatically detect if updates to the code cause breaking changes to the output of the exported functions. In combination with continuous integration these regression tests aid developers in finding and fixing bugs.
128128

129129
### Miscellaneous
130130

@@ -136,12 +136,14 @@ The {ringbp} R package implements a simple but informative model for infectious
136136

137137
Epiverse-TRACE has the opportunity to not only develop new tooling for pandemic preparedness and response, but to contribute to the ecosystem of open-source software in infectious disease epidemiology. We hope that by covering the collaborative developments of {ringbp}, it can illustrate the benefits of bringing software up to date with best practices, and make tools available, accessible and robust when a new epidemic or pandemic occurs, in turn hopefully removing the need for redeveloping similar software in the future.
138138

139+
These efforts are not limited to {ringbp}. Similar contributions have been made to other packages, including [EpiNow2](https://epiforecasts.io/EpiNow2/), and open source communities such as the [epinowcast](https://github.com/epinowcast/) community, where documentation, testing, and code enhancements have helped strengthen the forecasting and nowcasting software ecosystem in the last couple of years.
140+
139141
Enhancing the accessibility of software for users and developers by improving its documentation and user interface will hopefully provide a gateway for more external contributors to engage with the project. In the public health landscape of temporal surges in capacity and priorities, better enabling community contributions to open-source software should aid software sustainability.
140142

141143
All of the changes discussed in this blog post can be found in the [{ringbp} news](https://epiforecasts.io/ringbp/news/index.html). For details of developments see the [pull request history of {ringbp} on GitHub](https://github.com/epiforecasts/ringbp/pulls?q=is%3Apr+is%3Aclosed).
142144

143145
## Acknowledgements
144146

145-
Thanks to Seb Funk and Carl Pearson for helpful feedback when drafting this post and for their collaboration on the {ringbp} project.
147+
Thanks to Seb Funk, Carl Pearson and James Azam for helpful feedback when drafting this post and for their collaboration on the {ringbp} project.
146148

147149
[^1]: [Defined by Cambridge Dictionary](https://dictionary.cambridge.org/dictionary/english/abandonware) as: "software that is no longer produced or supported by the company that originally made it".

0 commit comments

Comments
 (0)