The proving server definitely needs to move out of playground/, and rely on
the public API's. I would think that the public api's are more-or-less
equivalent to what the proving_server is doing privately, and where they
differ is a healthy topic to explore what we want to do about it. IMHO, We
twist the server's interfaces and object structure a bit to support the
proving server, as it has private access to the mir code, and can add
functions to core mir objects without the scrutiny that we should be giving
to public API changes.

I tried to port the proving server to use the newer window manager
infrastructure on Friday (a line of work that ended up being
~kdub/mir/public-scene-element) I think that porting is semi-possible,
although I got tangled up in me::WindowManager::handle, which would benefit
as a first step from porting to MirEvent 2.0. I also think that examining
what features from the proving server we want to port is healthy. Just
because the proving server has a certain feature doesn't seem a good reason
to invest the time in porting the feature over, especially if we can make a
reasonable argument that the feature is doable from the public API.

That leads to the topic of effort... bzr rm playground/ seems a lot easier
than porting me::WindowManager::handle function, especially if we in our
individual development routine don't tend to use the proving server often,
have gotten accustomed to the demo servers, or think the feature gap is
just a question of investment of time. For my typical tests, the proving
and demo servers have become mostly coincidental in what I want to test
with them.

Kevin


On Wed, Apr 1, 2015 at 6:02 AM, Alan Griffiths <alan.griffi...@canonical.com
> wrote:

> Despite your tone it appears that we agree that "playground" (I'm not
> belittling - that name has nothing to do with me) no longer serves its
> stated purpose: there is no "private in-flux mir functionality" there.
>
> What is there is mir_proving_server which is useful to you and "our
> colleagues testing toolkit/app ports". At the very least that suggests
> that the name and README are misleading. If mir_proving_server is an
> important deliverable it should be maintained as such - not as
> "playground" code. Maintaining as an important deliverable means using
> the recommended (public and tested) APIs and tests. (In contrast even
> our "examples" code is run in the CI environment.)
>
> The question is then whether it is simpler to fix mir_proving_server (by
> updating the implementation) or to fix mir_demo_server (by adding the
> missing functionality).
>
> On 01/04/15 02:40, Daniel van Vugt wrote:
> > Last I checked mir_proving_server was more functional and less buggy
> > than our other example servers. That and our colleagues tend to use it
> > as their primary development platform when testing toolkit/app ports.
> > So mir_proving_server is important and should be reworked to use any
> > newer APIs you would prefer it to use.
> >
> > I know it's frustrating the number of regressions we've had this past
> > week or so. But to blame the functionality that regressed more than
> > the person who regressed it I think is disproportionate.
> >
> > Yeah that "god" function is annoying. It needs to be teased apart. I
> > can help with that but it's not a major priority right now.
> >
> > Please try to avoid belittling the project by using words like
> > "playground" and "dark corner". It's important and useful example code
> > that myself and others use every day to do our jobs. So if you want it
> > modernised, let's do it.
> >
> >
> > On 31/03/15 21:12, Alan Griffiths wrote:
> >> There's a bunch of code in the mir project that isn't needed for
> >> supporting the public interfaces (neither by implementing them, testing
> >> them nor demonstrating their use). This code lies in "playground" and
> >> shares that location with the following README:
> >>
> >>     The Playground
> >>
> >>     These are mir demos that excercise private in-flux mir
> >> functionality.
> >>     As such functionality matures, related headers become public and the
> >>     playground
> >>     code may become an example of how to use such feature.
> >>
> >> It has now been some time since any functionality has "matured" from
> >> playground and become public (either as APIs or examples). I don't see
> >> any evidence that the code there is being developed toward such an event
> >> in the foreseeable future.
> >>
> >> The requirement to support this code is becoming a burden as it makes
> >> use of internal APIs in a way that limits the evolution of Mir
> >> internals. Updating the code is also costly as it has grown in an
> >> uncontrolled manner (most of the logic seems to be in one 223 line "god"
> >> function). Because it not under test to the same extent as Mir
> >> production code we've had a number of breakages to this code land on
> >> trunk recently (often to features I wasn't previously aware of).
> >>
> >> So the questions:
> >>
> >> 1. Does "playground" still provide a proving ground for new code to
> >> germinate? Or is it dark corner for legacy code to go and die?
> >> 2. Do we still need a proving ground like this? Or do our public APIs
> >> now support enough functionality to drive feature development?
> >> 3. If we still need a proving ground is it desirable to rework this code
> >> to be better aligned with the rest of the project?
> >> 4. If we don't need "playground" is there anything we need to provide
> >> before dropping it from the project.
> >>
> >>
>
>
> --
> Mir-devel mailing list
> Mir-devel@lists.ubuntu.com
> Modify settings or unsubscribe at:
> https://lists.ubuntu.com/mailman/listinfo/mir-devel
>
-- 
Mir-devel mailing list
Mir-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/mir-devel

Reply via email to