Network2: Difference between revisions

From OLPC
Jump to navigation Jump to search
(4)
mNo edit summary
Line 2: Line 2:
Last updated: --[[User:Sj|Sj]]&nbsp;[[User talk:Sj|<font style="color:#f70; font-size:70%">talk</font>]] 04:38, 28 July 2009 (UTC) | [[Network2/Paper|paper version]]
Last updated: --[[User:Sj|Sj]]&nbsp;[[User talk:Sj|<font style="color:#f70; font-size:70%">talk</font>]] 04:38, 28 July 2009 (UTC) | [[Network2/Paper|paper version]]


Sugar's desired realtime collaboration experience can only be provided on top of a firm foundation -- a robust, efficient network stack designed to accommodate automated diagnosis and standardized workarounds. (Anything less just wastes teachers' and students' time and patience for spite.)


This essay summarizes an attempt to work out a simple way to realize this sort of network experience, with existing software and hardware, and demonstrates the sort of thinking which might help other parts of the system achieve the same standard of quality.
Sugar's view of realtime collaboration (see [[network principles]]) relies on a robust network stack, which does not exist today. Its intended user experience relies on something stronger: a network which fails in predictable ways, and can be manually overridden in order to get on with a desired behavior of Activities.


* Previous (failed) efforts : [[networking]], [[collaboration]].
This essay summarizes an attempt to work out a simple way to realize this sort of network experience, with existing software and hardware, and to demonstrate the sort of thinking which might help other parts of the system contribute to the same user experience.
* Background statements : [[network principles]], [[Network2/Purpose|purpose]], [[Network2/Scenarios|scenarios]], [[Network2/Architecture|architecture]]

* Design statements : [[Network2/Design|naming and internetworking]], [[Network2/Security|security ideas]]
* Previous essays and efforts : [[networking]], [[collaboration]].
* Analyses: [[Network2/Dynamics|cost model]], [[Network2/Diagnosis|diagnosis techniques]], [[Network2/Self-test|self-test algorithm]]
* Background statements : [[Network2/Purpose|purpose]], scenarios,
* Experiments: [[Network2/Experiments/Dnshash|dnshash]], [[Network2/Experiments/Openvpn|openvpn]]


Specific goals from a discussion with [[user:mstone|Michael]]:
Specific goals from a discussion with [[user:mstone|Michael]]:
# "I want to chop out 2-3 layers from the current six-layer network stack."
# "I want to chop out 2-3 levels from the current collaboration stack's 6-level 'fast-path'."
# "I want to name my machine heap.mstone.info and have that identifier work whether I am sitting under a tree with a mesh link to you or on a wide-spread network."
# "I want to name my machine michael.laptop.org and have that identifier work whether I am sitting under a tree with a mesh link to you or on a wide-spread internetwork."
# "I want to be able to go to /etc/hosts and type in the address I want in case it can't be found otherwise, and have it just work"
# "I want to be able to go to /etc/hosts and type in the address I want in case it can't be found otherwise, and have it just work"
# "I want a design that never mandates single points of failure."
# "I want a design that never mandates single points of failure."
# "I want to try out [[Journal2]] as it is supposed to be used.


'''To help out...'''


# Please help me to make my writing more accessible by:
= Longer essay =
#* marking "holes" with questions,
== Usability ==
#* listing prerequisite concepts that I need to explain,
There are many ways that children involved in the OLPC effort might fail to benefit from their involvement because of network design and implementation failures such as lack of interoperability, efficiency, and usability.
#* telling me when I fail to link my ideas to your experience,

