class: center, middle # Auto-maintain your package ## Tomas Tomecek ## Stef Walter --- class: center, middle # Who are Stef and Tomas? --- class: center ![Self-mantaining](cat-licking-himself.jpg) # A self-maintaining package? --- class: center, middle # Why would you want such a thing? --- # Why? * Our upstream projects are integrated together in a Linux distro. * Upstream has no immediate feedback on how they affect the rest of the distro. -- * We all contribute back upstream individually. * But our distribution itself is invisible in the workflow of those upstream projects. --- # Why? * Upstream projects have to make significant effort to integrate downstream. * It's tough to for an upstream project to figure out if they broke downstream. -- * Let's be clear: packaging software is *not exciting* for everyone. * Having latest greatest bits integrated with the rest. * That's exciting! -- * Example: systemd is inert by itself --- class: center, middle # What if you could immediately know if your upstream change works in Fedora? --- class: center, middle # What if your new upstream release automatically landed in Rawhide? --- # Mockup ![The changes are not good.](failed-fedora-packaging-service.png) --- # Mockup ![Tests passed.](success-fedora-packaging-service.png) --- class: center, middle # What would we need to make this happen? --- # What would we need? * **Spec files**, the lingua franca of how our OS is assembled, in the sources. -- * **Tests**, the way to check that a project works, in the sources. -- * **Gating** in Fedora Rawhide to not allow packages break other packages. -- * **Automated packaging service** to do mundane tasks for an upstream project. --- # Spec files upstream? * Source-git becomes the focus instead of dist-git -- * Spec generators are an option as well. * Changelog and release number are problematic though. --- # Tests upstream? * Upstream projects have tests. * When used together, they validate our OS is working. * And a standard way to invoke upstream tests. --- ![Source git](source-git.png) --- ![Source git as Upstream git](source-git-2.png) --- # Gating of Rawhide * Together with Fedora, we will make rawhide stable! * But we need gating to enforce that stability. * Let's gate on (at least) core packages. * Everyone can contribute tests. --- # Packit: Automated packaging service * Built out of tools and contianers you can run on your local laptop. -- * The hardest thing was the name. -- * Opens pull requests with new upstream releases. -- * Brings feedback from downstream to upstream. * Upstream pull requests get downstream check results. ??? * Tell upstream their newest release breaks rawhide or doesn't work with X. * I can test a new upstream feature in Fedora or RHEL. --- # Benefits * You can use the tools you know. * Benefit from the modern development techniques. * Let anyone contribute easily. * I can fork a package and deploy it. ??? * Downstream has limited tooling, upstream has all the greatest stuff. * git, github, make, $EDITOR * keep working until all is green --- # Auto-maintain, ehm? * You take care of the content. * We keep dist-git up to date. * Package is still yours. -- * We never land anything broken. * You are doing decisions. * Automation helps with mundane tasks. * You can run the tooling locally. ??? * spec, patches, tarball * spec can be upstream, or forked from upstream * it's gonna be tough to sync the specs --- # To be addressed * How do we make distro-wide changes? * What about people that *love* packaging? * What's the best way to reach upstream communitites? --- class: center, middle # Fedora should be the defacto place to land upstream work -- # as a packaged part of a complete Linux. --- # How can you help? * Feedback * Become an early adopter * Give us use-cases --- # Thank you! *
[github.com/user-cont/source-git](https://github.com/user-cont/source-git) *
[github.com/packit-service](https://github.com/packit-service) *
[github.com/TomasTomecek/speaks](https://github.com/TomasTomecek/speaks) *
[@stefthewalter](https://twitter.com/stefthewalter) *
[@TomasTomec](https://twitter.com/TomasTomec)