---
# System prepended metadata

title: 'Maintainers'' Meeting, August 22, 2022'
tags: [unikraft, ' maintainers']

---

---
title: "Maintainers' Meeting, August 22, 2022"
tags: unikraft, maintainers
datetime: 2022-08-22T11:00:00+02:00
location: Online, Discord (https://bit.ly/UnikraftDiscord), the `#maintainers-voice` voice channel
teams:
- maintainers
participants:
- RazvanD
- MarcR
- CezarC
- MichalisP
- StefanJ
- SimonK
- VladB
- AlexJ
---

## :dart: Agenda

- plat re-architecting (Michalis)
- bootloader support + packaging (Alex, Simon, Cristi)
- memory randomization (+loading) (Marc, Simon)
- branch / tag management: release tags, stable branches, development branches
- code analysis integration

## :closed_book: Discussions

### Branch, Tag, Release and Version Management

AJ: Currently, `staging` is used for development.
Everything is merged into `stable` every release.
Development happens on `staging`.
This is the default branch on GitHub, when cloning the repository.

PRs would be automatically added into `stable` if they pass everything on the CI/CD.
This will enable faster releases.

The positive outcomes of a (periodic) release is it gets buzz and publicity.

AJ: The CI/CD will verify tests and, if PR is successful, the PR will be integrated in `stable`.

SK: We now have `staging` as the default branch.
Which is why we are doing a `staging-v2`.
I think `stable` should be the default branch.
Then changes will be first integrated in `staging` and then in `stable` if tests are passed.

AJ: The problem of indicating the version compatibility is not integrated in Unikraft.

SK: We have this combination of the library version bound to a given Unikraft version.

MP: You can have two tags: a library-specific tag, and one belonging to the relase library.

AJ: Say you have lwip with 3 different versions.
What if a vulnerability?
Do we use the most recent version or do we go back and update them all?

AJ: We should be automating as much as we can out of the release schedule.
The release is quite a difficult process.

RD: The release schedule is useful to get the community motivated to update and review PRs.
This shouldn't go away.

SK: Agree, we should keep the release schedule.

AJ: A version is a string I can concretely refer to.
If I'm using Unikraft, I can ask someone to use the specific version.

RD: What is not-automated and can be automated?

AJ: There was an id in the README of the release, that I missed.
That part should be automated.
Adding the integration tests in the CI/CD system.

AJ: There are a number of things that should be part of the review process and that are not in there: unit tests, integration testing, code analysis, maybe performance checks via Wayfinder.

SK: To use `stable` as the default branch, we require the integration tests in the CI/CD system.

RD: What is the difference between `staging` and `stable`?

SK: One example is Musl.
Musl breaks stuff.
PRs go in but move into `staging`.

RD: But for something that is not breaking?
The reviewer and assignee could work on a PR and make it ready for `stable` from the start.

SK: Yes, they would move to `staging` and then quicky into `stable`.
This is fine.
`staging`, for non-breaking changes, is more of a transitory branch.

SK: This should be the same model on all repositories (core, libraries, applications), otherwise it doesn't make sense.

AJ: Changes to a library should go through all applications to verify if everything works.

### Towards Release 0.11

SK: This week will be used to add all Musl-related PRs.

RD: Simon, you need to create a PR with the Unikraft updates (scheduling, posix-process).
The PR will use the `staging-muslpreview` branch as the target.

Once 0.11 release happens, the `staging-muslpreview` branch will become `staging`.

Applications and libraries have to be working with Musl by the release.

RD: There are issues with the `posix-socket`, `posix-event` internal libraries that aren't mentioned in the `Config.uk` files of application library repositories (`lib-redis`, `lib-nginx`).
I'm working with Maria Sfîrăială to fix those.

## :wrench: TODOs and Decisions

AJ: Rearchitect CI/CD system to integrate the stable branch integration of new features.

`stable` will the default branch.
Approved PRs go into `staging`.
Then, after passing integration tests, they would move into `stable`.
A move into `stable` of a PR / feature in any repository, will cause a new tag to be created and added to all repositories.
This means we will have tens of tags between releases.

A release is going to be tied to the release schedule.
A release will be decided by the community based on features available on the `stable` branch.
A relase and fill feature a major release tag that will be added to all repositories.

The move to the new model using `stable` as the default branch is reliant on the CI/CD-based integration tests happenning.
A realistic deadline is release 0.12 (late November).

We will discuss later on including upstream library versions into the branch / tag / release model.

RD: Schedule CI/CD discussion for integration tests.

RD: Schedule community leaders discussion.

RD: Schedule 1 year OSS planning discussion.

SK: Create Unikraft PR with scheduling updates on the `staging-muslpreview` branch.

We will create `staging-muslpreview` branches on different repositories as they are required (likely `lib-newlib`, `lib-lwip`, library repositories).

RD/MS: Fix application library repositories (`Config.uk`) to feature dependencies on new internal libraries (`posix-socket`, `posix-event`).