<p dir="ltr"><br>
On Aug 26, 2014 4:32 AM, "Pekka Paalanen" <<a href="mailto:ppaalanen@gmail.com">ppaalanen@gmail.com</a>> wrote:<br>
><br>
> On Tue, 26 Aug 2014 10:36:58 +0100<br>
> Daniel Stone <<a href="mailto:daniel@fooishbar.org">daniel@fooishbar.org</a>> wrote:<br>
><br>
> > Hi,<br>
> ><br>
> > On 23 August 2014 15:38, Pekka Paalanen <<a href="mailto:ppaalanen@gmail.com">ppaalanen@gmail.com</a>> wrote:<br>
> ><br>
> > > On Fri, 22 Aug 2014 10:51:19 -0700<br>
> > > Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br>
> > > > On Fri, Aug 22, 2014 at 9:08 AM, Pekka Paalanen <<a href="mailto:ppaalanen@gmail.com">ppaalanen@gmail.com</a>><br>
> > > wrote:<br>
> > > > > Just before this alpha release, we bumped the xdg-shell experimental<br>
> > > > > version[1]. This means that the world breaks, as the experimental<br>
> > > > > version must be matched exactly. Jasper will be bumping Mutter and Gtk<br>
> > > > > to match. We expect to have another bump before 1.6.0 is out, but after<br>
> > > > > that I think it will be solid.<br>
> > > > ><br>
> > > > > Then, in 1.7.0 we plan to move the xdg-shell.xml file into Wayland, to<br>
> > > > > be installed as a stable protocol for everyone to use, and projects can<br>
> > > > > throw away their private copies of xdg-shell.xml. That would be the<br>
> > > > > point where xdg-shell starts to guarantee backwards compatibility. The<br>
> > > > > 1.7.0 release should be the last flag day for xdg-shell.<br>
> > > ><br>
> > > > One small note here.  Even if we don't make any changes to xdg_shell<br>
> > > > between 1.6 and 1.7, the universe will break again at 1.7.  This is<br>
> > > because<br>
> > > > we'll pull the experimental_version request which changes the order of<br>
> > > > things.  Do we have a plan for how to keep this from going too badly?<br>
> > ><br>
> > > Well, yeah, that is what I meant by a flag day, the world breaks,<br>
> > > but that should be the final one.<br>
> > ><br>
> > > Or do you think we should leave the experimental_version request<br>
> > > in, and just document it is no longer used, and make all code work<br>
> > > with it but ignore it? That would seem a bit strange to me.<br>
> > ><br>
> ><br>
> > How about the following as a happy compromise:<br>
> >   - bump the extension version from 1 to 2<br>
> >   - require set_experimental_version for clients binding v1<br>
> >   - assume an implicit experimental_version of 4 for clients binding v2,<br>
> > accepting but not requiring set_experimental_version == 4<br>
> ><br>
> > That avoids breaking existing clients regardless of which version they<br>
> > bind, but also means people hitting the new stable API don't have to bother<br>
> > with it. It would be nice if v1 was the stable API, and v0 was<br>
> > unstable/development, but alas the scanner won't let us do that ...<br>
><br>
> That still means leaving the use_unstable_version request in the<br>
> protocol. This is the only time we could ever remove it.<br>
><br>
> I think I would like more of the following, because for the 1.6 alpha,<br>
> we already broke the world:<br>
><br>
> - During the 1.6 alpha phase, as changes land to xdg-shell, we bump the<br>
>   unstable version, breaking the world each time. This is a 2 week<br>
>   period already running.<br>
> - Just before 1.6-RC1 is about to be released, we remove the<br>
>   set_unstable_version request. This acts as the final break-the-world.<br>
> - 1.6.0 will be released with a stable xdg-shell protocol, but still in<br>
>   Weston repository.<br>
> - During the 1.7 development cycle, maybe towards the end, we move<br>
>   xdg-shell.xml from Weston to Wayland, unchanged.<br>
> - 1.7.0 will release with stable xdg-shell in Wayland.<br>
><br>
> The good thing about this is that we do not leave the<br>
> set_unstable_version haunting us, everything that worked against 1.6.0<br>
> will continue to work against 1.7.0 and later, unless we find a serious<br>
> flaw in xdg-shell that warrants a final break-the-world before 1.7.0 is<br>
> out.</p>
<p dir="ltr">The problem is that we can't really break the world once we remove set_unstable_version, or can we...?  In theory, if we really needed to, we could make break-the-world changes and bump the interface version and then kill any client that attaches to anything other than the "stable" version.  It'd be ugly, but it would work.</p>

<p dir="ltr">> It also means, that during the 1.7 development cycle, we must do our<br>
> best to keep xdg-shell stable. New features may land, but they need to<br>
> bump the interface versions properly, and be completely backwards<br>
> compatible.</p>
<p dir="ltr">I'm not sure how confident I am in our ability to keep xdg_shell stable in 1.7.  Not that Jasper's doing a bad job or anything and xdg_shell has been pretty stable for a while.  I'm just not sure if my confidence level is quite high enough for that.  I'll give the xdg_shell spec another read with Jasper's changes and think about it.</p>

<p dir="ltr">--Jason</p>