Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/docs/old/containerization
blob: 8a40637e34d19ba468ef95044886031d6e2a4675 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

== Problem: Containerization ==  #1992

  Activities need to be created inside containers.

Situation:

  "Activities" are launched as follows:

  1. Clicking on an activity launch icon in Sugar triggers the
     `sugar.shell.view.frame.ActivitiesBox._activity_clicked_cb' callback which
     in turn fires off a call to `sugar.shell.view.start_activity' with the
     corresponding service name.
  2. `sugar.shell.start_activity' calls
     `sugar.activity.activityfactory.create()' which constructs a
     `sugar.activity.activityfactory.ActivityCreationHandler', initialized with
     an `ActivityHandle' describing the activity being started.
  3. The `__init__' method of ActivityCreationHandler connects to the DBus
     session bus, uses a well-known name to locate an appropriate
     ActivityFactory _DBus object_, and calls this _DBus object's_ `create'
     method.
     (The ActivityCreationHandler also installs callbacks to log the success or
     failure of the attempt to launch the activity)
  4. The appropriate `ActivityServiceFactory' DBus service is automatically
     launched by DBus from a service file if necessary. Then it's `create' method
     is dispatched, which results in the activity itself being constructed and
     presented.

Plan:

  We will modify the ActivityCreationHandler to call over DBus to Rainbow.

  P1. Replace step (S3) with

    3b. The `__init__' method of ActivityCreationHandler connects to the DBus
    session bus, locates the `org.laptop.security.Rainbow' service, and calls
    the `create_activity' method of Rainbow's `org.laptop.security.Rainbow'
    interface.


Followup:

  F1. Design and implement the appropriate method in Rainbow.

  F2. Step (S4) is now cruft and should be cleaned.

  F3. Talk to Marco about how he thinks this really ought to be done.

  ---

  F4. Marco agrees with our proposal so it can move ahead once we're ready to
  integrate Rainbow into the builds.

  F5. Bert Freudenberg would like us to update a wiki page and rewrite
  sugar-native-factory.c for him.

  F6. However, Michael is not comfortable depending on the glib/gobject mainloop.
  How long until we can get a libevent-based mainloop? (or move away from DBus?)