[olpc-software] Use cases and design scenarios for software handling

Mike Hearn mike at plan99.net
Wed Mar 15 16:19:22 UTC 2006


Chris mentioned on IRC we were all getting distracted by the details
instead of concentrating on designing experiences. Fair point, my fault
too, I jumped in with some pre-baked notes on a package management
alternative.

Here's a list of use cases (+) and design requirements (*). What do
people think? Is this list a good start?

----------------------------------------------------------------------

+ A teacher talks to his colleagues and learns of a new program
  useful for showing kids maps. When he gets back to his home town, he
  vaguely recalls the name of it, but nothing else. How does he try it
  out for himself in preparation for a class?

    * Teachers should be using same laptops as the students?
    * Teacher must be able to quickly locate the software they want.
    * It may be that the name is not "natural" for his native tongue,
      and so there needs to be high quality search (eg soundex     
      matching, spelling correction)
    * Once found, the teacher must be able to download the software onto
      his laptop from the internet quickly and cheaply.

+ The teacher goes offline because he wants to try the program out in 
  the privacy of his home. 

    * The software must work correctly offline. 
    * The teacher must not find that the software is missing that vital
      feature he heard about because he is missing some optional
      component/because the package he got was built wrong/because he
      is using an older build of the distro than his colleagues.

+ Students arrive at school, and the teacher decides the use the
  program. Either the teacher needs to be able to push it to the
  students, or the students need to be able to easily find it on the
  network and pull it themselves.

    * Minimal storage should be used on the laptop.
      This means the system must be smart enough to only transfer
      translation files for the languages the students need.

    * However, no tech support or sysadmins are available, so robustness
      and usability should take precedence over efficiency.

+ The students leave the class and go home. The program was cool
  (imagine a less demanding Google Earth) and they want to use it when
  they get back home.

    * Ideally no explicit action would be needed to ensure the program
      is still available when no longer physically near the teacher.
      But transparently "installing" or caching software ZeroInstall
      style has another issue:

          + Some students aren't interested in geography at all. They
            don't want to run the program, and would rather the storage
            be available for something else.


+ Some kids who weren't at that class want to play with the program too.

    * Kids must be able to easily share software. 

    * They may be using different generations of the laptop: if the
      program requires a specific generation to run then it must be
      extremely obvious and easy to understand that this is the case.
   
    * We cannot and should not expect any knowledge of dependencies 
      or package management technologies. Sharing should either Just
      Work or fail because the laptop is not new enough. Failing due
      to conflicting packages, namespace conflicts, or other UNIX 
      esoterica is not acceptable.


+ Time passes and a new version of the geography program becomes
  available.

    + Perhaps the teacher is no longer using it. Kids may want to
      upgrade it themselves.

    + The teacher may wish to distribute an update so they can use
      the new features in class

    * The upgrade process should use minimal bandwidth. It's easy
      to imagine with a geography app some files changing and others
      not: a minimal changeset should be transmitted over the 'net.

    * Kids should be able to share upgrades as well. Ideally again
      by swapping minimal changesets.


+ New days and new challenges arrive, the geography program is no
  longer needed.

    * Historically users have had problems understanding an explicit
      uninstall process: see the way Windows warns you when deleting
      application shortcuts from the desktop.

    * Either:

        * It must be easy for kids to see where their storage is going, 
          and to free up space by removing things they no longer care 
          about.

        or

        * Software should be dropped/re-downloaded onto storage
          automatically in a ZeroInstall sense.
   
    * Whatever implementation is used, it's unacceptable for software
      to leave any cruft behind at all. When the user no longer has any
      way to access a program from the user interface, it must not be
      taking up any storage on the system. It is unacceptable for the
      operating system to "degrade" over time in the way Windows tends
      to.

+ (Potentially) A smart/motivated student gets hold of an SDK somehow
  and writes the next Tetris. She wants to share it with her friends,
  and maybe publish it on the internet as a whole.

    * Ideally, it must be extremely trivial to distribute software built
      using the SDK. Best case scenario, there's no work to do at all.

    * Certainly we should try and shield student developers from all the
      horrid issues Linux software distribution normally implies
      (dependencies, ABI stability woes, GPG keys etc).

    * The laptops are unlikely to support good development tools. Some
      kind of wireless headless add-on cube thing (basically wireless 
      terminal server in a box) could maybe solve that: all the
      developer tools and compiler power are held on a relatively
      expensive community-owned core and the laptops can use it via the
      mesh. Similar concepts could provide local Wikipedia copies and
      other geek-utopia ideals :)

+ Some educational developers want to write software for this huge new
  market. Nearly all full time educational developers currently work on
  either Windows or the Mac, usage of tools like Macromedia Director
  is very common (worked for an educational software company using Lingo
  myself a few years ago!).

     * How do we bring these people onto the OLPC Linux platform?
     * How do these people deal with versioning their software such that
       it is easy to obtain and works across multiple generations of
       laptop?

     + There is no equivalent to Director or other common authoring
       tools on Linux. Let us imagine somebody meets this need, and 
       much software is produced that depends on a specific runtime.

           * Can we reduce duplication of this dependency whilst 
             simultaneously preserving just-worksness? What alternatives
             are there? What about compromises that combine efficiency
             with just-worksness?

           * Worst case scenario: the runtime has some weird license.
             Is there any support in the software distribution system
             for handling policies like "only 5 licenses may be in use
             simultaneously"? Or is that a headache only western
             educational groups have to deal with?


OK, that's a pretty big list :/ Anything I missed or got wrong?

thanks -mike




More information about the olpc-software mailing list