public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: Daniel Campbell <zlg@gentoo.org>
To: gentoo-dev@lists.gentoo.org
Subject: Re: [gentoo-dev] [RFC] gtk/gtk2/gtk3 USE flag situation
Date: Fri, 27 May 2016 11:57:21 -0700	[thread overview]
Message-ID: <f03622c7-42be-ac1c-9166-49711bb2b952@gentoo.org> (raw)
In-Reply-To: <1464358866.13834.59.camel@gentoo.org>


[-- Attachment #1.1: Type: text/plain, Size: 11060 bytes --]

On 05/27/2016 07:21 AM, Mart Raudsepp wrote:
> Hello,
> 
> Despite it being 2016 and gtk2 pretty much dead, buried and forgotten
> upstream, many applications still support only gtk2, have subtle issues
> with their gtk3 port, or support both, with some of our userbase
> clinging to gtk2 for dubious political or aesthetical reasons.
> 
> For the latter cases, despite GNOME teams policy and strong preference
> on not providing a choice and just choosing gtk2 or gtk3 (gtk3 if it's
> working as good as gtk2), some cases exist where the maintainers want
> to provide such choice. In some cases it is understandable for a short
> while during transition, e.g firefox. In other cases, it is purely for
> the sake of providing the choice of working with a deprecated toolkit,
> apparently.
> 
> My highly biased essay aside, we need to finally globally agree on what
> we do in this situation. If we allow this choice at all, only for
> special cases, or widespread. And if this choice is provided, how do we
> name the USE flag.
> 
> Historically, for very good reasons in past and present GNOME team
> members opinion, USE=gtk has always meant to mean to provide support
> for gtk in general, not any particular version. This is opposite to
> what the Qt team has been doing.
> In our opinion, in a perfect world, only USE=gtk would exist, and no
> USE=gtk2 or USE=gtk3 would be necessary. But as we don't live in a
> perfect world, we have made use of USE=gtk3 for providing gtk3 support
> from library packages to mean to build gtk3 support. Sadly that
> overloads USE=gtk in many cases to then mean to build gtk2 support.
> This would ideally not be needed, as the package would instead be
> slotted and parallel installable for gtk2 and gtk3, which should be
> theoretically possible in all cases, because gtk2 and gtk3 may not live
> in the same process, so not the same library either.
> Due to some packages needing too much manpower effort to do such a
> split, USE flags are used in such a case.
> Good examples of such slot splits existing are for example the
> libappindicator stack. This used to be the case with almost all GNOME
> libraries as well, but most of them only provide gtk3 now, as gtk2 is,
> well, dead.
> Bad examples would be e.g avahi and gtk-vnc, which deemed too hard to
> split up into separate SLOTs. In some cases it might have been meant as
> a transitional thing, until all consumers are ported to gtk3, but it
> has been lingering on due to consumer apps not being ported or we
> haven't yet noticed to remove the gtk2 support in the library package.
> 
> Now these are libraries, and despite some USE flag confusion, it's not
> a huge issue, because consumers are USE depending on what is required.
> This all is written out in
> https://wiki.gentoo.org/wiki/Project:GNOME/Gnome_Team_Ebuild_Policies#gtk3
> since the GNOME project pages moving to wiki, and also long before that
> in GuideXML era, and we've pointed people towards that.
> 
> And then we have applications that support building against either gtk2
> or gtk3.
> In most cases, any requests to provide the choice to have an
> application use gtk2 instead of gtk3 gets instantly marked as duplicate
> of https://bugs.gentoo.org/374057 but in some cases the maintainer has
> chosen to provide this choice for now, and here is the problem - we
> don't really have a good agreed on way to name such a choice in USE
> flags, if we should provide such a choice at all.
> 
> USE=gtk2 is not good, due to the confusion issues with USE=gtk3 and
> USE=gtk and it being problematic. The GNOME team shall probably veto
> such USE flag usage if we are deemed to have such an authority as gtk+
> maintainers, unless we rework it all in expectations of gtk2 corpse
> being carried around for a decade as well... I have quite a few bugs
> against packages to file already for this, afair.
> 
> I kind of like what firefox did there, going in the spirit of the
> force-openrc flag we have for avoiding systemd dependency, even if it
> currently means worse user experience. So if we provide such a choice
> for apps at all, I might agree to USE=force-gtk2 for this for apps. And
> we would like to eventually (or immediately) p.use.mask this and once
> it's 2017 and gtk2 truly dead and buried and full of known security
> holes, get rid of it again.
> But this highlighted the inconsistency we are having, ending up with QA
> initiated bug https://bugs.gentoo.org/581662
> 
> tl;dr and my proposal would be the following:
> 
> * USE=gtk means providing support for GTK+; because we don't have a
> USE=gui, this also means "provide a GUI version built on top of gtk+"
> for packages where a GUI is optional.
> 
> * USE=gtk3 may be used only for controlling extra libraries to be
> shipped for gtk3 support (the extra library file will link to gtk3),
> _in addition_ to gtk2 version. This is a temporarily measure until gtk2
> support can be dropped and it will only ship gtk3 version of the
> library. This gives a flag to be able to USE depend on by gtk3 apps.
> This leaves the question about the opposite open, however. This is why
> USE=gtk2 would be bad for apps, maybe we need to use it for this
> library case, when gtk3 version is primary and we just have 1 app
> remaining that needs the gtk2 version or something.
> The concept of library is broad here, covering also gtk theme engines
> (x11-themes/gtk-engine-*, but they shouldn't be hard to split) and
> modules (e.g caribou, libcanberra)
> 
> * Applications may only use a gtk2 based stack or gtk3 based stack in a
> given version/revision. gtk3 is strongly preferred when it is deemed to
> not have any regressions compared to gtk2 build, but the choice is
> ultimately with the maintainer. Once the application converts to using
> gtk3 in our distribution, it should try hard to stay that way in
> upcoming versions as well.
> 
> * Some exceptions to the above may exist under heavy consideration,
> especially in cases where the toolkit usage is complex and may have
> some issues for some, but in general gtk3 support is deemed good by
> upstream. Most notable here would be browsers like firefox and
> chromium, which are using gtk dependency more for emulating the theme
> it uses, rather than using it as its real toolkit. If such exceptions
> are allowed, the USE flag naming here must be consistent amongst the
> exceptions. My proposal would be USE=force-gtk2 then, as I have no
> better ideas without stomping on the USE=gtk{2,3} historical meaning.
> 
> 
> When arguing in favor of supporting gtk2 builds more for apps, please
> do keep in mind that gtk2 really is pretty much dead. And no, MATE,
> XFCE and others are NOT continuing its support; they are just slow in
> fully converting to gtk3, but they are doing so and I expect both of
> those to be fully done this year, around autumn.
> If the issue is political or just a general gnome3 or gtk3 hate, then I
> would ask you to keep your political opinions or hate outside this
> thread and go contemplate on more important life issues.
> If the issue is lack of themes, then I would like you to help package
> more gtk3 themes. gtk3.20 now has a stable CSS based theme API and
> themes shouldn't be breaking anymore beyond this point, theoretically.
> And gtk3 theme packages should pretty much just be CSS files and some
> metadata. Though we have yet to get over that bumpy thing yet (a main
> reason gtk3.20 isn't in main tree yet).
> 
> Thoughts? Agreements? Suggestions?
> I'm particularly interested in QA opinion here. I believe WilliamH
> wanted to spearhead this from their side.
> 
> 
> Regards,
> Mart Raudsepp
> Gentoo developer, GNOME team
> 
As far as I'm concerned, if any package I maintain offers both gtk2 and
gtk3 support, it would be irresponsible for me to *not* offer that
choice. Gentoo is about flexibility and giving power to the user. Choice
is a central part of that, and basically *the* reason I switched to
Gentoo or bothered to become a developer.

GTK3 might be fine for some, or in some applications. In my experience,
the theme is terrible (and a, frankly, half-assed promise from upstream
that they'll keep the API stable is not reassuring given their history
of quicksand APIs), scrollbars resize and disappear, the file choosing
dialog is worse, and some features from GTK2 were dropped altogether. If
GTK3 was largely a superset of what GTK2 offered, had better theming,
was more stable, etc, I don't think any of us would be debating much
about it. The fact of the matter is GTK3 has been handled poorly by
upstream. That's evidenced by the sheer amount of pushback they've
received from both users and developers, and the fact that yet again
we're having a discussion about dropping GTK2. Some projects that used
to use GTK are also switching to Qt due to the ever-changing APIs. The
LXDE team is one such team as they are working on LXQt.

You mentioned that there are security concerns that haven't been fixed
in GTK2. Can you link to some? If they're so bad, why haven't we seen
GLSAs about them?

You also mentioned that Mate and XFCE won't be supporting GTK2. Got any
links there?

Ultimately I don't care about the USE-flag naming problem. I'm in favor
of USE="gtk" meaning "support the latest gtk version". That's sane and
fair behavior. Using "gtk2" and "gtk3" for library support makes sense,
just like qt4 and qt5. Changing "gtk2" to "force-gtk2" in library
consumers is fine, too. As long as we don't get people telling others
that their choices, as developers or users, aren't important and
attempting to get GTK2 dropped from the tree altogether. If it compiles
and it works, there's no good reason to drop it yet.

I will maintain GTK2 compatibility in any package I maintain until GTK2
simply stops working altogether. It's what the users deserve and is most
representative of my upstreams. If you want to discuss USE flag name
changes, I'm all eyes. As long as we agree on something tree-wide.

Lastly...

> Some exceptions to the above may exist under heavy consideration,
> especially in cases where the toolkit usage is complex and may have
> some issues for some, but in general gtk3 support is deemed good by
> upstream.

Of course upstream is going to say support is good. Consider the source.
If they only write the toolkit and don't build real-world applications,
with real users, around it, how can their opinion be trusted? Also
consider said source's history. No upstream that I've spoken with has
relished working with GTK3. Maybe that will change with 3.20, if it's as
good as GNOME upstream is claiming. I'll be part of the group that sits
and waits. Results matter to me more than empty promises.

Just my two cents.

~zlg

-- 
Daniel Campbell - Gentoo Developer
OpenPGP Key: 0x1EA055D6 @ hkp://keys.gnupg.net
fpr: AE03 9064 AE00 053C 270C  1DE4 6F7A 9091 1EA0 55D6


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  parent reply	other threads:[~2016-05-27 18:57 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-27 14:21 [gentoo-dev] [RFC] gtk/gtk2/gtk3 USE flag situation Mart Raudsepp
2016-05-27 15:02 ` Brian Dolbec
2016-05-27 16:35   ` Canek Peláez Valdés
2016-05-27 17:17     ` Brian Dolbec
2016-05-27 15:34 ` Ian Stakenvicius
2016-05-27 15:40 ` William Hubbs
2016-05-27 17:28   ` rindeal
2016-05-27 18:23   ` M. J. Everitt
2016-05-27 21:22   ` NP-Hardass
2016-05-27 15:56 ` Patrick Lauer
2016-05-27 16:15 ` Austin English
2016-05-27 16:54 ` landis blackwell
2016-05-27 16:59   ` rindeal
2016-05-27 17:14     ` Anthony G. Basile
2016-05-27 17:44       ` William Hubbs
2016-05-27 17:55         ` Anthony G. Basile
2016-05-27 21:09           ` William Hubbs
2016-05-27 18:23       ` Mart Raudsepp
2016-05-27 18:28         ` Ian Stakenvicius
2016-05-27 19:06       ` Daniel Campbell
2016-05-30 15:17       ` Mart Raudsepp
2016-05-27 18:10 ` waltdnes
2016-05-27 18:26   ` Mart Raudsepp
2016-05-27 18:44     ` rindeal
2016-05-27 18:51       ` [gentoo-dev] [RFC] improper use of X Ian Stakenvicius
2016-05-27 18:57 ` Daniel Campbell [this message]
2016-05-27 21:45   ` [gentoo-dev] [RFC] gtk/gtk2/gtk3 USE flag situation NP-Hardass
2016-05-27 22:05     ` Daniel Campbell
2016-05-27 22:21       ` NP-Hardass
2016-05-30 20:46         ` Joakim Tjernlund
2016-06-06 15:37           ` NP-Hardass
2016-05-27 21:08 ` NP-Hardass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f03622c7-42be-ac1c-9166-49711bb2b952@gentoo.org \
    --to=zlg@gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox