Nell: Difference between revisions

From OLPC
Jump to navigation Jump to search
 
(9 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{TOCright}}
{{TOCright}}


= Overview =
= Demo script, draft 1 =
Nell is the name of the XO-3 Narrative Software effort.


Nell is a tablet-oriented education platform for children in
1) First thing seen is a login screen, with pictures of all the
the developing world. A modular narrative system guides
avatars of the users of the machine. The kid, plus their siblings,
learning, even for children far from educational infrastructure, and
parents, and alter-egos. We click on the 'new' button.
provides personalized instruction which grows with the child.
Nell's design builds on experience with the Sugar Learning
Platform.


We've written a [http://cscott.net/Publications/OLPC/idc2012.pdf short paper describing Nell's design] (pdf).
We then see a randomly generated avatar, in their "closet". You can
swap out features and colors to make it look like you. (We don't ask
you to type the name of your avatar yet, because we don't want to
presume typing and literacy ability yet, but we could ask you to speak
a name.)


= Demo plan (briefly) =
When you exit the "closet" and achievement message pops up: you've
# Section 1 of the IDC'12 paper: draw letters and we tell you a story as they come to life
customized your avatar! You might want to...
# "Tom Riddle's Diary": talk with an AIML [[chatbot]] by handwriting in your diary
# Wide Ruled Tutorial: story model editor that walks you through [http://users.soe.ucsc.edu/~jskorups/wiki/_media/wide_ruled/tutorial_wideruled2.pdf a tutorial] of using it to write a story.


= More information =
Exiting the closet also brought you to your "map". These are hex
See the subpages for more information.
tiles with paths and "stuff". The map has a single tile, your
"closet", and paths leading off in all directions but fading out.
You choose a direction.


= Subpages =
(You might also create a 'friend' who appears beside your avatar; you
{{Special:PrefixIndex/{{PAGENAME}}/}}
can switch between friends and maybe there are different tiles
available. You might also add a friend from somewhere else...)


[[Category:XO-3]]
2) Touching the south tile, your character moves to it and a basic
[[Category:Software]]
literacy app opens. Another achievement pops up, congratulating you
on trying the alphabet book and suggesting you try to....

This book is a simple alphabet book. There are pictures of an Apple
for A, etc. When you touch the apple, it says and shows its name.
You can trace the A in the name, and it shows your traced version on
top of the correct letter (and an achievement bubble pops up).
There are pictures of other things, one of which also begins with A.
When you touch the other thing which begins with A, you move on to B
(and an achievement bubble pops up). There's a task bar marked
"alphabet" which is gradually filling up. (This should perhaps be a
shorter tinkerbook-style lesson, that you can actually finish in the
brief demo.)

You back out of the literacy app, and you're back on the map. Your
avatar suggests continuing through the new alphabet-ville tile to
explore a newly available unexplored tile. You touch there and..

3) You're in "Castle TurtleArt". Your avatar suggests trying to draw
a square. When you assemble the tiles to accomplish this, an
achievement bubble pops up, and you're given another suggested task.
After a few of these, you back and and find yourself on your map
again.

4) This time you try going northeast. A sugar app opens. Southwest:
wikipedia. Southeast: a web browser. Then you drag and rearrange
your tiles to put wikipedia and the web browser near your home.
You check out your stats, change your clothes, and check the list of
new things to do. You can also flick to a journal to see the things
you've worked on today.


= Implementation plan =

== Weeks 1-2 ==

=== Bring up Firefox (Mobile?) ===
cjb: https://nightly.mozilla.org/ has nightly builds of the desktop, Mobile-Android and Mobile-Linux (fennec) clients.
The Fennec client for i686 works on my desktop at home, but the ARM download segfaults immediately on XO-1.75, because (unlike the i686 version) it's linked against maemo/libhildon.

I first tried building on koji2, since the linking step needs about 2G RAM, but building armv7 binaries on an armv5 host isn't supported -- for example, configure will try to run conftest binaries it generates, and they'll fail with SIGILL.

