# Balancing Act between Services and Products A talk about why Pulp releases so damn frequently. --- ## Who am I? - Pulp developer (really almost all areas) - Based in NRW (Germany) - Maintainer of `pulp_ansible`, `pulp_gem`, `pulp-glue`, `pulp-cli` and `squeezer` - `mdellweg` in some places, `x9c4` in others --- Pulp has a lot of stakeholders. They need: - Installable stable products <!-- .element: class="fragment" data-fragment-index="1" --> - Service deployments <!-- .element: class="fragment" data-fragment-index="2" --> --- ## Installable, stable Products We know how to do that: - Release branches (y-stream) <!-- .element: class="fragment" data-fragment-index="1" --> - Release Tags (z-stream) <!-- .element: class="fragment" data-fragment-index="2" --> - Packages <!-- .element: class="fragment" data-fragment-index="3" --> --- # :face_with_finger_covering_closed_lips: _Don't talk about Pulp 4_ --- ## Service Deployments Neuland: - Always the newest features <!-- .element: class="fragment" data-fragment-index="1" --> - Fast reaction time <!-- .element: class="fragment" data-fragment-index="2" --> - 24x7 <!-- .element: class="fragment" data-fragment-index="3" --> --- ## Deploy from source # :scream: <!-- .element: class="fragment" data-fragment-index="1" --> --- ## Really? Would you install Postgres from source? <!-- .element: class="fragment" data-fragment-index="1" --> What if we can make Pulp more like that? <!-- .element: class="fragment" data-fragment-index="2" --> --- ## A Library it is Pulp has a bunch of features that are used by other projects and products. It really is a library. We just need to find a way to deliver bugfixes in no time. --- ## Release whenever - Make sure the `main` branch is always clean / ready to be released. - No need to run any additional tests in the release process. - Don't deliver changes in a way that merges need to happen in multiple repositories simultaneously. --- ## New rules - If, on a given Tuesday, there is a feature in main, we cut a new Y. - If, on a given Tuesday, there is any bugfix in a release branch, we cut a new Z. - Bugfixes being urgent, can be released as soon as backported. --- ## Releasing must be easy Triggering a new release should be down to the click of a button. <!-- .element: class="fragment" data-fragment-index="1" --> The whole process should only take a few minutes (so people actually stay to monitor it). <!-- .element: class="fragment" data-fragment-index="2" --> There's some work left to do. <!-- .element: class="fragment" data-fragment-index="3" --> --- ## Breaking Changes Releases can happen every week. Breaking changes not so much! **Deprecation Policy**: A breaking change can only happen in certain releases. (current 3.40.0, next 3.55.0, probably +0.15.0 in the future) <!-- .element: class="fragment" data-fragment-index="1" --> --- ## Breaking Changes (2) So plugins can add requirements like `"pulpcore>=3.40,<3.55"`. We have these releases about twice a year. Ideally we can deprecate plugin-api features a few releases before removing them. Plugin CI shows triggered deprecation warnings loudly. --- ## :tangerine: Thank You! :tangerine: ## Q&A
{"title":"Balancing Act between Services and Products","breaks":true,"description":"This talk will discuss Pulp's Release Cadence and the Deprecation Policy from both a consumer as well as a developer viewpoint.","contributors":"[{\"id\":\"cdde0969-b66b-4a2e-b8af-327ce25861bf\",\"add\":3543,\"del\":2496}]"}
    266 views