From Fedora Project Wiki
m (Change announced)
mNo edit summary
 
(8 intermediate revisions by 2 users not shown)
Line 6: Line 6:
state for several years now, and they do not reflect the
state for several years now, and they do not reflect the
[[ More_Go_packaging|current practices ]] from the Go SIG. As a result of new
[[ More_Go_packaging|current practices ]] from the Go SIG. As a result of new
RPM macros developed by [[User:nim| Nicolas Mailhot]], the Go SIG wishes to
RPM macros developed by [[User:nim| Nicolas Mailhot]], some members of the Go SIG wishes to
formally adopt new Go Packaging Guidelines, which aim at automation, reliability
formally adopt new Go Packaging Guidelines, which aim at automation, reliability
and simplicity.
and simplicity.
This proposal consists of:
* Packaging the new Go macros: go-rpm-macros
* Getting the Guidelines approved by the FPC
* Updating all Go libraries with the new macros
* Mass-rebuilding all the Go package in a side tag


== Owner ==
== Owner ==
Line 16: Line 22:
-->
-->
* Name: [[User:eclipseo| Robert-André Mauchin]]
* Name: [[User:eclipseo| Robert-André Mauchin]]
* Name: [[User:jcajka| Jakub Cajka]]
* Name: [[User:nim| Nicolas Mailhot]]
* Name: [[User:nim| Nicolas Mailhot]]
* Name: [[User:qulogic| Elliott Sales de Andrade]]
* Name: [[User:qulogic| Elliott Sales de Andrade]]
Line 43: Line 48:
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
-->
-->
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1715534 #1715534]
* Release notes tracker: [https://pagure.io/fedora-docs/release-notes/issue/347 #347]


== Detailed Description ==
== Detailed Description ==
Line 82: Line 88:
* Other developers: N/A (not a System Wide Change)
* Other developers: N/A (not a System Wide Change)


* Release engineering: N/A
* Release engineering: Mass-rebuild Go packages in a side tag before Change deadline
** [[Fedora_Program_Management/ReleaseBlocking/Fedora{{FedoraVersionNumber|next}}|List of deliverables]]: N/A (not a System Wide Change)
** [[Fedora_Program_Management/ReleaseBlocking/Fedora{{FedoraVersionNumber|next}}|List of deliverables]]: N/A (not a System Wide Change)


Line 97: Line 103:
can be used to test the new macros on Rawhide. Sample SPEC files are available
can be used to test the new macros on Rawhide. Sample SPEC files are available
in the FPC Guidelines proposal.
in the FPC Guidelines proposal.
The COPR [https://copr.fedorainfracloud.org/coprs/eclipseo/golang-ng/ eclipseo/golang-ng/]
contains the work in progress of Go packages update.


== User Experience ==
== User Experience ==
Line 123: Line 131:
* Release Notes tracking: [https://pagure.io/fedora-docs/release-notes/issue/TBD #TBD]
* Release Notes tracking: [https://pagure.io/fedora-docs/release-notes/issue/TBD #TBD]


[[Category:ChangeAnnounced]]
[[Category:ChangeAcceptedF31]]
[[Category:SelfContainedChange]]
[[Category:SelfContainedChange]]

Latest revision as of 17:25, 9 July 2019

Adopt new Go Packaging Guidelines

Summary

The current Go packaging guidelines have been in a draft state for several years now, and they do not reflect the current practices from the Go SIG. As a result of new RPM macros developed by Nicolas Mailhot, some members of the Go SIG wishes to formally adopt new Go Packaging Guidelines, which aim at automation, reliability and simplicity.

This proposal consists of:

  • Packaging the new Go macros: go-rpm-macros
  • Getting the Guidelines approved by the FPC
  • Updating all Go libraries with the new macros
  • Mass-rebuilding all the Go package in a side tag

Owner

  • Email: <golang@lists.fedoraproject.org>
  • Release notes owner:

Current status

Detailed Description

Over 775 Go packages are currently residing in Fedora's repositories, yet no formal guidelines have ever been approved. As a result, the various Go SPECs are inconsistent and most often outdated. Moreover, the next version of Go, 1.13, will introduce the concept of modules by default, which will completely change how Go libraries are distributed. With the current state of our tooling, the Go SIG is not prepared to face such a drastic change.

Nicolas Mailhot has worked on a set of new RPM macros which will allow us to disconnect the upstream Go tooling from the downstream integration inside RPM. This will allow us to adapt easily to future upstream changes without the need to rewrite our SPEC catalogue.

Benefit to Fedora

  • Simplicity: SPEC files are simpler, less error-prone
  • Automation: the new macros computes packages definition, Requires, Provides and has provision for the new automated BuildRequires
  • Standardization of SPEC files across the Go library
  • Drastic reduction of boilerplate and SPEC size
  • Automatic removal of vendored code
  • Ease of testing: all units tests are detected and run
  • Ease of upkeep
  • Ease of adaptation to upstream changes

Scope

  • Other developers: N/A (not a System Wide Change)
  • Release engineering: Mass-rebuild Go packages in a side tag before Change deadline

Upgrade/compatibility impact

No compatibility impact is expected. All the new macros are backward compatible with the old ones.

How To Test

The COPR nim/macros-ng can be used to test the new macros on Rawhide. Sample SPEC files are available in the FPC Guidelines proposal. The COPR eclipseo/golang-ng/ contains the work in progress of Go packages update.

User Experience

The user impact is minimal or nil. As a result of the simplification of SPEC files, we may ship updated libraries more quickly, and it may be easier for new contributors to package Go applications.

Dependencies

N/A (not a System Wide Change)

Contingency Plan

  • Contingency mechanism: If the required packages are not merged by the deadline target, or if the Guidelines are not approved, we may continue with our current set of non-approved practices. No other impact is expected.
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? No
  • Blocks product? No

Documentation

The FPC Guidelines proposal is available on eclipseo personal space.

Release Notes

  • Release Notes tracking: #TBD