[Sugar-devel] Activity Central's Sugar related priorities.
NoiseEHC
noiseehc at gmail.com
Wed Oct 9 16:51:51 EDT 2013
On 07/10/2013 18:41, David Farning wrote:
> Activity Central supports the recent HTML5 + JS work that is going
> into sugar .100. It has the potential to take the OLPC vision to any
> device which runs a browser while simultaneously *increasing* the
> potential activity *developer* *pool* by several orders of magnitude. This
> is an excellent area for community lead research. Activity Central
> will be doing activity side work to test the viability of the
> framework for client deployments.
>
No, it won't... It already happened when Bryan Berry moved OLPC Nepal's
lessons from EToys to Flash, then to HTML5 and there were not any more
contributors. I mean, there are much more JS developers, so if you pay
them you can get cheaper talent, but there will be not too much more
contributors IMHO. The problem is that the current HTML5 work goes into
a direction which I am not sure that needed by anyone other than
existing Sugar developers.
It all boils down to this simple question:
If you are a potential contributor wanting to develop some educational
activity (not a framework but some concrete lesson or stuff usable in a
lesson!!!) then which one would you use?
1. A HTML5 + JavaScript activity model called Sugar Web Activity, which
reaches 2-3 million children? (lets call it SWA)
2. A HTML5 + JavaScript activity model called HTML5 + JavaScript, which
reaches 1 billion children? (lets call it WEB)
I have not seen any compelling reason why would a potential contributor
(software developer from a developed country who has/likes children)
choose option 1 instead of 2...
Now I will not give you constructive criticism as that would allow
answering that "I should not tell others what to do" and it would be
getting old... Instead here is some nonconstructive criticism:
Some months ago I wanted to create a sample activity to present my point
but I have run out of time so unfortunately I cannot show it to you. It
would have been a Google Drive backed game with shared state (so the
same as a typical shared activity in Sugar) called Scrabble what I try
to port to SWA. It uses the following things which are trivial to use on
the WEB but cannot be found in SWA:
1. Sign in. There is no authorization API in SWA so using anything than
the local journal is problematic. Using Google's OAuth authentication
from a file:// protocol is impossible so if you want to support existing
code then you have to serve the activity from http://localhost...
https://developers.google.com/drive/about-auth
2. Datastore. There is no way to access the Google Drive if you cannot
authenticate. I do not see why would anyone use a new JavaScript lib
which accesses only the journal when they are already familiar with some
WEB technology. Like WEBDAV or the OpenStack's SWIFT API.
http://docs.openstack.org/api/openstack-object-storage/1.0/content/storage-object-services.html
Or simply using POST for uploading:
https://developers.google.com/drive/manage-uploads
3. Collaboration. Using the Google Drive Realtime API is dead simple. It
is the most missing feature from SWA BTW.
https://developers.google.com/drive/realtime/
I have looked at several open source Operational Transformations
libraries but did not have time to test their performance on an XO...
4. Using WebSockets for simple tasks. The autosaving can be implemented
by the almost standard "webkitvisibilitychange" event (but you have to
compile webkit with the appropriate parameters) and standard timers.
Activity startup is simplified with per activity data store (POST-ing to
the same server is the default on the WEB). I think it eliminates the
communication with Sugar so no need for WebSockets...
5. Android port. There already exists a multi-platform technology called
PhoneGap. It can target 100-200 million children so it can be called
option 3 if you want... It can become obsolete as HTML5 provides more
and more of its features though.
http://phonegap.com/
So as I see you either create a framework which mimics Sugar and no web
developer will use it or create a framework which implements what a web
developer is already using or at least tries to somehow emulate it. So
the web developer does not have to modify his/her code and will consider
porting his/her application for a smaller platform. Of course that would
require OLPC/Sugarlabs to run free OpenStack/OAuth/OT servers for
contributors otherwise everybody will go with Google APIs which cannot
easily be emulated on an XO machine...
But as this discussion already happened and I have already written
enough now, I just finish here. (In the following link you can replace
the phrase "Per Activity Data Store" with "Standard WEB Storage" to be
relevant...)
http://lists.sugarlabs.org/archive/sugar-devel/2010-June/024589.html
Thank you for your attention!
Andrew
ps:
Now to say something constructive as well, some more words about the
Journal. Recently I was watching one of Walter Bender's talks where he
was talking about that how sad that the Journal changed from something
the child writes into to a simple list (it was exemplified by showing a
Journal icon with and without the pen) because everybody hated that they
got the save prompt at activity exit. (The prompt is the lamest thing
according to usability 101 by the way...) The really sad thing is that
until that talk I did not really understand the importance of the
Journal, at least why was it so important to others like Walter... Using
my enlightenment I have tried to implement a new Journal in WEB with
Walter's vision in mind but of course time has run out...
So the UI design, which meshes perfectly with a "Per Activity Data Store":
1. The Journal is a list of links, activity links for starting the
activity and document links for opening/creating documents (which are
managed by the activity, which is a web page or a special local HTML5
activity). The launcher records activity starts and full text indexing
records activity document changes.
2. The Journal allows full text search to find documents. (It has to
store credentials to access Google Drive for example...)
3. The Journal allows to group entries under projects and project
stages, where the stages correspond to entries which are close to each
other in time. For example "Checking Plant Growth 15" project stage can
be using Camera, then using Photo Edit, then using Write (or Excel) to
record results.
4. Grouping entries is the only way to get rid of (collapse) all the
automatically created links, but also the time to write a description of
what did he/she do and why. This point was my plan to create an
usability masterpiece...
5. Allow exporting projects (like "Growing a plant") automatically to
share with others in WEB format.
Hmmm, good luck with this plan.
ps2:
I can share the C webkit activity code if anybody is interested
finishing it...
More information about the Sugar-devel
mailing list