almanack
An open-source handbook of applied guidance and tools for sustainable software development and maintenance.
Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 3 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (16.8%) to scientific vocabulary
Keywords
Repository
An open-source handbook of applied guidance and tools for sustainable software development and maintenance.
Basic Info
- Host: GitHub
- Owner: software-gardening
- License: bsd-3-clause
- Language: Jupyter Notebook
- Default Branch: main
- Homepage: https://software-gardening.github.io/almanack
- Size: 136 MB
Statistics
- Stars: 12
- Watchers: 1
- Forks: 3
- Open Issues: 73
- Releases: 13
Topics
Metadata Files
README.md

The Software Gardening Almanack
The Software Gardening Almanack is an open-source handbook of applied guidance and tools for sustainable software development and maintenance.
The project entails two primary components:
- The Almanack handbook: the content found here helps educate, demonstrate, and evolve the concepts of sustainable software development.
- The
almanackpackage: is a Python package which implements the concepts of the book to help improve software sustainability by generating organized metrics and running linting checks on repositories. The Python package may also be used as a pre-commit hook to check repositories for best practices.
Please see our pavilion section of the book for presentations and other related materials for the Almanack.
Handbook
- Online (HTML): https://software-gardening.github.io/almanack/
- Offline (PDF): software-gardening-almanack.pdf
Package
Install
You can install the Almanack with the following:
```bash
install from pypi
pip install almanack
install directly from source
pip install git+https://github.com/software-gardening/almanack.git ```
Once installed, the Almanack can be used to analyze repositories for sustainable development practices.
Output from the Almanack includes metrics which are defined through metrics.yml as a Python dictionary (JSON-compatible) record structure.
Command-line Interface (CLI)
You can use the Almanack package as a command-line interface (CLI):
```bash
generate a table of metrics based on a repository
almanack table path/to/repository
perform linting-style checks on a repository
almanack check path/to/repository ```
Pre-commit Hook
We provide pre-commit hooks to enable you to run the Almanack as part of your automated checks for developing software projects.
Add the following to your pre-commit-config.yaml in order to use the Almanack.
For example:
```yaml
include this in your pre-commit-config.yaml
- repo: https://github.com/software-gardening/almanack
rev: v0.1.1
hooks:
- id: almanack-check ```
Python API
You can also use the Almanack through a Python API:
For example:
```python import almanack import pandas as pd
gather the almanack table using the almanack repo as a reference
almanack_table = almanack.table("path/to/repository")
show the almanack table as a Pandas DataFrame
pd.DataFrame(almanack_table) ```
Example notebook
Please see this example notebook which demonstrates using the Almanack package.
Contributing
Please see our CONTRIBUTING.md document for more information on how to contribute to this project.
Acknowledgements
This work was supported by the Better Scientific Software Fellowship Program, a collaborative effort of the U.S. Department of Energy (DOE), Office of Advanced Scientific Research via ANL under Contract DE-AC02-06CH11357 and the National Nuclear Security Administration Advanced Simulation and Computing Program via LLNL under Contract DE-AC52-07NA27344; and by the National Science Foundation (NSF) via SHI under Grant No. 2327079.
Owner
- Name: Software Gardening
- Login: software-gardening
- Kind: organization
- Repositories: 1
- Profile: https://github.com/software-gardening
Citation (CITATION.cff)
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
---
cff-version: 1.2.0
title: The Software Gardening Almanack
message: >-
If you use this work in some way, please consider
citing it using the metadata from this file.
This work was supported by the Better Scientific Software Fellowship Program,
a collaborative effort of the U.S. Department of Energy (DOE), Office of
Advanced Scientific Research via ANL under Contract DE-AC02-06CH11357 and the
National Nuclear Security Administration Advanced Simulation and Computing
Program via LLNL under Contract DE-AC52-07NA27344; and by the National Science
Foundation (NSF) via SHI under Grant No. 2327079.
type: software
authors:
- given-names: David
family-names: Bunten
orcid: "https://orcid.org/0000-0001-6041-3665"
- given-names: Will
family-names: Davidson
orcid: "https://orcid.org/0009-0006-1415-6964"
- given-names: Faisal
family-names: Alquaddoomi
orcid: "https://orcid.org/0000-0003-4297-8747"
- given-names: Vincent
family-names: Rubinetti
orcid: "https://orcid.org/0000-0002-4655-3773"
- given-names: Gregory
family-names: Way
orcid: "https://orcid.org/0000-0002-0503-9348"
repository-code: "https://github.com/software-gardening/almanack"
abstract: |
An open-source handbook of applied guidance and tools for sustainable software development and maintenance.
keywords:
- software-gardening
- software-sustainability
- open-source
- guidance
- book
license: BSD-3-Clause
identifiers:
- description: Software DOI
type: doi
value: "10.5281/zenodo.14765834"
- description: Introductory Blog Post through BSSw
type: doi
value: "10.5281/zenodo.15330702"
- description: Poster for CU Anschutz DBMI Retreat - August 2025
type: doi
value: "10.5281/zenodo.16943577"
references:
- authors:
- given-names: David
family-names: Bunten
- family-names: Way
given-names: Gregory P.
date-published: "2023-08-17"
title: Long-Term Software Gardening Strategies for Cultivating Scientific Development Ecosystems
type: article
url: https://bssw.io/blog_posts/long-term-software-gardening-strategies-for-cultivating-scientific-development-ecosystems
notes: |
This blog article is a related resource published through the Better Scientific Software (BSSw)
organization and serves as inspiration towards related materials.
- authors:
- family-names: Hassan
given-names: Ahmed E.
date-published: "2009-05-16"
doi: 10.1109/ICSE.2009.5070510
location:
name: Vancouver, BC, Canada
publisher:
name: IEEE
title: Predicting Faults Using the Complexity of Code Changes
type: article
url: https://doi.org/10.1109/ICSE.2009.5070510
notes: |
This article is a related resource that serves as inspiration in deriving our
Shannon's information theory entropy calculations to software.
This appears as output within the Almanack under metrics labeled with "id : name"
of "SGA-VS-0001 : repo-agg-info-entropy" and "SGA-VS-0002 : repo-file-info-entropy" (and associated methods).
- title: 'Ecosyste.ms: Repos'
type: software
authors:
- given-names: Andrew
family-names: Nesbitt
email: andrew@ecosyste.ms
orcid: 'https://orcid.org/0009-0007-2710-1118'
repository-code: 'https://github.com/ecosyste-ms/repos'
url: 'https://repos.ecosyste.ms'
abstract: >-
An open API service providing repository metadata for many open source software ecosystems.
keywords:
- open source
- package management
- software
license: AGPL-3.0
notes: |
The Ecosyste.ms Repos API is used to source data for use within the Almanack Python package.
- title: >-
OpenAlex: A fully-open index of scholarly works, authors, venues, institutions, and concepts
abstract: |
OpenAlex is a new, fully-open scientific knowledge graph (SKG), launched to replace the discontinued Microsoft Academic Graph (MAG). It contains metadata for 209M works (journal articles, books, etc); 2013M disambiguated authors; 124k venues (places that host works, such as journals and online repositories); 109k institutions; and 65k Wikidata concepts (linked to works via an automated hierarchical multi-tag classifier). The dataset is fully and freely available via a web-based GUI, a full data dump, and high-volume REST API. The resource is under active development and future work will improve accuracy and coverage of citation information and author/institution parsing and deduplication.
type: article
license: CC0-1.0
copyright: Creative Commons Zero v1.0 Universal
database: DOI.org (Datacite)
date-accessed: "2024-12-11"
url: https://arxiv.org/abs/2205.01833
keywords:
- "Digital Libraries (cs.DL)"
- "FOS: Computer and information sciences"
authors:
- family-names: Priem
given-names: Jason
- family-names: Piwowar
given-names: Heather
- family-names: Orr
given-names: Richard
date-published: "2022-05-04"
identifiers:
- type: doi
value: 10.48550/ARXIV.2205.01833
notes: |
The OpenAlex API is used to source data for use within the Almanack Python package.
- title: >-
Evaluation of software impact designed for biomedical research: Are we measuring what's meaningful?
abstract: |
Software is vital for the advancement of biology and medicine. Analysis of usage and impact metrics can help developers determine user and community engagement, justify additional funding, encourage additional use, identify unanticipated use cases, and help define improvement areas. However, there are challenges associated with these analyses including distorted or misleading metrics, as well as ethical and security concerns. More attention to the nuances involved in capturing impact across the spectrum of biological software is needed. Furthermore, some tools may be especially beneficial to a small audience, yet may not have compelling typical usage metrics. We propose more general guidelines, as well as strategies for more specific types of software. We highlight outstanding issues regarding how communities measure or evaluate software impact. To get a deeper understanding of current practices for software evaluations, we performed a survey of participants in the Informatics Technology for Cancer Research (ITCR) program funded by the National Cancer Institute (NCI). We also investigated software among this community and others to assess how often infrastructure that supports such evaluations is implemented and how this impacts rates of papers describing usage of the software. We find that developers recognize the utility of analyzing software usage, but struggle to find the time or funding for such analyses. We also find that infrastructure such as social media presence, more in-depth documentation, the presence of software health metrics, and clear information on how to contact developers seem to be associated with increased usage rates. Our findings can help scientific software developers make the most out of evaluations of their software.
type: article
database: arXiv.org
date-accessed: "2024-10-02"
url: http://arxiv.org/abs/2306.03255
keywords:
- Computer Science - Software Engineering
- Quantitative Biology - Other Quantitative Biology
authors:
- family-names: Afiaz
given-names: Awan
- family-names: Ivanov
given-names: Andrey
- family-names: Chamberlin
given-names: John
- family-names: Hanauer
given-names: David
- family-names: Savonen
given-names: Candace
- family-names: Goldman
given-names: Mary J.
- family-names: Morgan
given-names: Martin
- family-names: Reich
given-names: Michael
- family-names: Getka
given-names: Alexander
- family-names: Holmes
given-names: Aaron
- family-names: Pati
given-names: Sarthak
- family-names: Knight
given-names: Dan
- family-names: Boutros
given-names: Paul C.
- family-names: Bakas
given-names: Spyridon
- family-names: Caporaso
given-names: J. Gregory
- family-names: Del Fiol
given-names: Guilherme
- family-names: Hochheiser
given-names: Harry
- family-names: Haas
given-names: Brian
- family-names: Schloss
given-names: Patrick D.
- family-names: Eddy
given-names: James A.
- family-names: Albrecht
given-names: Jake
- family-names: Fedorov
given-names: Andrey
- family-names: Waldron
given-names: Levi
- family-names: Hoffman
given-names: Ava M.
- family-names: Bradshaw
given-names: Richard L.
- family-names: Leek
given-names: Jeffrey T.
- family-names: Wright
given-names: Carrie
date-published: "2023-06-05"
notes: |
This article was used to help inspire metrics and content found within the Almanack.
GitHub Events
Total
- Create event: 78
- Release event: 9
- Issues event: 120
- Watch event: 12
- Delete event: 64
- Issue comment event: 132
- Push event: 241
- Pull request review comment event: 224
- Pull request review event: 301
- Pull request event: 247
Last Year
- Create event: 78
- Release event: 9
- Issues event: 120
- Watch event: 12
- Delete event: 64
- Issue comment event: 132
- Push event: 241
- Pull request review comment event: 224
- Pull request review event: 301
- Pull request event: 247
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 104
- Total pull requests: 175
- Average time to close issues: 17 days
- Average time to close pull requests: 4 days
- Total issue authors: 5
- Total pull request authors: 4
- Average comments per issue: 0.1
- Average comments per pull request: 0.73
- Merged pull requests: 121
- Bot issues: 0
- Bot pull requests: 73
Past Year
- Issues: 83
- Pull requests: 144
- Average time to close issues: 15 days
- Average time to close pull requests: 3 days
- Issue authors: 5
- Pull request authors: 4
- Average comments per issue: 0.11
- Average comments per pull request: 0.67
- Merged pull requests: 103
- Bot issues: 0
- Bot pull requests: 66
Top Authors
Issue Authors
- d33bs (82)
- willdavidson05 (19)
- axiomcura (1)
- gwaybio (1)
- jenna-tomkinson (1)
Pull Request Authors
- d33bs (85)
- dependabot[bot] (73)
- willdavidson05 (16)
- axiomcura (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 926 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 15
- Total maintainers: 3
pypi.org: almanack
An open-source handbook of applied guidance and tools for sustainable software development and maintenance.
- Documentation: https://almanack.readthedocs.io/
- License: BSD-3-Clause
-
Latest release: 0.1.8
published 7 months ago