almanack

An open-source handbook of applied guidance and tools for sustainable software development and maintenance.

https://github.com/software-gardening/almanack

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

open-source software-sustainability
Last synced: 6 months ago · JSON representation ·

Repository

An open-source handbook of applied guidance and tools for sustainable software development and maintenance.

Basic Info
Statistics
  • Stars: 12
  • Watchers: 1
  • Forks: 3
  • Open Issues: 73
  • Releases: 13
Topics
open-source software-sustainability
Created almost 2 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License Code of conduct Citation

README.md

The Software Gardening Almanack

PyPI - Version Build Status Coverage Status Software DOI badge

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 almanack package: 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

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

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
enhancement (43) documentation (11) bug (7) Fellowship Milestone 2 (4/13 - 12/31)) (1) content-dev (1)
Pull Request Labels
dependencies (73) python (66) javascript (4) enhancement (3) github_actions (1) bug (1)

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.

  • Versions: 15
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 926 Last month
Rankings
Dependent packages count: 10.9%
Average: 36.0%
Dependent repos count: 61.1%
Maintainers (3)
Last synced: 7 months ago