#575 Bundling Guidelines Overhaul
Closed: Fixed None Opened 3 years ago by tibbs.

FESCo has voted to eliminate any requirements for FPC approval from the bundling process, and to have us remove most of the current bundling guidelines. The resulting guidelines should closely resemble the following FESCo-approved language:

  • All packages whose upstreams allow them to be build against system libraries must be built against system libraries.

  • All packages whose upstreams have no mechanism to build against system libraries must be contacted publicly about a path to supporting system libraries. If upstream refuses, this must be recorded in the spec file using a persistent mechanism to be clarified in the packaging guidelines.

  • All packages whose upstreams have no mechanism to build against system libraries may opt to carry bundled libraries, but if they do, they must include Provides: bundled(<libname>) = <version> in their RPM spec file.

I will begin drafting this now, though I'm not sure what point there is to an FPC vote on any draft as there's nothing for us to approve.


Draft is here: https://fedoraproject.org/wiki/User:Tibbs/BundlingDraft2

This involves replacing the existing http://fedoraproject.org/wiki/Packaging:Guidelines#Duplication_of_system_libraries section with the contents of the draft, removing completely the http://fedoraproject.org/wiki/Packaging:Guidelines#Bundling_of_multiple_projects section.

In addition, http://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries and http://fedoraproject.org/wiki/Packaging:Treatment_Of_Bundled_Librarieswould be removed completely as they're no longer relevant. (Obviously the pages wouldn't be deleted completely; I'd just replace them with a note that the page is obsolete. The old content would still be in the history, in case things change.

I don't think this is quite right.

The new guidelines still require unbundling in the case that upstream provides a way to build against system libraries. There are projects which both bundle but also make unbundling possible. Given that, and the fact that people can still unbundle voluntarily, I don't think it makes sense to kill Treatment Of Bundled Libraries, as its purpose is to document best practices for unbundling.

Additionally, since my https://fedorahosted.org/fpc/ticket/573 was not implemented (I couldn't do it, as I don't have the relevant permissions), part of the definition of 'system library' still lives in the Treatment Of Bundled Libraries page. I strongly suggest that the revised definition of 'system library' from my draft - https://fedoraproject.org/w/index.php?title=User:Adamwill/Draft_Packaging_Guidelines&diff=423213&oldid=423211 - be included in the updated Guidelines page, since we are still referring to the concept, we still need to define what it means.

There is a huge hole in the FESCo agreement which must be clarified ASAP: what exactly is the required form of the "Provides: bundled(<libname>)"? That is, what exactly is the 'libname'? We badly need rules for that, so everything that bundles the same thing actually calls it the same thing.

There are tricky cases here, like where two different projects bundle things with the same apparent name which are in fact not the same thing.

