<div dir="ltr"><div><div><div>Hi Manuel,<br><br></div>current lack of standardization aside, there is another pretty fundamental security related issue here, that we probably need to make a conscious decision about.<br><br>
Those kind of API are usually associated to the web browser's web application frameworks, often requiring certain permissions. Thus the application launcher (and installer) are implemented in the browser itself, not in the content. So to get a Sugar like launcher (and "window" manager) you would need to patch or customize the web browser. That makes it harder to run Sugar, you need to install an application rather just going to a website, and I'm not too convinced we have resources to develop it anyway.<br>
<br></div>Another possibility for us would be to this kind of stuff server side, at least when it's not hardware related (settings, journal etc). That doesn't make the security issue go away, but maybe there are ways we can provide that security through the normal client/server interaction.<br>
<br></div><div>The situation of the various Sugars we have been discussing is pretty different in this regard<br><br></div><div>* Sugar on Linux. We actually control the launcher there, though WebKit doesn't have a web application framework we can use. When these API will standardized I suppose we could hope generic support for one will be added. For now, one has been implemented in Chrome, so on an higher layer that we can't use.<br>
</div><div>* Sugar on Android. If we wanted I guess we could add support for these an API in the native wrapper. The implementation would be on us though.<br></div><div>* Sugar on a Web site. Well, there is no web application launcher by definition there.<br>
<br></div><div>My feeling is that the most pragmatic approach would be to implement settings, datastore and similar APIs on the server. We can either use the current websocket protocol or implement something more web friendly as it as been suggested (for example http POST to store files). On Linux we can run the server locally. Sugar on Android is just a wrapper loading Sugar on a Web site from the remote server. <br>
<br></div><div>That said I don't think there is a perfect solution given our resources and honestly I'm not really sure which of the realistic options is the best one.<br></div><div><br></div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On 14 November 2013 13:21, Manuel Quiñones <span dir="ltr"><<a href="mailto:manuq@laptop.org" target="_blank">manuq@laptop.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Daniel,<br>
<br>
2013/11/14 Daniel Narvaez <<a href="mailto:dwnarvaez@gmail.com">dwnarvaez@gmail.com</a>>:<br>
<div class="im">> I think there is a pretty fundamental issue we need to figure out, the<br>
> solution to several of the issues you pointed out depends on this.<br>
><br>
> Should activities be each a separate web application or should all the part<br>
> of the Sugar web application? Or more technically, should they have the same<br>
> origin or each a different one?<br>
><br>
> That has major consequences. For example a different origin gives each a<br>
> separate LocalStorage, which is great for security and namespacing but<br>
> makes, for example, communicating the xo color more complicated. A lot of<br>
> others standard web APIs are affected by the origin.<br>
<br>
</div>Mozilla solution for system settings:<br>
<a href="https://developer.mozilla.org/en-US/docs/WebAPI/Settings" target="_blank">https://developer.mozilla.org/en-US/docs/WebAPI/Settings</a><br>
<br>
Is not part of any web specification, but is in the roadmap of this W3C group:<br>
<a href="http://www.w3.org/2012/sysapps/" target="_blank">http://www.w3.org/2012/sysapps/</a> - System Applications Working Group<br>
<div><div class="h5"><br>
><br>
> Security aside, this also affects how activities are "deployed". Do we want<br>
> to be able to run activities from a different web server or must everything<br>
> come from the same? If we want different web servers than I guess we are<br>
> sort of forced into multiple origins (though you could still download a<br>
> bundle from a different server and install on the main one).<br>
><br>
> For what it's worth in Sugar 0.100 each web activity has a different origin.<br>
><br>
><br>
> On 14 November 2013 10:03, Lionel Laské <<a href="mailto:lionel@olpc-france.org">lionel@olpc-france.org</a>> wrote:<br>
>><br>
>><br>
>> Hi all,<br>
>><br>
>><br>
>><br>
>> Thanks a lot for your messages regarding my work. Very appreciate to see<br>
>> enthusiasm here.<br>
>><br>
>> I'm opening a different thread to talk about technical issues.<br>
>><br>
>><br>
>><br>
>> Technically speaking my prototype is three things:<br>
>><br>
>> A Sugar Web Activities that mimic the desktop. This "activity" use the<br>
>> Sugar Web Framework (toolbar, xocolor, …) and is written using Enyo<br>
>> Framework (not the better JavaScript framework but it's my favorite one :-).<br>
>> The framework is "dynamic" so adding new activities is very easy (see here<br>
>> [4]). In fact, I hope to integrate a mechanism to install new activity from<br>
>> the desktop.<br>
>> A directory name "activities" where I've unzip the content of .XO files<br>
>> for all web activities currently on Sugar App Store. The desktop activity<br>
>> just switch from an activity to another [5].<br>
>> A PhoneGap encapsulation that allow to generate the Android APK. BTW<br>
>> because I'm using PhoneGap Build [1], it will also generate other platforms<br>
>> (iOS, webOS, …).<br>
>><br>
>><br>
>><br>
>> Here are the major issues I've faced building the prototype (all source<br>
>> code is here [2]):<br>
>><br>
>><br>
>><br>
>> Multiple copy of Sugar Framework in each activity. My work was mostly a<br>
>> way to group existing Sugar Web activities. BTW I need to upgrade a part of<br>
>> the Sugar Web Framework to implement few features (Stop button, XO Colors,<br>
>> …). This upgrade concern today the bus.js file (most of the hack is here<br>
>> [3]) but this file is copied in each web activities :-( So I had to upgrade<br>
>> this file in each activity directory. I think we must find a way to allow<br>
>> the Sugar Web Framework to be deployed/referenced one time only.<br>
>> Server side stuff. Today the Sugar Web Framework use Web Sockets to<br>
>> communicate with the system layer. It's good when running on Sugar but it's<br>
>> not a good idea in a Web-Browser only world because you can't have a process<br>
>> to listen Web Sockets. I think we should imagine a way to have a Sugar Web<br>
>> Framework that could work in stand-alone mode (without any server side). For<br>
>> example by using directly LocalStorage instead of waiting for a bus call.<br>
>> It's what I've done to retrieve xocolor [6]<br>
>> HTML5 compatibility issues. Running existing Sugar Web Activities on<br>
>> tablets (XO Tablet and Samsung GalaxyTab) raise some issues regarding HTML5<br>
>> compatibility. Specifically some features (CustomEvent object, Blob object,<br>
>> window.webkitRequestAnimationFrame, …) used by the framework or by<br>
>> activities don't work everywhere due to WebKit compatibility. I think we<br>
>> should isolate these features (or avoid using it). Of course one another<br>
>> major issue is that the screen size could be very different from a device to<br>
>> another. Unfortunately activities are often linked to the XO screen size.<br>
>> Environment. The Sugar Web Framework use an environment object (env.js),<br>
>> it seems to be used to detect the current platform but that I don't<br>
>> understand exactly how it works. Any explication regarding this point will<br>
>> be appreciate.<br>
>><br>
>><br>
>><br>
>> Hope to have your proposal or feedbacks.<br>
>><br>
>> Do not hesitate to ask me for more.<br>
>><br>
>><br>
>><br>
>>         Lionel.<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> [1] <a href="https://build.phonegap.com/" target="_blank">https://build.phonegap.com/</a><br>
>><br>
>> [2] <a href="https://github.com/llaske/SugarWebUI" target="_blank">https://github.com/llaske/SugarWebUI</a><br>
>><br>
>> [3]<br>
>> <a href="https://github.com/llaske/SugarWebUI/blob/master/lib/sugar-web/bus.js#L150" target="_blank">https://github.com/llaske/SugarWebUI/blob/master/lib/sugar-web/bus.js#L150</a><br>
>><br>
>> [4] <a href="https://github.com/llaske/SugarWebUI/blob/master/js/settings.js#L5" target="_blank">https://github.com/llaske/SugarWebUI/blob/master/js/settings.js#L5</a><br>
>><br>
>> [5] <a href="https://github.com/llaske/SugarWebUI/blob/master/js/settings.js#L65" target="_blank">https://github.com/llaske/SugarWebUI/blob/master/js/settings.js#L65</a><br>
>><br>
>> [6]<br>
>> <a href="https://github.com/llaske/SugarWebUI/blob/master/lib/sugar-web/bus.js#L168" target="_blank">https://github.com/llaske/SugarWebUI/blob/master/lib/sugar-web/bus.js#L168</a><br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>> Sugar-devel mailing list<br>
>> <a href="mailto:Sugar-devel@lists.sugarlabs.org">Sugar-devel@lists.sugarlabs.org</a><br>
>> <a href="http://lists.sugarlabs.org/listinfo/sugar-devel" target="_blank">http://lists.sugarlabs.org/listinfo/sugar-devel</a><br>
>><br>
><br>
><br>
><br>
> --<br>
> Daniel Narvaez<br>
><br>
> _______________________________________________<br>
> Sugar-devel mailing list<br>
> <a href="mailto:Sugar-devel@lists.sugarlabs.org">Sugar-devel@lists.sugarlabs.org</a><br>
> <a href="http://lists.sugarlabs.org/listinfo/sugar-devel" target="_blank">http://lists.sugarlabs.org/listinfo/sugar-devel</a><br>
><br>
<br>
<br>
<br>
--<br>
</div></div>.. manuq ..<br>
</blockquote></div><br><br clear="all"><br>-- <br>Daniel Narvaez<br>
</div>