<div dir="ltr">On Tue, Dec 27, 2016 at 11:28 AM, Adam Holt <span dir="ltr"><<a href="mailto:holt@laptop.org" target="_blank">holt@laptop.org</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><span class="m_1194391544575810164gmail-m_-2027632025394350354gmail-">On Tue, Dec 27, 2016 at 11:18 AM, Tony Anderson <span dir="ltr"><<a href="mailto:tony_anderson@usa.net" target="_blank">tony_anderson@usa.net</a>></span> wrote: </span><div class="gmail_extra"><div class="gmail_quote"><span class="m_1194391544575810164gmail-m_-2027632025394350354gmail-"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div bgcolor="#FFFFFF">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. <br>
    <br>
    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. <br>
    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.<br></div></blockquote></span><div bgcolor="#FFFFFF"> <span class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-HOEnZb"></span><div><div class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-h5">Great suggestions, thanks Tony.  I'll add these to <a href="http://wiki.laptop.org/go/Browser_improvements" target="_blank">http://wiki.laptop.org/go/Brow<wbr>ser_improvements</a> along with your general recommendation to avoid HD video (and broadband glitz in general...)<br></div></div></div></div></div></div></blockquote><div><br></div><div>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:<br><br><br><span class="m_1194391544575810164gmail-gI">from: </span><span class="m_1194391544575810164gmail-gI"><span name="Tony Anderson" class="m_1194391544575810164gmail-gD">Tony Anderson</span> <span class="m_1194391544575810164gmail-go"><span><</span><a href="mailto:tony_anderson@usa.net" target="_blank">tony_anderson@usa.net</a><span>><br></span></span></span><span class="m_1194391544575810164gmail-gI"></span><span class="m_1194391544575810164gmail-gI">date:</span><span class="m_1194391544575810164gmail-gI"> Wed, Dec 28, 2016 at 10:48 AM</span><br><br>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.<br>
    <br>
    The control of downloads in Browse is in browser.py where I modified
    this procedure:<br>
    <br>
     def __mime_type_policy_cb(self, webview, frame, request, mimetype,<br>
                                  policy_decision):<br>
            """Handle downloads and PDF files."""<br>
            print 'mimetype is', mimetype<br>
            print 'uri is', request.get_uri()<br>
            <br>
            if mimetype == 'application/pdf':<br>
                #uri = request.get_uri()<br>
                #print 'uri', uri<br>
                #self.emit('open-pdf', request.get_uri())<br>
                #policy_decision.ignore()<br>
                policy_decision.download()<br>
                return True<br>
    <br>
            elif mimetype in
    ['audio/mpeg','video/webm','au<wbr>dio/x-m4a','video/mp4','audio/<wbr>mp4']:<br>
                 print 'audio', request.get_uri()<br>
                 if 'ShortAudio' in request.get_uri():<br>
                     #cmd = '/home/olpc/Documents/gsttest/<wbr>playmp3
    '+request.get_uri()<br>
                     cmd = "gst-launch-0.10 playbin2
    uri="+request.get_uri()<br>
                     print 'cmd', cmd<br>
                     call(cmd,shell=True)<br>
                     policy_decision.ignore()<br>
                     return True<br>
                 policy_decision.download()<br>
                 return True<br>
            <br>
            elif mimetype == 'text/plain':<br>
                 if 'rachel' in request.get_uri():<br>
                     policy_decision.download()<br>
                     return True<br>
    <br>
            elif mimetype == 'application/epub+zip':<br>
                 print 'download epub', request.get_uri()<br>
                 policy_decision.download()<br>
                 return True<br>
    <br>
            elif not self.can_show_mime_type(mimety<wbr>pe):<br>
                policy_decision.download()<br>
                return True<br>
    <br>
            return False<br>
    <br>
    Note: the test for 'ShortAudio' refers to TalkEnglish which puts its
    short mp3s in this folder. These can be streamed.<br>
    <br>
    The following code in downloadmanager.py launches Jukebox for the
    downloaded file with these mime_types (appears after test for Sugar
    activity). <br>
    <br>
                if sniffed_mime_type in
    ['audio/mpeg','video/webm','au<wbr>dio/x-m4a','video/mp4','audio/<wbr>mp4']:<br>
                    cmd = 'sugar-launch -o ' + str(self.dl_jobject) +
    'Jukebox.activity'<br>
                    call(cmd, shell=True)<br>
    <br>
    These changes were made in Browse-147 but should be the same for the
    current version (157.3).<br><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div bgcolor="#FFFFFF"><div><div class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-h5"></div><div><div class="m_1194391544575810164gmail-m_-2027632025394350354gmail-h5"><div class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-h5">
    On 12/27/2016 03:52 PM, Adam Holt
      wrote:<br>
    
    <blockquote type="cite">
      <div dir="ltr">Thanks Terry Gillett for accentuating this central
        point that I'd failed to highlight -- now added to <a class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588moz-txt-link-freetext" href="http://wiki.laptop.org/go/Browser_improvements" target="_blank">http://wiki.laptop.org/go/Brow<wbr>ser_improvements</a>
        :<br>
        <br>
        <div style="margin-left:40px">"<i>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~"</i></div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On Sat, Dec 24, 2016 at 10:47 AM, Adam
          Holt <span dir="ltr"><<a href="mailto:holt@laptop.org" target="_blank">holt@laptop.org</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
            <div dir="ltr">
              <div>
                <div>Thanks Tony for your voluminous and very thoughtful
                  experiences below!<br>
                  <br>
                </div>
                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?<br>
                <br>
              </div>
              I don't want to miss (or misrepresent) anybody's
              hard-fought "fieldback" / usability testing lessons,
              recommendations & opinions @ <a class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588moz-txt-link-freetext" href="http://wiki.laptop.org/go/" target="_blank">http://wiki.laptop.org/go/</a>Brow<wbr>ser_improvements<br>
              <br>
              <div>
                <div>
                  <div>
                    <div class="gmail_extra"><br>
                      <div class="gmail_quote">
                        <div>
                          <div class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588h5">On Sat, Dec 24, 2016 at 2:04
                            AM, Tony Anderson <span dir="ltr"><<a class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588moz-txt-link-abbreviated" href="mailto:tony_anderson@usa.net" target="_blank">tony_anderson@usa.net</a>></span>
                            wrote:<br>
                          </div>
                        </div>
                        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                          <div bgcolor="#FFFFFF">
                            <div>
                              <div class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588h5"> Hi, Adam<br>
                                <br>
                                I hope the scope of this discussion is
                                Sugar, not just the Browse activity.<br>
                                <br>
                                First, the performance of the various
                                models of the XO has not changed and
                                will never change.<br>
                                <br>
                                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. <br>
                                <br>
                                Three, solving performance problems
                                depends on measurement, not speculation.
                                Through its history, Sugar developers
                                (XO and XS) have <br>
                                not measured anything in the real
                                environment (a classroom of 40 XOs
                                collaborating or using a server). While
                                XSCE incorporates Munin, I have <br>
                                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.<br>
                                <br>
                                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.<br>
                                <br>
                                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.<br>
                                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'.<br>
                                <br>
                                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.<br>
                                <br>
                                The xo-custom script is executed after
                                the XO is flashed by:<br>
                                <br>
                                cd /run/media/olpc/xo1<br>
                                bash xo-custom<br>
                                <br>
                                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.<br>
                                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. <br>
                                The goal is that the user can flash any
                                model from the same stick and then can
                                install the custom script by:<br>
                                <br>
                                cd /run/media/olpc/xomaster<br>
                                sugar-install-bundle custom-1.xo<br>
                                <br>
                                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.<br>
                                <br>
                                The customize script currently does the
                                following:<br>
                                <br>
                                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. <br>
                                <br>
                                2. Remove ~/.ssh/known_hosts to prevent
                                problems in registering the server. <br>
                                <br>
                                3. Customize Sugar<br>
                                    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.<br>
                                    b. Implement a default where
                                activities launched from the Home View
                                start new. Resuming activities can only
                                be done from the Journal.<br>
                                    c. Change activity.py in
                                /usr/lib/python2.7/site-packag<wbr>es/sugar/activity/
                                and in /usr/lib/python2.7/site-packag<wbr>es/sugar3/activity
                                to correct an error <br>
                                        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 <br>
                                        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<br>
                                        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    
                                <br>
                                            without having to switch to
                                the Journal.<br>
                                <br>
                                4. Update sugar-launch and
                                sugar-install-bundle. These changes were
                                needed because of problems which
                                probably now have been fixed. <br>
                                <br>
                                5. Update SimpleHTTPServer.py to add
                                some needed mime_types such as mp3, mp4,
                                and so on.<br>
                                <br>
                                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 <br>
                                    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).<br>
                                    I suspect many users are not aware
                                that the opening page in browse is <a class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588moz-txt-link-freetext">file:///home/olpc/library_page</a><wbr>s/index.html).<br>
                                <br>
                                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  <br>
                                       Memorize only to find it is not
                                installed on one or more XOs in the
                                class.<br>
                                            Currently, the script
                                replaces Browse (installing a version
                                with the jsfiddle feature and causing
                                certain mime_types to be downloaded and
                                not displayed<br>
                                            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 <br>
                                            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,  <br>
                                            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<br>
                                            Sugar have included
                                documents in the Home View along with
                                Sugar activities. Another example of the
                                quirky thinking of the developers.
                                First, the<br>
                                            library_page already
                                includes documents stored locally.
                                However, documents in the Home View and
                                in Browse require space on local storage
                                even<br>
                                            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 <br>
                                            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<br>
                                            provides all of the
                                capabilities of the original and is
                                better. Clearly this is in the eye of
                                the beholder.<br>
                                <br>
                                8. Install needed Gnome programs as
                                Sugar activities.<br>
                                        Currently the script installs
                                Gcompris which includes installing
                                GCompris as a gnome application and then
                                installing gcompris-7.xo. It also
                                intstalls the Zim<br>
                                        Desktop Wiki. The install takes
                                two steps, install Zim as a gnome
                                application and then install the
                                zim-7.xo Sugar activity.<br>
                                <br>
                                9. Install flash support.<br>
                                <br>
                                10. Install media support for mp3, mp4,
                                webm, and m4a. <br>
                                <br>
                                11. Install Libre Office as a gnome
                                application (only on XOs with at least
                                4GB storage). <br>
                                <span class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588m_1122877469897946759gmail-HOEnZb"><font color="#888888"> <br>
                                    Tony</font></span></div>
                            </div>
                            <div>
                              <div class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588m_1122877469897946759gmail-h5">
                                <div>
                                  <div class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588h5"><br>
                                    <br>
                                    <br>
                                    <br>
                                    <br>
                                    <div class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588m_1122877469897946759gmail-m_7477070779228519786moz-cite-prefix">On
                                      12/23/2016 10:19 PM, Adam Holt
                                      wrote:<br>
                                    </div>
                                  </div>
                                </div>
                                <blockquote type="cite">
                                  <div dir="ltr">
                                    <div>
                                      <div class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588h5">On Fri, Dec 23,
                                        2016 at 3:09 PM, George Hunt <span dir="ltr"><<a class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588moz-txt-link-abbreviated" href="mailto:georgejhunt@gmail.com" target="_blank">georgejhunt@gmail.com</a>></span>
                                        wrote:<br>
                                      </div>
                                    </div>
                                    <div class="gmail_extra">
                                      <div class="gmail_quote">
                                        <div>
                                          <div class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588h5">
                                            <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                                              <div dir="ltr">pursuant to
                                                our discussion this
                                                morning, chrome on older
                                                32 bit machines running
                                                linux will not be
                                                supported after March
                                                2017.
                                                <div><br>
                                                </div>
                                                <div><a class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588moz-txt-link-freetext" href="http://www.pcworld.com/article" target="_blank">http://www.pcworld.com/article</a><wbr>/3010404/browsers/googles-kill<wbr>ing-chrome-support-for-32-bit-<wbr>linux-ubuntu-1204-and-debian-7<wbr>.html<br>
                                                </div>
                                              </div>
                                            </blockquote>
                                            <div> <br>
                                            </div>
                                            <div>Fascinating if
                                              unfortunate that Google
                                              wants old hardware to just
                                              magically disappear, among
                                              the global poor.<br>
                                            </div>
                                            <div><br>
                                            </div>
                                            <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                                              <div dir="ltr">
                                                <div>another vote for
                                                  firefox</div>
                                              </div>
                                            </blockquote>
                                            <div> <br>
                                            </div>
                                            <div>Noted.<br>
                                              <br>
                                            </div>
                                          </div>
                                        </div>
                                        <div>
                                          <div>
                                            <div class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588h5">I will
                                              continue to write up the
                                              best suggestions from all
                                              @ <a class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588moz-txt-link-freetext" href="http://wiki.laptop.org/go/Brow" target="_blank">http://wiki.laptop.org/go/Brow</a><wbr>ser_improvements
                                              (please write your
                                              suggestions directly there
                                              as well, if you so
                                              choose!)<br clear="all">
                                              <br>
                                            </div>
                                          </div>
                                          <span class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588HOEnZb"><font color="#888888">-- <br>
                                              <div class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588m_1122877469897946759gmail_signature">
                                                <div dir="ltr">Unsung
                                                  Heroes of OLPC,
                                                  interviewed live @ <a class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588moz-txt-link-freetext" href="http://unleashkids.org" target="_blank">http://unleashkids.org</a>
                                                  !<br clear="all">
                                                  <br>
                                                  -- <br>
                                                  <div class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588gmail_signature">
                                                    <div dir="ltr">Unsung
                                                      Heroes of OLPC,
                                                      interviewed live @
                                                      <a class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail-m_-785160960928477588moz-txt-link-freetext" href="http://unleashkids.org" target="_blank">http://unleashkids.org</a>
                                                      !</div>
                                                  </div>
                                                </div>
                                              </div>
                                            </font></span></div>
                                      </div>
                                    </div>
                                  </div>
                                </blockquote>
                              </div>
                            </div>
                          </div>
                        </blockquote>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </blockquote>
        </div>
      </div>
    </blockquote>
    <br>
  </div></div></div></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

</blockquote></div><div><div class="m_1194391544575810164gmail-m_-2027632025394350354gmail-h5"><br><br clear="all"><br>-- <br><div class="m_1194391544575810164gmail-m_-2027632025394350354gmail-m_-1119634598807023968gmail_signature"><div dir="ltr">Unsung Heroes of OLPC, interviewed live @ <a href="http://unleashkids.org" target="_blank">http://unleashkids.org</a> !<br clear="all"><br>-- <br><div class="m_1194391544575810164gmail-m_-2027632025394350354gmail_signature"><div dir="ltr">Unsung Heroes of OLPC, interviewed live @ <a href="http://unleashkids.org" target="_blank">http://unleashkids.org</a> !</div></div>
</div></div>
</div></div></div></div></blockquote></div></div></div>