Changes

Jump to navigation Jump to search
add pyjamas-desktop SUGAR port idea
Line 130: Line 130:     
*Skills needed: intermediate GTK and python skillz
 
*Skills needed: intermediate GTK and python skillz
 +
 +
==== Port of Sugar to Pyjamas-Desktop ====
 +
 +
A platform-independent reimplementation of PyGTK and PyGObject which utilises Pyjamas-Desktop to implement (near-)identical PyGTK widgets.  A proof-of-concept which can be used as the basis has already been completed - the [http://code.google.com/p/pyjamas/wiki/GsocLlpamies Llpamies branch of pyjamas] and merged into the current pyjamas infrastructure.  A transparent split of the SUGAR Activity infrastructure from the GUI front-end display code (along MVC lines) by using overrides of the python "__import__" method, adding in an RPC mechanism (JSONRPC recommended).  Again, the Llpamies branch has already achieved this and provides the basis and inspiration.  For example, any pyjamas applications which had "import md5": in the llpamies branch actually resulted in JSONRPC calls of any "md5" module methods, which were actually executed SERVER-SIDE.
 +
 +
The consequences of providing this level of abstraction are quite startling: not only would it be conveniently and easily possible to install Sugar onto Win32 platforms (thanks to the MSHTML Pyjamas-Desktop port) but also it would be possible to have all the benefits of a client-server architecture.  Thanks to the nature of the Pyjamas API, that would be an extremely _rich_ "client", including being a web browser client.  Also, you get "remote desktop" functionality "for free".  i.e. thanks to the client-server architecture, a student can publish their work via the server (running on their
 +
 +
The work involves:
 +
 +
* writing alternative infrastructure, replacing the c code gtk widgets with pyjamas widgets (e.g. the sugar menu gtk widget can go, and can subclass the pyjamas MenuBar widget.  Icon can subclass pyjamas Image class. etc. etc.)
 +
* the Llpamies GTK browser port, containing the reimplementation of gtk and gobject, needs to be extended and improved
 +
* some serious discussion needs to take place on how SVG Canvas support is to be done.  Pyjamas now has a port of GWTCanvas (which uses VML on MSHTML and IE6,7 and 8, but uses 2D SVG on all other browsers and all other brower engines) so there is an abstracted API which could be used to create vector graphics in a platform-independent fashion.
 +
* writing a special importers.py (similar to setuptools zip-archives) which notices module imports such as activity and profile imports, and seamlessly creates a JSONRPC service to farm the function call out to a server (even if it's running on 127.0.0.1).  pyjamas-desktop already has example code that performs module import overrides, and the llpamies branch already has example code that performs JSONRPC function call farming.
 +
 +
 +
* Priority for Sugar: TBD
 +
* Difficulty (as a GSoC project): Advanced
 +
* Skills needed: JSONRPC, Web Framework(s), PyGTK, PyGobject, Python, HTML, CSS, [http://pyjs.org Pyjamas].
    
=== Toolkits / Frameworks for developers ===
 
=== Toolkits / Frameworks for developers ===
4

edits

Navigation menu