Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: add initial release process description skeleton #519

Draft
wants to merge 7 commits into
base: main
Choose a base branch
from
Draft
83 changes: 6 additions & 77 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,86 +6,15 @@ If you are interested in the current state of planning, have a look at our [Rele

## The planning and roadmap process

We follow a coordinated approach to plan improvements of Eclipse Tractus-X. see also [Open Planning and Refinement](docs/open-refinement-and-planning.md).
For detailed process descriptions, see [the planning documentation](./docs/planning.md).

While every repository in the [eclipse-tractusx](https://github.com/eclipse-tractusx) GitHub organization
has its own issue management, the [Release Planning Board](https://github.com/orgs/eclipse-tractusx/projects/26)
is used to align the overarching Tractus-X releases.
## Release

### How can I get involved
In Tractus-X, we differentiate two different types of releases.

In case you experienced a bug, unexpected behaviour, or you want to propose enhancements to Eclipse Tractus-X,
feel free to use one of the provided [issue templates](https://github.com/eclipse-tractusx/sig-release/issues/new/choose) and describe your request.
Please be aware, that not every feature request can be integrated and that we also cannot treat every issue with the highest priority.

Every Release planning will be kicked off by two public alignment sessions. The dates and further details will be shared via
[tractusx-dev](https://accounts.eclipse.org/mailing-list/tractusx-dev) mailing list.
In addition to that, you can also find public meetings and info about how to join on our
[Open Meetings](https://eclipse-tractusx.github.io/community/open-meetings) community page.
Issues or bug reports, that should be discussed in these meetings, have to be opened prior to the meeting via
our [issue templates](https://github.com/eclipse-tractusx/sig-release/issues/new/choose).

### What can I expect

We really welcome every contribution. Every Bug report and feature proposal takes time to prepare,
is valuable to our project, and we very much appreciate this input.
We are giving our best to give a first feedback in one week.
If we should miss that, please stick with us and just use the commenting function to remind us of the issue.

### Issue structure

Our issues do have important properties, that enable our planning process. These are:

- __Labels:__ We use them to indicate the involved teams (kit or foss component). A label for each involved component is added to an issue
- __Issue Type:__ To separate between bugs, feature requests and release criterias, we use a custom field `Issue Type`
- __Milestone:__ Every Tractus-X release is represented by a `Milestone`. You can use this field to get a rough idea about the ETA
- __Status:__ The status field is used to integrate the progress of an issue

### Issue statuses

The following statuses are defined:

- __Inbox:__ This is the initial status of all issues. It indicates, that involved components have to be identified and additional information gathered
- __Backlog:__ If enough information is gathered, and we agreed to work on the issue, it is set from `Inbox` to `Backlog` to indicate it is ready for timeline planning
- __Work in Progress:__ The issue is actively been worked on.
- __Done:__ All relevant parts have been implemented and released

### Issue process

Every new feature proposal or bug report will be handled as issue in status `Inbox` initially. The alignment meetings are used to discuss the purpose and impact of the current issues.
While in `Inbox` status, the involved components are discovered and respective `Labels` are added. If already possible, a desired `Milestone` can be set.
Additionally, an `Assignee` is selected, who will coordinate efforts to solve the issue.

After these details are clarified, an issue is moved to `Backlog` to open it for detailed timeline planning. In this status, discussions about a fitting `Iteration` is held.

As soon as actual work is started in the selected iteration, the issue is set to `Work in Progress`. This is especially helpful on our project milestone views to get an overview of the release progress.

The final status `Done` is set, as soon as all relevant implementations are done, tested and released. This has to be achieved for every change in every involved component.

### Planning component changes

While the [Release Planning Board](https://github.com/orgs/eclipse-tractusx/projects/26) is used to coordinate overarching feature and bug requests,
we encourage every component team to break these issues down to their component repositories/projects.
When doing so, make sure you link to the overarching issue in your component issue description.

## Release Management Acceptance Criteria

The release participation can be initiated by creating issues for the acceptance criteria check from the Issue templates.
Each release the templates for the acceptance criteria will be renewed. There are two paths for processing the acceptance criteria for an application team to participate in a release.

### The Release Happy Path for the Acceptance Criteria

The three process steps to get to the status you need to pass the Q-Gate are shown in the happy path process flow.

Each acceptance criteria issue in GitHub contains a note with the prime contacts so that it is clear who is the assigned expert or release manager.

![Happy Path](docs/static/releasemanagement-acceptance-happy-path.svg)

### The other Release Path

If the evidence is not sufficient so that the criterium can not be accepted in the quality gate (QG), obligations for the product team will be defined to make a reassessment.
![The other Path](docs/static/releasemanagement-acceptance-other-path.svg)
See [product release](./docs/product_release.md), for information about singular product releases.

See [Tractus-X release](./docs/tractus-x-release.md), for our overarching release strategy.

## Contact

Expand All @@ -96,5 +25,5 @@ If the evidence is not sufficient so that the criterium can not be accepted in t
This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0).

- SPDX-License-Identifier: Apache-2.0
- SPDX-FileCopyrightText: 2022,2023 Contributors to the Eclipse Foundation
- SPDX-FileCopyrightText: 2022 Contributors to the Eclipse Foundation
- Source URL: https://github.com/eclipse-tractusx/sig-release
81 changes: 81 additions & 0 deletions docs/planning.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# Release and Roadmap Process

We follow a coordinated approach to plan improvements of Eclipse Tractus-X. See also [Open Planning and Refinement](open-refinement-and-planning.md).

While every repository in the [eclipse-tractusx](https://github.com/eclipse-tractusx) GitHub organization
has its own issue management, the [Release Planning Board](https://github.com/orgs/eclipse-tractusx/projects/26)
is used to align the overarching Tractus-X releases.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest adding in a new paragraph:

Release Cycle - major vs. minor release

Tractus-X operates on a quarterly release cycle. Each quarter, a new Tractus-X release tractus-x-release.md following CalVer is released. Each Tractus-X release contains multiple products product_release.md Once per year, Tractus-X releases a major release, making the remaining three releases minor releases. A major release may contain critical breaking changes that have a major impact on data space participants,
such as changes to enablement services. A minor release contains backward compatible functionality. In addition, patch versions provide backward compatible bug and security fixes.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @HFocken,
I also heard that, but actually never saw that in a tangible way.
At least "major" and "minor" is not directly visible in CalVer numbers as it would be in SemVer. Is it always the last release of a year, that will contain breaking changes?
How is this ensured in the planning process? Do issues from open planning also contain something that makes that transparent?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Never heard of this too. Definitly something we should highlight more in our Release Notes @RolaH1t

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use text here AND on github.io page to initially introduce users to process.
add picture of phases.

### How can I get involved

In case you experienced a bug, unexpected behaviour, or you want to propose enhancements to Eclipse Tractus-X,
feel free to use one of the provided [issue templates](https://github.com/eclipse-tractusx/sig-release/issues/new/choose) and describe your request.
Please be aware, that not every feature request can be integrated and that we also cannot treat every issue with the highest priority.

Every Release planning will be kicked off by two public alignment sessions. The dates and further details will be shared via
[tractusx-dev](https://accounts.eclipse.org/mailing-list/tractusx-dev) mailing list.
In addition to that, you can also find public meetings and info about how to join on our
[Open Meetings](https://eclipse-tractusx.github.io/community/open-meetings) community page.
Issues or bug reports, that should be discussed in these meetings, have to be opened prior to the meeting via
our [issue templates](https://github.com/eclipse-tractusx/sig-release/issues/new/choose).

### What can I expect

We really welcome every contribution. Every Bug report and feature proposal takes time to prepare,
is valuable to our project, and we very much appreciate this input.
We are giving our best to give a first feedback in one week.
If we should miss that, please stick with us and just use the commenting function to remind us of the issue.

### Issue structure

Our issues do have important properties, that enable our planning process. These are:

- __Labels:__ We use them to indicate the involved teams (kit or foss component). A label for each involved component is added to an issue
SebastianBezold marked this conversation as resolved.
Show resolved Hide resolved
- __Issue Type:__ To separate between bugs, feature requests and release criteria, we use a custom field `Issue Type`
- __Milestone:__ Every Tractus-X release is represented by a `Milestone`. You can use this field to get a rough idea about the ETA
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete "You can use..."

- __Status:__ The status field is used to integrate the progress of an issue

### Issue statuses

The following statuses are defined:

- __Inbox:__ This is the initial status of all issues. It indicates, that involved components have to be identified and additional information gathered
- __Backlog:__ If enough information is gathered, and we agreed to work on the issue, it is set from `Inbox` to `Backlog` to indicate it is ready for timeline planning
- __Work in Progress:__ The issue is actively being worked on.
- __Done:__ All relevant parts have been implemented and released

### Issue process

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is done by every team individually.
Point out that this is a base, but see the product specific descriptions if they exist.

Copy link
Contributor Author

@SebastianBezold SebastianBezold Feb 28, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Definitely good point, but the planning.md file is actuall just a move of some already existing README.md content.
If the current wording is misleading, we should fix that in a separate PR, that can be finished sooner than the Release Process discussion.

Every new feature proposal or bug report will be handled as issue in status `Inbox` initially. The alignment meetings are used to discuss the purpose and impact of the current issues.
While in `Inbox` status, the involved components are discovered and respective `Labels` are added. If already possible, a desired `Milestone` can be set.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete "If already..."

Additionally, an `Assignee` is selected, who will coordinate efforts to solve the issue.

After these details are clarified, an issue is moved to `Backlog` to open it for detailed timeline planning. In this status, discussions about a fitting `Iteration` is held.
Copy link
Contributor

@RolaH1t RolaH1t Mar 21, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fully refined status "backlog" is the entry point for our "open planning" ceremony.
During "open planning" a milestone is set for each feature. This represents a comittment, given by the open source community to finalize the feature in due time.


As soon as actual work is started in the selected iteration, the issue is set to `Work in Progress`. This is especially helpful on our project milestone views to get an overview of the release progress.

The final status `Done` is set, as soon as all relevant implementations are done, tested and released. This has to be achieved for every change in every involved component.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add new section:
###Issue hierarchy
@stephanbcbauer to formulate details => detailled features are planned and executed within the repositories of the respective component. Summary features are planned and managed on "SIG release" level...

### Planning component changes

While the [Release Planning Board](https://github.com/orgs/eclipse-tractusx/projects/26) is used to coordinate overarching feature and bug requests,
we encourage every component team to break these issues down to their component repositories/projects.
When doing so, make sure you link to the overarching issue in your component issue description.

## Release Management Acceptance Criteria
Copy link
Contributor

@RolaH1t RolaH1t Feb 19, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMHO everything from here on is not confirmed yet


The release participation can be initiated by creating issues for the acceptance criteria check from the Issue templates.
Each release the templates for the acceptance criteria will be renewed. There are two paths for processing the acceptance criteria for an application team to participate in a release.

### The Release Happy Path for the Acceptance Criteria

The three process steps to get to the status you need to pass the Q-Gate are shown in the happy path process flow.

Each acceptance criteria issue in GitHub contains a note with the prime contacts so that it is clear who is the assigned expert or release manager.

![Happy Path](docs/static/releasemanagement-acceptance-happy-path.svg)

### The other Release Path

If the evidence is not sufficient so that the criterium can not be accepted in the quality gate (QG), obligations for the product team will be defined to make a reassessment.
![The other Path](docs/static/releasemanagement-acceptance-other-path.svg)
22 changes: 22 additions & 0 deletions docs/product_release.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Product Release
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe it's worth mentioning that products have their release processes and to refer to the according product specific repositories for information about those.


Tractus-X products do follow their own release process. Please check the leading product repositories for details.
Independent of the technical details of product release processes, the released artifacts and minimum level of quality ensurance
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

assurance

is the same across all of them.

## Artifacts

- GitHub release (Changelog + Sourcecode)
- Container images
- Helm Chart
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shall we call these "Product Helm Chart" => to differentiate from "Umbrella HC" in TX-Release?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Product Helm Chart with Dependencies

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would "Helm Chart (referred to as product Chart)" be fine?.
Both, the Tractus-X Chart, as well as single product Charts do have dependencies.
Some do only include a Database dependency, but some also provide frontend and backend as separate Charts, that are then referenced in a product umbrella Chart


## Versioning

- Semantic Versioning

## Quality Assurance

- Defined in TRGs
- Responsibility of every contributor
- (Additonally verified in quality gate process. TBD, if kept after consortia)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in Additonally but mainly I'd not mention consortia, may just:
Currently still verified in a Quality Gate process. TBD if this process will continue.


Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

process abstract

Once planning activities for a certain iteration are completed: all contributors follow their state-of-the-art feature work on all issues in status work in progress. The vehicle of product helm charts shall be used to integration-test any dependencies. All valid TRGs shall be followed, as those are crosschecked by committers upon merging any pull request - leading into a flawless GitHub release per product.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not quite sure, but AFAIK, only overarching features on the dataspace level are planned in sig-release and therefore are handled on a board with work in progress status.
Product features, that support the dataspace feature, could (and IMO should) be planned on product repository level. So far, we do not define rules for how products need to handle issues and boards

Copy link
Contributor

@RolaH1t RolaH1t Mar 21, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

update @stephanbcbauer & @RolaH1t 21-Mar:
Once planning activities for a certain iteration are completed: all contributors follow their state-of-the-art feature work on all issues in status work in progress. The vehicle of product helm charts shall be used to integration-test any dependencies. All valid TRGs must be followed, as those are crosschecked by committers upon merging any pull request - leading into a flawless GitHub release per component. This is specifically identified by a version tag.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"state-of-the-art feature work" sounds a bit bloated, don't you think? What does that even mean 😁?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@RolaH1t and @stephanbcbauer,
I took your input and did elaborate an change wording. What do you think of the description in this commit
c33fcc8?

25 changes: 25 additions & 0 deletions docs/tractus-x-release.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Tractus-X Release

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: ##Intro
As mentioned in [planning.md] a Tractus-X release is scheduled quarterly. The Tractus-X project has an overarching qualification process that all official quarterly Tractus-X releases adhere to. This process applies E2E activities for testing and security (relevant release candidates in compound) that stakeholders can build on. Each component can/shall be released on demand on a higher cadence, see [product_release.md].

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From my point of view, the E2E and Security part need to be clarified.
To the best of my knowledge, the Tractus-X project does not have any running and persistent infrastructure, that is necessary to support the E2E and Security activities, that are currently mainly driven by the Catena-X consortia.
Also, the automated e2e-testing activities are still far from making the manual steps unnecessary.

So in my opinion, we need to find some middle ground for what is actually supported by Tractus-X and what is a Process driven by other players, like the Catena-X association or others, that is maybe to a certain extend supported by Tractus-X contributors and committers

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

correct - but what we try to describe here is future target condition (to give guidance).
For sure, exceptions can be formulated afterwards or in addition - for example for May and Aug 2024.

Details about a Tractus-X release can be found in the dedicated repository [eclipse-tractusx/tractus-x-release](https://github.com/eclipse-tractusx/tractus-x-release).
There, you can also find details about the [release process](https://github.com/eclipse-tractusx/tractus-x-release/blob/main/RELEASE.md).

## Artifacts

- Changelog (overarching features)
- Umbrella Helm Chart(s)
- Overarching architecture documentation (if available)

## Versioning

- Calendar versioning

## Process

<!-- How are products (considered to be) integrated in the Tractus-X release -->
- Prior to release, a Tractus-X umbrella Chart release candidate branch is created
- Producs issue PRs with their release candidate
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be the future process, right? currently that's not happening and maybe that should be mentioned.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes exactly, that's why I opened this draft PR. Jumpstarting this discussion is highly needed in my opinion.
Since this process will rely heavily on committers to support it, we need to come to a basic agreement.
The two bullet points are just a first idea, that could also make it easy for committers to support that process, since it's a more opt-in focused one.

Right now, I don't really find the time to continue working on the draft


Copy link
Contributor

@RolaH1t RolaH1t Feb 19, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

abstract

Once feature work on product level is initiated, the quality assurance runs in parallel. The vehicle of Umbrella helm charts is used to continuously test pre-defined product bundles.
?pre-definition: how & who?
?reference onion rings?
Example for cxOS: A configured umbrella helm chart starts-up all relevant components (environment-less!) - no matter if carry-over versions of a previous TX release or evolutions of the current iteration. User Journey tests (e2e) are automatically performed - customized for the respective bundle of components and within given boundary conditions.
!there is work to be done!
Any findings ale looped back to the product development teams.
?how?
Product teams are obliged to fix any defects which prevent successful testing of the bundle (see product release process).
A bundle is ready for TX release, once product feature work is completed for all components and e2e-testing was successful without critical findings.
?definition?
Additional, manual e2e tests may apply.
!wip!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good input. I'll see if I can form that to specific sections once I finally find some time for it again. I will try to avoid some of the terms you used though. Some are not (yet) known in Eclipse Tractus-X and would need too much explanation. I.e.:
cxOS -> If there is nothing provided by the association that we can reference, we we would need to re-specify, which is error prone and might diverge from their definiition.
onion rings -> meaning? relevance?
carry-over versions -> not sure what is meant with that
boundary conditions for bundles -> what are these conditions, who defines them, where can I read about it?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the pictogram of "onion rings" shall be published near term, also via association, with regards to test management. will add the link here as soon as available. @danielmiehle any additional info?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

carry-over: in every quarterly TX release, we shall expect evolutions (new versions) of some cxOS components,
but also some other components may NOT face a change/up-revision in the given iteration. Nevertheless those components are still essential parts of the bundle.
This is what I meant with "carry over versions"

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

text suggestion @stephanbcbauer & @RolaH1t 21-Mar:
Once feature work on product level is initiated, the quality assurance of the foreseen release package runs in parallel. The vehicle of Umbrella helm charts is used to continuously test pre-defined product bundles. Automatically and environment-less.
Reference onion rings: (add URL)

Note: In every quarterly TX release, we shall expect evolutions (new versions) of some components (see "product_release.md"). But also some other components may NOT face a change/up-revision in the given iteration. Nevertheless those components are still essential parts of the bundle.

Example for cxOS (https://catena-x.net/fileadmin/_online_media_/231006_Whitepaper_Tractus-X.pdf (https://catena-x.net/fileadmin/_online_media_/231006_Whitepaper_Tractus-X.pdf):
A configured umbrella helm chart starts-up all relevant components. No matter if carry-over versions of a previous TX release or evolutions of the current iteration. User Journey tests (e2e) are automatically performed - customized for the respective bundle of components and within given boundary conditions.
Any findings ale looped back to the product development teams.
Product teams are obliged to fix any defects which prevent successful testing of the bundle.
A bundle is ready for Tractus-X release, once product feature work is completed for all components and e2e-testing was successful without critical findings.

Additionally, manual e2e tests may apply. Environment and execution tbd.

Copy link
Contributor Author

@SebastianBezold SebastianBezold Mar 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I get the idea of this description, but to me it almost seems like this is talking a different language, than I would expect from this process definition.
In commit c33fcc8 I started a process definition, that I think could make sense. It is not finished though and is also just a proposal, that we must discuss in the comitter round.

As general suggestion for wording, I would avoid terms, that are unknown, undefined or not commonly used.
I.e. carry-over, evolution, up-revision.
I would also avoid the "what is NOT happening" statements. Instead of "maybe there are no changes, but we still need it", I would just state, that we are testing all components in the version, that is planned to be included in the release

### Quality Assurance

- User Journey tests (e2e) defined in e2e-testing repo
- User Journey tests automatically executed via `helm test` (nightly + on every product rc PR)
Loading