<!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>