#* pointing out a loose sentence or paragraph
In order to address these risks, we have tried to explain a [[Network2#Context|context]] of work, a number of [[Network2#Design|designs]], and several [[Security#Design|implementations]] that we think will help mitigate these threats in both '''wikified''' (below) and '''[[Network2/Paper|paper]]''' forms.
# Then see if you (or a friend) can fill in the missing detail or tighten up the loose remark.

# Finally, add yourself to the [[Network2/Credits|Network2 credits]] if you succeeded!
Unfortunately, providing truly dependable software is a '''challenging''' task at best. Fortunately, there are many ways that you can help out, both [[Developers|generically]], [[Network2#Contributions|particularly]], or via [[Network2/Audience|role-based scaffolding]] according to your preferences. Finally, if you are interested in speaking with [[Network2/Credits|networking people]], know that they are readily available.

== Context ==

This network design effort is growing in the fertile ashes of previous [[Networking|network]] and [[Collaboration|collaboration]] attempts. Consequently, it proceeds from previously realized [[Network Principles]] according to a multi-faceted statement of [[Network2/Purpose|purpose]], a prioritized list of [[Network2/Scenarios|network scenarios]], and a collection of architectural [[Network2/Architecture|quality principles]] wrought from the aforementioned previous efforts.

== Details ==

Networking is intimately related to all aspects of the Sugar experience, including both usage and creation. Here are some pages describing many aspects of this experience. (Caveat: When judging, please also note that the design is '''not yet complete''' in several important respects, as indicated below.)

==== Usefully complete ====

; [[Network2/Design|Naming and Internetworking]]
: We intend to use DNS and IPv6 for naming and internetworking.

; [[Network2/Diagnosis|Diagnosis]]
: Our [[Network2/Architecture|quality principles]] mandate that we provide fault diagnosis procedures even before providing implementations!

; [[Network2/Experiments|Experiments]]
: We have begun experimenting with naming and tunneling technologies like [[Network2/Experiments/Dnshash|dnshash]] and [[Network2/Experiments/Openvpn|openvpn]].

==== Stubs ====

; [[Network2/Advice|Activities]]
: We provide advice for activity authors on special factors to consider when writing networked or collaborative activities.

; [[Network2/Security|Security]]
: Thoughts on where we might want to go with communications security.

; [[Network2/Dynamics|Dynamics]]
: In order to efficiently study scaling costs, we maintain bandwidth and latency models for our most important links, protocols, and implementations.

; [[Network2/Self-test|Self-test]]
: A logical extension of good ''manual'' diagnosis procedures is the creation of good ''automated'' diagnosis procedures.

; [[Network2/Future work|Future work]]
: As with any ambitious project, there's always more to do!

==== To Be Done ====

; [[Network2/Management|Management]]
: How do we dynamically configure links and routes?

; [[Network2/Integration|Integration]]
: How do we get this merged?


== Contributions ==

You can contribute to the education received by hundreds of thousands of children this year by:

; writing software
: Review the documentation cited above, then bring your questions and patches to the [mailto://sugar-devel@lists.sugarlabs.org sugar-devel mailing list] ([http://lists.sugarlabs.org/listinfo/sugar-devel subscribe]).

; refining the context and design
: Did we miss an important threat (e.g. to availability)? If so, please work with us to fix our model.
: Alternately, if you have expertise in a related field like mathematical modeling (''how far can this scale?'') or usability (''how should we inform users of failure?''), please improve our theories and recommended practices.

; breaking assumptions
: Networking is proven both in the mind and under fire. Here's your opportunity to crank up the heat.

; organizing other people
: Many people are capable of improving the networking ecosystem but for the lack of some critical resource like knowledge, motivation, or criticism. Find and provide the missing piece.

; spreading the word
: Many of our networking ideas are transferable to other operating systems and environments -- particularly to other Unix-like machines. Help port our ideas or software to another platform so that others can benefit from them and can help us improve them on their own terms.

== Procedures ==

Some day soon, we'll try to write up some simple procedures to ease the task of making the networking contributions described above. Ping the [mailto://sugar-devel@lists.sugarlabs.org sugar-devel list] ([http://lists.sugarlabs.org/listinfo/sugar-devel subscribe]) if you want this up.

== Thanks ==

Many people, both named and anonymous have contributed to the network ecosystem containing the XO and hence to the quality and power of the education received by hundreds of thousands of kids this year. If you or your organization would like to be recognized for your contributions, please add your name and affiliation to the [[Network2/Credits|Network2 credits]] page along with a brief description of what you worked on.


[[Category:Network2]]
[[Category:Network2]]

Revision as of 05:06, 28 July 2009

Last updated: --Sj talk 04:38, 28 July 2009 (UTC) | paper version

Sugar's desired realtime collaboration experience can only be provided on top of a firm foundation -- a robust, efficient network stack designed to accommodate automated diagnosis and standardized workarounds. (Anything less just wastes teachers' and students' time and patience for spite.)

This essay summarizes an attempt to work out a simple way to realize this sort of network experience, with existing software and hardware, and demonstrates the sort of thinking which might help other parts of the system achieve the same standard of quality.

Specific goals from a discussion with Michael:

  1. "I want to chop out 2-3 levels from the current collaboration stack's 6-level 'fast-path'."
  2. "I want to name my machine michael.laptop.org and have that identifier work whether I am sitting under a tree with a mesh link to you or on a wide-spread internetwork."
  3. "I want to be able to go to /etc/hosts and type in the address I want in case it can't be found otherwise, and have it just work"
  4. "I want a design that never mandates single points of failure."
  5. "I want to try out Journal2 as it is supposed to be used.

To help out...

  1. Please help me to make my writing more accessible by:
    • marking "holes" with questions,
    • listing prerequisite concepts that I need to explain,
    • telling me when I fail to link my ideas to your experience,
    • pointing out a loose sentence or paragraph
  2. Then see if you (or a friend) can fill in the missing detail or tighten up the loose remark.
  3. Finally, add yourself to the Network2 credits if you succeeded!