Wiki - https://fedoraproject.org/wiki/Changes/Ansible11
Discussion Thread -
https://discussion.fedoraproject.org/t/f42-change-proposal-ansible-11-self-…
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 ==
Update to Ansible 11 and Ansible Core 2.18, which no longer supports
Python 2.7 and Python 3.6 target nodes, including EL 7 and EL 8 hosts.
== Owner ==
* Name: [[User:gotmax23| Maxwell G]]; [[User:nirik| Kevin Fenzi]]
* Email: maxwell(a)gtmx.me; kevin(a)scrye.com
== Detailed Description ==
The premise of the change proposal is simple — a major version update
from Ansible 9 ({{package|ansible}}) / Ansible Core 2.16
({{package|ansible-core}}) to Ansible 11 / Ansible Core 2.18. This is
being filed as a Change proposal instead of a standard update due to
major breaking changes.
Ansible Core 2.18's minimum supported Python version on target nodes
is Python 3.8 - 3.13. This means that Ansible will no longer be able
to interact with RHEL 8 hosts (system Python is Python 3.6) or RHEL 7
hosts (system Python is Python 2.7). Ansible Core upstream plans to be
more aggressive with dropping support for older Python versions on
target nodes in the feature.
Ansible 9, the last release that supports Python 2.7 and Python 3.6
target nodes, will go EOL upstream in November 2024, so we must update
to the latest Ansible to continue receiving upstream support.
The collections included in the Ansible 11 package will also receive
the usual updates to their latest respective major versions. See the
upstream roadmaps linked in the Documentation section for more details
about other more minor Ansible Core changes and the release schedules
for both Ansible and Ansible Core.
== Feedback ==
(FAQ)
* What about alternative Python interpreters on RHEL 8? Can Ansible
Core 2.18 use those and keep support for RHEL 8?
Kind of. The appstream repository does indeed provide
[https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/co…
alternative, newer Python interpreter versions], in addition to the
default system Python version. Ansible ''can'' execute modules on
target nodes using an alternative Python interpreter if the
<code>ansible_python_interpreter</code> var is set appropriately, but
core functionality such as the <code>ansible.builtin.package</code> /
<code>ansible.builtin.dnf</code> module require access to system
libraries that are only available for the default system Python
interpreter. Users are therefore not recommended to update to Ansible
Core 2.18 if they still require compatibility with RHEL 8 hosts.
* Can a compat package with an older Ansible Core version be provided?
Maybe. Ansible Core only adds support for new Python versions in new
major releases, not the minor releases in between, even though
multiple major release trains receive bugfix/security support at a
time. The Ansible Core 2.16 controller in Fedora 41 only works with
python3.13 thanks to a downstream patch. Additionally, even with our
patches, certain parts of the codebase — including the
<code>ansible-test sanity</code> tooling used by Ansible Collection
developers to lint their code — do not work properly with Python
versions not officially supported by upstream or its test
infrastructure.
If other users are interested in an Ansible Core 2.16 compat package
and willing to take primary responsibility for maintenance and forward
Python compatibility, please reach out to the Change owners.
== Benefit to Fedora ==
Fedora will have the latest version of Ansible and continue receiving
upstream support.
== Scope ==
* Proposal owners:
** Update the ansible and ansible-core packages
** Ensure Ansible Collections packages in Fedora are up to date and
compatible with the latest Ansible Core version.
* Other developers: <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
** Ensure Ansible Collections packages in Fedora that are maintained
by packagers other than the Change owners are up to date and
compatible with the latest Ansible Core version.
== Upgrade/compatibility impact ==
Ansible Core 2.18's minimum supported Python version on target nodes
is Python 3.8 - 3.13. This means that Ansible will no longer be able
to interact with RHEL 8 hosts (Python 3.6) or RHEL 7 hosts (Python
2.7).
== How To Test ==
Install the latest ansible/ansible-core packages once they arrive in
the Fedora repos and ensure that your existing playbooks and installed
collections and roles continue to function.
== User Experience ==
Users will have the latest version of Ansible and Ansible Core.
== Dependencies ==
Ansible Collection packages in Fedora should be tested against the new
ansible-core release.
== Contingency Plan ==
* Contingency mechanism: Revert ansible-core and ansible updates
* Contingency deadline: N/A (not a System Wide Change)
* Blocks release? N/A (not a System Wide Change)
== Documentation ==
* [https://docs.ansible.com/ansible/devel/roadmap/ROADMAP_2_18.html
Ansible Core 2.18 Roadmap]
* [https://docs.ansible.com/ansible/devel/roadmap/COLLECTIONS_11.html
Ansible 11 Roadmap]
== Release Notes ==
Update to Ansible 11 and Ansible Core 2.18, which no longer supports
Python 2.7 and Python 3.6 target nodes, including EL 7 and EL 8 hosts.
--
Aoife Moloney
Fedora Operations Architect
Fedora Project
Matrix: @amoloney:fedora.im
IRC: amoloney
Wiki - https://fedoraproject.org/wiki/Changes/ThirdPartyLegacyJdks
Discussion Topic -
https://discussion.fedoraproject.org/t/f42-change-proposal-third-party-lega…
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.
= Adjust java/java-devel requires to multi-vendor JDK world and
replace legacy JDKs by third party Eclipse Temurin repositories =
== Summary ==
Adjust java/java-devel `provides/requires` to multivendor world and
obsolete all non-system LTS JDKs (java-1.8.0-openjdk, java-11-openjdk,
java-17-openjdk in time of writing) by appropriate, properly
integrating, RPMs from Eclipse Adoptium repositories.
== Owner ==
* Name: [[User:jvanek| Jiri Vanek]]
* Email: <jvanek(a)redhat.com>
* Product: java and java stack
* Responsible WG: java-sig (java and java-maint)(which no longer exists)
* rcm ticket: https://pagure.io/releng/issue/TODO
* named side tag ticket: tbd
=== Expected schedule ===
* Eclipse Temurin repositories already exists:
https://adoptium.net/installation/linux/#_centosrhelfedora_instructions
* RPMs can be easily integrated. Remaining issues are summed up at:
https://github.com/adoptium/installer/issues/848 ; but they do not
block immediate usage
* RPM with repository on review:
https://bugzilla.redhat.com/show_bug.cgi?id=2313339
* JDKs will be obsoleted from f42 onwards only. The Repository may be
available also for older Fedoras, as they can coexists.
* to keep en system-jdk idea as it is, the requires of "java",
"java-devel" and "java-headless" were revisited
** those will be encapsulated them to "javapackages-tools" and
"javapavckages-local" which handles system JDK anyway in user
independent way
(https://fedoraproject.org/wiki/Changes/Decouple_system_java_setting_from_ja…)
** the documentation of
https://docs.fedoraproject.org/en-US/packaging-guidelines/Java/#_buildrequi…
will be updated
** all non-system LTS JDKs will be orphaned or replaced by obsoleting
package with possible dependency on the repository wrapper)
As 'Change Checkpoint: Proposal submission deadline (System Wide
Changes) Tue 2024-12-24' and 'Branch Fedora Linux 42 from Rawhide Tue
2025-02-04' is in reasonable time, we hope to finish all peacefully
(as all initial tests are already finished).
== Detailed Description ==
{{admon/important | JDK TEAM NOTE: | in el10 there is only one jdk,
however, the non binding java/java-devel, and all the whole "system
jdk in javapackages-tools" is quite a precedent for it, and
considering we will be updating system jdk in el aprox 3x, we should
take exceptional care here, as it may solve - or bite back - the issue
we are facin gin el9 now}}
Fedora currently ships:
* java-1.8.0-openjdk (LTS)
* java-11-openjdk (LTS)
* java-17-openjdk (LTS)
* java-21-openjdk (LTS), system JDK
* java-latest-openjdk (STS) - currently JDK22, soon JDK23, in time of
finish JDK24
* In future, java-25-openjdk will fork from java-latest-openjdk, and
will become system jdk, as jdk21 before
(https://fedoraproject.org/wiki/Changes/Java21#java-21-openjdk_as_the_system…)
and jdk17 before that and so on...
** java-21-openjdk will then follow the fate of java-17-openjdk, 11
and 1.8.0 as written lower.
We, OpenJDK maintainers in Fedora, would like to orphan/close/obsolete
non system JDKs in favor of Temurin JDKs. Adoptium Temurin
(https://adoptium.net/temurin/releases/) is de-facto standard build of
JDK, with huge support and compatibility, and all current Fedora JDK
contributors are long term members and contributors to Temrun JDK (and
its RPMs).
Adoptium is dedicated, to keep Temurin RPMs well integrated and
healthy for Fedora. Adoptium efforts are tracked in
https://github.com/adoptium/installer/issues/848 . Adoptium is
maintaining their repos
(https://adoptium.net/installation/linux/#_centosrhelfedora_instructions)
for ages, and they're heavily used.
Practically We see several approaches:
* simply orphan jdk 8,11 and 17 (in f42 the only system JDK will be 21)
** However past (orphaning of jdk 6 and 7 ) had learned us a lesson
that average packager (despite being experienced java/C programmer) is
unable to maintain OpenJDK packages
* orphan the packages and close them. enhance
https://docs.fedoraproject.org/en-US/quick-docs/installing-java/ that
non system JDK can be installed after enabling the adoptium repos
(https://adoptium.net/installation/linux/#_centosrhelfedora_instructions)
* orphan the packages and close them.
** provide rpm which will contain the 3d party repository\
** enhance https://docs.fedoraproject.org/en-US/quick-docs/installing-java/
informing about that
* provide rpm which will contain the 3d party repository\
** integrate it with gnome software and and fedora setup of 3rd party repos
** we would like try to do an fluent transition - so the current 8,11
and 17 packages will also install the rpm with repository files and
thus once we remove jdk8-17 (or future) from distribution, they will
be smoothly updated by temurin jdk (with check if other 3rd party
repos are enabled)
java-latest-openjdk remain also maintained in Koji, as it is necessary
testing ground for future system JDK.
It was never an intention to repack a binary Temurin blob in Koji
(just in case anybody will think about it).
It is not an intention to get rid of maintaining System JDK. However
once JDK will no longer be System jdk in any live Fedora, it will be
orphaned/closed in favor of Temurin JDK. So once f42 will go out we
will continue to maintain only
jdk 23+21. In some short time, we will maintain 25+21, a bit later
26+25+21... And once 25 will become system JDK in all live fedoras, we
will ditch 21 in favor of Temurins
=== java packages `requires` mass change ===
The javastack (via javapackages-tools) will be reworked to:
*encapsulate dependencies on system jdk (or any other koji-based jdk)
to javapackages tools
*allow any application to work on any, even 3rd party java
This should be achieved via following chnages to reqires changes and
generated changes:
*`javapackages-local` for packages with `ant` or no build - `requires
java-%{system}-openjdk-devel` (`%jpackage_script`)
**`javapavckages-local%VERSIONED` for older ones
**For slower transitions to newer jdks
*`javapackages-tools`
**`requires java-%{system}-openjdk-headless`
**`javapackages-tools%VERSIONED` for older ones
**Do not requires java-%{system}-openjdk
***'''Will not be added''' - satisfied by Javapackages-tools with java
|| java-xyz-openjdk requires
* Requires generator which crawls through launchers of packages
(including `jpackage_script` ) which source `java_functions`
** will be pointing to used jre headless
**`%jpackage_script` is implicitly affected by generator and will
generate requires to corresponding `%{build_time_sdk's}-headless jre`
(which is currently system jdk, which is jdl 21, unless specified
differently)
*Other packages will need to manually adjust from
`java-%{system}-openjdk-/headless/devel` to
`java-(system+1)-openjdk-/headless/devel`
**This affects mass rebuilds (instead of just release++ a
java-xy-openjdk must do xy++). Positive si that there is more time to
do that
** Indirectly this is '''not enforcing''' new system jdk when new LTS
is promoted in Fedora
***Otherwise generic `java-devel` will no longer satisfy new systemjdk
after system bump
*`JAVA_HOME` remains main override (rpm generated requires are not
affected (maybe todo?))
https://docs.fedoraproject.org/en-US/packaging-guidelines/Java/ will
be adjusted accordingly
the packages built by pure javac or just build requires java without
any javapackages tools will be adjusted manually
'''Note that this is a much smaller effort than it looks like. 99% of
packages are living with generated provides, and will get the change
automagically. The remaining - approx 10 - packages will be handled
manually'''
== Feedback ==
todo
== Benefit to Fedora ==
The number of legacy JDKs have grown, and hand in hand with that the
number of their usages dropped to minimum. It seems there is no longer
any need to maintain them, as their usage is only highly specialized.
By providing 3rd party repo, we allow the specialized use-cases to
continue to exist. By discontinuing their build in koji we will untie
our hands to move forward and focus on future JDKs. Also we will
enable fedora to provide highly stable, often updated, secure, 100%
integrate-able and passionately maintained builds of legacy JDKs,
which will serve as proper replacement if really needed. As a side
effect of the changes in `provides/requires`, we will allow every JDK,
from any vendor, which follows unofficial packaging JEP (which covers
java and javac alternatives master and java/java-devel provides) to be
effectively part of system if wanted, and not just silent companion.
== Scope ==
* Proposal owners:
** will provide and maintain the 3rd party repo -
https://bugzilla.redhat.com/show_bug.cgi?id=2313339
** will help to integrate it with gnome-software and other 3rd party repos units
** will orphan or replace (based on agreement on `details`
** will update java packages documentation
** we will fix all the direct requires java/java-devel (approx 14 only)
** we will communicate with packagers of known, remaining packages
which do not run with system jdk (approx 5 )
* Other developers:
** javapackages-tools, maven and ant maintainers are already on board
to to totally decuple system jdk from installed java
* Release engineering: [https://pagure.io/releng/issues #Releng issue number]
** I think the mass rebuild will not be needed
* Policies and guidelines: N/A (not needed for this Change)
** java packaging guidelines will be updated
* Trademark approval: N/A (not needed for this Change)
* Alignment with the Fedora Strategy:
** This proposal is aligned with Fedora mission - to be on top of
technology. We want to focus on newer JDKs, and still provide
comfortable access to legacy ones,
== Upgrade/compatibility impact ==
No meter what approach will be selected at the end, there will be
upgrade impact.
* in ideal usecase, the JDKs from koji simply replaces themselves by
those from Eclipse Temurin
* in worst case, user will just get disabled 3rd party repo and updated docs.
In all cases system jdk will remain on machine, and in all cases
legacy jdks will be replaced or disappear. I would really be unhappy
to simply discontinue them, and leave unmaintained software on target
boxes.
== Early Testing (Optional) ==
Do you require 'QA Blueprint' support? Y
== How To Test ==
No JDK on system
# get system without java
# update to next fedora
# no JDK should be there
Only system JDK on system and future STS jdk
# get system with system jdk only
# update to next fedora
# JDK should be there
Only legacy JDK
# get system withotu any JDK
# manually install any of legacy LTS jdks
# update to next fedora
# the legacy jdk should not be there or should be gone
System JDK and legacy JDK
# get system with system jdk only
# manually install any of legacy LTS jdks
# update to next fedora
# system JDK should be there
# the legacy jdk should not be there or should be gone
== User Experience ==
As already described, basic users should not notice change. Advanced
users should not lost.
== Dependencies ==
Several (less then 10) packages will lost theirs main dependencies.
Those list will be enumerated.
Those packages will need to orphan and move to different kind of
distribution or update.
Main java stack - the packages depending on system
java/java-devel/java-headless/java-packages-tools and similar, should
not notice change.
== Contingency Plan ==
* Contingency mechanism: If we fails to introduce Eclipse Temurin JDKs
repo, we will simply orphan legacy JDKs as written earlier
* Contingency deadline: 1. December 2024
* Blocks release? Yes
== Documentation ==
Only eclipse temurin install pages and java packages guidelines
* todo link1
* todo link2
== Release Notes ==
tbd
--
Aoife Moloney
Fedora Operations Architect
Fedora Project
Matrix: @amoloney:fedora.im
IRC: amoloney
Wiki - https://fedoraproject.org/wiki/Changes/php84
Discussion Thread -
https://discussion.fedoraproject.org/t/f42-change-proposal-php-8-2-self-con…
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.
== Detailed Description ==
Update the PHP stack in Fedora to latest version 8.4.x.
Fedora has a 6 months cycle, PHP a 1 year cycle, our common practice
for some years:
* 2 Fedora cycles for each PHP minor release (exceptions below)
* 3 Fedora cycles for latest minor (e.g. 5.6 or 7.4) to give more time
before next major
* 1 Fedora cycle for first major (e.g. 7.0 or 8.0)
Fedora 38 and 39 have PHP 8.2, Fedora 40 and 41 have PHP 8.3.
As this version should be the last 8.x (before 9.0), it should be in
Fedora 42, 43 and 44.
* A testing SCL and a testing module are available in my
[https://blog.remirepo.net/post/2024/07/05/PHP-8.4-as-Software-Collection
repository]
* List of [https://github.com/remicollet/remirepo/issues/258
extensions compatibility list]
* [https://wiki.php.net/todo/php84 Upstream schedule for 8.4]
Version 8.4.0 GA is planned for November 21st.
== Benefit to Fedora ==
Provides the latest PHP version to developers and system administrators.
== Scope ==
* Proposal owners: Check Koschei status. Test with latest version to
ensure compatibility. Work with upstream on bug fixing. Needed mass
rebuild (C extensions) done by change owner.
* Other developers: N/A (not a System Wide Change)
* Release engineering:[https://pagure.io/releng/issues #Releng issue number]
* Policies and guidelines: N/A (not a System Wide Change)
* Trademark approval: N/A (not needed for this Change)
== Upgrade/compatibility impact ==
N/A (not a System Wide Change)
== How To Test ==
* The PHP stack (extensions and libraries) are monitored by Koschei,
see the [https://apps.fedoraproject.org/koschei/groups/php?order_by=state%2C-started
Koschei PHP group]
* install and play with your web applications
== User Experience ==
Developers and system administrators will have the great benefit or
running the latest PHP version.
== Dependencies ==
All php-* packages (and some *-php)
== Contingency Plan ==
* Contingency mechanism: Drop not compatible (and not fixable) packages.
* Contingency deadline: N/A (not a System Wide Change)
* Blocks release? N/A (not a System Wide Change)
== Documentation ==
* [https://raw.githubusercontent.com/php/php-src/master/UPGRADING UPGRADING]
* [https://raw.githubusercontent.com/php/php-src/master/UPGRADING.INTERNALS
UPGRADING.INTERNALS]
== Release Notes ==
--
Aoife Moloney
Fedora Operations Architect
Fedora Project
Matrix: @amoloney:fedora.im
IRC: amoloney
Wiki - https://fedoraproject.org/wiki/Changes/Anaconda_Web_UI_Partitioning
Discussion Thread -
https://discussion.fedoraproject.org/t/feedback-anaconda-web-ui-partitionin…
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 ==
The Anaconda OS installer project needs to have a new approach for
partitioning with the new web UI. This approach needs to be easy to
control for users who don’t understand details of the Linux storage
but still allows more complex requirements.
== Owner ==
* Name: [[User:jkonecny| Jiri Konecny]]
* Email: jkonecny(a)redhat.com
== Detailed Description ==
This is separation of one topic from the
[[Changes/AnacondaWebUIforFedoraWorkstation|Anaconda WebUI for Fedora
Workstation by default]] change in Fedora. The storage part of the new
installer UI was extracted here to start an open discussion of our
solution, to collect feedback and get agreement with the proposed
approach. '''Main reason for creating this change is to agree on a
solution and to find feasibility for the next Fedora delivery.'''
With the current GTK UI of Anaconda we provide users three ways of
creating partitioning.
* Automatic - select disks (optional encryption) and Anaconda will do
everything else for you.
** If disks are not empty a pop-up will show, which allows you to
select what partitions you want to remove or preserve to free up space
for the automatic installation.
* Custom - select disks and then you will get to an advanced screen
where you design your output partitioning. This is the top-bottom
partitioning approach where you design your mount points but do not
have to care about how the final goal is reached.
* Blivet-gui - select disks and then design your storage from the
bottom (bottom-top approach) by creating a partition on it BTRFS etc…
** This solution was added later and its external tool integrated into
Anaconda, not directly maintained by the Anaconda team.
However, with web UI we need to change this because technologies are
different. When we are changing this, we would like to resolve old
pains of the current approach. The current approach is great in being
middle ground but in general, however, there are people who want to
have something extra (top-bottom approach is not specific enough) but
we also do not cover users, who don’t have much experience with Linux
partitioning (use cases as reinstall my existing system). Another
issue is that the Anaconda team size has reduced significantly from
times when the GTK solution was created, so we are looking for
solutions which are simple yet smart and easier to maintain and
extend.
Our solution:
* Guided partitioning - this is a more powerful automatic partitioning
where the user will select a goal and have additional customizations
possible. The goal here is that most users should be covered by this
guided experience.
** Currently our implementation has three possibilities:
*** Reinstall all selected disks and remove everything that is on them.
*** Install into a free space on selected disks.
*** Use existing storage and assign mount points for the installed system.
**** Good option for reusing the existing partitioning.
**** Users can also create their partitioning ahead of time with any
partitioning tool they prefer and use this option to just tell
Anaconda how to use the partitioning.
** We will extend the existing set of possibilities with the following list:
*** Reinstall existing system.
**** Users will have a list of existing systems installed on disks and
select which one they want to reinstall (remove existing system and
install to the same space).
**** Anaconda will replace root and should have a possibility to
preserve /home with user data.
*** Easy way to reclaim space from the existing disks and start
installation to the free space.
**** Similar approach to what we had on GTK UI.
**** It is simple and should cover a lot of cases in a simple way.
*** Based on the user feedback we would love to add more requested workflows.
* Cockpit storage - this is an external tool which is provided to the
user, however, thanks to the fact that web UI and Cockpit storage are
based on the same technologies, we are able to integrate Cockpit
Storage into the Anaconda web UI. '''Please note, that it is still an
external tool and shouldn’t be taken as part of the installation
workflow.''' We are trying to make this obvious in the UI.
** We have chosen the Cockpit Storage because it is using the same
PatternFly and Cockpit frameworks as the web UI, so it has a
consistent look and feel and allows us much seamless integration with
Anaconda. Also Cockpit Storage can be used with remote HTTPS
installations in the future. Users of Fedora might be familiar with
this tool because it is already used in Cockpit, it is a stable and
well maintained project.
** Cockpit storage does not support action planning which creates
controversy around this approach. All the actions done in the Cockpit
Storage are immediately applied to the disk. This is a drawback
compared to the current GTK UI, however, the approach as explained
above should be used as the secondary option when you are not
satisfied with the Guided partitioning and only for advanced users.
This shouldn't be taken as the main installation method nor part of
the installation workflow.
Based on the feedback we have decided to implement these changes:
https://discussion.fedoraproject.org/t/108995/58
== Feedback ==
We unfortunately don’t have much feedback from the community yet,
however, for that reason the FESCO decided in
https://pagure.io/fesco/issue/3169 that we should have testing for
feedback collection after Fedora 40 is released.
However, we were able to collect a bit of a feedback from FESCO members
* Cockpit storage is missing planning and immediate execution of
actions feels unsafe.
** Reply: We worked hard on notifying users that this is the case and
users could lose their data (which applies to any partitioning
method). Also this tool should be used only by the advanced users and
ideally only to a smaller number of them. The guided solution should
be the preferred one.
* What other tools can we use than Cockpit Storage?
** Reply: To our knowledge there are no other tools for partitioning
based on the same technologies as we are using for Cockpit Storage.
Which is making the Cockpit Storage an obvious choice for us and
enables us to also support this tool with remote HTTPS installations
in the future.
* Why Anaconda won’t implement their own solution.
** Reply: Reasons were already described above. Anaconda team size has
reduced a lot recently and we are looking at ways to maintain less to
be able to keep the project alive reasonably and not only for bug
fixing. Implementing our own solution would take significant resources
to implement and would increase maintenance costs.
A lot of feedback was received on
https://discussion.fedoraproject.org/t/feedback-anaconda-web-ui-partitionin…
== Benefit to Fedora ==
Anaconda GTK UI partitioning solution is quite complex but it also
could be limiting to advanced users. Our new solutions should simplify
the process of partitioning for Fedora users by selecting what they
want to achieve instead of how to achieve and leave the rest on
Anaconda. On the other hand we also allow users to use external
partitioning tools if they prefer.
Thanks to the fact that the Cockpit Storage project is maintained by
another team, the Anaconda team should have more capacity to focus on
other goals and priorities. As the outcome of this, Anaconda team
should have more capacity for feature work and bug fixing of issues
for the Fedora users.
The biggest benefit is the new guided partitioning. This approach
should simplify installation a lot and provide a powerful tool for
users who don't bother about details but want to achieve a specific
goal.
== Scope ==
* Proposal owners:
** Anaconda team
** Cockpit team
* Other developers: Should not have impact out of the Fedora
Workstation Live environment.
* Release engineering: [https://pagure.io/releng/issues #Releng issue number]
* Policies and guidelines: N/A (not needed for this Change)
* Trademark approval: N/A (not needed for this Change)
* Alignment with Community Initiatives:
== Upgrade/compatibility impact ==
This is a change to the installer of the system - no compatibility or
upgrade issues are expected to happen.
== How To Test ==
New partitioning solution together with a new web UI which should
simplify and improve user experience.
== Dependencies ==
Cockpit and Cockpit storage packages.
== Contingency Plan ==
* Contingency mechanism: Return back to the current GTK UI by changing
packages to build the ISO.
* Contingency deadline: Beta freeze
* Blocks release? No, we can ship without the new web UI
== Documentation ==
Documentation should be extended to guide users in how to create
partitioning beforehand if that is their desire.
== Release Notes ==
--
Aoife Moloney
Fedora Operations Architect
Fedora Project
Matrix: @amoloney:fedora.im
IRC: amoloney
Wiki - https://fedoraproject.org/wiki/Changes/KickstartOciArtifacts
Discussion Thread -
https://discussion.fedoraproject.org/t/f42-change-proposal-distributing-kic…
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 ==
Fedora distributed as bootable container ships via
[https://quay.io/repository/fedora/fedora-bootc?tab=tags OCI
registry]. Installation is typically done by conversion into a VM
image or ISO installer via [https://osbuild.org/ osbuild] (image
builder), however, booting from network is a useful workflow for
bare-metal fleet deployments. Required files to perform such
installation are not available in the OCI repository that could be
fetched from registry in a similar manner as the bootable container.
As of today, files are only available in the Fedora RPM repository and
the installation workflow would be cumbersome to find appropriate RPM
repo version and extract needed files instead of fetching all the
needed assets from the registry only. The change introduces a new OCI
repository with the files in question for each Fedora stable version.
== Owner ==
* Name: [[User:ipanova| Ina Panova]], [[User:lzap| Lukáš Zapletal]]
* Email: <ipanova(a)redhat.com>, <lzap(a)redhat.com>
== Detailed Description ==
Fedora bootable container is shipped via OCI registries without any
supplementary files for automated kickstart installations. The files
needed for this workflow are typically: bootloader, anaconda kernel,
initramdisk and anaconda main image. These files can be found in
regular Fedora RPM repository, for example in case of x86_64
architecture:
* [https://dl.fedoraproject.org/pub/fedora/linux/releases/40/Everything/x86_64…
vmlinuz]
* [https://dl.fedoraproject.org/pub/fedora/linux/releases/40/Everything/x86_64…
initrd.img]
* [https://dl.fedoraproject.org/pub/fedora/linux/releases/40/Everything/x86_64…
install.img]
* [https://dl.fedoraproject.org/pub/fedora/linux/releases/40/Everything/x86_64…
shim.efi]
* [https://dl.fedoraproject.org/pub/fedora/linux/releases/40/Everything/x86_64…
grubx64.efi]
* [https://dl.fedoraproject.org/pub/fedora/linux/releases/40/Everything/x86_64…
pxelinux.0]
* [https://dl.fedoraproject.org/pub/fedora/linux/releases/40/Everything/x86_64…
boot.iso]
Some files are distributed unsigned in the `images/` directory, others
are signed and need to be extracted from RPM packages. A complete ISO
"netboot" image is also available for network installations, the image
can be customized using `mkksiso` tool found in Fedora.
The main goal of this change is to start publishing the mentioned
files as [https://oras.land/docs/concepts/artifact/ OCI artifacts] for
each Fedora version and architecture. Buildah/Podman will be used for
creating such manifest and
[https://gitlab.com/fedora/bootc/netboot/netboot/-/blob/main/push.sh?ref_typ…
pushing it] to OCI registry and the process will be integrated into
current or upcoming (Konflux) release processes.
There is currently no support for downloading OCI artifacts with
podman but the feature is currently being discussed and worked on
upstream. However, Fedora contains `golang-oras` tool which
understands the OCI artifact format. This tool can already be used by
Fedora users to consume the content:
<pre>
$ oras pull quay.io/pulp/fedora-kickstart-artifacts:40-amd64
Downloading 8ea1dd040e97 initrd.img
Downloading 80c3fe2ae106 boot.iso
Downloading a3b7052d7b2f grubx64.efi
Downloaded a3b7052d7b2f grubx64.efi
Downloading fff4b2feeef3 pxelinux.0
Downloaded fff4b2feeef3 pxelinux.0
Downloading 4773d74d87c2 shimx64.efi
Downloaded 4773d74d87c2 shimx64.efi
Downloading 09cf5df01619 vmlinuz
Downloaded 80c3fe2ae106 boot.iso
Downloaded 09cf5df01619 vmlinuz
Downloaded 8ea1dd040e97 initrd.img
Restored 80c3fe2ae106 install.img
Pulled quay.io/pulp/fedora-kickstart-artifacts:40-amd64
Digest: sha256:0306e10fd556e12ce8c3674150bceb88c0917b74b63c37eecc17070b3b30003b
</pre>
Alternatively, the content can be downloaded via `skopeo` tool with
[https://github.com/theforeman/nboci-files/blob/main/artifact-pull.py
some scripting] involving file renaming.
The proposed repository for the content is:
`quay.io/fedora/kickstart-artifacts` and tag convention will be `N`
where N is Fedora version with manifest index for all supported
architectures pointing to tags in the form of `N-arch`. Only stable
and N-1 Fedora versions will be kept for storage reasons and old
artifacts will be regularly removed and garbage collected. For more
info, read [https://github.com/pulp/netboot-oci-specs/blob/main/netboot-oci-artifacts.md
manifest specification].
Files are currently being published at a temporary space:
[https://quay.io/repository/pulp/fedora-kickstart-artifacts?tab=tags&tag=lat…
quay.io/pulp/fedora-kickstart-artifacts] and can be consumed from
there. The pipeline currently lives on Fedora's gitlab.
== Benefit to Fedora ==
The change solves the situation for Fedora bootable containers users
who currently need to find matching Fedora RPM repositories and use
various tools like `curl` or `rpm2cpio` and `cpio` to download
required files. This will significantly simplify provisioning
workflows of Fedora systems en-masse via automation tools like Ansible
or Foreman. All files will be also signed by Fedora GPG keys for
increased security.
Users of regular (RPM) Fedora spin will benefit as well since
bare-metal provisioning workflows, scripts or tools can be further
simplified. Additionally, many provisioning systems (Beaker, Foreman)
use one shim/grub for installing all OS versions which does not work
reliably when SecureBoot is turned on. Published files can be easily
downloaded for each OS version.
The newly published content is planned to be integrated with other
open source projects: Foreman, Pulp and Ansible. This is out of scope
for this change.
== Scope ==
* Proposal owners: prepare CI/CD pipeline for fully automated build
and push of kickstart artifacts, integrate the published repositories
with related open-source project workflows [https://theforeman.org/
Foreman] and [https://pulpproject.org/ Pulp]
* Release engineering: create new repository in fedora namespace
[https://pagure.io/fedora-infrastructure/issue/12152 #12152] and
assistance with integrating the new pipeline into the Fedora workflow
== Documentation ==
The newly created repository will be features in documentation of
several upstream projects that will make use of it:
* osbuild
* foreman
* pulp
== Release Notes ==
TBD
--
Aoife Moloney
Fedora Operations Architect
Fedora Project
Matrix: @amoloney:fedora.im
IRC: amoloney
Wiki - https://fedoraproject.org/wiki/Changes/FEX
Discussion Post -
https://discussion.fedoraproject.org/t/f42-change-proposal-integrate-fex-in…
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 ==
[https://fex-emu.com/ FEX] is a fast emulator that allows one to run
x86 and x86-64 binaries on an AArch64 Linux host. FEX requires a
number of supporting components, including a RootFS image, and
integration with krun to support 16k page-size hosts. The purpose of
this Change is to integrate FEX itself and its supporting components
into Fedora Linux, to provide a delightful out-of-box experience for
users that want to run x86 and x86-64 binaries on their aarch64
systems. This also includes integration into the AArch64 Fedora KDE
spin as a non-blocking component of the spin.
== Owner ==
* Name: [[User:dcavalca|Davide Cavalca]], [[User:ngompa|Neal Gompa]],
[[User:alyssa|Alyssa Rosenzweig]]
* Responsible Teams: [[SIGs/Asahi|Asahi SIG]], [[SIGs/KDE|KDE SIG]]
* Email: davide(at)cavalca.name, ngompa13(at)gmail.com, alyssa(at)rosenzweig.io
== Detailed Description ==
When running Fedora Linux on an AArch64 host, one can normally only
run AArch64 binaries. This can be a problem if the user needs to run
preexisting software that was built for x86 or x86-64, which is still
the predominant architecture. If the software is opensource it can
sometimes be recompiled (or, even better, packaged in Fedora), but
this isn't always an option and could require significant work on the
user's part. For proprietary software, there is no viable option short
of persuading the author to release a native AArch64 build.
FEX allows the user to sidestep this issue entirely by making it
possible to run x86 and x86-64 binares on AArch64 Linux hosts, as if
they were native. FEX achieves this via emulation, and it integrates
with the binfmts infrastructure to provide a seamless experience. To
ensure wide compatibility, FEX is also able to leverage a
distribution-shipped root filesystem tree (RootFS) to provide core
system libraries that the emulated binaries might need.
FEX only supports AArch64 host systems running a 4k page-size kernel.
This is the default in Fedora Linux, but it presents a problem for
[https://fedora-asahi-remix.org/ Fedora Asahi Remix], as Apple Silicon
Macs use a 16k page-size. To address this, we will leverage krun to
run FEX inside a microVM with a 4k page-size kernel, thus providing a
compatible environment with minimal overhead.
== Feedback ==
(pending the initial Change discussion)
== Benefit to Fedora ==
Users will be able to run x86 and x86-64 binaries out of the box when
running Fedora Linux on their Aarch64 systems. This particularly
improves the usability of Fedora KDE for day-to-day usage on AArch64
systems.
== Scope ==
* Proposal owners:
** DONE: Package [https://github.com/FEX-Emu/FEX FEX] in Fedora Linux
- https://src.fedoraproject.org/rpms/fex-emu
** WIP: Create a [https://pagure.io/fedora-kiwi-descriptions/ Kiwi
definition] to produce a FEX root filesystem -
https://pagure.io/fedora-kiwi-descriptions/pull-request/83
** TODO: Package the root filesystem in Fedora Linux as an RPM
** DONE: Package
[https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/somm…
sommelier] -- https://src.fedoraproject.org/rpms/chromiumos-platform
** TODO: Package [https://github.com/slp/krun krun]
** TODO: Integrate FEX with krun to support 16k page-size systems
** TODO: Create a comps group for FEX and supporting components
** TODO: Attach the comps group to the kde-desktop-environment group
** TODO: Create a [https://pagure.io/fedora-kiwi-descriptions/ Kiwi
definition] to produce a sysroot image to be used by FEX at build time
to enable thunks
** TODO: Write documentation
* Other developers: assist with package reviews and provide feedback
* Release engineering: [https://pagure.io/releng/issue/12299 #12299]
* Policies and guidelines: N/A (not needed for this Change)
* Trademark approval: N/A (not needed for this Change)
* Alignment with Community Initiatives:
== Upgrade/compatibility impact ==
No expected upgrade or compatibility impact, this is a purely additive Change.
== How To Test ==
Once the relevant components have been packaged and the comps group
has been created, this Change will be testable with:
# dnf install @fex-x86-emulation
# ...
# profit!
== User Experience ==
Users will be able to run x86 and x86-64 binaries out of the box when
running Fedora Linux on their Aarch64 systems.
== Dependencies ==
This is pretty much self contained.
== Contingency Plan ==
* Contingency mechanism: (What to do? Who will do it?) Don't ship this
* Contingency deadline: N/A (not a System Wide Change)
* Blocks release? No
== Documentation ==
The Change owners will write documentation on how to use FEX, both for
general Fedora systems and in the context of Fedora Asahi Remix.
== Release Notes ==
--
Aoife Moloney
Fedora Operations Architect
Fedora Project
Matrix: @amoloney:fedora.im
IRC: amoloney