Changes

m
→‎Accessibility: Broken link -- found what appears to be a decent replacement.
Line 1: Line 1:  
<div style="background-color: #FFF; margin-left:auto; margin-right: auto; width: 95%;">
 
<div style="background-color: #FFF; margin-left:auto; margin-right: auto; width: 95%;">
{{hig-subnav-inter|p_link=Design Fundamentals/Know Your Audience|p_label=Know Your Audience|c_section=Design Fundamentals|c_page=Key Design Principles|n_link=The Laptop Experience/Introduction|n_label=The Laptop Experience}}
+
<noinclude>{{Translations}}{{GoogleTrans-en}}</noinclude>{{hig-subnav-inter|p_link=Design Fundamentals/Know Your Audience|p_label=Know Your Audience|c_section=Design Fundamentals|c_page=Key Design Principles|n_link=The Laptop Experience/Introduction|n_label=The Laptop Experience}}
 
+
{{TOCright}}
    
===Key Design Principles===
 
===Key Design Principles===
Line 8: Line 8:     
====Performance====
 
====Performance====
The OLPC laptop bucks the trend of "more, faster, fatter"; we aim to provide a computer tailored to the needs of children in the context of their learning, not to the needs of frantic video games or office applications. We are, however, working within constraints of component cost, robustness, and power consumption. To satisfy these constraints, we have opted for NAND flash rather than a hard disk and a modest 256MB of memory (Please see [[Hardware_Specification|hardware specifications]]). Thus, developers must make every effort to write efficient code while minimizing memory usage.
+
The OLPC laptop bucks the trend of "more, faster, fatter"; we aim to provide a computer tailored to the needs of children in the context of their learning, not to the needs of frantic video games or office applications. We are, however, working within constraints of component cost, robustness, and power consumption. To satisfy these constraints, we have opted for NAND flash rather than a hard disk and a modest 256MB of memory (Please see [[OLPC:Hardware_specification|hardware specifications]]). Thus, developers must make every effort to write efficient code while minimizing memory usage.
   −
