<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body bgcolor="#ffffff" text="#000000">
<style type="text/css">#toc, .toc, .mw-warning { border: 1px solid rgb(170, 170, 170); background-color: rgb(249, 249, 249); padding: 5px; font-size: 95%; }#toc h2, .toc h2 { display: inline; border: medium none; padding: 0pt; font-size: 100%; font-weight: bold; }#toc #toctitle, .toc #toctitle, #toc .toctitle, .toc .toctitle { text-align: center; }#toc ul, .toc ul { list-style-type: none; list-style-image: none; margin-left: 0pt; padding-left: 0pt; text-align: left; }#toc ul ul, .toc ul ul { margin: 0pt 0pt 0pt 2em; }#toc .toctoggle, .toc .toctoggle { font-size: 94%; }body { font-family: 'Times New Roman'; color: rgb(0, 0, 0); widows: 2; font-style: normal; text-indent: 0in; font-weight: normal; text-align: left; font-variant: normal; text-decoration: none; font-size: 12pt; }table { }td { border-collapse: collapse; text-align: left; vertical-align: top; }p, h1, h2, h3, li { color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 12pt; text-align: left; }</style>
<div>
<p><span style="font-style: italic;">"The most important part of
a christmas gift is the packaging." - My father-in-law
(acording to my wife)<br>
<br>
</span><span style="font-weight: bold;">Dextrose Activity Pack</span><br>
<br>
As maybe you know, we started giving some maintenance to a
collection of activities - the Dextrose Activity Pack. These
activities will come with Dextrose but you will also be able to
download them as a pack.</p>
<p> My plan is you will be able to download an activity
catalogue. Think of "Add & Remove Activities" like in
Ubuntu, except activity bundles may come precached so that you
can download an entire "Activity Pack" into USB or otherwise
distribute offline or online as a single download.<br>
<br>
Currently ASLO, Sugar Labs's Activity Library does not cover
this. Obtaining/updating several activities at once over a slow
link is a pain.</p>
<p>Deployments could use this mechanism to distribute new
activities / updates.<br>
<br>
<span style="font-style: italic;">The Catalogue<br>
</span></p>
<p>Looking at the catalogue, I think it should be <span
style="text-decoration: underline;">visually attractive</span>,
have screenshots, authors, a description. It could even offer a
way to provide feedback for each activity and/or interact with
other users.</p>
<p></p>
<p>In order to provide an interesting package system for deployers
and end users, I think I need to focus on building this
Catalogue, make it really nice and user friendly.</p>
<p></p>
<p><b><span style="font-style: italic;">The Sugar WebSDK</span></b></p>
<p></p>
<p>I've decided to develop a framework for the approach I'm taking
with the Catalogue. The pattern is known as
Model-View-Controller and is widely used in web industry and
other places [0].<br>
</p>
<p></p>
<p>In short, we provide a View layer that is powered by Webkit.
This layer is connected thru events with the Controller layer,
which is implemented in Python. The Controller interacts with
the Model, also in Python, the layer which handles data. In
turn, the View may be updated. Javascript will also be
available.</p>
<p></p>
<p>The good part is that all the components are already there.
I've been doing research and I found Python Webkit DOM Bindings
[1]. The point of Sugar WebSDK is not making Web .xo bundles,
but implementing the GUI part of the activity (except for sugar
toolbars) as a Webkit window, effectively turning it into a GUI
toolkit engine. A similar approach was taken by "Titanium
Appcelerator Desktop SDK" [2] which powers the Status.Net
Desktop client [3].</p>
<p></p>
<p>I believe the ability to effectively make attractive interfaces
in PyGTK is pretty scarce. Doing so is also very time consuming.
OTOH there is a huge, mature offering of talented web designers
out there. Embedded javascript might allow for interesting
visual tricks like jquery's fade effects, or even full HTML5
gadgets/widgets.</p>
<p></p>
<p>I expect the Activity ecosystem can make good use of a
framework which allows to distribute the production of an
Activity among a team that can include traditional HTML/CSS
designers. I know we can.</p>
<p></p>
<p>I intent to make this WebSDK a Sugar Labs project. <span
lang="-none-">This framework will be shared to the developer
community with a tutorial and of course, will be used to build
the Activity Pack Catalogue.</span></p>
<p dir="ltr" style="text-align: left; margin-bottom: 0in;
margin-top: 0in; margin-right: 0in;"><b><i>RoadMap</i></b></p>
<p></p>
<ul>
<li>Initial Hello World of Sugar WebSDK - Beginning of July</li>
<li>Interface Design of Activity Pack Catalogue - July</li>
<li>Implementation of Catalogue functionality - August</li>
</ul>
<p>This would be enough for a first "beta" release.</p>
<p>Focus after that should be on polish and documentation for a
release of both the WebSDK and the Activity Pack Catalogue.</p>
<p></p>
<p><i>Help appreciated</i></p>
<p></p>
<p>Currently I'm done with researching and ready to implement. If
I missed something it'd be nice to know, as well as general
feedback on the WebSDK idea. I especially appreciate prior
experience and gotchas that may save me time.<br>
</p>
<p></p>
<p>Open questions remain with the back-end package functionality:
How it all interacts with ASLO and the Sugar update mechanism.</p>
<p></p>
<p><span lang="-none-">I'm inspired partly by some insights Lucian
had with Webified. Also Alsroot, with the brilliant sweets
project. </span></p>
<p></p>
<p>My impression: ASLO+ project and Sweets packaging system
could probably be the backend medium term. An implementation
reusing Anish's metadata updater code is probably the lowest
hanging fruit.<br>
</p>
<p>Sincerely,</p>
<p>Sebastian<br>
Somos Azucar<br>
Activity Central Activity Team<br>
</p>
<p>[0] - <a
href="http://en.wikipedia.org/wiki/Model_View_Controller">http://en.wikipedia.org/wiki/Model_View_Controller</a><br>
[1] - <a href="http://www.gnu.org/software/pythonwebkit/">http://www.gnu.org/software/pythonwebkit/</a><br>
[2] - <a
href="http://developer.appcelerator.com/doc/desktop/python">http://developer.appcelerator.com/doc/desktop/python</a><br>
[3] - <a href="http://status.net/desktop">http://status.net/desktop</a><a
href="http://wiki.appcelerator.org/display/guides/Getting+Started+with+Titanium#GettingStartedwithTitanium-TitaniumDesktopSDK"></a></p>
<p></p>
</div>
</body>
</html>