Difference between revisions of "Platform Team/Sugar Network/Implementation"

From Sugar Labs
Jump to navigation Jump to search
Line 3: Line 3:
 
== Summary ==
 
== Summary ==
  
The requirements:
+
The design and implementation are tailored by the following intentions:
  
* Implement the initial server in a [[Platform_Team/Sugar_Network/0.1/Roadmap|short period of time]];
+
* Implementation should be as lightweight as possible to run all components on restricted hardware like XO laptops;
* Server should work on [[Deployment_Team/Peru/Puno#The_problem|XO laptops]];
+
* Minimize any maintaining costs as much as possible to use Sugar Network in environments like offline schools where the only maintainers are not IT skilled people;
* System should support synchronisation between distributed servers and provide full featured text search.
+
* Assume decentralization scheme when Sugar Network nodes might be started on different servers with further online or offline synchronization with the master.
  
That's why using [[Platform_Team/Sugar_Network/Active_Document|Active Document]] to:
+
To accomplish above tasks, Sugar Network content is handled by the [[Platform_Team/Active_Document|active-document]] library which uses Xapian to index content and simple filesystem storage (might be changed in the future).
  
* Server should be as simple/lightweight as possible;
+
Sugar Network is represented by two major applications to run on Sugar Network node or users side:
* No SQL, just NoSQL;
 
* Since server should support full featured text search, use Xapian and keep it as a "NoSQL replacement" with storing data directly in files system;
 
* If server will start serving users from the Internet and current implementation won't manage to handle multiple requests, another implementation might be created.
 
  
All [[Sugar_Network/Concept#Resources|resources]] are being represented as Active Document's classes, resource objects as Active Document's objects.
+
* [[#sugar-network-node|sugar-network-node]], and,
 +
* [[#sugar-network-client|sugar-network-client]].
  
== Usage ==
+
In both cases, applications provide RESTful [[Platform_Team/Sugar_Network/API|API]] as the only access point for outer usage. Any end users related functionality implemented in Sugar Network [[Platform_Team/Sugar_Network#Clients|clients]] on top of API providers.
  
=== Public instance ===
+
== sugar-network-node ==
  
Testing instance is {{Code|api.network.sugarlabs.org}}. It support HTTPS connections using StartSSL certificate.
+
== sugar-network-client ==
  
Add the {{Code|18.85.44.120 api.network.sugarlabs.org}} IP to {{Code|/etc/hosts}} file and use http://api.network.sugarlabs.org:8000 as connection url.
+
== Usage ==
 
 
=== Local instance ===
 
 
 
Attach [http://download.sugarlabs.org/packages/Server:/Factory/ Server:Factory] repository. For Ubuntu repositories, download GPG key:
 
 
 
wget -qO- <REPO-URL>/Release.key | sudo apt-key add -
 
 
 
And install {{Code|sugar-network-server}} package.
 
 
 
To see current configuration:
 
 
 
sugar-network-server config
 
 
 
Default configuration is (tweak {{Code|/etc/sugar-network-server.conf}} file to change it):
 
 
 
* server listens {{Code|0.0.0.0:8000}} address;
 
* database in {{Code|/var/lib/sugar-network}} directory;
 
* log directory in {{Code|/var/log/sugar-network}}.
 
 
 
To start server:
 
 
 
/etc/init.d/sugar-network-server start
 
 
 
To simplify testing, untar example [http://people.sugarlabs.org/~alsroot/db.tar.xz db data] to {{Code|/var/lib/sugar-network}} and restart server (it will take some time to create indexes).
 
 
 
== Features ==
 
  
=== Collecting usage statics ===
+
Install ''sugar-network'' package from the Factory repository from [[Sweets Distribution]] or checkout sources from [http://git.sugarlabs.org/network Gitorious]:
  
Server will accept [[Platform_Team/Usage_Statistics|usage statistics]] from clients (and, for master server, from nodes) and will keep them in {{Code|--stats-root}} directory.
+
git clone git://git.sugarlabs.org/network/network.git --recurse-submodules
  
== Todo ==
+
== See Also ==
  
* Network notifications framework to, e.g., let client cache resources and refetch them only on updates. Reuse existing or implement something similar to Facebook's [http://developers.facebook.com/docs/reference/api/realtime/ real-time updates].
+
* Sugar Network [[Platform_Team/Sugar_Network/API|API]].
* Support collaborative work on Wiki pages for different resources.
+
* Distribution [[Sugar_Network#Try_it|options]].
 +
* Sugar Network [[Platform_Team/Sugar_Network#Clients|clients]].
  
 
== Getting involved ==
 
== Getting involved ==
  
 
{{:Sugar_Network/Feedback}}
 
{{:Sugar_Network/Feedback}}
* [[Sugar Server Kit]]'s [http://git.sugarlabs.org/server Gitorious project] for server side libraries.
 
* Sugar Network's [http://git.sugarlabs.org/network Gitorious projects] itself.
 

Revision as of 23:13, 26 November 2012

Sugar Network version cycle: | 1.0 |

Summary

The design and implementation are tailored by the following intentions:

  • Implementation should be as lightweight as possible to run all components on restricted hardware like XO laptops;
  • Minimize any maintaining costs as much as possible to use Sugar Network in environments like offline schools where the only maintainers are not IT skilled people;
  • Assume decentralization scheme when Sugar Network nodes might be started on different servers with further online or offline synchronization with the master.

To accomplish above tasks, Sugar Network content is handled by the active-document library which uses Xapian to index content and simple filesystem storage (might be changed in the future).

Sugar Network is represented by two major applications to run on Sugar Network node or users side:

In both cases, applications provide RESTful API as the only access point for outer usage. Any end users related functionality implemented in Sugar Network clients on top of API providers.

sugar-network-node

sugar-network-client

Usage

Install sugar-network package from the Factory repository from Sweets Distribution or checkout sources from Gitorious:

git clone git://git.sugarlabs.org/network/network.git --recurse-submodules

See Also

Getting involved

  • Submit your bug report or feature request.
  • Browse our implementation discussions, and post your feedback. (You should join this discussion list in order to avoid having your messages postponed for moderation.)