We discussed this at this weeks meeting (http://meetbot.fedoraproject.org/fedora-meeting-1/2015-10-08/fpc.2015-10-08-16.00.txt):

  • Rant about bundling (geppetto, 16:04:39)
  • LINK: https://fedoraproject.org/wiki/User:Tibbs/BundlingDraft2 as
    well as "deleting" the two standalone pages on bundling. (tibbs|w,
    16:17:06)
  • ACTION: Bundling Guidelines Overhaul (+1:7, 0:0, -1:0) (geppetto,
    16:23:49)
  • For what it's worth nobody in FPC seems to be of the opinion that
    this was a good change. (geppetto, 16:24:38)

There's not much of Treatment of Bundled Libraries that's still useful, but I can try to add a couple of sentences in a way that doesn't alter the prescribed language.

There wasn't much point in the 573 at this point. FESCo didn't give us leeway to define any of the terms; they gave is the language to be used and I modified it minimally to insert the one thing they left up to us. If they would like to clarify something or want us to try to come up with a clarification, I suppose they'll tell us. They left "system library" undefined in their text, I assume for a reason.

And I don't know about the Provides. There was discussion that FESCo would police them. Again, if they want us to change something in the language they prescribed, I'm sure they'll let us know. Collaboration with FPC would have been useful here because these kinds of rough edges are something we're used to, but this was so urgent that it couldn't wait for a draft.

I'm really not sure what else we can do here. This is pretty much FESCo's guideline, so I'd imagine any additional modifications would come from them.

Replying to [comment:2 adamwill]:

I don't think this is quite right.

The new guidelines still require unbundling in the case that upstream provides a way to build against system libraries. There are projects which both bundle but also make unbundling possible.

The first statement kind of says that, although it doesn't define it well. I can see how some people might interpret that to mean if it's possible to link against a system library then you must ... but I can also see how other people can/will read it differently (esp. when reading it that way benifits them). And there are legitimate grey areas (Eg. you can link to system lib. but newer bundled version means you get newer feature XYZ). All of this was easily handled previously as we had humans and general policy.
In general upstreams are much happier to do less work (for them) and cause more work, so I'd expect bundling to go up and grey areas to be more pronounced here.

Given that, and the fact that people can still unbundle voluntarily, I don't think it makes sense to kill Treatment Of Bundled Libraries, as its purpose is to document best practices for unbundling.

It seems fine to have a "please do this" best practices thing, but given it's not policy anymore and FPC doesn't even have theoretical control anymore ... having it in the packaging guidelines doesn't seem like the right place, to me.

Additionally, since my https://fedorahosted.org/fpc/ticket/573 was not implemented (I couldn't do it, as I don't have the relevant permissions), part of the definition of 'system library' still lives in the Treatment Of Bundled Libraries page. I strongly suggest that the revised definition of 'system library' from my draft - https://fedoraproject.org/w/index.php?title=User:Adamwill/Draft_Packaging_Guidelines&diff=423213&oldid=423211 - be included in the updated Guidelines page, since we are still referring to the concept, we still need to define what it means.

We voted for it, so it is "implemented", it just takes time for someone (almost always tibbs atm) to change the pages (he was probably reticent to rush here though, given it looked like it would all be for nothing anyway -- although note that I don't speak for tibbs).

There is a huge hole in the FESCo agreement which must be clarified ASAP: what exactly is the required form of the "Provides: bundled(<libname>)"? That is, what exactly is the 'libname'? We badly need rules for that, so everything that bundles the same thing actually calls it the same thing.

There are tricky cases here, like where two different projects bundle things with the same apparent name which are in fact not the same thing.

Again, this is easy to do when you have humans involved but I can't see how you can ever make it work without that. FPC did a non-trivial amount of searching to find good names, and were a single point of contact/authority when they had to be made up (and had experience of it). Eg. md5.
Everyone just needs to live with the fact that this will be misleading at best now.

Obviously you can propose anything for FESCo to vote on though, and maybe some help will limit the damage.

Sorry, I had closed 573 since I believed (and still believe) it was made pointless. The section it was modifying no longer exists and if I tried to patch it in it would results in modifications to the prescribed text that I did not want to make. I don't see what is still relevant there that I could insert into any existing guidelines.

Not sure if we should close this and open a new ticket for anything else that comes up Eg. (fesco/ticket/1491 and maybe more?) or just keep using this one. Going to move this one to the agenda atm. and see what happens.

I started writing this up but seemingly didn't finish, so I'll make another run over the guidelines and clean up dangling links and such.

We discussed this at this weeks meeting (http://meetbot.fedoraproject.org/fedora-meeting-1/2015-10-29/fpc.2015-10-29-16.00.txt):

  • 575 Bundling Guidelines Overhaul (geppetto, 16:19:58)

  • LINK: https://fedorahosted.org/fpc/ticket/575 (geppetto, 16:19:58)
  • ACTION: Move this ticket to writeup, and then close, if something
    else gets voted on we can open new ones. (geppetto, 16:21:48)

I believe I've cleaned things up and written the accepted text into the guidelines at the appropriate spot. i thought I had done it before but I guess I must not have clicked the save button (again).

Metadata Update from @tibbs:
- Issue assigned to tibbs

2 years ago

Login to comment on this ticket.

Metadata