<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hi, Walter<br>
<br>
I have some concerns about the proposed GSOC tasks as well as some
ideas for new tasks.<br>
<br>
I agree that the Journal needs rethinking. Below are my thoughts
(re-thoughts?).<br>
<br>
Specifically,<br>
<br>
The Journal is the file system for Sugar. It does not use
directories but instead was intended to collect objects by tag (a la
Picasa). Currently, the user sees <br>
a scrolled list of objects in chronological order. However,
selection is by activity or media type, not by a user defined
criteria (as represented in other systems by the directory). <br>
<br>
The Journal acts as an activity with awkward consequences for the
user. On the keyboard, the icon for the Journal (a magnifying glass
or search icon - not the icon shown in the frame) is to the left of
the zoom group on the keyboard and to the right on the frame. If the
Journal is selected, it replaces the current activity when the
activity key is pressed. It also appears as an activity when using
alt-tab. The first makes using screenshots awkward. Screenshots are
given a title by the system of 'Screenshot of ....'. The user needs
to switch to the Journal to provide a meaningful name. However, the
user must open the frame and click on the activity icon to return to
it. If the Journal were viewed as a Sugar service, the activity key
would return the user to make another screen shot or continue
whatever the task is. Similarly, it is convenient to present the
user with instructions to perform a task using a Sugar activity
(e.g. Write). The instructions can be given by a web page or by a
document in a different activity. For example, a user could show a
flag as an image in Image Viewer and try to duplicate the flag with
TurtleBlocks. However, using alt-tab to switch between the
activities requires cycling through the irrelevant Journal activity
or open the frame to click on the activity icon.<br>
<br>
More importantly, when a Journal object is launched from the Journal
activity, it is immediately loaded into activity.py. Therefore, any
subsequent action by the user will be saved and the previous object
will be overwritten. Suppose I resume the Paint Activity to continue
making a picture. However, I decide that after some strokes, the
original picture was better. There is nothing as a user I can do to
revert to the original. I suspect the reference to git may be
intended to address this problem. When an object is launched,
activity.py should make a clone. The user should then have the
option to revert to the original or to overwrite it or to change
it's name so that a new object is created alongside the original. I
believe an implementation of the 'save/save as' logic of virtually
all other systems should be provided.<br>
<br>
Probably, in the interests of 'reflection' or possibly statistical
data, the Journal saves every activity instance - by default with
the name of the activity. Further, <br>
most activities now implement write_file to create a data file
associated with the object. This creates clutter in the Journal and
takes storage for meaningless data files. For example, the Browse
activity saves a data file containing URLs of open tabs. Aside from
the fact that this creates spurious error messages if Browse is
opened in a different network environment, it creates the
unnecessary need to save a data file. I believe that activities
should only save a data file if the user supplies a name for it and
that activities should save state in the metadata, not in a data
file. Naturally, it may be desirable for Memorize to save its state
so the user can resume the game - this can be done by a field in the
metadata. However, when the Paint Activity saves a file, it is
reasonable to assume it contains an image (usable, for example, by
the Image Viewer).<br>
<br>
The XO has limited storage capacity. A freshly installed XO-1 image
leaves about 300MB free space. A freshly installed image on other
models with 4GB capacity leaves 1.9GB free space. Today, it is
almost impossible to buy a USB stick with 2GB storage or less. When
the available storage is less than 50MB, the user sees a modal
dialog saying the Journal is full with the only option to look at
the Journal. The Journal activity shows the amount of available
storage which could help a user avoid going below the 50MB limit but
is no help to correct the problem. Currently Sugar provides no help
to the user in dealing with this problem. Most deployments I am
familiar with reflash the laptop when this happens. So much for
reflection. Essentially this step erases the user's prior work.<br>
<br>
Journal backup, according to James Cameron, is beyond the scope of
Sugar. The present Sugar-independent (?!?) scheme was developed by
Martin Langhoff using rsync to create snapshots on the school
server. This was a bad decision. If a user deletes an object from
the Joural on the XO to create space, that object is deleted from
the backup. The backup should be considered the actual repository of
Journal entries with effectively unlimited space and the backup on
the XO should upload new and modified objects to that repository.
Further the user should have a way to recall data files from the
repository as needed. In general, the limited storage on the XO
should be viewed as a cache of the users' data kept on the school
server. Consider that OLPC recommends a minimum of 2GB storage on
the school server (/library/users) per registered laptop. However,
at most, the user has 1.9GB on the XO (which includes optional Sugar
activities and optional media and e-book downloads).<br>
<br>
The proposed GSOC tasks include statements such as: "This idea needs
more thought and coding." I believe SugarLabs is responsible for
doing the thought and proposing the guidelines for implementation.
This is not an appropriate task for a GSOC participant. One of the
obvious problems as a Mentor in last years GSOC is that the
participants had no experience with or understanding of Sugar or how
it works on an XO. The development environment gives the developer
many capabilities not available on an XO (fast gpu, large memory,
effectively unlimited storage, 24/7 high speed (> 1MB/s) access
to the internet, 1080p screen resolution and aspect ratio). Further,
Sugar on the development environment is not available on the XO (and
vice versa). Asking participants from this environment to design ui
for users on the other side of the digital divide requires an
unreasonable expectation of their ability to empathize.<br>
<br>
I would propose these tasks more as follows:<br>
<br>
<dl>
<dt>1. Brief explanation</dt>
</dl>
<dd> The Sugar Journal should provide a 'save/save as' interface
which should enable a user to choose whether to save the current
document when an activity is closed. The interface should require
a name change from 'current.activity' to a user supplied name. If
the document is derived from one currently saved in the Journal,
the user should be allowed to save (overwrite) or save as (create
new document) by giving a new name to the document. This could be
accomplished by showing a modal dialog at close time requesting
the user to supply a name or not save the document. If the
document has a user supplied name, the dialog could request the
user to save or to provide a new name to create a new document. <br>
</dd>
<dd>Note: this approach satisfies the needs referenced in the git
task. Git is a little like a hammer looking for a nail. Using git
for this function will likely double the size of the data stored
in the Journal (based on normal experience using git).
Unfortunately, we don't have this space on the XOs. The standard <br>
</dd>
<dt>save/save as gives the user the ability to manage versions by
using unique names.<br>
</dt>
<p>2. Brief explanation<br>
The Journal activity is currently implemented as an
activity. It should be changed to a 'service'. This means the
Journal icon on the frame should be to the left of the zoom group
icons to match the sequence on the keyboard. The Journal is always
running as a service when the Sugar is running. It is accessible
by the Journal key on the keyboard and also by the Journal button
in the frame. When the view is switched to the Journal, clicking
on the activity view (right most key of the zoom group) should
switch the screen back to the current activity.<br>
</p>
<p>3. Brief explanation<br>
Sugar provides a method to backup and restore the Journal
(one method to a USB key and one method to the school server). The
Journal also provides a select box to enable an action to be taken
for all selected objects. This mechanism should be sufficient for
the USB key case. However, the school server backup currently is
based on taking a snapshot of the current Journal state. This
means the size of the objects in a user's Journal cannot exceed
the available local store on an XO (300MB for an XO-1, 1.9GB for
other models). A mechanism is needed to save on the school server
all documents created by the user and to restore a selected object
to the Journal from the school server. Since many documents may
represent library objects (e-books, audio, image or video media),
the mechanism should recognize these and not save them as user
documents. However, the metadata saved should enable the system to
download the library items again as needed (and, as available). <br>
For example, the mechanism may be to upload Journal documents
to an OwnCloud repository. The user could then select an item in
the OwnCloud repository to be downloaded to the Journal. The user
could also share any item in OwnCloud with other user groups or
individuals. <br>
</p>
<p>Note: This would essentially accomplish the intent of the
group/buddy task. Further, OwnCloud could be provided on a school
server or on the internet. as appropriate.<br>
</p>
<p>4. Brief explanation<br>
One goal of Sugar is to record information about user
sessions. This is currently accomplished by creating statistics
from the metadata stored in the Journal.<br>
Unfortunately, a consequence is that the Journal view fills with
essentially meaningless links to this metadata (mine fills with
Terminal Activity and Log entries).<br>
This makes it much harder for the user to identify meaningful
Journal objects (documents, images, items from the library, ...).
A mechanism is needed to that session data can be logged
independently of the Journal view (i.e not shown on the screen).
This logged information should be transferred to a backup
repository (e.g. school server or usb drive) as soon as possible
and deleted from the local store to free up space. The available
reporting activities should be modified to use this new mechanism.</p>
<p>5. Brief explanation<br>
The Journal icon provides information the amount of free space
in the user's store. if this amount is less than 50MB, a dialog is
shown requiring the user to switch to the Journal view and
claiming that the 'Journal is Full'. This message is, at best,
misleading. The available storage can arise from several causes -
the fact that an activities 'instance' store was not deleted, the
space required by installed activities, or space required by data
files in /home/olpc/Library, or data stored by activities in
'data', 'instance' or 'temp'. Currently, Sugar provides no
guidance or help to enable a user to deal with this problem short
of reflashing the image. The goal of this task is to provide a
quota management system on storage with a way for the user (e.g.
by a special Sugar activity) to analyze the usage of storage and
to save by usb key or school server or cloud storage large or
currently unneeded items and then delete them. The system should
show the user the size of items and provide updates on how much
storage has been made free by his/her actions.<br>
</p>
<p>6. Brief explanation<br>
In Sugar's Home View, a click on an activity icon by default
resumes the most recent instance of the activity. This capability
is designed into the Journal and is redundant in the Home View. A
Sugar activity is a tool to enable the user to accomplish some
task. If that task is not completed, the user can resume it via
the Journal. If the tool is to be used on a new task, the user can
launch it from the Home View. The current Home View assumes that
the intent of the user is to continue the most recent task with
that tool. </p>
<p>This task should set the Home View default to launch a new
instance of the activity. The Alt key should be set to enable
resuming a selected instance of the activity. By serendipity,
this also shows the Home View with black and white icons. Icons
with color signifying a resumable instance use the colors
associated with the laptop. Unfortunately many of these color
combinations make the icon much more difficult to distinguish than
the black and white version. <br>
</p>
<p>7. Brief explanation.<br>
Sugar provides a 'web services' capability. However, these
services are only available to an XO which has connection to the
internet. This is not useful to a large number of users who do not
have internet access. The school server (e.g. XSCE) provides an
alternative to the internet for many deployments. This task is to
provide a capability on the school server to support some or all
of the Sugar web services (e.g. by OwnCloud or ELGG). <br>
</p>
<p>8. Brief explanation<br>
There are a number of Sugar activities which currently require
access to the internet (InfoSlicer, GetBooks). These activities
should have an option to function with the school server. For
example, GetBooks could access books on the school server and
InfoSlicer could create slices from Wikipedia on the school server
as Journal objects.<br>
</p>
<p>9. Brief explanation<br>
Sugar users are often new to computers and not familiar with
other operating systems. We need a mechanism to allow users to
more quickly develop skills in using the capabilities of the XO
('onboarding'). One proposal is to develop scripts which lead the
user through a series of interactive steps illustrating common
usage of the XO with Sugar (<a class="moz-txt-link-freetext"
href="https://www.sam.today/blog/sugar-onboard-design.html">https://www.sam.today/blog/sugar-onboard-design.html</a>).
This task is to implement an interpretive system that allows <br>
deployments or experienced users to create an 'onboard' script
that guides the user to carry out a task. The referenced proposal
suggests some user tasks where this mechanism could be employed.
Since there is no finite list of these tasks, an interpretive
approach enables the scripts to be created as necessary. <br>
For example, how does a user switch to the Gnome desktop? A script
could be created guiding the user through the necessary steps. How
does the user make a screen shot, use Gimp in the gnome desktop to
crop and resize, and then insert it as an image in a Write
document? How does the user initiate or join a chat?<br>
</p>
<p>10. Brief explanation<br>
Sugar is available on the XO and some other platforms. In
particular, Sugar is available for 64-bit systems with Ubuntu
14.04 LTS installed (<a class="moz-txt-link-freetext"
href="http://wiki.sugarlabs.org/go/Ubuntu">http://wiki.sugarlabs.org/go/Ubuntu</a>).
Unfortunately, this procedure does not work with 32-bit systems.
There exists an opportunity to deploy Sugar <br>
with relatively inexpensive or refurbished laptops which do not
provide 64-bit support. This task is to create a comparable
version of Sugar which can <br>
be installed on 32-bit systems as an alternate Ubuntu desktop.<br>
</p>
<p>11. Brief explanation<br>
Many deployments want to protect their XOs against theft. OLPC
provides an 'activation lease' mechanism in firmware which makes
it impossible to <br>
boot an XO once the activation lease has expired, unless the XO
has access to the key via a removable device. This task is to
provide a similar mechanism which is not dependent on OLPC. A USB
key or network device (school server) should have an inventory of
XOs identified by serial_number (and, perhaps, uuid). if this key
is readable by the firmware, the XO should boot. If the key is not
readable (e.g. reflash), then the XO should boot if the key is
readable on a removable device or on the connected school server.
[this suggests the XO can connect to the schoolserver by firmware
alone - might be difficult]. <br>
Whenever an XO connects with the network device, the network
device should confirm the activation lease and extend it by a time
specified by the deployment (administrative owner of the network
device). A report should be available to the deployment on the XO
inventory and when each was last connected to enable detection of
'missing' XOs. Perhaps, the mechanism should have a 'blacklist' of
serial_numbers of 'missing' laptops. If such a laptop is
connected, it could be allowed to proceed with a warning to the
administrator that the 'missing' laptop is in the house. This
mechanism should be available for optional implementation by a
deployment without reference to a central organization such as
OLPC.<br>
</p>
<p>12. Brief explanation<br>
OLPC firmware in the XO-1 supported a feature called
'nandblaster'. This mechanism allowed a 'master' XO to broadcast
its image in a loop to the XO Lan. Other XOs could then be flashed
by the firmware by making a copy of each sector as it was
broadcast to their local store. Once a cycle in the loop was
finished, the XO could detach and was ready for reboot with the
newly installed image. This task is to re-create this capability
where the 'master' XO image could be on a network device such as a
school server or another XO. This mechanism should store a new
version of firmware (as done currently) so that the firmware
upgrade can be automatically installed on the next boot when
connected to an AC adapter. <br>
</p>
<p>13. Brief explanation<br>
The OLPC model is that each user has full possession and is
the only user of an XO laptop. Therefore, Sugar assumes a 1-1
correspondence between users and XO serial numbers. However, Sugar
is being used on other platforms (e.g. SOAS), where there is no
obvious equivalent to a serial number. SOAS and James Cameron have
created versions of Sugar which do not assume the user is 'olpc',
but implement a standard username/password login system. The users
storage is allocated to his/her home directory. <br>
This task is to create a Sugar image for the XO which allows
for user's to login by username and password. The basic task is to
move the Activities folder <br>
to a common space so that only one copy is needed per system. This
will support deployments where one set of laptops are shared
across multiple classes (and users) or where there one laptop is
shared between two students - one in a morning shift and the other
in an afternoon shift. <br>
</p>
<p>14. Brief explanation<br>
The TuxMath activity is popular with deployments. However, the
upstream version appears to be abandoned. This task would be to
implement a sugar-web-activity math game comparable to TuxMath.<br>
<br>
</p>
<p> <br>
I have some comments on the other tasks:<br>
</p>
<p>"The newer Sugar builds have performance issues on <i>some old
hardware</i> with limited memory. This is keeping some Sugar
deployments from upgrading. This project is to look into the
performance issues and tune Sugar for low-memory devices."<br>
</p>
<p>I think this task should be unambiguously focused on the XO-1
(1GB store). The majority of deployed XOs are XO-1s with a 1GB
store. These deployments generally do not have the funds to
purchase and deploy an SDHC card for these devices (ask Adam about
this possibility in Haiti, I was not able to get a firm number
from Rwanda but I believe they may have deployed more than several
thousand XO-1s. The cost is not so much the card itself, but the
logistics cost to prepare the cards with an XO-1 image and to
deliver the cards to the deployment locations). <br>
</p>
<p>The performance problem is not limited to low-memory (250GB). It
is also related to no gpu, low persistent store, slower and more
limited processor and so on.). It is also likely that their are
specific limitations on executing newer software releases on this
hardware. As a minimum, someone who takes on this task needs an
XO-1 (and possibly access to an XO-1.5 for performance comparisons
- a task for the mentor?).<br>
</p>
<p>One task could be to identify some significant performance
measures (a form of benchmark which could be applied to all models
and releases to obtain <br>
relative performance measures). The task also requires some
analysis to determine the bottlenecks limiting performance
(processor speed, graphics speed, memory usage, storage access
times, etc.). This, in turn, requires defining important workloads
(boot, launch activity, switch activities, shut down activity,
shut down system, connect to network, effective network speed, and
so on). I think the community should be able to help with this
(what are the most significant tasks in Haiti which have
unacceptable response times on the XO-1?). <br>
</p>
<p>It is likely that one result of this task may be to limit the
capabilities of Sugar on the XO-1.<br>
</p>
<p>"Now that JavaScript has become a first class citizen in the
Sugar ecosystem, we must re-design our collaboration model to
allow collaboration between web activities regardless of the
platform."</p>
<p>I am not sure what is meant here by platform. Except for
development environments, I am only aware of Sugarizer, SOAS, and
Sugar on XO in the wild (i.e in use by deployments without any
developers or computer professionals on site). As I understood it,
Sugar has adopted the collab-wrapper model for Sugar activities.
Is this collab-wrapper usable in a Javascript environment? Is is
possible for XO users to collaborate in this model with users of
SOAS or Sugarizer?<br>
</p>
<p>Nutritional Microworld<br>
</p>
<p>relevant tool—one that invites learners to explore fundamental
concepts of nutrition that are both intrinsic to music yet
transcendent of a specific discipline.
</p>
I assume the reference to music is a typo. <br>
<br>
At Eurovision 2014, a speaker demonstrated nsound - an alternative
to csound. The claim is a simpler and more understandable api.<br>
<br>
Turtle Confusion and Turtle Flags. <br>
These activities reproduce the Turtle Blocks engine. I think a
simpler solution is to provide the confusion images and the flag
images via html and have the user create them using the existing
javascript Turtle implementation. The user can easily switch screens
via alt-tab or the frame. For example, the confusion challenges and
the flags could be presented by an .xol content.<br>
<p> </p>
<p>I'll try to send you some additional task proposals as soon as I
can.<br>
</p>
<p>Tony<br>
</p>
<br>
<br>
<div class="moz-cite-prefix">On 02/19/2016 05:30 PM, Walter Bender
wrote:<br>
</div>
<blockquote
cite="mid:CADf7C8sbRYUkrTWmF98oAOX-_0hKDUgzG2=X97rUhMEGd0RtBQ@mail.gmail.com"
type="cite">
<div dir="ltr">FYI, as per the discussion at this month's SLOB
meeting, I submitted an application to Google Summer of Code on
behalf of Sugar Lbs. Lionel has agreed to be the co-admin this
summer. We should hear by the end of the month as to whether or
not we are accepted and how many slots we get.
<div><br>
</div>
<div>It is important that we add some more potential projects to
the list in the wiki over the next few days as a show of
interest from the community. Please add your ideas to: </div>
<div><br>
</div>
<div><a moz-do-not-send="true"
href="https://wiki.sugarlabs.org/go/Summer_of_Code/2016">https://wiki.sugarlabs.org/go/Summer_of_Code/2016</a></div>
<div><br>
</div>
<div>Thanks.</div>
<div><br>
</div>
<div>-walter</div>
<div>
<div><br>
</div>
-- <br>
<div class="gmail_signature">
<div dir="ltr">
<div><font><font>Walter Bender</font></font><br>
<font><font>Sugar Labs</font></font></div>
<div><font><a moz-do-not-send="true"
href="http://www.sugarlabs.org" target="_blank"><font>http://www.sugarlabs.org</font></a></font><br>
<br>
</div>
</div>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
Sugar-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Sugar-devel@lists.sugarlabs.org">Sugar-devel@lists.sugarlabs.org</a>
<a class="moz-txt-link-freetext" href="http://lists.sugarlabs.org/listinfo/sugar-devel">http://lists.sugarlabs.org/listinfo/sugar-devel</a>
</pre>
</blockquote>
<br>
</body>
</html>