Page MenuHomePhabricator

Code guarantees
Updated 1,182 Days AgoPublic

Version 1 of 4: You are viewing an older version of this document, as it appeared on Feb 9 2021, 6:47 PM.

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:

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:

Where: commits in origin/master tagged as public releases

Last Author
floca
Last Edited
Feb 9 2021, 6:47 PM

Event Timeline

kislinsk changed the title from Code guarantees to Code Guarantees.Mar 1 2021, 10:19 AM
kislinsk edited the content of this document. (Show Details)