Code guarantees
To ensure a good experience for developers or advanced users and to keep the work for the core team on a manageable scale, it is important to know what guarantees are given for different parts of the MITK Git repository.
This allows
- developers to make a qualified decision if they want to play it safe, go bleeding edge (and we mean bleeding, so don’t cry if you get cut ;) or something in between.
- contributors (internal and external) what the definitions of done (DODs) are for contribution.
The code guarantees are grouped in quality levels (Q0-Q3) which are used to easily reference/communicate quality promises and requirements in our release concept.
Quality levels
In the following we explain the different quality levels, their intended purpose and their given guarantees / quality measures. This helps developers and power users to pick the right starting point for their own builds or developments.
Quality levels always have a repository scope. Meaning, that a branch/tag in the repository always has one specified quality level (e.g. origin/develop is Q1). The guarantees given in a quality level may only hold for a part of the source tree (e.g. in origin/develop the whole source tree compiles, but only a part of the source tree gets active code review). That's why quality guarantees have a source scope; if no source scope is specified, one can assume a global scope for this guarantee.
Q0 - Work In Progress (WIP) level
Nearly no guarantees at all! This is ongoing work in progress. You should *only* base your own work on or build this quality level if you really know what you are doing (e.g. you have talked to the branch owner and his given guarantees are sufficient, you are working on a closely related topic, etc.. Developers are requested to ensure that all commits can be compiled, but even this is not an obligatory thing; not even for our tier 1 platforms.
So, be welcomed to the wild west and don’t say we haven’t warned you! Yee Haw...
Guarantees:
- Branches are associated with a task, to follow the process and its history (even if the branch is merged and gone). Therefore all branch names obey the naming schema that encodes the task number: T<tasknumber>-<human_readable_title>
Where: feature/bugfix branches, hotfix branches, support branches
Q1 - CI level (aka Nightly level)
The compilable, CI monitored, bleeding edge; no more, no less. You can be sure that it compiles, that the CI checked the unit tests and that experienced developers reviewed changes to the critical or important parts of the code base. But that’s practically it.
Guarantees:
- All guarantees of Q0
- Code compiles on all tier 1 platforms.
- Nightly unit tests. Green test state will be assured for all tier 1 platforms. If Dashboard is not green on tier 1 for any reason, it will be promptly fixed.
- Comits are reviewed by MITK developer. The review ensures that all process guarantees (code compiles, unit tests…) are fulfilled and comprises a code review
- Source scope: the source parts specified here
Where: origin/develop, release branches
Q2 - Beta level
For developers that are not depending on the UI/Qt parts of MITK, it is the save pick as green dashboard (unit tests) is guaranteed. All who want to use the Workbench or a like should be aware, that undetected errors in the UI might have slipped in as only fundamental smoke tests have been made and extensive UI checklist testing is *not* guaranteed at this level. So if you make UI developments, it is a good practice to first check the UI parts relevant for you, before starting your own developments. Otherwise it becomes hard for you to distinct, if problems that occur are introduced by your new changes or where already present at your starting commit.
Guarantees:
- All guarantees of Q1
- Commit are reflected in changelog.
- Code compiles also on all tier 2 platforms.
- Passed simple smoke tests for all tier 1 platforms
- Installers are generated and install
- Application starts and closes properly
Where: origin/master
Q3 - Production level
Recommended for usage if you want the highest quality. e.g. for a production environment. But as a trade of, it does not provide the latest features, additions and improvements.
Guarantees:
- All guarantees of Q2
- Passed checklist testing
- Source scope: TBD
- Documentation is up to date
- Source scope: modules and plugins specified in here
- All associated web resources are uptodate and official release installers are available on tier 1 platforms
Where: commits in origin/master tagged as public releases
- Last Author
- floca
- Last Edited
- Feb 9 2021, 6:47 PM