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 |