On Tue, Nov 11, 2014 at 12:33 PM, Daniel van Vugt <daniel.van.v...@canonical.com> wrote:
We are actually in violent agreement on "policy" and conflating two different issues. So please, let's separate them :)

It is indeed up to the server/shell to dictate policy, particularly as it can and will vary between shells/modes of a shell. Anything invalid is returned as an error to the client API, or in the form of a non-blocking API:

  1. asynchronous set feature A = B
2. optional wait and get feature A, and check it was changed to B or something else dictated by shell policy.

What we must not do is try to enforce policy via client function prototype design. Because policy changes not just between shells, but even between modes of a shell (e.g. we aim to unify Unity8 desktop with touch I think).

Equally, we must enforce policy via client function prototype. Otherwise you can't write a client and expect it to work against any sane shell.

Functionally, in the best case¹, this will end up with is an out-of-tree specification of window management semantics that clients and shells are expected to adhere to.

¹: If Mir is actually used by things other than Unity 8. If Mir remains just Unity 8's toolkit then Unity 8's behaviour is obviously the specification of Mir window management.


The confusion here is coming from some people thinking that a flexible API prevents strong enforcement of policy. It does not.

Right, but we want more than strong enforcement of policy. We want to be able to write clients that work against any sane shell. If the client API doesn't specify what behaviour a client can expect a sane shell to have in response to a given API call then that API call can't be used by sane clients.



--
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