[XSCE] 2007 -> 2017 browser experience on XO-1, XO-1.5, XO-1.75 and XO-4

Adam Holt holt at laptop.org
Wed Dec 28 11:07:32 EST 2016

On Tue, Dec 27, 2016 at 11:28 AM, Adam Holt <holt at laptop.org> wrote:

> On Tue, Dec 27, 2016 at 11:18 AM, Tony Anderson <tony_anderson at usa.net>
> wrote:
>> measure the parameters of the video stream produced by the XO-1 after
>> conversion to ogg. Any XO should be able to sustain that level.
>> One current browser practice is to stream media where the browser is
>> capable. This is not suitable for an XO. The media should be downloaded and
>> played locally. One of the customizations is to patch the Browse activity
>> to automatically download mp3 (unless a short Talk English clip), mp4, pdf,
>> epub, and txt files.
>> In the case of the book formats, a user is not going to be able to read
>> it while online. This patch is simple and effective.
> Great suggestions, thanks Tony.  I'll add these to
> http://wiki.laptop.org/go/Browser_improvements along with your general
> recommendation to avoid HD video (and broadband glitz in general...)

Many thanks to Tony Anderson for the following code that provides a way for
kids (who need to read/review materials after walking away school servers)
to store such large downloaded media & ebooks on their XO's, by default:

from: Tony Anderson <tony_anderson at usa.net>
date: Wed, Dec 28, 2016 at 10:48 AM

One of the features of the Sugar Browse activity is the use of webkit. This
provides an easy way to incorporate the browser in Sugar python activities
such as markdown.

