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

7 views
Skip to first unread message

Adam Holt

unread,
Dec 23, 2016, 3:19:45 PM12/23/16
to xsce-devel, Community Support Volunteers -- who help respond to help AT laptop.org, Unleash Kids!
On Fri, Dec 23, 2016 at 3:09 PM, George Hunt <georg...@gmail.com> wrote:
pursuant to our discussion this morning, chrome on older 32 bit machines running linux will not be supported after March 2017.

 
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!)

Adam Holt

unread,
Dec 24, 2016, 10:47:29 AM12/24/16
to xsce-devel, Community Support Volunteers -- who help respond to help AT laptop.org, Unleash Kids!
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_a...@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
--
Unsung Heroes of OLPC, interviewed live @ http://unleashkids.org !

Adam Holt

unread,
Dec 27, 2016, 8:52:16 AM12/27/16
to xsce-devel, Community Support Volunteers -- who help respond to help AT laptop.org, Unleash Kids!
Thanks Terry Gillett for accentuating this central point that I'd failed to highlight -- now added to http://wiki.laptop.org/go/Browser_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~"

Adam Holt

unread,
Dec 27, 2016, 10:42:53 AM12/27/16
to xsce-devel, Community Support Volunteers -- who help respond to help AT laptop.org, Unleash Kids!, Devel's in the Details
On Tue, Dec 27, 2016 at 8:52 AM, Adam Holt <ho...@laptop.org> wrote:
Thanks Terry Gillett for accentuating this central point that I'd failed to highlight -- now added to http://wiki.laptop.org/go/Browser_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~"

James Cameron's recommendations (that I'd missed earlier, on the "discussion" page) added too:

"It may be more effective to agree on a single representative test video which is transcoded into different picture sizes, frame rates, codecs, bit rates, codecs, container formats, and delivery network protocols. A smart proxy may be imagined that will transcode on the fly."

Thanks all for keeping the browser longevity/appropriateness recommendations coming!

To help as many deployments/communities as we can~

Adam Holt

unread,
Dec 27, 2016, 11:28:03 AM12/27/16
to xsce-devel, Unleash Kids!, Devel's in the Details, Support Gangsters
On Tue, Dec 27, 2016 at 11:18 AM, Tony Anderson <tony_a...@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...)

Adam Holt

unread,
Dec 28, 2016, 11:07:35 AM12/28/16
to xsce-devel, Unleash Kids!, Devel's in the Details, Support Gangsters
On Tue, Dec 27, 2016 at 11:28 AM, Adam Holt <ho...@laptop.org> wrote:
On Tue, Dec 27, 2016 at 11:18 AM, Tony Anderson <tony_a...@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_a...@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 procedure:

 def __mime_type_policy_cb(self, webview, frame, request, mimetype,
                              policy_decision):
        """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())
            #policy_decision.ignore()
            policy_decision.download()
            return True

        elif mimetype in ['audio/mpeg','video/webm','audio/x-m4a','video/mp4','audio/mp4']:
             print 'audio', request.get_uri()
             if 'ShortAudio' in request.get_uri():
                 #cmd = '/home/olpc/Documents/gsttest/playmp3 '+request.get_uri()
                 cmd = "gst-launch-0.10 playbin2 uri="+request.get_uri()
                 print 'cmd', cmd
                 call(cmd,shell=True)
                 policy_decision.ignore()
                 return True
             policy_decision.download()
             return True
       
        elif mimetype == 'text/plain':
             if 'rachel' in request.get_uri():
                 policy_decision.download()
                 return True

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

        elif not self.can_show_mime_type(mimetype):
            policy_decision.download()
            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 activity).

            if sniffed_mime_type in ['audio/mpeg','video/webm','audio/x-m4a','video/mp4','audio/mp4']:
                cmd = 'sugar-launch -o ' + str(self.dl_jobject) + 'Jukebox.activity'
                call(cmd, shell=True)

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

Reply all
Reply to author
Forward
0 new messages