Merge lp:~alan-griffiths/miral/add-introducing_the_miral_api into lp:miral

Proposed by Alan Griffiths on 2016-08-02
Status: Merged
Approved by: Gerry Boland on 2016-08-03
Approved revision: 255
Merged at revision: 253
Proposed branch: lp:~alan-griffiths/miral/add-introducing_the_miral_api
Merge into: lp:miral
Diff against target: 93 lines (+68/-6)
2 files modified
doc/introducing_the_miral_api.md (+25/-0)
doc/mainpage.md (+43/-6)
To merge this branch: bzr merge lp:~alan-griffiths/miral/add-introducing_the_miral_api
Reviewer Review Type Date Requested Status
Gerry Boland Approve on 2016-08-03
Alexandros Frantzis (community) 2016-08-02 Approve on 2016-08-03
Review via email: mp+301779@code.launchpad.net

Commit Message

A bit more high level documentation

To post a comment you must log in.
Alexandros Frantzis (afrantzis) wrote :

71 + MirAL is the answer to this it provides a stable "abstraction layer" written

Something is missing in this sentence.

Looks good otherwise.

review: Approve
254. By Alan Griffiths on 2016-08-03

Reword for clarity

255. By Alan Griffiths on 2016-08-03

merge lp:miral

review: Approve
Gerry Boland (gerboland) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file 'doc/introducing_the_miral_api.md'
2--- doc/introducing_the_miral_api.md 1970-01-01 00:00:00 +0000
3+++ doc/introducing_the_miral_api.md 2016-08-03 14:52:25 +0000
4@@ -0,0 +1,25 @@
5+Introducing the Miral API {#introducing_the_miral_api}
6+=========================
7+
8+The main() program
9+------------------
10+
11+The main() program from miral-shell looks like this:
12+
13+\include shell_main.cpp
14+
15+This shell is providing TitlebarWindowManagerPolicy, TilingWindowManagerPolicy
16+and SpinnerSplash. The rest is from MirAL.
17+
18+If you look for the corresponding code in lp:qtmir and lp:mir you’ll find it
19+less clear, more verbose and scattered over multiple files.
20+
21+A shell has to provide a window management policy (miral-shell provides two:
22+TitlebarWindowManagerPolicy and TilingWindowManagerPolicy). A window management
23+policy needs to implement the \ref miral::WindowManagementPolicy interface for
24+handling a set of window management events.
25+
26+The way these events are handled determines the behaviour of the shell.
27+
28+The \ref miral::WindowManagerTools interface provides the principle methods for
29+a window management policy to control Mir.
30
31=== modified file 'doc/mainpage.md'
32--- doc/mainpage.md 2016-08-01 15:43:39 +0000
33+++ doc/mainpage.md 2016-08-03 14:52:25 +0000
34@@ -3,15 +3,52 @@
35
36 MirAL is an ABI stable abstraction layer over Mir (and some working examples).
37
38-Mir is a next generation display server targeted as a replacement for the X
39-window server system to unlock next-generation user experiences for devices
40-ranging from Linux desktop to mobile devices powered by Ubuntu. The primary
41-purpose of Mir is to enable the development of the next generation
42-[Unity](http://unity.ubuntu.com).
43-
44+Why MirAL?
45+----------
46+
47+Mir is a library for writing Linux display servers and shells that are
48+independent of the underlying graphics stack. It fits into a similar role as an
49+X server or Weston (a Wayland server) but was initially motivated by Canonical’s
50+vision of "convergent" computing.
51+
52+The Mir project has had some success in meeting Canonical’s immediate needs –
53+it is running in the Ubuntu Touch phones and tablets, and as an experimental
54+option for running the Unity8 shell on the desktop. But because of the
55+concentration of effort on delivering the features needed for this internal use
56+it hasn’t really addressed the needs of potential users outside of Canonical.
57+
58+Mir provides two APIs for users: the "client" API is for applications that run
59+on Mir and that is largely used by toolkits. There is support for Mir in the GTK
60+and Qt toolkits, and in SDL. This works pretty well and the Mir client API has
61+remained backwards compatible for a couple of years and can do so for the
62+foreseeable future.
63+
64+The problem is that the server-side ABI compatibility is broken by almost every
65+release of Mir. This isn’t a big problem for Canonical, as the API is fairly
66+stable and both Mir and Unity8 are in rapid development: rebuilding Unity8
67+every time Mir is released is a small overhead. But for independent developers
68+the lack of a stable ABI is problematic as they cannot easily synchronize their
69+releases to updates of Mir.
70+
71+MirAL is the answer to this: It offers an "abstraction layer" written over the
72+top of the current Mir server API that will provide a stable ABI. There are a
73+number of other goals that can be addressed at the same time:
74+
75+ - The API can be considerably narrowed as a lot of things can be customized
76+ that are of no interest to shell development;
77+ - A more declarative design style can be followed than the implementation
78+ focused approach that the Mir server API follows; and,
79+ - Common facilities can be provided that don’t belong in the Mir libraries.
80+
81+Mir is supported on a range of platforms including phones, tablets and desktops.
82+There is also work to provide it as a "snap" in the "internet of things". The
83+miral-shell already works in all these environments (for a suitably forgiving
84+value of "works") and is an early opportunity to learn about this alternative
85+to X11.
86
87 Notes for Developers
88 --------------------
89
90 - \ref building_and_using_miral
91+ - \ref introducing_the_miral_api
92 - \ref tasks_for_the_interested_reader
93\ No newline at end of file

Subscribers

People subscribed via source and target branches