Re: MBI (Playground 2.0)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This idea sounds pretty good to me.

As a less active contributor: How can I help out? Do you have a task
list? (Sorry if this got already answered in one of the follow up
emails.)


Cheers,

Dan

Igor Gnatenko <ignatenkobrain@xxxxxxxxxxxxxxxxx> writes:

> MayBe I …(can do something useful)?
>
> Hello,
>
> We've been discussing some (hopefully) nice idea with Mikolaj, Neal and
> Jakub how we could improve packager (and user) experience and we have some
> proposal which will be described below.
>
> We would like to ask you to read it, understand it and ask us any questions
> you have. From the Fedora Infrastructure we would like to ask for some
> machines to implement this idea (you can find some more information in
> "Implementation details" part).
>
> I would like to apologize for HTML email, but it is much easier to have it
> that way to have better visibility and reading easiness.
>
> Feel free to reply to this email or comment in google doc (there is a link
> on the bottom).
> Proposal Owners
>
>    -
>
>    Mikolaj Izdebski (mizdebsk) <mizdebsk@xxxxxxxxxx> - Java SIG, Fedora
>    infrastructure
>    -
>
>    Igor Gnatenko (ignatenkobrain) <ignatenkobrain@xxxxxxxxxxxxxxxxx> - Rust
>    SIG, Golang SIG, Neuro SIG, RPM and libsolv contributor
>    -
>
>    Neal Gompa (ngompa) <ngompa13@xxxxxxxxx> - Rust SIG, Golang SIG, RPM
>    contributor
>    -
>
>    Jakub Čajka (jcajka) <jcajka@xxxxxxxxxxxxxxxxx> - Golang SIG, Container
>    SIG
>
>
> This proposal aligns with the objective of improving the packager experience
> <https://fedoraproject.org/wiki/Objectives/Packager_Experience> by
> developing a platform whereby the proposal owners and others can experiment
> with improvements that can be funneled back into the official production
> infrastructure.
> ProblemsProblem №1: Build-only packages
>
> Some ecosystems have many build-only packages (packages which are used to
> build other packages, without having them installed on end-user systems).
> Those ecosystems include Java, Rust and Go.
>
> It is extremely hard to keep up maintaining them due to lack of
> time/people. Upstreams are usually changing quickly (sometimes when you
> update just one such package, you’d need to update tens of the
> dependencies). Few facts about such packages:
>
>    -
>
>    They are almost always outdated in released versions of distribution;
>    -
>
>    They are often FTBFS (e.g. because there was compiler update but not
>    package update, broken deps, broken APIs due to deps rebases, …).
>
>
> In Rust ecosystem, we abuse Rawhide to build and store such packages there
> and then generate end-user application (e.g. ripgrep) which uses some of
> those packages and produces binary for all supported releases. Those
> applications have high quality and are supported.
>
> Rawhide gating makes this much more complicated because builds appear in
> buildroot slower, updating group of packages would need side tags and it’s
> just painful to work with.
>
> https://pagure.io/fesco/issue/2068
>
> And, after all, those packages shouldn’t be shipped to users.
> Problem №2: Testing of new rpm/koji/mock features/configuration
>
> When developing new features in RPM (e.g. rich dependencies) or testing
> different Koji configuration (e.g. removing gcc/gcc-c++ from the
> buildroot), it is required to make custom configuration and try building
> things.
> Problem №3: Developing modules
>
> Modules are built in MBS as a single unit. It is hard to develop big
> modules by progressively improving individual packages or small package
> groups. Scratch builds for modules are not implemented. Local builds work
> differently from official module builds, they don’t scale and don’t allow
> groups of people to work collaboratively. All these problems can be solved
> by first developing a flat repository of packages in a shared environment
> and then generating modulemd from such package set.
> Problem №4: Testing things before push
>
> Primary Fedora Koji and dist-git are not suited for packaging
> experimentation. Packagers are expected to experiment on their own systems
> and push changes of successful experiments only. But this approach doesn’t
> scale with number of maintained packages. Often you can find commits like
> “d’oh, forgot to upload sources” or “let’s try with this settings”. People
> need to build things somewhere quickly, do development and testing. And
> only after that, they should push commit(s) to Fedora.
> Solution
>
>    -
>
>    Separate Koji + Koschei deployed in Fedora infrastructure cloud;
>    -
>
>    Builders are optimized for the best performance (see below
>    <https://docs.google.com/document/d/1DtNTCa-gXc0ILDDHPyAcAca2GGGlENavfgPwGGgqJ_Y/edit#heading=h.amk0udnj85tg>
>    );
>    -
>
>    People can have their own targets where they can break things as they
>    wish without affecting others;
>    -
>
>    Package changes are eventually contributed to Fedora proper by merging
>    changes to Fedora dist-git and rebuilding packages in official Fedora Koji;
>    -
>
>    All improvements can eventually be contributed back to official Fedora
>    infra.
>
> Ideas
>
> All ideas which you’ll find below are just an ideas and do not have to be
> implemented.
> Idea №1: Automated legal review
>
> openSUSE released their review app called Cavil
> <https://github.com/openSUSE/cavil> which we could try running in automated
> way.
> Idea №2: Automated package review
>
> Currently review process is burden and we could run automated legal review,
> create a repo, run set of checks and notify person. Somewhat similar to
> fresque <https://github.com/fedora-infra/fresque>. In future might be
> integrated with approval process and auto-imported into Fedora.
> Idea №3: Building packages for multiple distributions
>
> In Rust ecosystem, we managed to get have same packaging guidelines in
> openSUSE, Mageia and Fedora. We could automatically build some packages on
> multiple distributions and be kinda upstream.
> Idea №4: Building custom images with user content
>
> Deploy (or build) a tool(s) to enable user-built install, appliance and
> container images with their content (modulo restrictions similar to COPR)
> on top of Fedora.
> Implementation details
>
>    -
>
>    Koji and Koschei deployed in fedorainfracloud.org
>    -
>
>    A few builders constantly running, with a possibility to add more
>    builders as needed and as available cloud resources allow
>    -
>
>    Deployed and maintained by proposal owners - not supported by Fedora
>    infrastructure
>    -
>
>    Other contributors can have access granted by proposal owners (for the
>    time being only users in “packagers” group will be eligible to get access)
>    -
>
>    Possibility to have some builders running outsides of Fedora
>    infrastructure - contributed by proposal owners
>    -
>
>    Koji builds can be done from SCM (src.fp.o, pagure.io, github, …) or
>    from SRPM upload
>
> FAQWhy not COPR?
>
>    -
>
>    COPR has been starved of resources for years, which has impaired its
>    ability to provide reliable service at scale. Fedora Infrastructure refuses
>    to consider supporting it officially and Fedora Release Engineering seems
>    to have some undefined issues with COPR.
>    -
>
>    It is not official build system of Fedora which is not helping with Problem
>    №2: Testing of new rpm/koji/mock features/configuration
>    <https://docs.google.com/document/d/1DtNTCa-gXc0ILDDHPyAcAca2GGGlENavfgPwGGgqJ_Y/edit#heading=h.iodoq4xw80c2>
>    .
>    -
>
>    COPR is not extensible enough, more specifically:
>    -
>
>       No query API (e.g. it is not possible to find out from which SCM
>       commit the package has been built)
>       -
>
>       Builds always have access to all previous builds in a repository
>       (i.e. not possible to control when/how repo is created)
>       -
>
>       GC doesn’t exist
>       -
>
>       No scratch builds
>
> Why not staging Koji?
>
>    -
>
>    Staging Koji is meant for testing Koji itself and not for package
>    development.
>    -
>
>    Staging Koji is often in broken state where it is not possible to build
>    anything.
>    -
>
>    No one can touch staging Koji, so it’s pointless for offering a useful
>    service.
>
> How can you make Koji builds faster?
>
>    -
>
>    By tuning Koji for performance, not correctness and reliability.
>    -
>
>    By building only on a single, fast architecture.
>    -
>
>    By extensive caching. Files like RPM packages, repodata and files in
>    lookaside cache don’t change after they are initially stored, so builders
>    can cache them aggressively.
>    -
>
>    By keeping build repositories small. Some package sets don’t need to be
>    built against full Fedora, but can use a minimal subset of Fedora. Such
>    repositories can be generated by Koji in seconds, not minutes.
>
> Why not the Open Build Service (OBS)?
>
>    -
>
>    OBS is not yet packaged for Fedora officially. The upstream code lacks
>    adaptations necessary to deploy and run on Fedora and in Fedora
>    Infrastructure.
>    -
>
>    OBS is not official build system of Fedora, which does not help with Problem
>    №2: Testing of new rpm/koji/mock features/configuration
>    <https://docs.google.com/document/d/1DtNTCa-gXc0ILDDHPyAcAca2GGGlENavfgPwGGgqJ_Y/edit#heading=h.iodoq4xw80c2>
>    .
>
> What does MBI stand for?
>
>    -
>
>    M for middlestream, module, mizdebsk, …
>    -
>
>    B for build, bootstrap, …
>    -
>
>    I for infrastructure, initiative, ignatenkobrain, …
>    -
>
>    MBI might be pronounced as “maybe I …(can make something cool)?”
>    -
>
>    MBI is also initials of mizdebsk (Mikolaj Bozydar Izdebski)
>    -
>
>    MBI is also IBM spelled backwards :)
>
> Is it somehow related to Fedora Playground
> <https://fedoraproject.org/wiki/Playground>?
>
> Yes, it is. Although it is more developer-focused. Users could enrol for
> some specific things like experimental Java/Rust packages.
>
>
>  MBI (Playground 2.0)
> <https://docs.google.com/document/d/1DtNTCa-gXc0ILDDHPyAcAca2GGGlENavfgPwGGgqJ_Y/edit?usp=drive_web>
> _______________________________________________
> devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
> To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
> Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
> List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux