Difference between revisions of "Platform Team/Sugar Network/Architecture"
Line 5: | Line 5: | ||
The technical decisions are tailored by: | The technical decisions are tailored by: | ||
− | * Real needs of deployments like [[Deployment_Team/Peru/Puno|one-teacher schools in Peru]] and should be as simple as possible; [[Wikipedia:KISS_principle|Keep it simple, wise man!]]; | + | * Real needs of deployments like [[Deployment_Team/Peru/Puno#The_problem|one-teacher schools in Peru]] and should be as simple as possible; [[Wikipedia:KISS_principle|Keep it simple, wise man!]]; |
* The system, from users point of view, should just work proving high-level services that cover the full collaboration circle that should exist within Sugar learning community; | * The system, from users point of view, should just work proving high-level services that cover the full collaboration circle that should exist within Sugar learning community; | ||
− | * | + | * The system should be useful not only for off-line environments, but also for cases in decent Internet connection. |
== Overview == | == Overview == | ||
− | + | [[File:Sugar-networks-architecture.png|right]] | |
− | + | The Sugar Network consists of different types of components: | |
− | |||
− | + | * [[#Server|Server side]] that provide [[Sugar_Network/API|API]] for clients: | |
+ | ** [[#Mothersip|Mothersip]] server that keeps the whole Sugar Network information, clients might connect directly to this server (on-line case) or indirectly via distributed servers (off-line case); | ||
+ | ** Optional [[#Distributed_servers|distributed servers]], contain a [[#Synchronisation|synchronised]] copy of central server (might be not for the entire Network to save storage space); | ||
+ | * [[#Client|Client side]]: | ||
+ | ** Client application that uses [[Sugar_Network/API|API]] to interact with a server; | ||
+ | ** Client application that [[#Personal_server|provides]] limited [[Sugar_Network/API|API]] to get access to the personal data. | ||
== Server == | == Server == | ||
− | In all cases the server API is the same for clients. But depending on connectivity, | + | In all cases the server [[Sugar_Network/API|API]] is the same for clients. But depending on connectivity, clients might be connected to the [[#Mothership|Mothership]] or to an [[#Distributed_servers|intermediate server]]. |
− | == | + | === Mothership === |
+ | |||
+ | The place where data is being collected from all distributed server. If clients have connectivity, they can connect to the Mothership to contribute to the Network directly. | ||
+ | |||
+ | === Distributed servers === | ||
+ | |||
+ | Servers that will be useful if: | ||
+ | |||
+ | * there is no connectivity at all; | ||
+ | * connectivity is sporadic; | ||
+ | * connectivity is not cheap and its usage needs to be minimized. | ||
+ | |||
+ | Distributed services provide full featured [[Sugar_Network/API|API]] as the Mothership does. Distributed servers need to be [[#Synchronisation|synchronized]]. | ||
+ | |||
+ | === Synchronisation === | ||
+ | |||
+ | To let Network participant, connected to particular [[#Distributed_servers|distributed server]], interact with people from another distributed servers or with people from the Internet, distributed servers need to be synchronized. | ||
− | + | Server might be synchronised: | |
− | * | + | * With the Mothership, if connectivity presents; |
− | * [[ | + | * With the Mothership or any other distributed servers via the [[Wikipedia:Sneakernet|Sneakernet]]. |
− | + | == Client == | |
− | + | Client application is local, for reasons: | |
− | |||
− | + | * Originally, Sugar Network is being developed for deployments where teachers' XOs will be distributed servers, thus, it will be useful to delegate some of computing to students' XOs; | |
+ | * Stimulate doing behaviour when it should be possible to create new client application or tweak existing; | ||
+ | * It is all time possible to create Web application on the server side. | ||
− | === | + | === Default client === |
− | The default | + | The default client is implemented using Web technologies to: |
* Make it possible to reuse Sugar Network in any Web browser in any Desktop Environment, i.e., not only from Sugar Shell; | * Make it possible to reuse Sugar Network in any Web browser in any Desktop Environment, i.e., not only from Sugar Shell; | ||
Line 44: | Line 65: | ||
* Involve Web developers to Sugar community; | * Involve Web developers to Sugar community; | ||
− | + | It might sound a bit confusing to have local Web application, but this decision is based on: | |
* Local Web applications serve only one user and are much simpler than singular applications that are intended to serve thousands of users simultaneously; | * Local Web applications serve only one user and are much simpler than singular applications that are intended to serve thousands of users simultaneously; | ||
* Having simple and clean designed code, it will be easy for doers to learn, change, reimplement the frontend. | * Having simple and clean designed code, it will be easy for doers to learn, change, reimplement the frontend. | ||
+ | |||
+ | === Personal server === | ||
+ | |||
+ | This local application provides limited [[Sugar_Network/API|API]] to get access to: | ||
+ | |||
+ | * Private data in user's home directory, | ||
+ | * Data accessible from removable devices like USB sticks or SD cards. | ||
== References == | == References == |
Revision as of 16:35, 17 December 2011
See also the introduction page and the basic concepts overview.
Summary
The technical decisions are tailored by:
- Real needs of deployments like one-teacher schools in Peru and should be as simple as possible; Keep it simple, wise man!;
- The system, from users point of view, should just work proving high-level services that cover the full collaboration circle that should exist within Sugar learning community;
- The system should be useful not only for off-line environments, but also for cases in decent Internet connection.
Overview
The Sugar Network consists of different types of components:
- Server side that provide API for clients:
- Mothersip server that keeps the whole Sugar Network information, clients might connect directly to this server (on-line case) or indirectly via distributed servers (off-line case);
- Optional distributed servers, contain a synchronised copy of central server (might be not for the entire Network to save storage space);
- Client side:
Server
In all cases the server API is the same for clients. But depending on connectivity, clients might be connected to the Mothership or to an intermediate server.
Mothership
The place where data is being collected from all distributed server. If clients have connectivity, they can connect to the Mothership to contribute to the Network directly.
Distributed servers
Servers that will be useful if:
- there is no connectivity at all;
- connectivity is sporadic;
- connectivity is not cheap and its usage needs to be minimized.
Distributed services provide full featured API as the Mothership does. Distributed servers need to be synchronized.
Synchronisation
To let Network participant, connected to particular distributed server, interact with people from another distributed servers or with people from the Internet, distributed servers need to be synchronized.
Server might be synchronised:
- With the Mothership, if connectivity presents;
- With the Mothership or any other distributed servers via the Sneakernet.
Client
Client application is local, for reasons:
- Originally, Sugar Network is being developed for deployments where teachers' XOs will be distributed servers, thus, it will be useful to delegate some of computing to students' XOs;
- Stimulate doing behaviour when it should be possible to create new client application or tweak existing;
- It is all time possible to create Web application on the server side.
Default client
The default client is implemented using Web technologies to:
- Make it possible to reuse Sugar Network in any Web browser in any Desktop Environment, i.e., not only from Sugar Shell;
- Using existing Web methods might make frontend developing easier;
- Involve Web developers to Sugar community;
It might sound a bit confusing to have local Web application, but this decision is based on:
- Local Web applications serve only one user and are much simpler than singular applications that are intended to serve thousands of users simultaneously;
- Having simple and clean designed code, it will be easy for doers to learn, change, reimplement the frontend.
Personal server
This local application provides limited API to get access to:
- Private data in user's home directory,
- Data accessible from removable devices like USB sticks or SD cards.
References
- An OLPC wiki page about the Sneakernet.
- Facebook's API.