Re: Reflecting on Rings [was Re: Proposal for vendoring/bundling golang packages by default]

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

 



On Thu, Jan 30, 2025 at 11:31:33AM +0300, Benson Muite wrote:
> On Wed, Jan 29, 2025, at 3:56 PM, Matthew Miller wrote:
> > On Wed, Jan 22, 2025 at 09:51:28AM +0000, Daniel P. Berrangé wrote:
> > What do we gain from building, say, Inkscape ourselves — other than allowing
> > us to check the boxes of our own rules? Is it worthwhile to try to package
> > Home Assistant? And, not, like, quixotically worthwhile — what impact does
> > it have?
> >
> 
> A recent survey of Android packages where bundling is default indicates that dependencies rarely get updated:
> https://app.media.ccc.de/v/38c3-ultrawide-archaeology-on-android-native-libraries
> 
> Being able to run a lot of software is great.   Packaged software tends
> to have higher quality.  For many users, the latest feature is rarely
> enough of an incentive to use the development version.  Packaging the
> software also tests the dependencies it uses, giving a more robust core.

The thesis that packaged software is better tested or higher quality is
*not* clear-cut. There are lots of factors that contribute to this and
some favour upstream and some favour downstream.

Downstreams certainly find bug that upstream misses, especially cross
platform portability, since even today downstreams usually have access
to a wider variety of architectures than upstreams do. Ideally these
local bugs even get diagnosed & resolved, but that varies depending
on the skills & available time of the maintainers.

Downstreams also deliver value cherry-picking patches at arbitrary
points in time, so users don't need to wait for a often fixed upstream
release schedule. This is potentially the biggest selling point for
downstream in terms of delivering quality value-add. Though again it
varies depending on time availability of the individual maintainers.

Where downstream usually looses, IME, is in relation to automated
functional testing. For non-trivial projects, it is increasingly
common for upstreams to have extensive functional testing CI systems.
These are proving functional correctness against a chosen set of
dependency versions. If downstream diverges from the chosen set of
dep versions, they will almost certainly introduce functional
correctness flaws that are not present in the upstream validated
deployment scenario.

Downstream might have (unknowingly) fixed some functional problems
too by virtue of having newer dependencies, but unless downstream
is running the same functional CI harness, no one will ever be
sure if this is a net win.


So overall it is not a given that having downstream use different
dependancy versions, and cherry-picking patches, into pacakges
is going to result in a higher quality product than using an
upstream provided container image/flatpak. Or at least there are
different interpretations of "quality" in this context.

You can make a case that downstream would be a more secure product,
as downstreams often cherry-pick CVE fixes more promptly than
upstream does releases.

You can't make the case that downsteam would be a more functionally
correct product unless downstream has done at least the same amount
of functional testing as upstream. The relative testing upstream
vs downstream varies tremendously across our distro packages in
both directions.

So yes, distro packages can deliver a higher quality application
in theory, but in practice this is far from a certainty.

Bundling deps has the potential (not a guarantee) to enable the
best of both worlds. Using the versions validated by upstream as
functionally correct, while downstream can still deliver value
add through cherry-picking further bug and security patches.

> Is it possible to create better tooling to build packages?  Python
> in Fedora is good, most dependencies are automatically resolved.
> It is unclear if one could automate checking the possible compatible
> versions, with C there are ABI compatibility tools that can help,
> API tools could possibly help for interpreted languages.

ABI & API compatibility is very important as a first step, without
which you're dead in the water. It is insufficient, however, to
ensure a high quality delivered pacakge. As application complexity
increases, API/ABI compat becomes less & less sufficient. Functional
testing becomes king.

Taking a large project I was previously involved in, OpenStack.

When we tried to make that work on top of Fedora with the packaged
python versions, it was a never ending battle against bugs that were
only seen in Fedora. This is in versions of python deps that were
(usually) declared compatible, but none the less had flaws that were
impacting the app. Upstream may hit the same bugs eventually if
they updated their deps versions, but at any point in time, using
the exact matching upstream tested deps gave you a more functionally
reliable deployment. Fedora maintainers didn't have the resources
to run the same level of CI testing as upstream to identify bugs
unique to our versions, let alone fix issues that it would have
found. 

In the context of RHEL we had much the same issue, but we did have
the resources to invest in automated CI testing against the downsteam
deps versions. Having a slower moving distro in terms of version
rebases also helped. This let us identify & resolve RHEL only bugs
before the result shipped to users, thus genuinely being able to
claim to deliver a higher quality result. It was (& still is) a
massive testing effort.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

-- 
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[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