Then I tried cross-compiling, but ran into a bunch of cases where system libraries were being linked to instead of host libraries. I don't think cross-compiling Firefox is well tested/supported.

Then I moved to native compiling on an XO, using 3G swap on a USB stick. The build takes several hours, but it eventually worked. Here is my mozconfig file:

<nowiki>
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-arm

ac_add_options --enable-application=browser
#ac_add_options --enable-application=mobile

ac_add_options --disable-crashreporter
ac_add_options --disable-necko-wifi
ac_add_options --disable-tests

# You'd think defining the autoconf macros or the CFLAGS would work, but there are occasions
# where gcc's invoked outside of a normal shell profile.
ac_add_options --with-arch=armv7-a
ac_add_options --with-fpu=vfpv3-d16
ac_add_options --with-float-abi=softfp
export CFLAGS="-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp"
export CXXFLAGS="-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp"

ac_add_options --with-arm-kuser
</nowiki>

I also needed this ugly patch, which I haven't fully investigated. Without it, there is an error linking to an undefined arm_private::neon_enabled. Our CPU does not support NEON.

<nowiki>
diff -r d0700bfeda63 xpcom/glue/arm.h
--- a/xpcom/glue/arm.h Mon Oct 03 18:08:17 2011 -0700
+++ b/xpcom/glue/arm.h Wed Oct 05 12:53:53 2011 +0000
@@ -170,7 +170,8 @@
inline bool supports_neon() { return true; }
#elif defined(MOZILLA_MAY_SUPPORT_NEON) \
&& defined(MOZILLA_ARM_HAVE_CPUID_DETECTION)
- inline bool supports_neon() { return arm_private::neon_enabled; }
+// inline bool supports_neon() { return arm_private::neon_enabled; }
+ inline bool supports_neon() { return false; }
#else
inline bool supports_neon() { return false; }
#endif
</nowiki>

After applying these, ''make -f client.mk'' produces a build, and ''make package'' in objdir produces a tarball of it. These are at:

http://dev.laptop.org/~cjb/firefox/fennec-10.0a1.en-US.linux-gnueabi-armv7l.tar.bz2

http://dev.laptop.org/~cjb/firefox/firefox-10.0a1.en-US.linux-gnueabi-armv7l.tar.bz2

=== Benchmark Firefox, gfx and js performance ===
cjb: Early sign is that Fennec is '''slower''' than Firefox, rendering HTML is pretty snappy, but JavaScript + GUI is very slow. Needs investigation as to where we're spending the CPU time.

=== Storyboarding ===
cscott:

=== App repository/launcher, start on JS framework ===
cscott:

== Week 3 ==

=== Did "Ice Cream Sandwich" come out? If so, consider rebasing ===
=== Hex tile system, app repository/launcher ===

== Week 4 ==

=== Avatar customization app ===

== Weeks 5-6 ==

=== Achievements system ===
=== "Test suite" integration via DOM ===

== Weeks 7-9 ==

=== Basic literacy app ===
=== Paint app ===
=== TurtleArt, Wikipedia? ===

== Weeks 10-13 ==

=== Triage/cutoff for features ===
=== Performance ===
=== Bug fixes ===
=== Bringup in Taipei ===

Latest revision as of 20:23, 12 April 2012

Overview

Nell is the name of the XO-3 Narrative Software effort.

Nell is a tablet-oriented education platform for children in the developing world. A modular narrative system guides learning, even for children far from educational infrastructure, and provides personalized instruction which grows with the child. Nell's design builds on experience with the Sugar Learning Platform.

We've written a short paper describing Nell's design (pdf).

Demo plan (briefly)

  1. Section 1 of the IDC'12 paper: draw letters and we tell you a story as they come to life
  2. "Tom Riddle's Diary": talk with an AIML chatbot by handwriting in your diary
  3. Wide Ruled Tutorial: story model editor that walks you through a tutorial of using it to write a story.

More information

See the subpages for more information.

Subpages