bertha v1.2.0rc1
Tutorial

This document explains the first steps using bertha, i.e., how to adapt the project skeleton to your software project.

Setup stage

  • Define the name and goal of the project. Find a place to host your git repository.
  • Update the project information in the top-level CMakeLists.txt and the project goal in README.md. Clear the file CHANGELOG.md and (if desired) add the first stable version and its features.
  • Agree on code formatting rules. Write them down in both .clang-format and CONTRIBUTING.md or use what is already provided therein.
  • Agree on git work flow and update CONTRIBUTING.md (if required). Adapt the repository according to your work flow, for example:
    • Set up branches and consider protecting them (e.g., only allow merge by maintainer for master).
    • Set up roles of group members (maintainer, developer, ...) and permissions.
    • Adapt merge settings (e.g., fast-forward merge only).
    • Generate labels for issues.
    • Create first milestone(s).
    • Create first issues and assign them to milestones.
  • Adapt the NOTICE.md file and change the project name and description in lines 3-4. Leave the rest of the file as is, unless you have to add further projects you use within your project.
  • Consider publishing your code as open-source project. If you decide to do so, you will have to select an appropriate license for your project. Adapt the LICENSE file accordingly.
  • Adapt the CODE_OF_CONDUCT.md file as desired. Make sure to insert the contact information of the project team or maintainer.
  • Adapt the templates for issues and pull/merge requests for GitHub (in .github/) and GitLab (in .gitlab/) as desired.
  • Update the URLs of the badges in README.md. Note that you have to enable test coverage parsing in GitLab in order to enable the coverage badge.

Implementation stage

  • Think about the goal of your software project and a modular design that accomplishes this goal.
  • Use the module core and (optionally) create additional modules. Update the C++ and SWIG files accordingly.
  • Consider writing documentation first and then implementing code.
  • Consider how you can test your implementation. This will help you come up with a modular design (if you cannot test your implementation in an automated way, it is not likely to be modular).
  • Write tests and add them to the continuous integration (CI) pipeline. This way you can detect mistakes and regressions as soon as possible.

Publication stage

  • Share your project as early as possible. Thereby, you can attract feedback from other developers, researchers, or users, which will make your project stronger.
  • Update the README.md and let people know how they can cite your work.
  • Adapt TUTORIAL.md and explain what should the user know at the beginning. Give starting points, consider adding code examples.
  • Create a recipe for your project in conda-forge. See the conda-forge documentation for a tutorial how to accomplish that. The recipe created for bertha itself (available here) may serve as reference.