Gentoo Archives: gentoo-desktop

From: Duncan <1i5t5.duncan@×××.net>
To: gentoo-desktop@l.g.o
Subject: [gentoo-desktop] Re: Use flag changes
Date: Thu, 13 Jul 2006 15:14:06
Message-Id: e95n8s$fkn$1@sea.gmane.org
In Reply to: [gentoo-desktop] Use flag changes by "Rémi Cardona"
1 =?ISO-8859-15?Q?R=E9mi_Cardona?= <remi2402@××××.fr> posted
2 44B5ED4A.8080104@××××.fr, excerpted below, on Thu, 13 Jul 2006 08:50:50
3 +0200:
4
5 > First off I'd like to say this is a real question and not an attempt to
6 > spur endless trolls and flames.
7
8 Appreciated. =8^)
9
10 > We currently have qt, gtk and gtk2 use flags. Recently, the qt3 and qt4
11 > use flags were introduced to get rid of the original qt flag. Now reading
12 > bug 137785 (after reading Cardoe's blog) it seems the gtk and gtk2 flags
13 > are being merged.
14 >
15 > What's the rationale behind this move, instead of having gtk1 and gtk2
16 > (which makes possible room for gtk3 whenever gnome folks feel like
17 > branching)?
18 >
19 > Thanks for any additional info :)
20
21 You'll probably get a shorter explanation from someone else as I know
22 this is long. That's just the way my posts tend to be. If you prefer the
23 shorter one to this one, well, don't bother with this one. <g> Some folks
24 seem to prefer my long explanations, however, so take your pick! =8^)
25
26 The gtk decision was hashed out on the devel list (which I try to keep
27 up with to follow just this sort of thing, even if I'm only a user) some
28 time ago -- far earlier than the qt flag discussion. The deprecation of
29 the gtk2 USE flag has been ongoing since then, as new ebuilds stabilized
30 and old ones move of of the tree. You can of course check the archives for
31 the details if interested. =8^)
32
33 Part of the reason for the different treatment of the gtk/qt versions in
34 terms of USE flags is the difference in how the toolkits themselves are
35 used, in terms of where support for them is optional. (Note that USE
36 flags by definition do /not/ affect dependencies where support is not an
37 option, but mandatory. If you emerge a package with mandatory
38 dependencies, you always get them, regardless, and a USE flag wouldn't
39 make much sense. That's why xorg/gtk/qt/other are often pulled in even if
40 the USE flag is turned off.)
41
42 With certain notable exceptions (poppler), packages that have optional qt
43 support tend to support one major version at a time. They stick with qt3
44 until they decide to upgrade to qt4, then they upgrade and drop support
45 for qt3. No version of the package has support for both. As well, qt
46 upgrading tends to happen relatively faster -- it's quite unlikely there
47 will still be packages in the double-digits still requiring qt3 years
48 after the biggest project (kde) switches, as has been the case with gtk.
49 (xmms for one is basically dead upstream and will never switch to gtk2,
50 while the forks already made their switch but don't have the wide userbase
51 or plugin support.)
52
53 The story with gtk is of course quite different, in part because of the
54 differing upstream structure. While qt is supported by a single
55 for-profit company (tho it's available in GPL) which encourages keeping in
56 sync with that company to continue to get support, gtk is a much wider
57 community process, without the same forces encouraging upgrade. It's much
58 more common for packages to have multi-version gtk support, as the old
59 versions continue to be used and supported by the community itself long
60 after the upstream core has moved on. The LGPL nature of gtk also affects
61 things, as slaveryware companies using it don't have that extra push to
62 upgrade to maintain their paid support that qt does, and they may often be
63 of the attitude that you don't break what's working well for you.
64
65 Thus the dynamic is quite different. It makes less sense to have a single
66 global qt flag, because the versions are rather more independent of each
67 other, few packages support both at the same time, and the two versions
68 can therefore almost be treated as two entirely independent toolkits in
69 terms of USE flags. Practically, the difference between qt3 and qt4
70 dependiencies is almost as wide as that between qt3 and gtk, thus
71 justifying the separate USE flags.
72
73 gtk, OTOH, is much more clearly interrelated, packages that support the
74 earlier version are likely to add support for the later version before
75 dropping support for the early one. Conversely, while both are
76 often supported, there is seldom a point at which one is not definitely
77 preferable to the other. Early in the major-version cycle, gtk2 wasn't
78 considered all that stable, it didn't have a lot of adoption yet, and gtk1
79 was the obvious preferred choice in most cases. At some point however,
80 gtk2 stabilized enough and enough packages added support for it that it
81 made sense to prefer it. Thus, gtk2 is now the generally preferred
82 (and default) Gentoo choice when support for both is available, if neither
83 are merged. (Often, however, a package may choose to let gtk1 fill the
84 dependency and build against it, if it's already merged but gtk2 isn't.
85 That's up to the individual package maintainer, I believe, based on the
86 idiosyncrasies of an individual package.)
87
88 There's also a bit of Gentoo history involved. In hindsight, the
89 implementation of the gtk/gtk2 USE flags was *VERY* confusing for a *LOT*
90 of users. It simply wasn't intuitive. That gtk meant support for gtk in
91 general, while gtk2 only meant prefer gtk2 where there was a choice,
92 simply wasn't the way most people expected it to work. They expected gtk
93 to mean gtk1, gtk2 to mean gtk2, but that's not how it was implemented at
94 all, and it resulted in serious user confusion and uncounted bugs and
95 forum/list posts over the gtk2 flag active period.
96
97 The discussion on the dev list that I mentioned earlier determined that
98 now that gtk1 was finally beginning to age out, as maintainers began
99 defaulting to gtk2, it was time to grasp the opportunity and correct that
100 mistake. As the gtk2 flag already had a given meaning that had been
101 drummed into user's heads for so long, it simply wasn't practical to
102 change it to /now/ mean what users intuitively /thought/ it meant all
103 along, after they'd finally been educated out of it. Given the above
104 reasoning about how gtk works (qt hadn't yet entered into the discussion),
105 it was decided that the simplest thing to do would be to drop the gtk2 USE
106 flag and let the package maintainer decide what was best for an individual
107 package, with a policy now favoring gtk2 where there was little difference
108 in support. The decision was considered future-proof in that when gtk3
109 comes out, each individual package will still likely have a best choice,
110 and Gentoo as a whole (practically, the gtk herd maintainers will make the
111 recommendation, which would then be discussed on dev when the time came,
112 before an overall policy chance was decided) will continue to default to
113 gtk2 by policy until such time as gtk3 is considered stable and widely
114 used enough to change that default.
115
116 It was in the context of that decision, as well as the long history of the
117 mistaken earlier gtk decision, that the qt discussion took place. Given
118 that there wasn't already a global qt4 flag that meant something else,
119 when enough packages got local qt4 optional support to be worth
120 considering, someone initiated the discussion that resulted in the split
121 qt3/qt4 USE flags. The qt folks were able to take the lessons learned
122 from the gtk debacle and apply it to the discussion and ultimate decision
123 BEFORE the qt4 flag was used by enough packages to make it impractical to
124 change should the decision warrant it. Had there already been a global
125 qt4 flag, as there was a gtk2 flag, the outcome of the discussion would
126 have been quite different, as there wouldn't have been the flexibility to
127 choose what worked best, a choice having already been made by default.
128
129 As it happens, tho, due to the different usage of gtk and qt, the
130 different handling does make sense to some degree, and the gtk/gtk2
131 resolution might have ultimately been similar, even if gtk2 didn't have
132 the long history it already had by the time the latest policy was decided.
133 (BTW, I haven't mentioned when that gtk discussion was, as I don't
134 remember for sure, but it was either late last year or early this year,
135 IIRC.)
136
137
138
139 --
140 Duncan - List replies preferred. No HTML msgs.
141 "Every nonfree program has a lord, a master --
142 and if you use the program, he is your master." Richard Stallman
143
144 --
145 gentoo-desktop@g.o mailing list

Replies

Subject Author
Re: [gentoo-desktop] Re: Use flag changes Graham Murray <graham@×××××××××××.uk>