[Sugar-devel] Chromium integration inside the sugar shell (was Re: Kicking off HTML5 activities work)
William Orr
will at worrbase.com
Sat Apr 13 00:29:20 EDT 2013
I'm pretty new to the mailing list and the project, but I'm pretty sure
that starting a new Chrome instance for every launched activity is far
too taxing for the XOs.
I think that Lionel's idea of using a Python activity that uses the
WebKit WebView is a much, much better solution.
> lionel at olpc-france.org <mailto:lionel at olpc-france.org>
> April 12, 2013 4:36 PM
>
> Hi Daniel,
>
> Impressive idea with a cool architecture. BTW, to be honest I think
> it's... too complex.
>
> Why not just create a standard Python activity template that call the
> WebKit WebView? Like we do today.
>
> But maybe I miss something or maybe we don't speak of the same thing?
>
> When I wrote the GSoC proposal, I think to a two steps process.
>
> What I call the "first step" is just to create an activity template
> with a full screen WebView control and a Sugar to JavaScript.
>
> So it's like my work on Enyo today but:
>
> -With a better way than "console-message" to communicate between
> JavaScript & Sugar,
>
> -With a JavaScript/CSS framework to reproduce in HTML5 the Sugar
> Look&Feel and sugar.graphics stuff,
>
> -With a JavaScript framework that allow calling all Sugar features
> (telepathy, data store, l10n, drag&drop, ...).
>
> We could probably do all these things without lot of change on current
> Sugar implementation and current Sugar activity way of working. In my
> mind, this could work even on Sugar 0.96-0.98 without any change!
>
> Except if I'm wrong, what you're currently describe is the "second
> step": upgrading Sugar to support directly HTML5 activities.
>
> In this second step we could imagine that Sugar will be very different
> than today (may be an Android layer or a Chromium layer) and that no
> current Python activities will work on it. BTW HTML5 activities built
> with the "first step framework" should be very easy to adapt: just
> need to change the JavaScript framework implementation to use natives
> features instead of Sugar Python features (for example: call HTML5
> storage instead of Datastore storage) and remove the XO
> Manifest/Package. I do like your architecture proposal for this second
> step but it's difficult to me to think to this second step without
> we've got a more precise view of the first step.
>
> Lionel.
>
> *De :*Daniel Narvaez [mailto:dwnarvaez at gmail.com]
> *Envoyé :* jeudi 11 avril 2013 21:52
> *À :* sugar-devel at lists.sugarlabs.org
> *Cc :* Lionel Laské
> *Objet :* Chromium integration inside the sugar shell (was Re: Kicking
> off HTML5 activities work)
>
> Hello,
>
> I spent some time today thinking and experimenting with Chromium
> integration and I have a more detailed plan to propose now.
>
> There is an important premise to be made. In both Chromium and Firefox
> OS, application's installation is very much in the hands of the web
> browser. It happens as the result of a user clicking on a button,
> inside a web store. Chromium is a bit more flexible but the other
> possibilities are basically just developer tools.
> I think this limits our possibilities a lot. We need to use the
> browser applications management, rather then installing applications
> ourselves and then launching them with some command line option. Of
> course Chromium is open source and we could develop the stuff which is
> missing. But, in my opinion it's just too much work and it's going to
> be a pain to maintain in the future, core developers are not going to
> care about it, given it's not important for their products.
>
> That said, I think I mostly figured out a plan to integrate with
> Chromium web apps management, without having to write a lot of code.
>
> * Chromium is started up with the sugar session, using the
> --no-startup-window, to make it invisible. The sugar extension has a
> "background" permission, which will keep it running even with no windows.
> * The extension runs a python script, using
> chrome.runtime.connectNative. Communication uses json-rpc wrapped in
> the message protocol supported by the extension. The python script
> fetches the list of installed activities (as exposed by
> chrome.management.getAll) and listen to changes.
> * The python script exposes a dbus service, allowing the sugar shell
> to get the list of installed applications and to display icons for
> them in the home. We use GIOChannel to read stdin, so that we don't
> block and integrate with the glib mainloop.
> * When the user click on an icon, a LaunchApplication is called on the
> dbus service, which proxies it to the extension, which launches the
> application. We will probably need a trivial patch to chromium to
> start it without UI. There is already a define for chromeos, but it's
> a compile time thing (in extension_prefs.cc, GetLaunchContainer).
> * The shell notices that a new window has been opened and associates
> it with the application information. This allows to activate and close
> the activity as necessary.
> * Uninstalling an activity works in the same way as launching. Shell
> -> python script -> extension.
> * Implementation of collaboration and datastore libraries could also
> be based on the python script messaging.
>
> I implemented (badly) a good part of this and I didn't find
> fundamental problems with it. Except for one, which is not specific to
> this plan. Sugar supports multiple instances of the same activity, web
> application frameworks doesn't. How are we going to deal with that? I
> haven't thought much about it yet, but it seems something we want to
> be very clear about.
>
> _______________________________________________
> Sugar-devel mailing list
> Sugar-devel at lists.sugarlabs.org
> http://lists.sugarlabs.org/listinfo/sugar-devel
> Daniel Narvaez <mailto:dwnarvaez at gmail.com>
> April 11, 2013 3:52 PM
> Hello,
>
> I spent some time today thinking and experimenting with Chromium
> integration and I have a more detailed plan to propose now.
>
> There is an important premise to be made. In both Chromium and Firefox
> OS, application's installation is very much in the hands of the web
> browser. It happens as the result of a user clicking on a button,
> inside a web store. Chromium is a bit more flexible but the other
> possibilities are basically just developer tools.
> I think this limits our possibilities a lot. We need to use the
> browser applications management, rather then installing applications
> ourselves and then launching them with some command line option. Of
> course Chromium is open source and we could develop the stuff which is
> missing. But, in my opinion it's just too much work and it's going to
> be a pain to maintain in the future, core developers are not going to
> care about it, given it's not important for their products.
>
> That said, I think I mostly figured out a plan to integrate with
> Chromium web apps management, without having to write a lot of code.
>
> * Chromium is started up with the sugar session, using the
> --no-startup-window, to make it invisible. The sugar extension has a
> "background" permission, which will keep it running even with no windows.
> * The extension runs a python script, using
> chrome.runtime.connectNative. Communication uses json-rpc wrapped in
> the message protocol supported by the extension. The python script
> fetches the list of installed activities (as exposed by
> chrome.management.getAll) and listen to changes.
> * The python script exposes a dbus service, allowing the sugar shell
> to get the list of installed applications and to display icons for
> them in the home. We use GIOChannel to read stdin, so that we don't
> block and integrate with the glib mainloop.
> * When the user click on an icon, a LaunchApplication is called on the
> dbus service, which proxies it to the extension, which launches the
> application. We will probably need a trivial patch to chromium to
> start it without UI. There is already a define for chromeos, but it's
> a compile time thing (in extension_prefs.cc, GetLaunchContainer).
> * The shell notices that a new window has been opened and associates
> it with the application information. This allows to activate and close
> the activity as necessary.
> * Uninstalling an activity works in the same way as launching. Shell
> -> python script -> extension.
> * Implementation of collaboration and datastore libraries could also
> be based on the python script messaging.
>
> I implemented (badly) a good part of this and I didn't find
> fundamental problems with it. Except for one, which is not specific to
> this plan. Sugar supports multiple instances of the same activity, web
> application frameworks doesn't. How are we going to deal with that? I
> haven't thought much about it yet, but it seems something we want to
> be very clear about.
> _______________________________________________
> Sugar-devel mailing list
> Sugar-devel at lists.sugarlabs.org
> http://lists.sugarlabs.org/listinfo/sugar-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sugarlabs.org/archive/sugar-devel/attachments/20130413/493a5cd6/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: compose-unknown-contact.jpg
Type: image/jpeg
Size: 770 bytes
Desc: not available
URL: <http://lists.sugarlabs.org/archive/sugar-devel/attachments/20130413/493a5cd6/attachment-0001.jpg>
More information about the Sugar-devel
mailing list