Platform Team/Sugar Network/Architecture: Difference between revisions

mNo edit summary
 
(8 intermediate revisions by the same user not shown)
Line 8: Line 8:


* Clients create, modify and browse different types of resources ([[Sugar_Network/Concept#Resources|resources]] from conceptual point of view, [[Platform_Team/Sugar_Network/API#Resources|resources]] from the API point of view) on a server;
* Clients create, modify and browse different types of resources ([[Sugar_Network/Concept#Resources|resources]] from conceptual point of view, [[Platform_Team/Sugar_Network/API#Resources|resources]] from the API point of view) on a server;
* If this server is a [[#Distributed_servers|distributed]] one, the system will take care about [[#Synchronisation|synchronizing]] its resources with other distributed servers and, finally, with the central one, the [[#Mothership|Mothership]].
* If this server is a [[#Node_servers|Node]] server, the system will take care about [[#Synchronization|synchronizing]] its resources with other Node servers and, finally, with the central one, the [[#Master_server|Master]] server.


=== Components ===
=== Components ===
Line 24: Line 24:
Server side is represented by:
Server side is represented by:


* [[#Mothersip|Mothership]] 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);
* [[#Master_server|Master]] server that keeps the whole Sugar Network information, clients might connect directly to this server (on-line case) or indirectly via Node 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);
* Optional [[#Node_servers|Node]] servers, contain a [[#Synchronization|synchronised]] copy of central server (might be not for the entire Network to save storage space);


In all cases the server [[Platform_Team/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]].
In all cases the server [[Platform_Team/Sugar_Network/API|API]] is the same for clients. But depending on connectivity, clients might be connected to the [[#Master_server|Master]] server or to a [[#Node_servers|intermediate server]].


=== Mothership ===
=== Master server ===


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.
The place where data is being collected from all Node servers. If clients have connectivity, they can connect to the Master to contribute to the Network directly.


=== Distributed servers ===
=== Node servers ===


Servers that will be useful if:
Servers that will be useful if:
Line 41: Line 41:
* connectivity is not cheap and its usage needs to be minimized.
* connectivity is not cheap and its usage needs to be minimized.


Distributed services provide full featured [[Platform_Team/Sugar_Network/API|API]] as the Mothership does. Distributed servers need to be [[#Synchronisation|synchronized]].
Node servers provide full featured [[Platform_Team/Sugar_Network/API|API]] as the Master does. Nodes need to be [[#Synchronization|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]].


== Conceptual level ==
== Conceptual level ==
Line 61: Line 52:


The model refers to the following additional information:
The model refers to the following additional information:
==== Sugar Network layers ====
This is an attempt to generalize the idea of [http://groups.google.com/group/sugar-network/browse_thread/thread/4cad05ec801f364c user/resource levels] with idea that objects should not be removed from the Network immediately (only hidden, and permanently removed by Network administrators). So, every resource is associated with a layer, i.e., it might be visible for observers only if they requested this layer and have permissions to see it.
For now, implemented only the following list of layers, but it might be reused for [http://groups.google.com/group/sugar-network/msg/f5a1b4d78494a5d3 teachers related workflows] later:
* {{Code|general}}, the default layer for observers and Network objects; all users can see objects on this layer;
* {{Code|deleted}}, Network objects' layer will be changed to {{Code|deleted}} after removing objects by users.
==== Events types ====
* {{Code|create}}<br>object was created;
* {{Code|update}}<br>object's properties were modified;
* {{Code|delete}}<br>object was deleted (hidden);
* {{Code|vote}}<br>object was voted/unvoted.
==== Licences ====
Short license names. The licenses should conform with the [[Activity Library]] licensing [[Activity_Library/Editors/Policy/Licensing|policy]].


=== Simplified editing workflow ===
=== Simplified editing workflow ===
Line 103: Line 74:
Client application is local, for reasons:
Client application is local, for reasons:


* Originally, Sugar Network was being developed for deployments where teachers' XOs will be distributed servers, thus, it will be useful to delegate some of computing to students' XOs;
* Originally, Sugar Network was being developed for deployments where teachers' XOs will be Node 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 on a client side;
* Stimulate doing behaviour when it should be possible to create new client application or tweak existing on a client side;
* It is all time possible to create Web application on a server side.
* It is all time possible to create Web application on a server side.
Line 114: Line 85:
* Data accessible from removable devices like USB sticks or SD cards.
* Data accessible from removable devices like USB sticks or SD cards.


=== Implementations ===
== Synchronization ==
 
To let Network participant, connected to particular [[#Node_servers|Node server]], interact with people from another Node servers or with people from the Internet (Master server), Node servers need to be synchronized.
 
Server might be synchronized:


* Sugar Network [[Platform_Team/Sugar_Network/Browser|Browser]].
* With the Master, if connectivity presents;
* With the Master or any other Node servers via the [[Wikipedia:Sneakernet|Sneakernet]].


== Getting involved ==
== Getting involved ==