Wiki: https://fedoraproject.org/wiki/Changes/UseKmsconVTConsole
Discussion Thread: https://discussion.fedoraproject.org/t/172602
**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 ==
This change is to replace the kernel console '''fbcon''' with the userspace
console '''kmscon''' in Fedora, to provide an enhanced and more secure
console for Fedora users.
The long term goal is also to deprecate fbcon/fbdev emulation in the
kernel, and this is the first step in this direction.
== Owner ==
* Name: [[User:jfalempe| Jocelyn Falempe]]
* Email: <jfalempe(a)redhat.com>
== Detailed Description ==
'''fbcon''' is a terminal emulator in the kernel, which is not well
maintained (it lost scrolling support a few years ago due to a CVE), and
requires a fbdev emulation layer in the kernel, as all GPU drivers are
using the newer drm interface. It still requires userspace executable like
getty and bash to be useful.
'''kmscon''' is a simple terminal emulator based on linux kernel mode
setting (KMS). It can replace fbcon for VT console, and provide better
keyboard support, and better security.
This change will do the following:
Install kmscon by default, and update the symbolic link
/usr/lib/systemd/system/autovt@.service to point to kmsconvt@.service, to
start kmscon by default when switching VT.
kmscon should be the default also on non-graphical installation, as it
doesn't require any graphic library (only libdrm, to access the
framebuffer).
This change won't affect the installation, the boot process (like
encryption password fallback), as fbcon will still be compiled in the
kernel.
User can still revert to fbcon if they want, or if kmscon has issue on
their setup.
If kmscon fails to launch, it will fallback to getty/fbcon.
Currently kmscon depends on opengl/mesa, because it has an optional opengl
backend. But we don't want that on non-graphical server installation. I
will split the package in two, having something like kmscon and kmscon-gl
for the optional gl renderer.
== Feedback ==
== Benefit to Fedora ==
kmscon is more configurable, and has more features than fbcon:
* Uses xkbcommon for keyboard layout, so it supports multiple layout, and
switching between them with configurable shortcut.
* Has better unicode support.
* Can use pango for font rendering, and has better compatibility with
double-width character https://github.com/Aetf/kmscon/pull/135.
* Scrolling.
* Better security, as it's a userspace program, compared to fbcon running
in the kernel.
* A crash in kmscon will make the systemd service to restart it. A crash in
fbcon triggers a kernel panic.
Before F44 it may also have these additional features:
* Rotation support (with keyboard shortcut to rotate it at runtime)
https://github.com/Aetf/kmscon/pull/147
* Basic mouse/touchpad support, with copy/paste
https://github.com/Aetf/kmscon/pull/149
== Scope ==
* Proposal owners:
** Add kmscon in default installation target.
** Enable kmscon systemd service, for all tty, by changing the symbolic
link /usr/lib/systemd/system/autvt@.service, to point to kmsconvt@.service
** Split the kmscon package in 2, to avoid direct dependencies on egl.
* Trademark approval: N/A (not needed for this Change)
* Alignment with the Fedora Strategy:
== Upgrade/compatibility impact ==
== Early Testing (Optional) ==
== How To Test ==
Press Ctrl+alt+F3 to switch to the VT console.
Login and check if it's running kmscon with ''ps aux | grep tty3''
Check that you can scroll back with page up/page down.
Check that you can increase the font size with "ctrl +" and decrease with
"ctrl -"
== User Experience ==
==== Improvements ====
* The look & feel of the VT console, will be much better.
* Users will be able to configure special fonts, and use more unicode
characters.
* Users will have the same keyboard layout has what they have in graphical
environment. (Currently the kernel keyboard layout are different).
* Users will be able to scroll in the console.
==== Caveats ====
* Starting graphical application from the console (like "startx") won't
work, but you can work around it by using the script ''kmscon-launch-gui
startx''
== Dependencies ==
No dependencies.
== Contingency Plan ==
It should be easy to revert, just not install kmscon, and fbcon with getty
service will be the default.
== Documentation ==
N/A (not a System Wide Change)
== Release Notes ==
The Fedora Project is now accepting nominations for the Fedora Engineering
Steering Committee (FESCo) until November 26, 2025. Candidates can
self-nominate or be nominated by others with prior consent. Interviews are
mandatory and must be completed by December 3, 2025. Elected members serve
a two-release term.
https://communityblog.fedoraproject.org/f43-election-nominations-now-open/
--
*Justin Wheeler* (*he/him*) || 📧 jwheel(a)redhat.com || 🔗 jwheel.org
*Upcoming Absences:* 18 Nov–2 Dec (*Bereavement*)
*Formerly Justin W. Flory*
*Fedora* Community Architect
TZ=America/Atlanta (UTC-4) 🕗
*Fedora is a registered Digital Public Good
<https://app.digitalpublicgoods.net/a/12003>*
While I may be sending this email outside my normal office hours, I have no
expectation to receive a reply outside yours.
Wiki: https://fedoraproject.org/wiki/Changes/Ruby_3.5
Discussion Thread:
https://discussion.fedoraproject.org/t/f44-change-proposal-ruby-3-5-systemw…
**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 ==
Ruby 3.5 is the latest stable version of Ruby. Many new features and
improvements are included for the increasingly diverse and expanding
demands for Ruby. With this major update from Ruby 3.4 in Fedora 43 to Ruby
3.5 in Fedora 44, Fedora becomes the superior Ruby development platform.
== Owner ==
* Name: [[User:Jackorp1| Jaroslav Prokop]]
* Email: jprokop(a)redhat.com
* Name: [[User:Vondruch| VÃt Ondruch]]
* Email: vondruch(a)redhat.com
* Name: [[User:mtasaka| Mamoru Tasaka]]
* Email: mtasaka(a)fedoraproject.org
== Detailed Description ==
Ruby 3.5 is upstream's new major release of Ruby. Many new features and
improvements are included.
=== Language changes ===
* `*nil` no longer calls `nil.to_a`, similar to how `**nil` does not call
`nil.to_hash`.
* Logical binary operators (`||`, `&&`, `and` and `or`) at the beginning of
a line continue the previous line, like fluent dot.
=== Core classes updates ===
Note: We're only listing outstanding class updates.
* Kernel
* `Kernel#inspect` now checks for the existence of a
`#instance_variables_to_inspect` method, allowing control over which
instance variables are displayed in the `#inspect` string.
* Binding
* `Binding#local_variables` does no longer include numbered parameters.
Also, `Binding#local_variable_get` and `Binding#local_variable_set` reject
to handle numbered parameters.
* IO
* `IO.select` accepts `Float::INFINITY` as a timeout argument.
* Math
* `Math.log1p` and `Math.expm1` are added.
* Socket
* `Socket.tcp` & `TCPSocket.new` accepts `open_timeout` as a keyword
argument to specify the timeout for the initial connection.
* Ractor
* `Ractor::Port` class was added for a new synchronization mechanism to
communicate between Ractors.
* `Ractor::Port` provides the following methods:
* `Ractor::Port#receive`
* `Ractor::Port#send` (or `Ractor::Port#<<`)
* `Ractor::Port#close`
* `Ractor::Port#closed?`
* As result, `Ractor.yield` and `Ractor#take` were removed.
* `Ractor#join` and `Ractor#value` were added to wait for the termination
of a Ractor. These are similar to `Thread#join` and `Thread#value`.
* `Ractor#monitor` and `Ractor#unmonitor` were added as low-level
interfaces used internally to implement `Ractor#join`.
* `Ractor.select` now only accepts Ractors and Ports. If Ractors are
given, it returns when a Ractor terminates.
* `Ractor#default_port` was added. Each `Ractor` has a default port,
which is used by `Ractor.send`, `Ractor.receive`.
* `Ractor#close_incoming` and `Ractor#close_outgoing` were removed.
* `Ractor.shareable_proc` and `Ractor.shareable_lambda` is introduced to
make shareable Proc or lambda.
* `Set`
* `Set` is now a core class, instead of an autoloaded stdlib class.
* String
* Update Unicode to Version 16.0.0 and Emoji Version 16.0. (also applies
to Regexp)
* Thread
* Introduce support for `Thread#raise(cause:)` argument similar to
`Kernel#raise`.
* Fiber
* Introduce support for `Fiber#raise(cause:)` argument similar to
`Kernel#raise`.
* Fiber::Scheduler
* Introduce `Fiber::Scheduler#fiber_interrupt` to interrupt a fiber with
a given exception. The initial use case is to interrupt a fiber that is
waiting on a blocking IO operation when the IO operation is closed.
* Pathname
* Pathname has been promoted from a default gem to a core class of Ruby.
=== Stdlib updates ===
The following bundled gems are promoted from default gems.
* ostruct 0.6.3
* pstore 0.2.0
* benchmark 0.5.0
* logger 1.7.0
* rdoc 6.15.0
* win32ole 1.9.2
* irb 1.15.2
* reline 0.6.2
* readline 0.0.4
* fiddle 1.1.8
We only list stdlib changes that are notable feature changes.
Other changes are listed in the following sections. We also listed release
history from the previous bundled version that is Ruby 3.3.0 if it has
GitHub releases.
The following default gem is added.
* win32-registry 0.1.1
The following default gems are updated.
* RubyGems 4.0.0.dev
* bundler 4.0.0.dev
* date 3.5.0
* digest 3.2.1
* english 0.8.1
* erb 5.1.3
* etc 1.4.6
* fcntl 1.3.0
* fileutils 1.8.0
* io-console 0.8.1
* io-nonblock 0.3.2
* io-wait 0.3.2
* json 2.15.2
* net-http 0.7.0
* openssl 4.0.0.pre
* optparse 0.8.0
* pp 0.6.3
* prism 1.6.0
* psych 5.2.6
* resolv 0.6.3
* stringio 3.1.8.dev
* strscan 3.1.6.dev
* timeout 0.4.4
* uri 1.1.0
* weakref 0.1.4
* zlib 3.2.2
The following bundled gems are added.
The following bundled gems are updated.
* minitest 5.26.0
* rake 13.3.1
* test-unit 3.7.0
* rexml 3.4.4
* net-ftp 0.3.9
* net-imap 0.5.12
* net-smtp 0.5.1
* matrix 0.4.3
* prime 0.1.4
* rbs 3.9.5
* debug 1.11.0
* base64 0.3.0
* bigdecimal 3.3.1
* drb 2.2.3
* syslog 0.3.0
* csv 3.3.5
* repl_type_completor 0.1.11
=== Supported platforms ===
=== Compatibility issues ===
* The following methods were removed from Ractor due because of
`Ractor::Port`:
* `Ractor.yield`
* `Ractor#take`
* `Ractor#close_incoming`
* `Ractor#close_outgoging`
* `ObjectSpace._id2ref` is deprecated.
=== Stdlib compatibility issues ===
* CGI library is removed from the default gems. Now we only provide
`cgi/escape` for the following methods:
* `CGI.escape` and `CGI.unescape`
* `CGI.escapeHTML` and `CGI.unescapeHTML`
* `CGI.escapeURIComponent` and `CGI.unescapeURIComponent`
* `CGI.escapeElement` and `CGI.unescapeElement`
* With the move of `Set` from stdlib to core class, `set/sorted_set.rb` has
been removed, and `SortedSet` is no longer an autoloaded constant. Please
install the `sorted_set` gem and `require 'sorted_set'` to use `SortedSet`.
=== C API updates ===
* IO
** <code>rb_thread_fd_close</code> is deprecated and now a no-op. If you
need to expose file descriptors from C extensions to Ruby code, create an
<code>IO</code> instance using <code>RUBY_IO_MODE_EXTERNAL</code> and use
<code>rb_io_close(io)</code> to close it (this also interrupts and waits
for all pending operations on the <code>IO</code> instance). Directly
closing file descriptors does not interrupt pending operations, and may
lead to undefined behaviour. In other words, if two <code>IO</code> objects
share the same file descriptor, closing one does not affect the other.
=== Implementation improvements ===
==== Ractor ====
A lot of work has gone into making Ractors more stable, performant, and
usable. These improvements bring Ractors implementation closer to leaving
experimental status.
* Performance improvements
** Frozen strings and the symbol table internally use a lock-free hash set
** Method cache lookups avoid locking in most cases
** Class (and geniv) instance variable access is faster and avoids locking
** Cache contention is avoided during object allocation
** <code>object_id</code> avoids locking in most cases
* Bug fixes and stability
** Fixed possible deadlocks when combining Ractors and Threads
** Fixed issues with require and autoload in a Ractor
** Fixed encoding/transcoding issues across Ractors
** Fixed race conditions in GC operations and method invalidation
** Fixed issues with processes forking after starting a Ractor
=== JIT ===
* YJIT
** YJIT stats
*** <code>ratio_in_yjit</code> no longer works in the default build. Use
<code>--enable-yjit=stats</code> on <code>configure</code> to enable it on
<code>--yjit-stats</code>.
*** Add <code>invalidate_everything</code> to default stats, which is
incremented when every code is invalidated by TracePoint.
** Add <code>mem_size:</code> and <code>call_threshold:</code> options to
<code>RubyVM::YJIT.enable</code>.
* ZJIT
** Add an experimental method-based JIT compiler. Use
<code>--enable-zjit</code> on <code>configure</code> to enable the
<code>--zjit</code> support.
** As of Ruby 3.5.0-preview2, ZJIT is not yet ready for speeding up most
benchmarks. Please refrain from evaluating ZJIT just yet. Stay tuned for
the Ruby 3.5 release.
* RJIT
** <code>--rjit</code> is removed. We will move the implementation of the
third-party JIT API to the [https://github.com/ruby/rjit ruby/rjit]
repository.
== Feedback ==
== Benefit to Fedora ==
With a latest release, Ruby language is supporting the newest language
features, which enables even faster and easier development of Ruby
applications.
== Scope ==
* Proposal owners:
** Finish packaging of Ruby 3.5. Current changes available in branch
https://src.fedoraproject.org/fork/jackorp/rpms/ruby/commits/ruby-3.5
** Rebuilding of Ruby packages providing native extensions (i.e. packages
which depends on libruby).
** Rebuild of packages with binary extensions (i.e. packages which depends
on libruby) will be handled automatically, but some packages might need
fixes/updates to support Ruby 3.5 properly.
** The packages are going to be rebuild in side-tag, but that does not need
releng involvement nowadays.
* Trademark approval: N/A (not needed for this Change)
* Alignment with the Fedora Strategy:
== Upgrade/compatibility impact ==
* User specific Ruby binary extensions need to be rebuild.
* Adjustments to new language features will be needed.
* Ruby packages/application dependencies might need to be adjusted if newly
bundled gems are used.
== Early Testing (Optional) ==
== How To Test ==
* No special hardware is needed.
* To test, install Ruby 3.5. The test builds are published in copr
https://copr.fedorainfracloud.org/coprs/jackorp/ruby-3.5/
* Try to locally rebuild your packages using Ruby 3.5.
* Use the packages with your applications previously written in Ruby.
* If something doesn't work as it should, let us know.
== User Experience ==
The Ruby programs/scripts should behave as they were used to.
== Dependencies ==
<pre>
$ dnf repoquery --disablerepo='*' --enablerepo=rawhide
--enablerepo=rawhide-source --arch=src --whatrequires 'ruby-devel' | sort |
uniq | wc -l
116
</pre>
== Contingency Plan ==
== Documentation ==
* [http://www.ruby-doc.org/ Help and documentation for the Ruby programming
language]
* [https://github.com/ruby/ruby/blob/master/NEWS.md Ruby 3.5.0 NEWS]
* [
https://www.ruby-lang.org/en/news/2025/04/18/ruby-3-5-0-preview1-released/
Ruby 3.5.0 preview1 release announcement]
== Release Notes ==
* The Ruby 3.5 bumps soname, therefore Ruby packages, which use binary
extensions, should be rebuilt. Nevertheless, since upstream paid great
attention to source compatibility, no changes to your code are needed.
https://github.com/ruby/ruby/blob/master/NEWS.md
Hey everyone,
The Fedora Release Engineering (RelEng) team is happy to share that
we’re entering the final phase of our migration from Pagure to
Forgejo, Fedora’s new code and issue hosting platform. Over the past
few months, Fedora Infrastructure and RelEng have collaborated to
align our repositories and workflows with Forgejo. With the Fedora 43
Final Release now successfully out, we’re ready to make this
transition official.
## Migration Date
We’re planning to migrate on November 18, 2025, which is two weeks from today.
Here’s what will happen on that date:
- All open and closed issues from our existing Pagure RelEng
repository will be migrated to a new Forgejo repository called
tickets.
- Once verified, the Pagure issue tracker will be closed and replaced
with a README notice directing users to Forgejo.
- After that, all new Fedora RelEng issues should be filed only on Forgejo.
## What’s Changing
This migration includes:
- The main RelEng repository (already mirrored on Forgejo).
- The RelEng issue tracker, moving to a dedicated repository called tickets.
- Follow-up migrations for related repositories such as faint,
composes, and others, which we’ll handle gradually once the main
migration is complete.
Mostly all issues, labels, milestones, and metadata will be carried
over using the Forgejo migration feature.
## Communication and Coordination
Ahead of the migration, we’ll be sharing reminders and updates through
announcements, but we also have a tracking ticket for this in releng:
https://pagure.io/releng/issue/13061.
## What You Need to Do
For now, nothing. Just note that after November 17, please avoid
opening new RelEng issues on Pagure, since they won’t be migrated.
We’ll share the Forgejo link as soon as the migration completes.
But post migration, the scripts will go in:
https://forge.fedoraproject.org/releng/tooling (This move is done as
part of initial restructuring work)
The ticket will be filed at: https://forge.fedoraproject.org/releng/tickets
In case of any issues, please poke me, or you know where to find the
releng issue tracker and the channel, if not, here you go:
Current Issue Tracker: https://pagure.io/releng/
Ping at: #releng:fedoraproject.org
Thanks,
Samyak Jain
Fedora Release Engineering
In accordance with FESCo's Inactive Packager Policy[1], a ticket in the
fedora-infrastructure repo[2] has been filed asking removal from
packagers group of users
that have been identified as inactive and not reachable during the F43
development cycle.
If you have suggestions for improvement, look for the open feature
issues[3] and file an issue
in the find-inactive-packagers repo[4] if it's not there already.
For the curious, here are the stats from today's run:
### These 67 users didn't reply and are going to be removed from
packagers: ###
- acardace
- appadeia
- bdperkin
- cgoncalves
- danw
- desnesn
- dfan
- dledford
- dmarlin
- dsecik
- ebaron
- ecurtin
- f1ash
- gil
- green
- hony
- huwang
- ichavero
- ilgrad
- italomga
- izabela
- jaltman
- jamesread
- jamielinux
- janisozaur
- jasenchao
- jdulaney
- jdunn
- jeffreylauribose
- jhuttana
- jkang
- jkozol
- josef
- jshort
- kengert
- kpvdr
- lcons
- leifliddy
- leon
- liuyang
- madko
- markmc
- mich181189
- miyunari
- mjia
- mmagr
- mmuzila
- mripard
- muneendra
- oget
- otherwiseguy
- patches
- pcolberg
- pcreech17
- rdieter
- rhn-mk1
- rjmco
- sbergmann
- snits
- sundaram
- ttorling
- umohnani
- vmaljulin
- wtogami
- xiubli
- yalgaer
- yarboa
### These users agreed to be removed from packagers: ###
- burlak
- mitr
- mkutlak
- mlysonek
- mstahl
- nocnokneo
- pcmoore
- rdossant
### These 2 users resumed activity: ###
- rharwood
- trondham
### Out of 134 tickets opened in first step, 75 users (56%) will be
removed from packagers ###
[1]
https://docs.fedoraproject.org/en-US/fesco/Policy_for_inactive_packagers/
[2] https://pagure.io/fedora-infrastructure/issue/12891
[3] https://pagure.io/find-inactive-packagers/issues?tags=feature
[4] https://pagure.io/find-inactive-packagers/new_issue
Wiki: https://fedoraproject.org/wiki/Changes/golang1.26
Discussion thread: https://discussion.fedoraproject.org/t/171737
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 of Go (golang package) to the upcoming version 1.26 in Fedora 44.
== Owner ==
* Name: Alejandro Sáez Morollón
* Email: asm(a)redhat.com
== Detailed Description ==
Update of Go (golang package) to the upcoming version 1.26 in Fedora 44. Go
1.26 is expected to be released in February 2026. A mass rebuild of all the
dependent packages is required.
== Feedback ==
Not feedback yet.
== Benefit to Fedora ==
Fedora users will receive the most current and recent Go release. Being
close to upstream allows us to avoid security issues and provide more
updated features. Consequently, Fedora will provide a reliable development
platform for the Go language and projects written in it.
For a complete list of changes, see upstream change notes at
https://tip.golang.org/doc/go1.26
== Scope ==
* Proposal owners:
Rebase the Golang package in Fedora 44 and help resolve any issues found
during the rebuild.
Fix potential issues with the help of the Golang package maintainers.
Rebuild of dependent packages as part of planned mass-rebuild.
* Trademark approval: N/A (not needed for this Change)
* Alignment with the Fedora Strategy:
== Upgrade/compatibility impact ==
No upgrade or compatibility impact.
== Early Testing (Optional) ==
Do you require 'QA Blueprint' support? N
== How To Test ==
# Install golang 1.26 from rawhide and use it to build your
application(s)/package(s).
# Perform a scratch build against rawhide.
# Your application/package built using golang 1.26 should work as expected.
== User Experience ==
Users will have a newer version of Go, with new features described in the
release notes and security fixes.
== Dependencies ==
Omitted due to the number of packages listed.
== Contingency Plan ==
== Documentation ==
https://tip.golang.org/doc/go1.26
== Release Notes ==