Line 1: |
Line 1: |
− | This page is an overview of technical implementation of the Sugar Network. See also the [[Sugar_Network|introduction page]] and the [[Sugar_Network/Concept|basic concepts overview]]. | + | This is a twin page of Sugar Network's [[Sugar_Network/Concept|basic concepts]] from technical point of view. See also the [[Sugar_Network|introduction page]]. |
| | | |
| == Overview == | | == Overview == |
Line 11: |
Line 11: |
| | | |
| === Components === | | === Components === |
| + | |
| + | This is technical view on [[Sugar_Network/Concept#Overview|three levels]] of the Sugar Network: |
| + | |
| + | * [[#Server|Server side]], |
| + | * [[#Conceptual_level|Conceptual level]], |
| + | * [[#Client|Client side]]. |
| + | |
| + | == Server == |
| | | |
| [[File:Sugar-networks-architecture.png|right]] | | [[File:Sugar-networks-architecture.png|right]] |
| | | |
− | The Sugar Network consists of different types of components:
| + | Server side is represented by: |
| | | |
− | * [[#Server|Server side]] that provide [[Platform_Team/Sugar_Network/API|API]] for clients:
| + | * [[#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); |
− | ** [[#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);
| + | * 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 [[#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 [[Platform_Team/Sugar_Network/API|API]] to interact with a server;
| |
− | ** Client application that [[#Personal_server|provides]] limited [[Platform_Team/Sugar_Network/API|API]] to support server-less workflow.
| |
− | | |
− | == 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 [[#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 [[#Mothership|Mothership]] or to an [[#Distributed_servers|intermediate server]]. |
Line 49: |
Line 51: |
| * With the Mothership, if connectivity presents; | | * With the Mothership, if connectivity presents; |
| * With the Mothership or any other distributed servers via the [[Wikipedia:Sneakernet|Sneakernet]]. | | * With the Mothership or any other distributed servers via the [[Wikipedia:Sneakernet|Sneakernet]]. |
| + | |
| + | == Conceptual level == |
| + | |
| + | This is how Sugar Network looks like on [[Sugar_Network/Concept|conceptual level]] represented by the [[Platform_Team/Sugar_Network/API|API]]. |
| + | |
| + | === Objects model === |
| + | |
| + | {{:Platform_Team/Sugar_Network/Objects_model}} |
| + | |
| + | 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 layer but it might be reused for [http://groups.google.com/group/sugar-network/msg/f5a1b4d78494a5d3 teachers related workflows]: |
| + | |
| + | * {{Code|default}}, 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]]. |
| | | |
| == Client == | | == Client == |
| + | |
| + | This is what Network participants are interacting with. This is a software that let people get access to the Sugar Network and define how Sugar Network should look like from users point of view. User experience, that these clients provide, might be too different from a client to a client. Starting from a couple of elements in the already existing software's [[Wikipedia:Graphical_user_interface|GUI]] (when people even don't suspect they are interacting with the Sugar Network) and ending with clients that represent conceptual level as close as possible. |
| + | |
| + | Client side is represented by: |
| + | |
| + | * Client application that uses [[Platform_Team/Sugar_Network/API|API]] to interact with a server; |
| + | * Client application that [[#Personal_server|provides]] limited [[Platform_Team/Sugar_Network/API|API]] to support server-less workflow. |
| | | |
| Client application is local, for reasons: | | Client application is local, for reasons: |