The control of downloads in Browse is in browser.py where I modified this

 def __mime_type_policy_cb(self, webview, frame, request, mimetype,
        """Handle downloads and PDF files."""
        print 'mimetype is', mimetype
        print 'uri is', request.get_uri()

        if mimetype == 'application/pdf':
            #uri = request.get_uri()
            #print 'uri', uri
            #self.emit('open-pdf', request.get_uri())
            return True

        elif mimetype in ['audio/mpeg','video/webm','au
             print 'audio', request.get_uri()
             if 'ShortAudio' in request.get_uri():
                 #cmd = '/home/olpc/Documents/gsttest/playmp3
                 cmd = "gst-launch-0.10 playbin2 uri="+request.get_uri()
                 print 'cmd', cmd
                 return True
             return True

        elif mimetype == 'text/plain':
             if 'rachel' in request.get_uri():
                 return True

        elif mimetype == 'application/epub+zip':
             print 'download epub', request.get_uri()
             return True

        elif not self.can_show_mime_type(mimetype):
            return True

        return False

Note: the test for 'ShortAudio' refers to TalkEnglish which puts its short
mp3s in this folder. These can be streamed.

The following code in downloadmanager.py launches Jukebox for the
downloaded file with these mime_types (appears after test for Sugar

            if sniffed_mime_type in ['audio/mpeg','video/webm','au
                cmd = 'sugar-launch -o ' + str(self.dl_jobject) +
                call(cmd, shell=True)

These changes were made in Browse-147 but should be the same for the
current version (157.3).

> On 12/27/2016 03:52 PM, Adam Holt wrote:
> Thanks Terry Gillett for accentuating this central point that I'd failed
> to highlight -- now added to http://wiki.laptop.org/go/Brow
> ser_improvements :
> "*Perhaps Most Important: can we communicate concisely/explicitly best
> browser & video "what works" guidelines, so that hard-working free content
> aggregators/publishers (many of whom volunteers) understand their tight
> packaging requirements across old Androids, old XO's, etc? Hence greatly
> enhancing the XO's practical purposes during its remaining years~"*
> On Sat, Dec 24, 2016 at 10:47 AM, Adam Holt <holt at laptop.org> wrote:
>> Thanks Tony for your voluminous and very thoughtful experiences below!
>> I'm pretty swamped with holiday prep over the coming 48 hours, but is
>> there a good time I can call you in the coming 7-10 days?
>> I don't want to miss (or misrepresent) anybody's hard-fought "fieldback"
>> / usability testing lessons, recommendations & opinions @
>> http://wiki.laptop.org/go/Browser_improvements
>> On Sat, Dec 24, 2016 at 2:04 AM, Tony Anderson <tony_anderson at usa.net>
>> wrote:
>>> Hi, Adam
>>> I hope the scope of this discussion is Sugar, not just the Browse
>>> activity.
>>> First, the performance of the various models of the XO has not changed
>>> and will never change.
>>> Second, the last major change to the Browse activity was the move from
>>> Hulahop to Webkit. My guess is that the problems reported have nothing to
>>> do with Browse (or Firefox or ....). I suspect that the problems have to do
>>> with the burden on the server and the network.
>>> Three, solving performance problems depends on measurement, not
>>> speculation. Through its history, Sugar developers (XO and XS) have
>>> not measured anything in the real environment (a classroom of 40 XOs
>>> collaborating or using a server). While XSCE incorporates Munin, I have
>>> not seen any reports of the Munin measurements of an XSCE server in a
>>> classroom of XOs. At the Malaysia summit it took about 30 mins to establish
>>> by actual use that an access point was limited to 15 connections.
>>> Four, in my experience when there is a hiccup on an XO, the problem
>>> needs investigation. The Log activity is frequently a good tool. Since
>>> Sugar and its activities are written in Python and the source code is
>>> immediately available, it is possible to add print statements as needed to
>>> determine where the problem is. Python includes a simple means to measure
>>> time elapsed between two points in code to find badly written loops, etc.
>>> Over the years, I have developed a 'customize' script to add needed
>>> features to Sugar. I view this as comparable to what a person installing
>>> Fedora or Ubuntu does to configure the system for their use. While Sugar
>>> developers seem to consider such changes as blasphemy, the standard
>>> distributions encourage this.
>>> The Sugar developers have implemented the third different configuration
>>> utility: gsettings replacing GConf and the configure file Howeve, in line
>>> with their religion, the developers retain control by providing  the user
>>> with access only to selected settings made visible through 'mysettngs'.
>>> The XOs in Rwanda are locked so these changes must be made post-install,
>>> so the devlopers suggestions to make a Sugar build locally is irrelevant.
>>> The xo-custom script is executed after the XO is flashed by:
>>> cd /run/media/olpc/xo1
>>> bash xo-custom
>>> where the usb stick label identifies the target XO model, in this case
>>> the XO-1. There are five models: XO-1, XO-1.5, XO-1.75, XO-4, XO-1SD.
>>> A current project is to create a single stick that can be used with any
>>> model. This project also intends to provide a Sugar activity custom-1.xo.
>>> The goal is that the user can flash any model from the same stick and
>>> then can install the custom script by:
>>> cd /run/media/olpc/xomaster
>>> sugar-install-bundle custom-1.xo
>>> This has the advantage that the customization script can be run by
>>> launching the custom activity (and erasing it upon completion). Meanwhile
>>> the stick can be used to flash another XO. In a classroom with mixed
>>> models, the same stick can be used.
>>> The customize script currently does the following:
>>> 1. Install miscellaneous modules; zip, path.py, pexpect, ftp.  Probably
>>> only pexpect is needed since path.py can be included in the activies that
>>> use it. Sugar now inlcudes zip. For sending files to the server, scp is
>>> used instead of ftp.
>>> 2. Remove ~/.ssh/known_hosts to prevent problems in registering the
>>> server.
>>> 3. Customize Sugar
>>>     a. Change corner detection in frame to 0 (never). The goal is to
>>> require the frame to be opened by the frame key and not by cursor position.
>>>     b. Implement a default where activities launched from the Home View
>>> start new. Resuming activities can only be done from the Journal.
>>>     c. Change activity.py in /usr/lib/python2.7/site-packages/sugar/activity/
>>> and in /usr/lib/python2.7/site-packages/sugar3/activity to correct an
>>> error
>>>         in the Journal where a resumed activity can not be saved under a
>>> new name without losing the original. The modified version with 0.110 will
>>> also
>>>         provide Utkarsh Tiwari's code to provide a requirement that
>>> user's give saved files a name (comparable to changing 'untitled' in
>>> Office). This change
>>>         was not implemented in 0.110 because of quirky reasoning by the
>>> Sugar developers. It also will provide similar ability to give a screen
>>> shot a name
>>>             without having to switch to the Journal.
>>> 4. Update sugar-launch and sugar-install-bundle. These changes were
>>> needed because of problems which probably now have been fixed.
>>> 5. Update SimpleHTTPServer.py to add some needed mime_types such as mp3,
>>> mp4, and so on.
>>> 6. Provide custom index.html in /home/olpc/.library_pages. The standard
>>> screen is nearly useless for an XO not connected to the internet. The
>>>     custom screen identifies the school or institution at the top and
>>> provides direct links to the school server (This may the intent of the
>>> 'captive portal' in xsce).
>>>     I suspect many users are not aware that the opening page in browse
>>> is file:///home/olpc/library_pages/index.html).
>>> 7. Add and remove Sugar activities to achieve a standard set. It is very
>>> difficult for teachers to deal with an assignment to use a specific
>>> activity such as
>>>        Memorize only to find it is not installed on one or more XOs in
>>> the class.
>>>             Currently, the script replaces Browse (installing a version
>>> with the jsfiddle feature and causing certain mime_types to be downloaded
>>> and not displayed
>>>             online( The current fashion in browsers is for the browser
>>> to attempt to display any mime_type it knows - this is not helpful for XOs
>>> where the object
>>>             needs to be displayed away from the server. I can't imagine
>>> a school where students are given class time to read War and Peace). So,
>>> for example,
>>>             pdfs, txt, mp3 (with one exception), mp4, epub, webm files
>>> are downloaded to the Journal for offline access by Read or the Jukebox.
>>> Recent versions of
>>>             Sugar have included documents in the Home View along with
>>> Sugar activities. Another example of the quirky thinking of the developers.
>>> First, the
>>>             library_page already includes documents stored locally.
>>> However, documents in the Home View and in Browse require space on local
>>> storage even
>>>             though only a few users may ever need access to them. With a
>>> schoolserver, these documents can be located there and downloaded to the
>>> Journal as             needed. The script will be modified so that a
>>> deployment can decide which of these to keep and which to omit. The script
>>> adds the Quiz activity, and
>>>             replaces the Jukebox activity. The Jukebox activity is
>>> retro-fitted version 26, the last version that supported gstreamer 0.1. The
>>> scripts enabling playing             of mp3, mp4, etc. work only with 0.1
>>> due to undocumented changes in the design of 1.0. Supposedly deprecation
>>> means that the new version
>>>             provides all of the capabilities of the original and is
>>> better. Clearly this is in the eye of the beholder.
>>> 8. Install needed Gnome programs as Sugar activities.
>>>         Currently the script installs Gcompris which includes installing
>>> GCompris as a gnome application and then installing gcompris-7.xo. It also
>>> intstalls the Zim
>>>         Desktop Wiki. The install takes two steps, install Zim as a
>>> gnome application and then install the zim-7.xo Sugar activity.
>>> 9. Install flash support.
>>> 10. Install media support for mp3, mp4, webm, and m4a.
>>> 11. Install Libre Office as a gnome application (only on XOs with at
>>> least 4GB storage).
>>> Tony
>>> On 12/23/2016 10:19 PM, Adam Holt wrote:
>>> On Fri, Dec 23, 2016 at 3:09 PM, George Hunt <georgejhunt at gmail.com>
>>> wrote:
>>>> pursuant to our discussion this morning, chrome on older 32 bit
>>>> machines running linux will not be supported after March 2017.
>>>> http://www.pcworld.com/article/3010404/browsers/googles-kill
>>>> ing-chrome-support-for-32-bit-linux-ubuntu-1204-and-debian-7.html
>>> Fascinating if unfortunate that Google wants old hardware to just
>>> magically disappear, among the global poor.
>>> another vote for firefox
>>> Noted.
>>> I will continue to write up the best suggestions from all @
>>> http://wiki.laptop.org/go/Browser_improvements (please write your
>>> suggestions directly there as well, if you so choose!)
>>> --
>>> Unsung Heroes of OLPC, interviewed live @ http://unleashkids.org !
>>> --
>>> Unsung Heroes of OLPC, interviewed live @ http://unleashkids.org !
> --
> Unsung Heroes of OLPC, interviewed live @ http://unleashkids.org !
> --
> Unsung Heroes of OLPC, interviewed live @ http://unleashkids.org !
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.laptop.org/pipermail/devel/attachments/20161228/a4c18a09/attachment.html>

More information about the Devel mailing list