Since there is no swap space on the laptop, only a limited number of activities can run concurrently; the Sugar UI exposes these details directly to the children. The [[OLPC Human Interface Guidelines/The Laptop Experience/Zoom Metaphor#Home|Home]] screen features an activity ring that contains icons representing each instance of an open [[OLPC Human Interface Guidelines/Activities|activity]]. The size of the ring segment that a given activity occupies represents its overall memory usage; when the ring fills up, no additional activities may be launched until some resources have been freed. Take these limitations into account as you develop activities, since they will have a greater impact on the performance of your software on the laptop than on other platforms.
+
Since there is no swap space on the laptop, only a limited number of activities can run concurrently; the Sugar UI exposes these details directly to the children. The [[Human Interface Guidelines/The Laptop Experience/Zoom Metaphor#Home|Home]] screen features an activity ring that contains icons representing each instance of an open [[Human Interface Guidelines/Activities|activity]]. The size of the ring segment that a given activity occupies represents its overall memory usage; when the ring fills up, no additional activities may be launched until some resources have been freed. Take these limitations into account as you develop activities, since they will have a greater impact on the performance of your software on the laptop than on other platforms.
    
====Usability====
 
====Usability====
OLPC places an emphasis on discoverability and usability due to our [[OLPC_Human_Interface_Guidelines/Design Fundamentals#Know_Your_Audience|target audience]]. Usability has everything to do with the actual behavior of the activities, the layout of the buttons and tools, and the feedback that the interface provides to the children when they interact with it.  Ultimately, the design decisions that make your activities usable will depend greatly on the type of activity you are developing, and it will be up to you to consider carefully the kinds of interactions that the children will expect when presented with it. As a general rule, if the interface provided does what the child expects it to, you are off to a good start.  However, since it is quite difficult to know what they will expect&mdash;and in practice not all children will expect the same things&mdash;there is no substitute for user testing.
+
OLPC places an emphasis on [[Discovery|discoverability]] and usability due to our [[Human_Interface_Guidelines/Design Fundamentals#Know_Your_Audience|target audience]]. Usability has everything to do with the actual behavior of the activities, the layout of the buttons and tools, and the feedback that the interface provides to the children when they interact with it.  Ultimately, the design decisions that make your activities usable will depend greatly on the type of activity you are developing, and it will be up to you to consider carefully the kinds of interactions that the children will expect when presented with it. As a general rule, if the interface provided does what the child expects it to, you are off to a good start.  However, since it is quite difficult to know what they will expect&mdash;and in practice not all children will expect the same things&mdash;there is no substitute for user testing.
    
====Simplicity====
 
====Simplicity====
Line 21: Line 21:     
====Reliability====
 
====Reliability====
Of course we want to avoid instances where things go wrong; this should be a goal for every piece of software. We are committed to ensuring that the UI framework prevents activities from causing system crashes; Developers should consider a "fail-soft" approach to their designs, such as incorporating a suitable behavior for the spontaneous termination of an activity.
+
Of course we want to avoid instances where things go wrong; this should be a goal for every piece of software. We are committed to ensuring that the UI framework prevents activities from causing system crashes. Developers should consider a "fail-soft" approach to their designs, such as incorporating a suitable behavior for the spontaneous termination of an activity.
    
====Security====
 
====Security====
(Mention the "walled garden".)
+
Security is detailed elsewhere in this wiki (See [[OLPC:Bitfrost]]). Our goal is to protect against five categories of "bad things" software can do:
 +
# damaging the laptop;
 +
# compromising privacy;
 +
# damaging the children's data;
 +
# doing bad things to other people; and
 +
# impersonating the child.
 +
It is important to include anti-theft measures and common mechanisms for objectionable-content filtering.
 +
 
 +
From the perspective of the user interface, it is important that these goals be achieved without the use of menus, pop-up boxes, passwords, etc., as these approaches are meaningless to most people.
    
====Adaptability====
 
====Adaptability====
There are several use conditions that should be taken into consideration in designing activities: the laptop has both a grayscale (sunlight) mode and a color (backlight) mode; the mesh&mdash;while always available&mdash;may or may not be connected to the Internet at the time the activity is active; the laptop may be configured in either laptop mode (keyboard and touchpad exposed) or [[OLPC Human Interface Guidelines/The Sugar Interface/Input Systems#"Hand-held" Mode|handheld mode]] (game controller, camera, microphone and speakers only). Signal strengths, and therefore bandwidth, may fluctuate, and at times activity partipants may even drop off temporarily. Activities should handle all of these cases with care. E.g., temporary loss of connectivity should be handled silently, and reconnection of an individual to an activity they were previously participating in should happen with no noticeable side-effects as outlined in the guidelines for [[OLPC Human Interface Guidelines/Activities/Activity Basics#Activity Robustness|activity robustness]].
+
Several use conditions should be taken into consideration in designing activities: the laptop has both a grayscale (sunlight) mode and a color (backlight) mode; the mesh&mdash;while always available&mdash;may or may not be connected to the Internet at the time the activity is active; the laptop may be configured in either laptop mode (keyboard and touchpad exposed) or [[Human Interface Guidelines/The Sugar Interface/Input Systems#"Hand-held" Mode|handheld mode]] (game controller, camera, microphone and speakers only). Signal strengths, and therefore bandwidth, may fluctuate, and at times activity partipants may even drop off temporarily. Activities should handle all of these cases with care. E.g., temporary loss of connectivity should be handled silently, and reconnection of an individual to an activity they were previously participating in should happen with no noticeable side-effects as outlined in the guidelines for [[Human Interface Guidelines/Activities/Activity Basics#Activity Robustness|activity robustness]].
    
====Recoverability====
 
====Recoverability====
   −
Recoverability is fundamental to encouraging exploration.  With creative exploration among OLPC's main goals, it therefore becomes an issue of high importance on the laptops.  When a child knows they have a fallback plan &mdash; a way back to the current state of things &mdash; they will much more frequently go beyond their comfortable boundaries and experiment with new tools and new creative means of expression.
+
Recoverability is fundamental to encouraging exploration.  With creative exploration among OLPC's main goals, it therefore becomes an issue of high importance on the laptops.  When children know they have a fallback plan—a way back to the current state of things—they will much more frequently go beyond their comfortable boundaries and experiment with new tools and new creative means of expression.
   −
The [[OLPC Human Interface Guidelines/The Laptop Experience/The_Journal|journal]] provides a partial notion of recoverability, since its auto-journaling amounts to maintaining an automatic incremental backup. The ability for a child to choose to "keep" anything they're working on in its current state furthers this idea.
+
The [[Human Interface Guidelines/The Laptop Experience/The_Journal|journal]] provides a partial notion of recoverability, since its auto-journaling amounts to maintaining an automatic incremental backup. The ability, for children, to choose to "keep" anything they're working on in its current state furthers this idea.
   −
However, the primary and essential means of recoverability remains the ability to undo one's actions.  Of course, the notion of undo/redo becomes complicated in the realm of collaborative editing, which imposes a limitation on the extent to which undos are possible, since collisions could often occur between the things one child wants to undo and the things another child has already changed since those were done.  Nonetheless, we are dedicated to providing this functionality to every extent possible, and [[OLPC Human Interface Guidelines/Activities|activities]] should strive to support this to the best of their ability.
+
However, the primary and essential means of recoverability remains the ability to undo one's actions.  Of course, the notion of undo/redo becomes complicated in the realm of collaborative editing, which imposes a limitation on the extent to which undos are possible, since collisions could often occur between the things one child wants to undo and the things another child has already changed since those were done.  Nonetheless, we are dedicated to providing this functionality to every extent possible, and [[Human Interface Guidelines/Activities|activities]] should strive to support this to the best of our ability.
   −
(Future revisions of the [[OLPC Human Interface Guidelines/The Sugar Interface/Input Systems#Keyboard|keyboard]] may even have an undo/redo key to further strengthen this idea.)
+
(Future revisions of the [[Human Interface Guidelines/The Sugar Interface/Input Systems#Keyboard|keyboard]] may even have an undo/redo key to further strengthen this idea.)
    
====Interoperability====
 
====Interoperability====
Line 43: Line 51:  
====Mobility====
 
====Mobility====
   −
Of course, as with all portable computers, a general notion of mobility is intrinsic to the laptops.  However, in the hands of children, this mobility rises to a new level, since we can expect that they will carry them not only to and from school, but on a hike, onto the playground, or to any number of other locations where they can learn and experience the world.  Their physical form has been designed with ruggedness in mind.  The important thing to consider is the effect such mobility can, and should have on the activities themselves.  The lens of the built-in camera looks a lot different when it's treated not as a simple webcam, but as a way to capture the world around them, both indoors and out.
+
Of course, as with all portable computers, a general notion of mobility is intrinsic to the laptops.  However, in the hands of children, this mobility rises to a new level, since we can expect that they will carry them not only to and from school, but on a hike, onto the playground, or to any number of other locations where they can learn and experience the world.  Their physical form has been designed with ruggedness in mind.  The important thing to consider is the effect such mobility can, and should, have on the activities themselves.  The lens of the built-in camera looks a lot different when it's treated not as a simple webcam, but as a way to capture the world around them, both indoors and out.
    
====Transparency====
 
====Transparency====
   −
OLPC also hopes to encourage the children using the laptops to explore the technology under the surface.  Towards this end, a [[OLPC_Human_Interface_Guidelines/The Laptop Experience/View Source|view source]] key has been added to the laptop keyboards, providing them with instant access to the code that enables the activities that they use from day to day.  This key will allow those interested to peel away layers of abstraction, digging deeper into the codebase as they learn.
+
OLPC also hopes to encourage the children using the laptops to explore the technology under the surface.  Towards this end, a [[Human_Interface_Guidelines/The Laptop Experience/View Source|view source]] key has been added to the laptop keyboards, providing them with instant access to the code that enables the activities that they use from day to day.  This key will allow those interested to peel away layers of abstraction, digging deeper into the codebase as they learn.
   −
To enable such layered exploration, OLPC has written much of what can be in [[Python]], a scripting language, to enable children to view the source code.  This means, aside from general good practice, code should be both readable and well commented.  The [http://www.python.org/dev/peps/pep-0008/ PEP 8] style guidelines for Python provide an excellent resource, and OLPC recommends that developers follow the practices laid out therein unless a compelling reason not to exists.
+
To enable such layered exploration, OLPC has written much of what can be in [[Python]], a scripting language, to enable children to view the source code.  This means, aside from general good practice, code should be both readable and well commented.  The [http://www.python.org/dev/peps/pep-0008/ PEP 8] style guidelines for Python provide an excellent resource, and OLPC recommends that developers follow the practices laid out therein unless a compelling reason exists not to do so.
    
====Accessibility====
 
====Accessibility====
   −
There are lots of things to think about relating to accessibility in a set of human interface guidelines.  We've just started hashing out general accessibility issues at the [[Accessibility]] page.   
+
There are lots of things to think about that relate to accessibility in a set of human interface guidelines.  We've just started hashing out general accessibility issues at the [[OLPC:Accessibility]] page.   
    
Broadly speaking, the user interface of the GUI shell and of activities must address the following accessibility issues:
 
Broadly speaking, the user interface of the GUI shell and of activities must address the following accessibility issues:
Line 60: Line 68:  
* Providing an enlarged print/icon option for folks whose vision is less than 20/20 (but who still can see things that are somewhat enlarged - e.g. 18 point fonts)
 
* Providing an enlarged print/icon option for folks whose vision is less than 20/20 (but who still can see things that are somewhat enlarged - e.g. 18 point fonts)
 
* Using the keyboard without needing to press more than one key at a time (all modifiers must work with AccessX functionality)
 
* Using the keyboard without needing to press more than one key at a time (all modifiers must work with AccessX functionality)
* Supporting programmatic access to the GUI (which for us will mean supporting [http://developer.gnome.org/doc/API/2.0/atk/ ATK] in Sugar and all activites)
+
* Supporting programmatic access to the GUI (which for us will mean supporting [http://developer.gnome.org/atk/2.0/atk.html ATK] in Sugar and all activites)
 
* Either shipping with some number of assistive technology applications (is a screen reader an "activity"?), or making them easy to download
 
* Either shipping with some number of assistive technology applications (is a screen reader an "activity"?), or making them easy to download
* Providing some way for a user to discover accessibility support and enable what they need (Windows XP & Vista offer an "accessibility wizard" for this purpose; we don't have good upstream technology from GNOME we can take for this unfortunately; the Ubuntu accessibility folks are perhaps furtherest along in thinking about this)
+
* Providing some way for a user to discover accessibility support and enable what they need (Windows XP & Vista offer an "accessibility wizard" for this purpose; we don't have good upstream technology from GNOME we can take for this unfortunately; the Ubuntu accessibility folks are perhaps furthest along in thinking about this)
       
{{hig-subnav-inter|p_link=Design Fundamentals/Know Your Audience|p_label=Know Your Audience|c_section=Design Fundamentals|c_page=Key Design Principles|n_link=The Laptop Experience/Introduction|n_label=The Laptop Experience}}
 
{{hig-subnav-inter|p_link=Design Fundamentals/Know Your Audience|p_label=Know Your Audience|c_section=Design Fundamentals|c_page=Key Design Principles|n_link=The Laptop Experience/Introduction|n_label=The Laptop Experience}}
 
</div>
 
</div>