From Fedora Project Wiki
(Initial draft)
 
(announcing the change)
 
(4 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{admon/important | Comments and Explanations | The page source contains comments providing guidance to fill out each section. They are invisible when viewing this page. To read it, choose the "view source" link.<br/> '''Copy the source to a ''new page'' before making changes!  DO NOT EDIT THIS TEMPLATE FOR YOUR CHANGE PROPOSAL.'''}}
{{admon/tip | Guidance | For details on how to fill out this form, see the [https://docs.fedoraproject.org/en-US/program_management/changes_guide/ documentation].}}
{{admon/tip | Report issues | To report an issue with this template, file an issue in the [https://pagure.io/fedora-pgm/pgm_docs pgm_docs repo].}}
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->


Line 23: Line 17:


== Current status ==
== Current status ==
[[Category:ChangePageIncomplete]]
[[Category:ChangeAnnounced]]
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
Line 41: Line 35:
ON_QA -> change is fully code complete
ON_QA -> change is fully code complete
-->
-->
* [Announced]
* [https://lists.fedoraproject.org/archives/list/devel-announce@lists.fedoraproject.org/thread/ELFQVE2CLJKPFUMFYWUQR5SR6PNF7GQI/ Announced]
* [<will be assigned by the Wrangler> Discussion thread]
* [https://discussion.fedoraproject.org/t/f42-change-proposal-gnome-shell-extension-dependency-generator-system-wide/140618 Discussion thread]
* FESCo issue: <will be assigned by the Wrangler>
* FESCo issue: <will be assigned by the Wrangler>
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: <will be assigned by the Wrangler>
Line 62: Line 56:
== Scope ==
== Scope ==
* Proposal owners:
* Proposal owners:
** Implement a dependency generator and package it
** Implement a dependency generator and package it as `gnome-shell-extension-rpm-macros`
** (optional) make `gnome-shell` `Provides: gnome-shell(api) == MAJOR_VER` to make the implementation of the generator easier
** make `gnome-shell` `Provides: gnome-shell(api) == MAJOR_VER` to make the implementation of the generator easier
** Get this package pulled in by `redhat-rpm-config`
** Get this package pulled in by `redhat-rpm-config`
** Optionally get this into `epel-rpm-macros` for EPEL 10
** Provide a COPR for other developers to test
** Provide a COPR for other developers to test


Line 77: Line 72:
The issue is required to be filed prior to feature submission, to ensure that someone is on board to do any process development work and testing and that all changes make it into the pipeline; a bullet point in a change is not sufficient communication -->
The issue is required to be filed prior to feature submission, to ensure that someone is on board to do any process development work and testing and that all changes make it into the pipeline; a bullet point in a change is not sufficient communication -->


* Policies and guidelines: N/A (not needed for this Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Policies and guidelines: [https://pagure.io/packaging-committee/pull-request/1425 FPC #1425] <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- Do the packaging guidelines or other documents need to be updated for this feature?  If so, does it need to happen before or after the implementation is done?  If a FPC ticket exists, add a link here. Please submit a pull request with the proposed changes before submitting your Change proposal. -->
<!-- Do the packaging guidelines or other documents need to be updated for this feature?  If so, does it need to happen before or after the implementation is done?  If a FPC ticket exists, add a link here. Please submit a pull request with the proposed changes before submitting your Change proposal. -->
This should only land after implementation is done


* Trademark approval: N/A (not needed for this Change)
* Trademark approval: N/A (not needed for this Change)
Line 130: Line 126:
<!-- What other packages (RPMs) depend on this package?  Are there changes outside the developers' control on which completion of this change depends?  In other words, completion of another change owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate?  Other upstream projects like the kernel (if this is not a kernel change)? -->
<!-- What other packages (RPMs) depend on this package?  Are there changes outside the developers' control on which completion of this change depends?  In other words, completion of another change owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate?  Other upstream projects like the kernel (if this is not a kernel change)? -->


This optionally requires changes to `gnome-shell` and `redhat-rpm-config`. The former is optional, but eases implementation. The latter is required to make this transparent to other packagers; if that change does not go through this becomes a self-contained change and extension maintainers can opt in by BR-ing the package
This requires changes to `gnome-shell` and optionally `redhat-rpm-config`. The former significantly eases implementation, as it allows a 1:1 mapping between the version listed in `metadata.json` and what we express in the binary RPM. The latter is required to make this transparent to other packagers; if that change does not go through this becomes a self-contained change and extension maintainers can opt in by BR-ing the package
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->



Latest revision as of 15:32, 24 December 2024


GNOME Shell extension Dependency Generator

This is a proposed Change for Fedora Linux.
This document represents a proposed Change. As part of the Changes process, proposals are publicly announced in order to receive community feedback. This proposal will only be implemented if approved by the Fedora Engineering Steering Committee.

Summary

Implement a dependency generator for GNOME Shell extensions that would make the binary RPM depend on the correct versions of GNOME Shell

Owner


Current status

  • Targeted release: Fedora Linux 42
  • Last updated: 2024-12-24
  • Announced
  • Discussion thread
  • FESCo issue: <will be assigned by the Wrangler>
  • Tracker bug: <will be assigned by the Wrangler>
  • Release notes tracker: <will be assigned by the Wrangler>

Detailed Description

GNOME Shell extensions ship with a metadata.json that lists the supported versions of GNOME Shell. This data is currently unused when packaging an extension, unless the package maintainer explicitly transfer this information to the spec -- and then keeps it up to date.

With this Change Proposal implemented, the binary RPM would automatically declare its dependency on the right versions of GNOME Shell, ensuring that we will discover after mass rebuild if some extensions need to be updated because they will FTI.

Feedback

Benefit to Fedora

This will result in an improved user experience for our users, because extensions that install are now more likely to work.

It will also help extension packagers, as they get early signal that an extension needs to be updated, by getting a FTI bug not long after the mass rebuild is complete.

Scope

  • Proposal owners:
    • Implement a dependency generator and package it as gnome-shell-extension-rpm-macros
    • make gnome-shell Provides: gnome-shell(api) == MAJOR_VER to make the implementation of the generator easier
    • Get this package pulled in by redhat-rpm-config
    • Optionally get this into epel-rpm-macros for EPEL 10
    • Provide a COPR for other developers to test
  • Other developers:
    • Test your package by explicitly adding the new dependency generator package as a BuildRequires and dropping the Requires on gnome-shell
    • If that works, once the new package is in Fedora and pulled in by redhat-rpm-config, you may (but do not have to) drop the Requires on gnome-shell as it will be redundant


This should only land after implementation is done

  • Trademark approval: N/A (not needed for this Change)
  • Alignment with the Fedora Strategy:

Upgrade/compatibility impact

N/A. This change would be transparent to packagers and end-users - it will allow packagers to clean up their spec by removing the explicit Requires on gnome-shell but that is optional


Early Testing (Optional)

Do you require 'QA Blueprint' support? N

How To Test

Extension packagers will be able to test against the COPR containing the new dependency generator


User Experience

Dependencies

This requires changes to gnome-shell and optionally redhat-rpm-config. The former significantly eases implementation, as it allows a 1:1 mapping between the version listed in metadata.json and what we express in the binary RPM. The latter is required to make this transparent to other packagers; if that change does not go through this becomes a self-contained change and extension maintainers can opt in by BR-ing the package


Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?)

If the dependency generator turns out to be very buggy, we can stop pulling it in redhat-rpm-config

  • Contingency deadline:

Beta freeze

  • Blocks release? No


Documentation

N/A

Release Notes