Presenters-0719
From CSDMS
CSDMS 2026: Modeling Landscapes in Motion
How Can I Share My Code? Building a Community-Ready Scientific Software Repository
Abstract
Do you have code that you'd like to share with others—maybe you've written a model for your thesis, or perhaps you're required to do so by a journal—but you're not sure of the best way to go about it? We'll try to address this problem in this clinic. We'll use Python because it's the standard language of CSDMS. Much of what we show, however, can be translated to other languages.
This clinic has two parts. First, we'll show how to properly package Python code so that it can easily be used by others. Second, we'll configure a GitHub repository with files and services that will help make the code FAIR and sustainable over time—a "community-ready" repository.
The following topics address what could be included in such a repository. While we probably won't be able to cover all of these in the clinic, we list them for reference.
- Writing an informative README (and adding status badges!)
- Choosing a software license
- Packaging, using guidance from the Python Packaging Authority (PyPA)
- Automating repository tasks with nox
- Linting with black, flake8, and pre-commit
- Unit testing with pytest
- Continuous integration with GitHub Actions
- Building documentation with sphinx
- Adding a Digital Object Identifier (DOI) with Zenodo
- Creating a citation file with cffinit
- Including instructions for contributors, and a code of conduct
- Crediting contributors
- Acknowledging funding support
References will be provided for each topic for further exploration.
Participants will leave with a clear, practical template for sharing scientific software in a way that supports reuse, citation, and long-term community engagement.
Please acknowledge the original contributors when you are using this material. If there are any copyright issues, please let us know (CSDMSweb@colorado.edu) and we will respond as soon as possible.
Of interest for:
