F45 Change Proposal: Lazarus with multiple widgetsets (self-contained)

Lazarus with multiple widgetsets

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.

Wiki
Announced

:link: Summary

Offer the Lazarus IDE built with multiple widgetsets, instead of just the GTK2 version.

:link: Owner

:link: Detailed Description

Lazarus is a RAD IDE for developing programs using Free Pascal. It allows for creating GUI applications using the Lazarus Component Library (LCL), which serves as an abstraction layer over many different interfaces (or, in Lazarus parlance, widgetsets), enabling users to build e.g. a GTK2 and Qt5 application from the same codebase.

While Lazarus in Fedora has shipped with support for different widgetsets since Fedora 39, so far the IDE itself was offered only in the GTK2 version. The goal of this change is to build the Lazarus IDE with multiple widgetsets, allowing users to e.g. use a Qt6-based build instead of the GTK2 one.

Packaging-wise, the following changes will be made:

  • The existing lazarus-ide package will be renamed to lazarus-ide-base; it will contain only files common to all the builds.

  • Five new sub-packages will be introduced:

    • lazarus-ide-gtk2
    • lazarus-ide-gtk3
    • lazarus-ide-qt
    • lazarus-ide-qt5
    • lazarus-ide-qt6
  • The different builds will be marked as conflicting and thus NOT parallel-installable.

:link: Benefit to Fedora

For users satisfied with using the GTK2 build of Lazarus, this Change should not affect their experience. Users preferring to use a different interface (e.g. Qt6) will get the possibility to do so.

Also, this Change will make it easier to retire gtk2 one day.

:link: Scope

  • Proposal owners: Make relevant changes to lazarus.spec.

  • Other developers: Should not affect other packages.

  • Release engineering: N/A

  • Policies and guidelines: N/A

  • Trademark approval: N/A

  • Alignment with the Fedora Strategy:

:link: Upgrade/compatibility impact

Obsoletes: will be added to appropriate packages so users upgrading from Fedora 43/44 will continue using the GTK2 build.

:link: How To Test

A COPR repository is available for early testing: suve/lazarus-ws

Install lazarus-ide-${WIDGETSET}, where ${WIDGETSET} is one of gtk2, gtk3, qt, qt5 or qt6. Start the program and check if everything works as expected.

:link: Dependencies

The following packages depend on Lazarus (either the lazarus metapackage, or one of the subpackages):

  • ccdciel
  • cqrlog
  • doublecmd
  • goverlay
  • indistarter
  • lazpaint
  • morserunner
  • pasdoc
  • peazip
  • skychart

:link: Contingency Plan

  • Contingency mechanism: Revert changes to the spec file and rebuild the package.
  • Contingency deadline: Before beta freeze
  • Blocks release? N/A (not a System Wide Change)

:link: Documentation

N/A (not a System Wide Change)

:link: Release Notes

Last edited by @amoloney 2026-06-20T12:57:54Z

Last edited by @amoloney 2026-06-20T12:57:54Z

How do you feel about the proposal as written?

  • Strongly in favor
  • In favor, with reservations
  • Neutral
  • Opposed, but could be convinced
  • Strongly opposed
0 voters

If you are in favor but have reservations, or are opposed but something could change your mind, please explain in a reply.

We want everyone to be heard, but many posts repeating the same thing actually makes that harder. If you have something new to say, please say it. If, instead, you find someone has already covered what you’d like to express, please simply give that post a :heart: instead of reiterating. You can even do this by email, by replying with the heart emoji or just “+1”. This will make long topics easier to follow.

Please note that this is an advisory “straw poll” meant to gauge sentiment. It isn’t a vote or a scientific survey. See About the Change Proposals category for more about the Change Process and moderation policy.

Is there any advantage to building for the older toolkits? That is, would it not be sufficient to build for gtk3 and qt6 only? What advantage is there to building for gtk2, for example?

Good question. I suppose that, apart from it being a form of self-testing - if the IDE can build itself in GTK2 mode, that means GTK2 support is working properly - there isn’t much advantage in doing so.

At least we should default to using a modern toolkit. Is there a strong reason to still default to the gtk2 backend?

Also I reviewed the spec in the Copr and had a couple minor comments. Is there a distgit PR or something on which I could leave comments? Mainly, using dependency constraints in Recommends is unnecessary and breaks Changes/ExcludeFromWeakAutodetect - Fedora Project Wiki. Also, the approach to handling conflicting providers can be simplified using an approach like https://forge.fedoraproject.org/packaging/guidelines/issues/1440#issuecomment-617968 so you don’t need to repeat a bunch of Conflicts in every subpackage.

Is there a strong reason to still default to the gtk2 backend?

Other than it being the default choice upstream, not really. If we were to go with something else, I’d pick Qt6 - there’s no GTK4 support, and GTK3 was only stabilized last year.

Also, the approach to handling conflicting providers can be simplified…

Huh, nice. Thanks for the suggestion.

Is there a distgit PR or something on which I could leave comments?

Good idea, I’ll prepare one soon-ish.

The advantage of the GTK2 version is that it works. GTK versions generally work better on Gnome than the Qt ones. In Lazarus 4.x series GTK3 is really only a pre alpha state. Bug fixes for GTK3 go into trunk, for release in version 5.0. (No release date right now)
See progress here; Lazarus forum

This change proposal has now been submitted to FESCo with ticket #3627 for voting.

To find out more, please visit our Changes Policy documentation.

I would prefer we see our packaging default to Qt6 as it’s the most modern choice and supports Wayland the best.

2 Likes

GTK+2 vs. GTK3 aside - I wonder what the benefits of providing interfaces that use Qt (4?), Qt5, and Qt6? Wouldn’t one Qt-based frontend (ideally, Qt6) be enough?

Opened here: lazarus#6
Sorry for the long wait, I was away on vacation.