Thank you for your interest in contributing to birdnetR! This document covers the development workflow, branching strategy, versioning conventions, and release process for maintainers and contributors.
| Branch | Purpose |
|---|---|
main |
Default branch. All development and releases happen here. |
feature/*, fix/* |
Short-lived branches for individual changes. Target main via PR. |
release/x.y.z |
Short-lived branch cut from main to prepare a CRAN submission. Merged back into main after acceptance, then deleted. |
There is no long-lived development branch. Day-to-day work goes directly into main via pull requests from feature or fix branches.
birdnetR follows semantic versioning: MAJOR.MINOR.PATCH.
- Released versions (on CRAN):
x.y.z— e.g.0.3.2 - Development versions (on
mainbetween releases):x.y.z.9000— e.g.0.3.3.9000
The .9000 suffix is the conventional R development version indicator (see r-pkgs). It signals that main contains work beyond the last CRAN release.
After a release is merged back into main, bump the version in DESCRIPTION immediately:
Version: 0.3.3.9000
pkgdown deploys only from main via GitHub Actions. The version in DESCRIPTION determines which variant is published:
Version on main |
Docs destination | URL |
|---|---|---|
x.y.z (release) |
stable | https://birdnet-team.github.io/birdnetR/ |
x.y.z.9000 (dev) |
development | https://birdnet-team.github.io/birdnetR/dev/ |
This is handled automatically by _pkgdown.yml with development: mode: auto. No manual configuration is needed — just keep the version in DESCRIPTION consistent with the conventions above.
Feature/fix branches and release/* branches do not trigger pkgdown builds.
This also aligns with pak::pak("birdnet-team/birdnetR"), which installs from the default branch (main).
Releases are prepared on a short-lived release/x.y.z branch so that CRAN-specific housekeeping does not block ongoing feature work on main.
main ──► release/x.y.z ──► main
- Cut release branch from
main:git checkout -b release/0.3.2 main - Finalize version — set
Version: 0.3.2inDESCRIPTION(remove.9000). - Update
NEWS.md— add a dated entry for the new version; move items from the development section. - Check the package:
devtools::check() rcmdcheck::rcmdcheck(args = c("--as-cran"))
- Update
cran-comments.mdwith submission notes. - Submit to CRAN:
devtools::submit_cran()
- After CRAN acceptance, merge
release/x.y.zintomainand tag the release:git checkout main && git merge --no-ff release/0.3.2 git tag v0.3.2 git push --tags - Bump version on
main— setVersion: 0.3.3.9000inDESCRIPTION. - Delete the release branch:
git branch -d release/0.3.2
birdnetR uses tidyverse style. Run styler::style_pkg() before submitting a pull request.
Open an issue on GitHub for bug reports and feature requests.