<div dir="ltr">Hi,<br><div class="gmail_extra"><br><div class="gmail_quote">On 9 October 2015 at 15:36, Jonas Ådahl <span dir="ltr"><<a href="mailto:jadahl@gmail.com" target="_blank">jadahl@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Fri, Oct 09, 2015 at 02:11:28PM +0100, Daniel Stone wrote:<br>
> Hi,<br>
><br>
> On 9 October 2015 at 11:15, Jonas Ådahl <<a href="mailto:jadahl@gmail.com">jadahl@gmail.com</a>> wrote:<br>
> > On Fri, Oct 09, 2015 at 12:36:54PM +0300, Pekka Paalanen wrote:<br>
> >> On Fri, 9 Oct 2015 14:41:31 +0800<br>
> >> Jonas Ådahl <<a href="mailto:jadahl@gmail.com">jadahl@gmail.com</a>> wrote:<br>
> >> > I implemented one of the brought up ideas to see how it'd work.<br>
> >> > More specifically, I created a repository called "wayland-protocols"[0]<br>
> >> > and adapted weston[1] to use it for the fullscreen shell. I also added<br>
> >> > pointer gestures to make it obvious that its not only protocols that are<br>
> >> > implemented in weston that are part of it.<br>
> >> ><br>
> >> > The way I imagine it would work is, for new protocols to be introduced,<br>
> >> > it'd have to be a agreed upon "correct" path (i.e. probably not<br>
> >> > wl_absolute_coordinates etc), which should simply mean that such a<br>
> >> > protocol should have been at least Acked-by one or more core developer<br>
> >> > that have acknowledged that it is a suitable thing to do in the Wayland<br>
> >> > ecosystem.<br>
> >> ><br>
> >> > Protocol changes (including introduction) would also require<br>
> >> > Reviewed-by's by someone with enough knowledge*, and if a protocol has a<br>
> >> > maintainer(s), at least Acked-by one of them.<br>
><br>
> Excellent. One really important thing I think to have would be some<br>
> documentation around the protocol: what are the known open issues /<br>
> missing pieces / pitfalls? What is the rough plan going forward - is<br>
> it expected to be marked stable imminently, or expected to be<br>
> rewritten? We should really make this a hard requirement, rather than<br>
> having to search through the list every time to remember the most<br>
> recent discussion on it.<br>
<br>
</div></div>I wonder if this could be done via directory structure. Something like:<br>
<br>
stable/ - .. well, stable<br>
unstable/ - in-progress, future goal is being declared stable<br>
deprecated/ - deprecated for some other reason, at some point removed<br>
<br>
With each protocol having a README with some kind of plan / status and<br>
a list of maintainers.<br>
<div><div class="h5"><br>
><br>
> >> > Releases of this repository would not be tied to releases of<br>
> >> > wayland/weston, and it wouldn't be a requirement to have a protocol<br>
> >> > implemented in weston to make it part of a wayland-protocols release.<br>
> >> ><br>
> >> > Fast paced protocol development would be done on topic branches, and<br>
> >> > wouldn't be part of any release until properly reviewed. External<br>
> >> > projects would be encouraged to not release software releases that<br>
> >> > exposes such intermediate versions; if expected to use a common<br>
> >> > namespace, they should use a version from a wayland-protocols release.<br>
> >> ><br>
> >> > Declaring a protocol stable could either be done by doing the renaming<br>
> >> > and moving it to wayland, or we could just move it to a stable/<br>
> >> > subdirectory in the same repository. I actually think this might be a<br>
> >> > better idea, so that we don't tie down protocol development to the<br>
> >> > reference compositor release cycle.<br>
><br>
> Yeah. Given that we've decided that new protocols shouldn't be a part<br>
> of libwayland-client, I think maintaining it externally to the core<br>
> library is pretty attractive.<br>
><br>
> >> > Patch merging could be done in the same way as with wayland/weston,<br>
> >> > assuming the patch merger makes sure the right persons have acked or<br>
> >> > reviewed.<br>
> >> ><br>
> >> > Release management could either be done by the wayland/weston release<br>
> >> > manager or someone else. I could volunteer doing this if no one else has<br>
> >> > a strong urge.<br>
> >> ><br>
> >> > For the more practical parts, the protocols in the repo now have<br>
> >> > versions in the XML file names and in the protocol element attribute, but<br>
> >> > not in the interface names. Having version numbers in the interface names<br>
> >> > would enable us to implement multiple versions in clients and servers,<br>
> >> > but it'd mean that each interface would have both a _ prefix and a<br>
> >> > version number. Maybe thats fine, and I wouldn't object if someone thought<br>
> >> > that would be better. It'd get rid of the redefinition of interface<br>
> >> > versioning for unstable protocols.<br>
> >> ><br>
> >> > I still have the '_' prefix which, mentioned by Pekka, violates some<br>
> >> > rule in C. I'm not sure we need to care (we've been doing this in weston<br>
> >> > since 2013), but if anyone has a better suggestion or objection please<br>
> >> > say so.<br>
><br>
> Unfortunately it does, and I think it makes newer g++ in particular<br>
> quite unhappy. dmabuf is currently using 'z' as an experimental<br>
> prefix, which seems reasonable enough - but again that falls into the<br>
> stable-naming problem. If zlinux_dmabuf v7 is the blessed stable<br>
> version, then it means clients written to zlinux_dmabuf v7 have to<br>
> completely unnecessarily port everything to being linux_dmabuf v1. I'd<br>
> be much more in favour of keeping a single stable name throughout its<br>
> development.<br>
<br>
</div></div>My idea of this is that, an experimental/unstable protocol is just that.<br>
When declared stable, it's more or lesst the final break. If you want to<br>
have linux_dmabuf with no special unstable naming during all of its<br>
development stages, then that means you start being stable at version 1,<br>
with the difference that it may be incomplete. The point of unstable<br>
protocols is that changes may break the protocol, and to make tha<br>
possible, we need to do a rename when declaring it stable. It's the pain<br>
that comes with being an early adopter, while still enabling the<br>
possibility to actually fix the protocol during its early stages instead<br>
of duct tape it.<br>
<br>
If you see some way to avoid renaming then please explain, because its<br>
not clear to me how (across multiple projects and code bases) it'd work.<br>
<br>
z prefix sounds reasonable to me anyhow; meannig zwl_fullscreen, etc.<br>
<div><div class="h5"><br></div></div></blockquote><div>Minor nitpick: wl_wip_ may be better than random letter as prefix - wip means that's work-in-progress, imo it's self-documenting and it shouldn't generate questions like 'why z?' (someone who used 'y' as prefix may ask that).</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">><br>
> >> > FWIW, the way things are structured in the repo now, it is possible (and<br>
> >> > enabled) to install unstable XML files. Copying would work as well. All<br>
> >> > these these minor practical details I don't have a strong opinion on,<br>
> >> > and I'd be happy change them if needed.<br>
> >> ><br>
> >> > If we want to take this path with a protocol repository, after agreeing<br>
> >> > upon the details, I'd continue with moving away the generic protocols<br>
> >> > from weston, applying some "unstable protocol" rule regarding xml,<br>
> >> > protocol and interface names, and change weston to start using files<br>
> >> > from wayland-protocol (copied or installed).<br>
> >> ><br>
> >> > Thoughts?<br>
> >><br>
> >> I have no objections. Seems like it'd work. You have a different XML<br>
> >> file name for each incompatible version, so there won't the problems in<br>
> >> projects directly depending on this repo being checked out or installed.<br>
> >><br>
> >> If this really solves some problems we have, I'm all for it.<br>
> >><br>
> >> One thing we could add is a list of protocol maintainers if assigned,<br>
> >> so it would be clear who to get an ack from. I'd take wl_scaler,<br>
> >> presentation and dmabuf for starters.<br>
> ><br>
> > True. We could maintain that in tree, similar to how chromium/Blink does<br>
> > it.<br>
><br>
> I'll happily volunteer as a backup maintainer for all three.<br>
><br>
> >> I think this would nicely separate the protocol review from<br>
> >> implementation review, in case that has been a problem: if the protocol<br>
> >> has been merged in wayland-protocols master even if unstable, the<br>
> >> implementation in, say, Weston, only needs to be technically reviewed<br>
> >> and reviewers don't have to question the quality of the protocol spec<br>
> >> at the same time.<br>
> >><br>
> >> > * How to determine this I guess is one of the things that needs to be<br>
> >> >   agreed upon, but I imagine it'd be different set of individuals<br>
> >> >   depending on the area the protocol touches.<br>
> >> ><br>
> >> > [0] <a href="https://github.com/jadahl/wayland-protocols" rel="noreferrer" target="_blank">https://github.com/jadahl/wayland-protocols</a> (only on github for<br>
> >> >     demonstration)<br>
> >> > [1] <a href="https://github.com/jadahl/weston/commit/caf37bb527740b5792260deaabc1ce33678351e5" rel="noreferrer" target="_blank">https://github.com/jadahl/weston/commit/caf37bb527740b5792260deaabc1ce33678351e5</a><br>
> >><br>
> >> The idea of the Weston patch looks good to me too.<br>
> >><br>
> >> However, could we use git submodule to automate the fetching or a<br>
> >> recent-enough revision of wayland-protocols? It might prevent some<br>
> >> weston FTBFS questions, when we depend on unreleased versions. Or was<br>
> >> the idea to release wayland-protocols often enough so we could always<br>
> >> just rely on the pkg-config version check in <a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a>? That would<br>
> >> be fine too.<br>
> ><br>
> > I don't think we should restrict ourself to using it as a git submodule.<br>
> > It would for example not be possible if you use Mercurial or some other<br>
> > version control system (SDL comes to mind as an example of that).<br>
> > Releases could be made on-demand, meaning it wouldn't be a problem for<br>
> > weston to depend on a particular version.<br>
> ><br>
> > I'd also expect weston master to depend on wayland master as well as<br>
> > wayland-protocols master, far that matter.<br>
><br>
> Agreed, but indeed that doesn't preclude Weston from using it as a git<br>
> submodule - just as long as we're considerate of other users who will<br>
> need releases.<br>
<br>
</div></div>True. Not that I see the actual point though (I only see the installing<br>
being less tested).<br>
<span class=""><br>
><br>
> Thanks a lot for doing this Jonas; it sounds good to me. How about we:<br>
>   - wait until Monday or Tuesday to see if anyone can pick concrete<br>
> holes in this proposal<br>
<br>
</span>AFAIU Wayland development is the least active on weekends so can just<br>
wait for some more days so work-days contributors have the time to<br>
react.<br></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
>   - if none, I can create the repository then, with the usual Wayland ACL<br>
>   - patch Weston master to include protocols as a submodule<br>
>   - patch Weston to move its development protocols (xdg-shell,<br>
> linux-dmabuf, presentation_timing, scaler) to protocols<br>
>   - go ahead and commit the protocols you and Carlos have been working<br>
> on (gestures, pointer-lock/rel-pointer, new DnD)<br>
>   - document all of the above<br>
<br>
</span>Sounds like a plan to me, except the DND changes poke at wayland.xml and<br>
moving wayland.xml into wayland-protocols/ is not something I've thought<br>
very much about. Should we?<br>
<span class="im HOEnZb"><br>
><br>
> I'll ack the Weston patches as long as they pass distcheck, and you<br>
> can then just commit them directly.<br>
><br>
> Cheers,<br>
> Daniel<br>
<br>
<br>
</span><span class="HOEnZb"><font color="#888888">Jonas<br>
</font></span><div class="HOEnZb"><div class="h5"></div></div></blockquote></div><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">Mariusz Ceier</div><div class="gmail_extra"><br></div></div>