<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sugarlabs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BryanWB</id>
	<title>Sugar Labs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sugarlabs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BryanWB"/>
	<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/go/Special:Contributions/BryanWB"/>
	<updated>2026-05-30T01:28:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=51469</id>
		<title>Karma</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=51469"/>
		<updated>2010-04-26T08:31:29Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TOCleft}}&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Project]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Image:Karma.png|right]]&lt;br /&gt;
&lt;br /&gt;
== The Karma Project ==&lt;br /&gt;
&lt;br /&gt;
Karma is a framework for creating educational software using JavaScript, html5, and SVG. The Karma team is primarily focused on developing Sugar activities but you can also Karma to create lessons that run in any web browser that supports html5. The best ways to get involved are to join the [http://groups.google.com/group/karmajs mailing list] and [http://git.olenepal.org/karma/karma get the code]&lt;br /&gt;
&lt;br /&gt;
=== Rationale ===&lt;br /&gt;
&lt;br /&gt;
Anyone with a modern standards-compliant web browser and a text editor should be able to create learning activities that can be used by anyone with a computer. Sugar should not be a walled garden that only allows learning activities expressly designed for it and it alone but rather gives extra power and depth to learning activities. Karma uses a specialized vocabulary that features a number of specialized terms. Please refer to the [[Karma/Dictionary|Karma Dictionary]] early and often.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
&lt;br /&gt;
Karma is a sub-project of Sugar Labs that is under active development. The latest examples can be seen at [http://karma.sugarlabs.org http://karma.sugarlabs.org]. You can also check out the [http://karmaproject.wordpress.com Karma Project blog] for updates.&lt;br /&gt;
&lt;br /&gt;
To try out the karma examples you need to have an html5-capable browser. The Browse activity within Sugar does not currently support html5. To try out karma within Sugar you need to install [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] and its webkit dependencies or run Firefox 3.5 from the command-line (yum install pywebkitgtk WebKit-gtk gnome-python2-gconf).&lt;br /&gt;
&lt;br /&gt;
The current focus of development is to convert Nepal&#039;s set of lessons coded in Squeak smalltalk. You can find the list of lessons to be converted [http://spreadsheets.google.com/pub?key=tweUJyn1BkEciHqVtSvCYDA&amp;amp;output=html here]. This is a good place for new contributors to get started&lt;br /&gt;
&lt;br /&gt;
=== What Karma Is ===&lt;br /&gt;
&lt;br /&gt;
* Karma is a simple framework to create simple interactive learning activities primarily for Sugar but also to be viewable through any web browser that supports html5&lt;br /&gt;
* Karma is used to create simple activities that run off-line w/out access to the Internet&lt;br /&gt;
* Karma is for web developers who want to contribute to Sugar using their current skills&lt;br /&gt;
* Karma is built on top of open web standards such as html5, javascript, and CSS.&lt;br /&gt;
* Karma is built to run on top of web browsers that support html5, particularly the canvas element.&lt;br /&gt;
* Karma is built around the concept of individual &amp;quot;lessons&amp;quot; and multiple lessons can be aggregated into a sugar activity&lt;br /&gt;
* Karma is the evolution of OLE Nepal&#039;s work on the EPaath suite of lessons in Nepal&lt;br /&gt;
* Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress&lt;br /&gt;
* Karma is pedagogically agnostic. Pedagogical choices are left to the lesson author.&lt;br /&gt;
&lt;br /&gt;
=== What Karma Isn&#039;t ===&lt;br /&gt;
&lt;br /&gt;
* Karma is not compatible with Internet Explorer because Internet Explorer does not support html5 apis such as canvas, svg, localStorage, etc.&lt;br /&gt;
* Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities&lt;br /&gt;
* Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics&lt;br /&gt;
* Karma is not meant as a basis for a WYSIWG programming environment like TurtleArt, EToys, or Logo&lt;br /&gt;
* Karma is not built to support browsers that do not support html5, such as Internet Explorer and Firefox &amp;lt; version 3.5 &lt;br /&gt;
* Karma is not intended to teach programming to children though it could be used as such&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
&lt;br /&gt;
A Karma lesson is composed of a valid html5 document, javascript code, and css stylesheets and optional assets such as images, audio, video and lesson plans. Karma should be very easy for inexperienced developers to understand and work with. Even non-programmers should be able to make visible changes by tweaking the code and liberal use of cut-and-paste. Complexities such as integration with pootle, local storage, and certain types of animation should be abstracted so that novice developers don&#039;t have to understand them in order to effectively use Karma. Karma strictly adheres to the Model-View-Controller Pattern and similarly to unobtrusive JavaScript. In essence. you should be able to substantially change the look and feel of a Karma lesson by modifying the CSS or you could translate the activity, without having to understand the JavaScript code.&lt;br /&gt;
&lt;br /&gt;
=== Design Goals ===&lt;br /&gt;
* Unobtrusive JavaScript&lt;br /&gt;
* No globals&lt;br /&gt;
* No extension of native objects&lt;br /&gt;
&lt;br /&gt;
=== Technical Architecture ===&lt;br /&gt;
&lt;br /&gt;
* Run-time - Karma will work with basic functionality on any W3C standards-compliant browser that supports HTML5 tags canvas, audio, and svg. This notably excludes Microsoft&#039;s Internet Explorer. Karma will be particularly tailored to work with Sugar&#039;s Journal and collaboration through Telepathy. Longer-term we hope to extend Karma to take advantage of Sugar&#039;s collaboration features.&lt;br /&gt;
* Primary Programming language - [https://developer.mozilla.org/en/New_in_JavaScript_1.6 Javascript 1.6] &lt;br /&gt;
* [[Karma/i18n|i18n]] -- Pervasive internationalization is a critical part of Karma&lt;br /&gt;
** Supported types of i18n  -- ToDo&lt;br /&gt;
*** Output of Native Digits&lt;br /&gt;
*** Image switching per locale&lt;br /&gt;
*** Regular text, though it is unclear how to support plural forms, grammar shifts, and gender&lt;br /&gt;
*** Audio switching per locale&lt;br /&gt;
** Integration with pootle&lt;br /&gt;
* [[Karma/Utilities|Utilities]] -- we primarily use [http://www.narwhaljs.org narwhal] for command-line scripting and [http://code.google.com/p/jsdoc-toolkit/ jsdoc] for documentation&lt;br /&gt;
* Journal, Telepathy Integration -- method to be determined, perhaps using html5&#039;s offline storage feature, some resources [https://developer.mozilla.org/en/Offline_resources_in_Firefox here] and [http://www.weboshelp.net/webos-tutorials/156-palm-webos-html5-database-storage-tutorial here] &lt;br /&gt;
* Moodle Integration -- method to be determined&lt;br /&gt;
* [[Karma/Bundle_layout|Repo and Bundle layout]]&lt;br /&gt;
* UI Widgets&lt;br /&gt;
** [[Scoreboard]]&lt;br /&gt;
** Dialog -- use standard jQuery UI one?&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
&lt;br /&gt;
* [[Karma:Anatomy_of_Lesson|Anatomy of a Karma Lesson]]&lt;br /&gt;
* The [[Karma/Dictionary|Karma Dictionary]]&lt;br /&gt;
* [[Karma/Specifications|Karma Specifications]] (early draft)&lt;br /&gt;
* [[Karma/Anti-conventions|Anti-Conventions]] -- coding no-nos&lt;br /&gt;
* [[Karma/Layout_Converted_Squeak_Lessons|Layout for converted Squeak Lessons]]&lt;br /&gt;
* Source Code stored in http://git.olenepal.org/karma/karma&lt;br /&gt;
* Each lesson must be in a folder named according to the schema &amp;quot;karma_Grade_Maths_title_WeekNo&amp;quot; where the week number is optional &lt;br /&gt;
  The following are valid names&lt;br /&gt;
  karma_3_Maths_LargestNumber_15&lt;br /&gt;
  karma_2_English_MatchingPuzzle&lt;br /&gt;
  karma_6_Maths_AddingUpTo10_4&lt;br /&gt;
* Version Control and repository management see the [[Karma#Version_Control|Version Control]] section of this page&lt;br /&gt;
* Unit testing is required for the karma.js library but not for individual lessons http://karma.sugarlabs.org/tests/&lt;br /&gt;
* Project Documentation kept in the Sugar Labs wiki&lt;br /&gt;
* Coding conventions: Based on [http://www.dojotoolkit.org/developer/StyleGuide Dojo Style Guide] &lt;br /&gt;
** Use sadCamelCase for function names and variables&lt;br /&gt;
** Exception to above -- object constructors should start with a capital letter&lt;br /&gt;
** boolean variables should be prefixed with &amp;quot;is&amp;quot;, &amp;quot;has&amp;quot;, &amp;quot;can&amp;quot;, or &amp;quot;should&amp;quot;&lt;br /&gt;
** counters should be prefixed with &amp;quot;num&amp;quot; or &amp;quot;count&amp;quot;&lt;br /&gt;
** Whenever possible, use [http://www.jslint.com/ jslint]&lt;br /&gt;
* File naming conventions: lowercase letters, underscore instead of spaces  (need to write more about it)&lt;br /&gt;
* Coding Pattern - We generally try to follow this coding pattern as it makes it easier to browse your code&lt;br /&gt;
 Put code in following order&lt;br /&gt;
 1) variable declarations&lt;br /&gt;
 2) method declarations&lt;br /&gt;
 3) method calls&lt;br /&gt;
&lt;br /&gt;
== Version Control == &lt;br /&gt;
Currently all lessons are stored in the examples/ folder of [http://git.olenepal.org/karma/karma main karma repository]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;&lt;br /&gt;
Here is how you can use the karma_lesson template to create a new repository from scratch&lt;br /&gt;
&lt;br /&gt;
  $ git clone git://git.sugarlabs.org/karma_lesson/mainline.git&lt;br /&gt;
  $ mkdir ../karma_3_English_3  # create a new lesson directory following our naming convention&lt;br /&gt;
  $ cp -r * ../karma_3_English_3  &lt;br /&gt;
  $ cd ../karma_3_English_3&lt;br /&gt;
  $ rm -r .git     # make sure you get rid of the old git directory&lt;br /&gt;
  $ git init&lt;br /&gt;
  $ git add .&lt;br /&gt;
  $ git commit -a -m &amp;quot;first commit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now go to the http://git.sugarlabs.org/projects/new, make sure you are logged in&lt;br /&gt;
Create a new project, use the same name as you did for your lesson&#039;s main folder&lt;br /&gt;
then,&lt;br /&gt;
  $ git remote add origin git://...   # the pubic push url&lt;br /&gt;
&lt;br /&gt;
Then on to coding your lesson ;)&lt;br /&gt;
&lt;br /&gt;
From then on &lt;br /&gt;
 $ git push origin master   # will sync your local tree w/ the server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tagging&#039;&#039;&#039; -- a karma lesson can be in only one of two states, stable or unstable. Any commit tagged &#039;stable&#039; is the stable version of your code. Every other version of your code is unstable. We will not use numeric versioning such as 0.1, 1.0, 1.2, etc. for the foreseeable future.&lt;br /&gt;
&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
[[Karma:Meeting 21 December 2009]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Project ==&lt;br /&gt;
&lt;br /&gt;
Karma started as a GSoC project with Felipe Lopez Toledo &amp;quot;SubZero&amp;quot; as the student participant and [[USER:BryanWB| Bryan Berry]] as mentor. &lt;br /&gt;
&lt;br /&gt;
=== GSoC Meetings ===&lt;br /&gt;
&lt;br /&gt;
Notes from GSoC meetings - kept for archival purposes&lt;br /&gt;
* [[Karma:Meeting 12 May 2009]]&lt;br /&gt;
* [[Karma:Meeting 02 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 09 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 23 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 30 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Jul 2009]]&lt;br /&gt;
* [[Karma:Meeting 4 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 11 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 18 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 24 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 08 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 14 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Sep 2009]]&lt;br /&gt;
&lt;br /&gt;
== Project Roadmap ==&lt;br /&gt;
&lt;br /&gt;
==== 0.1 &amp;quot;Osito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Was completed September 11, 2009&lt;br /&gt;
&lt;br /&gt;
* 1 Working example in &amp;quot;adding_up_to_10&amp;quot;&lt;br /&gt;
* cleaned up documentation with jsdocs api documentation and cleaned up README.txt&lt;br /&gt;
* integrate chakra and &amp;quot;adding_up_to_10&amp;quot; and knavbar&lt;br /&gt;
* adding_up_to_10 works on the XO&lt;br /&gt;
** Surf&lt;br /&gt;
** Browse&lt;br /&gt;
&lt;br /&gt;
==== 0.2 &amp;quot;Gatito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Completed mid-December 2009&lt;br /&gt;
&lt;br /&gt;
* unit testing added to karma.js using QUnit&lt;br /&gt;
* API documented w/ jsdoc-toolkit&lt;br /&gt;
* support for SVG and canvas animation &lt;br /&gt;
* 3 working examples&lt;br /&gt;
** Adding_Up_to_10 using both SVG and canvas&lt;br /&gt;
** Quadrilaterals &lt;br /&gt;
** &amp;quot;Conozco A Uruguay&amp;quot; done with karma  -- 50% done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 0.3 &amp;quot;niño&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due 31 March 2010&lt;br /&gt;
&lt;br /&gt;
* Full i18n support&lt;br /&gt;
* All Squeak lessons converted to Karma&lt;br /&gt;
* Integrate all of the existing E-Paath lesson into chakra &lt;br /&gt;
* narwhal build script to build one giant karma bundle w/ all the E-Paath lessons inside it and chakra&lt;br /&gt;
* At least 6 lessons ready that have been translated into 3 languages each&lt;br /&gt;
* Version 0.1 draft of karma specification done&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
&lt;br /&gt;
here lies a lot of links to resources specific to karma&lt;br /&gt;
&lt;br /&gt;
UI&lt;br /&gt;
* Iphone Human Interface Guide http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/mobilehig/MobileHIG.pdf&lt;br /&gt;
* Palm Pre interface guide http://developer.palm.com/images/palm/pdf/palm_webos_hi_guidelines.pdf&lt;br /&gt;
* 30 Usability Issues To Be Aware Of http://www.smashingmagazine.com/2007/10/09/30-usability-issues-to-be-aware-of/&lt;br /&gt;
* 10 Usability Nightmares You Should Be Aware Of http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/&lt;br /&gt;
* &amp;quot;The Design of Everyday Things&amp;quot; book by Don Norman&lt;br /&gt;
* &amp;quot;Don&#039;t Make me think&amp;quot; by Steve Krug, guide to usability for web apps&lt;br /&gt;
&lt;br /&gt;
HTML5&lt;br /&gt;
* http://www.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/&lt;br /&gt;
* http://www.w3.org/TR/html5-diff/  Differences between html4 and html5&lt;br /&gt;
* [http://diveintohtml5.org/ Dive Into HTML5]&lt;br /&gt;
&lt;br /&gt;
General Web Design&lt;br /&gt;
* &amp;quot;Web Design in a Nutshell&amp;quot; from O&#039;Reilly&lt;br /&gt;
* Apple &amp;quot;Web Page Development: Best Practices&amp;quot; http://developer.apple.com/internet/webcontent/bestwebdev.html&lt;br /&gt;
&lt;br /&gt;
Canvas&lt;br /&gt;
* demos: http://html5demos.com/&lt;br /&gt;
* basics: http://dev.opera.com/articles/view/html-5-canvas-the-basics/&lt;br /&gt;
* painting web app: http://dev.opera.com/articles/view/html5-canvas-painting/&lt;br /&gt;
* mozilla canvas tutorial: https://developer.mozilla.org/en/Canvas_tutorial&lt;br /&gt;
* using canvas on webkit: http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/Canvas.html&lt;br /&gt;
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html&lt;br /&gt;
&lt;br /&gt;
SVG&lt;br /&gt;
* The [http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html SVG Primer] a very detailed and in-depth resource&lt;br /&gt;
* [http://raphaeljs.com/reference.html Raphaeljs documentation]&lt;br /&gt;
* https://developer.mozilla.org/en/svg&lt;br /&gt;
&lt;br /&gt;
Javascript&lt;br /&gt;
* [http://eloquentjavascript.net Eloquent Javascript] best beginning javascript resource&lt;br /&gt;
* &amp;quot;Javascript: The Good Parts&amp;quot; book by Doug Crockford&lt;br /&gt;
* &amp;quot;jQuery in Action&amp;quot; book&lt;br /&gt;
* &amp;quot;Pro Javascript Techniques&amp;quot; by john resig&lt;br /&gt;
* All the tutorials at www.ejohn.org, esp.&lt;br /&gt;
** http://ejohn.org/blog/how-javascript-timers-work/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Coding Tools and Conventions&lt;br /&gt;
* Firebug  --- http://www.getfirebug.com&lt;br /&gt;
* Web-Inspector --- webkit&#039;s answer to firebug&lt;br /&gt;
* Browsers --- We primarily work with Chromium and Firefox &amp;gt; 3.5&lt;br /&gt;
* For emacs users -- nxhtml mode and magit.el for working w/ git&lt;br /&gt;
* [http://www.jslint.com/ jslint]&lt;br /&gt;
* [http://www.inkscape.org inkscape]&lt;br /&gt;
* [http://narwhaljs.org narwhal]&lt;br /&gt;
&lt;br /&gt;
== Subpages ==&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Activity_Team/Project_Ideas&amp;diff=50327</id>
		<title>Activity Team/Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Activity_Team/Project_Ideas&amp;diff=50327"/>
		<updated>2010-03-29T07:51:21Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* New activity requests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TOCright}}&lt;br /&gt;
[[Category:Activity Team]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:Participate]]&lt;br /&gt;
[[Category:Idea]]&lt;br /&gt;
&lt;br /&gt;
== New activity requests ==&lt;br /&gt;
&#039;&#039;Please sign these as you add them.&#039;&#039;&lt;br /&gt;
* [[Activity Team/Project Ideas/Micro Messages]] --[[User:TimClicks|TimClicks]] 21:31, 1 October 2009 (UTC)&lt;br /&gt;
* [[Activities/Spelling]].&lt;br /&gt;
* [[Activities/Quiz]].&lt;br /&gt;
* Translate activity - consider sugarizing http://translate.sourceforge.net/wiki/virtaal/index  Also consider investigating cscott&#039;s Click2Trans.  Also consider a View Source like View Translations UI.&lt;br /&gt;
* See also a list of activity ideas here: [[Development Team/Project Ideas]]&lt;br /&gt;
* A Feedback item on the Control Panel.  http://dev.sugarlabs.org/ticket/340  [[User:Wade|Wade]] 18:19, 19 February 2009 (UTC)&lt;br /&gt;
* A &#039;&#039;&#039;clock&#039;&#039;&#039; for the frame.  (See [[Design Team/Proposals/Frame#Frame Clock]].)&lt;br /&gt;
: Some challenges:&lt;br /&gt;
:* suspend/resume friendly (maybe updates only on frame view and resume),&lt;br /&gt;
:* links to the settings (control) panel to update system/local time,&lt;br /&gt;
:* links to [http://wiki.laptop.org/go/Clock_activity Clock activity] for learning to tell time, to [http://wiki.laptop.org/go/Stopwatch Stopwatch] for timing events and setting alarms, and [http://wiki.laptop.org/go/Time Time] for learning more about time (which might eventually have a link to [http://wiki.laptop.org/go/Moon Moon]). &#039;&#039;--[[User:FGrose|FGrose]] 05:37, 31 January 2009 (UTC)&#039;&#039;&lt;br /&gt;
* A &#039;&#039;&#039;calendar&#039;&#039;&#039; for the frame. &#039;&#039;--[[User:FGrose|FGrose]] 05:37, 31 January 2009 (UTC)&#039;&#039;&lt;br /&gt;
* Blogging activity for Sugar.&lt;br /&gt;
* Blog aggregator for a mesh network.&lt;br /&gt;
* Create Drupal/Wordpress sugar compatible themes and modules.&lt;br /&gt;
* Sugarize PiTiVi, uses pygtk and gstreamer so seems like something quite doable.&lt;br /&gt;
* Competitive/collaborative &amp;quot;trivia&amp;quot; activity -- there&#039;s a synchronized countdown, and then you get points for answering questions correctly and quickly.  Could use groupthink for scoring, maybe share data with assimilate/memorize? [[User:Cjb|Cjb]] 21:31, 26 January 2009 (UTC)&lt;br /&gt;
* [[Activities/Elect]] [http://www.openvotingconsortium.org/ Open Voting Consortium] secure, auditable, easy-to-use GPLed election suite.&lt;br /&gt;
* [http://lists.sugarlabs.org/archive/sugar-devel/2010-March/023168.html Pootle Integration for Karma] [[User:BryanWB|BryanWB]] 08:00 29 March 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Activity HIG (Human Interface Guidelines)==&lt;br /&gt;
&lt;br /&gt;
* tweak [[Human_Interface_Guidelines | Sugar HIG]]&#039;s sections [[User:Alsroot|alsroot]] 14:01, 17 January 2009 (UTC)&lt;br /&gt;
** what screen resolution should be minimal for activities? [[User:Alsroot|alsroot]] 14:01, 17 January 2009 (UTC)&lt;br /&gt;
** I think 1024x768 is a good minimum.  is this too low?&lt;br /&gt;
** thats enough for desktops, but netbooks may have something like 1024x600(Eee PC 900)&lt;br /&gt;
** Ok, 1024x600 sounds good.  I contacted Eben Eliason to ask about his involvement. [[User:Wade|Wade]] 21:37, 28 January 2009 (UTC)&lt;br /&gt;
** Response from Eben: No need for a new HIG but he plans to look over the regular HIG to make sure it is relevant to activities.&lt;br /&gt;
&lt;br /&gt;
*Further suggestions: [[User:satellit]]&lt;br /&gt;
** Resume for browse on a shared activity from an icon: Start as private with drop down to make shared. The resume shared from the top icon may not be required or wanted.&lt;br /&gt;
** Display of shared browse site name from icon on Neighborhood(F1)view raises privacy issues?&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
* Create activities@sugarlabs.org mailing list.&lt;br /&gt;
*: Questionable - I tend to think additional mailing lists just add additional barriers.[[User:Wade|Wade]] 01:34, 14 January 2009 (UTC)  &lt;br /&gt;
** or rather, migrate http://lists.laptop.org/listinfo/activities over to SL mailman&lt;br /&gt;
&lt;br /&gt;
== sugar-widgets library ==&lt;br /&gt;
&lt;br /&gt;
See [[Development Team/sugar-port]]&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Development Team/Project Ideas|a list of project ideas]]&lt;br /&gt;
==Subpages==&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAME}}/}}&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Activity_Team/Project_Ideas&amp;diff=50326</id>
		<title>Activity Team/Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Activity_Team/Project_Ideas&amp;diff=50326"/>
		<updated>2010-03-29T07:49:57Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* New activity requests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TOCright}}&lt;br /&gt;
[[Category:Activity Team]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:Participate]]&lt;br /&gt;
[[Category:Idea]]&lt;br /&gt;
&lt;br /&gt;
== New activity requests ==&lt;br /&gt;
&#039;&#039;Please sign these as you add them.&#039;&#039;&lt;br /&gt;
* [[Activity Team/Project Ideas/Micro Messages]] --[[User:TimClicks|TimClicks]] 21:31, 1 October 2009 (UTC)&lt;br /&gt;
* [[Activities/Spelling]].&lt;br /&gt;
* [[Activities/Quiz]].&lt;br /&gt;
* Translate activity - consider sugarizing http://translate.sourceforge.net/wiki/virtaal/index  Also consider investigating cscott&#039;s Click2Trans.  Also consider a View Source like View Translations UI.&lt;br /&gt;
* See also a list of activity ideas here: [[Development Team/Project Ideas]]&lt;br /&gt;
* A Feedback item on the Control Panel.  http://dev.sugarlabs.org/ticket/340  [[User:Wade|Wade]] 18:19, 19 February 2009 (UTC)&lt;br /&gt;
* A &#039;&#039;&#039;clock&#039;&#039;&#039; for the frame.  (See [[Design Team/Proposals/Frame#Frame Clock]].)&lt;br /&gt;
: Some challenges:&lt;br /&gt;
:* suspend/resume friendly (maybe updates only on frame view and resume),&lt;br /&gt;
:* links to the settings (control) panel to update system/local time,&lt;br /&gt;
:* links to [http://wiki.laptop.org/go/Clock_activity Clock activity] for learning to tell time, to [http://wiki.laptop.org/go/Stopwatch Stopwatch] for timing events and setting alarms, and [http://wiki.laptop.org/go/Time Time] for learning more about time (which might eventually have a link to [http://wiki.laptop.org/go/Moon Moon]). &#039;&#039;--[[User:FGrose|FGrose]] 05:37, 31 January 2009 (UTC)&#039;&#039;&lt;br /&gt;
* A &#039;&#039;&#039;calendar&#039;&#039;&#039; for the frame. &#039;&#039;--[[User:FGrose|FGrose]] 05:37, 31 January 2009 (UTC)&#039;&#039;&lt;br /&gt;
* Blogging activity for Sugar.&lt;br /&gt;
* Blog aggregator for a mesh network.&lt;br /&gt;
* Create Drupal/Wordpress sugar compatible themes and modules.&lt;br /&gt;
* Sugarize PiTiVi, uses pygtk and gstreamer so seems like something quite doable.&lt;br /&gt;
* Competitive/collaborative &amp;quot;trivia&amp;quot; activity -- there&#039;s a synchronized countdown, and then you get points for answering questions correctly and quickly.  Could use groupthink for scoring, maybe share data with assimilate/memorize? [[User:Cjb|Cjb]] 21:31, 26 January 2009 (UTC)&lt;br /&gt;
* [[Activities/Elect]] [http://www.openvotingconsortium.org/ Open Voting Consortium] secure, auditable, easy-to-use GPLed election suite.&lt;br /&gt;
* [http://lists.sugarlabs.org/archive/sugar-devel/2010-March/023168.html Pootle Integration for Karma]&lt;br /&gt;
&lt;br /&gt;
== Activity HIG (Human Interface Guidelines)==&lt;br /&gt;
&lt;br /&gt;
* tweak [[Human_Interface_Guidelines | Sugar HIG]]&#039;s sections [[User:Alsroot|alsroot]] 14:01, 17 January 2009 (UTC)&lt;br /&gt;
** what screen resolution should be minimal for activities? [[User:Alsroot|alsroot]] 14:01, 17 January 2009 (UTC)&lt;br /&gt;
** I think 1024x768 is a good minimum.  is this too low?&lt;br /&gt;
** thats enough for desktops, but netbooks may have something like 1024x600(Eee PC 900)&lt;br /&gt;
** Ok, 1024x600 sounds good.  I contacted Eben Eliason to ask about his involvement. [[User:Wade|Wade]] 21:37, 28 January 2009 (UTC)&lt;br /&gt;
** Response from Eben: No need for a new HIG but he plans to look over the regular HIG to make sure it is relevant to activities.&lt;br /&gt;
&lt;br /&gt;
*Further suggestions: [[User:satellit]]&lt;br /&gt;
** Resume for browse on a shared activity from an icon: Start as private with drop down to make shared. The resume shared from the top icon may not be required or wanted.&lt;br /&gt;
** Display of shared browse site name from icon on Neighborhood(F1)view raises privacy issues?&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
* Create activities@sugarlabs.org mailing list.&lt;br /&gt;
*: Questionable - I tend to think additional mailing lists just add additional barriers.[[User:Wade|Wade]] 01:34, 14 January 2009 (UTC)  &lt;br /&gt;
** or rather, migrate http://lists.laptop.org/listinfo/activities over to SL mailman&lt;br /&gt;
&lt;br /&gt;
== sugar-widgets library ==&lt;br /&gt;
&lt;br /&gt;
See [[Development Team/sugar-port]]&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Development Team/Project Ideas|a list of project ideas]]&lt;br /&gt;
==Subpages==&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAME}}/}}&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/Bundle_layout&amp;diff=49544</id>
		<title>Karma/Bundle layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/Bundle_layout&amp;diff=49544"/>
		<updated>2010-03-10T04:55:14Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Lesson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Main Karma Package ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A set of tools that will help you start working with Karma quickly&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is what is contained in the repository at http://git.sugarlabs.org/projects/karma/&lt;br /&gt;
&lt;br /&gt;
* Includes script for Karma activity generation, xo bundle generation&lt;br /&gt;
* includes &amp;quot;platform&amp;quot; files, i.e. a basic html5-capable browser that can be used to create an xo bundle&lt;br /&gt;
&lt;br /&gt;
 ROOT/                              ( ROOT is not actually a directory name, it just labels the top-level of this package )&lt;br /&gt;
    assets/                         ( images, audio, and text common to karma.html, examples, and the lessons for the launch page for all lessons )&lt;br /&gt;
           image/&lt;br /&gt;
           audio/&lt;br /&gt;
           locale_name/&lt;br /&gt;
                    image/            &lt;br /&gt;
                    locale_name.json   ( karma actually needs the .po file to be converted to .json )&lt;br /&gt;
                    audio/&lt;br /&gt;
    AUTHORS                         ( Should include names of everyone that has contributed to Karma main package )&lt;br /&gt;
    css/                           ( css/ and js/ contain the code common to all examples, lessons )&lt;br /&gt;
    COPYING                         ( Licensing information, should default to MIT License   ? how distinguish b/w code licensing and content licensing )&lt;br /&gt;
    docs/&lt;br /&gt;
    examples/                       ( working examples of karma lessons )&lt;br /&gt;
    index.html                     ( The starting page for accessing Karma lessons, should include links to the examples, known as the CHAKRA )&lt;br /&gt;
    js/                             ( css/ and js/ contain the code common to all examples, lessons, and karma.html )&lt;br /&gt;
    README&lt;br /&gt;
    tests/                          unit tests&lt;br /&gt;
&lt;br /&gt;
== Karma XO bundle ==&lt;br /&gt;
&lt;br /&gt;
* similar to E-Paath layout and uses the standard [[Development_Team/Almanac/Activity_Bundles|Sugar bundle structure]]&lt;br /&gt;
* It is still undecided whether karma will default to using Browse which is based on Firefox or [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] which based on webkit (Safari/Chrome). Surf requires that you install the rpms for pywebkitgtk and webkitgtk&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Below information is out-of-date&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;strike&amp;gt;&lt;br /&gt;
  activity/&lt;br /&gt;
         activity.info                          (activity info file)&lt;br /&gt;
         activity-web.svg                       (icon for activity as specified in activity.info)&lt;br /&gt;
         mimetypes.xml                          (map documents to MIME types)&lt;br /&gt;
         text-plain.svg                         (icons for documents, e.g. &amp;quot;text-plain.svg&amp;quot; for &amp;quot;text/plain&amp;quot;)&lt;br /&gt;
         text-html.svg&lt;br /&gt;
         contents                               (manifest for bundle contents)&lt;br /&gt;
         contents.sig                           (credentials for signed bundle)&lt;br /&gt;
         permissions.info                       (optional; &#039;&#039;&#039;not a stable API&#039;&#039;&#039;)&lt;br /&gt;
  assets/&lt;br /&gt;
  AUTHORS&lt;br /&gt;
  bin/&lt;br /&gt;
         launch.sh                           (launcher script)&lt;br /&gt;
  browser.dtd&lt;br /&gt;
  browser.py&lt;br /&gt;
  cert8.db&lt;br /&gt;
  clickToView.xml&lt;br /&gt;
  COPYING&lt;br /&gt;
  css/&lt;br /&gt;
  downloadmanager.py&lt;br /&gt;
  edittoolbar.py&lt;br /&gt;
  globalhistory.py&lt;br /&gt;
  icons&lt;br /&gt;
  index.html&lt;br /&gt;
  js/&lt;br /&gt;
  linkbutton.py&lt;br /&gt;
  karma&lt;br /&gt;
  karmaactivity.py&lt;br /&gt;
  lessons/&lt;br /&gt;
  locale&lt;br /&gt;
  MANIFEST&lt;br /&gt;
  messenger.py&lt;br /&gt;
  model.py&lt;br /&gt;
  palettes.py&lt;br /&gt;
  places.py&lt;br /&gt;
  po/ &lt;br /&gt;
  promptservice.py&lt;br /&gt;
  README&lt;br /&gt;
  securitydialogs.py&lt;br /&gt;
  sessionhistory.py&lt;br /&gt;
  sessionstore.py&lt;br /&gt;
  setup.py&lt;br /&gt;
  viewtoolbar.py&lt;br /&gt;
  utils/&lt;br /&gt;
  webtoolbar.py&lt;br /&gt;
&amp;lt;/strike&amp;gt;&lt;br /&gt;
== Lesson ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;consists of a single lesson&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
   lesson_name/&lt;br /&gt;
              assets/&lt;br /&gt;
                      {langCode}/         (files specific to langCode: en-US, en, es-MX, es, ....) and not the default locale&lt;br /&gt;
                      image/&lt;br /&gt;
                      audio/&lt;br /&gt;
                      svg/&lt;br /&gt;
                      video/&lt;br /&gt;
              &lt;br /&gt;
              css/&lt;br /&gt;
                     lesson.css&lt;br /&gt;
              index.html             &lt;br /&gt;
              js/&lt;br /&gt;
                  lesson.js      main logic of program&lt;br /&gt;
              kDoc.html   (viewer for lesson plan and teacher&#039;s Note)&lt;br /&gt;
              lessonPlan.html&lt;br /&gt;
              teachersNote.html&lt;br /&gt;
              start.html     (start page)&lt;br /&gt;
             &lt;br /&gt;
&lt;br /&gt;
*Notes:&lt;br /&gt;
# {langCode} represents the lang code and country code &lt;br /&gt;
# which will be the template language for assets/docs/* ?, English suggested&lt;br /&gt;
# suggestion: rename assets/{langCode}/docs/ to docs/{langCode}/ . This is based that at this moment there are no other kind of files under assets/ than &#039;docs&#039;&lt;br /&gt;
&lt;br /&gt;
The following is out of date but kept for history&lt;br /&gt;
&amp;lt;strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reading, Game and Exercise ==&lt;br /&gt;
&#039;&#039;consist of a single &#039;reading&#039;, &#039;game&#039; or &#039;exercise&#039; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 {type}/&lt;br /&gt;
              index.html               (valid html5 -- markup only includes visual elements and links in other resources, no inline code or styling )&lt;br /&gt;
              css/{type}.css           ( css files   -- specific to the lesson )&lt;br /&gt;
              js/{type}.js             ( javascript controlling logic for the lesson )&lt;br /&gt;
              po/                      ( translation files )&lt;br /&gt;
                  ne-NP.po             ( example translation file for Nepal - Nepali )&lt;br /&gt;
                  sp-ES.po             ( example translation file for traditional Spanish )&lt;br /&gt;
                  {langCode}.po        ( translation file )&lt;br /&gt;
              assets/&lt;br /&gt;
                     generic/          ( for language independent assets (e.g. arrows, background images, etc.) )&lt;br /&gt;
                        images/&lt;br /&gt;
                            preview.jpg  ( screenshot for Chakra  )&lt;br /&gt;
                        sounds/&lt;br /&gt;
                        videos/&lt;br /&gt;
                        docs/&lt;br /&gt;
                     ne/&lt;br /&gt;
                        images/&lt;br /&gt;
                        sounds/&lt;br /&gt;
                        videos/&lt;br /&gt;
                        docs/&lt;br /&gt;
                     en/&lt;br /&gt;
                        images/&lt;br /&gt;
                        sounds/&lt;br /&gt;
                        videos/&lt;br /&gt;
                        docs/&lt;br /&gt;
                     {langCode}/&lt;br /&gt;
                        images/&lt;br /&gt;
                        sounds/&lt;br /&gt;
                        videos/&lt;br /&gt;
                        docs/&lt;br /&gt;
* Notes&lt;br /&gt;
# {type} represents &#039;game&#039; or &#039;exercise&#039; or &#039;reading&#039;&lt;br /&gt;
# does docs/ is used?&lt;br /&gt;
&amp;lt;/stike&amp;gt;&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/Bundle_layout&amp;diff=49543</id>
		<title>Karma/Bundle layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/Bundle_layout&amp;diff=49543"/>
		<updated>2010-03-10T04:52:49Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* The Main Karma Package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Main Karma Package ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A set of tools that will help you start working with Karma quickly&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is what is contained in the repository at http://git.sugarlabs.org/projects/karma/&lt;br /&gt;
&lt;br /&gt;
* Includes script for Karma activity generation, xo bundle generation&lt;br /&gt;
* includes &amp;quot;platform&amp;quot; files, i.e. a basic html5-capable browser that can be used to create an xo bundle&lt;br /&gt;
&lt;br /&gt;
 ROOT/                              ( ROOT is not actually a directory name, it just labels the top-level of this package )&lt;br /&gt;
    assets/                         ( images, audio, and text common to karma.html, examples, and the lessons for the launch page for all lessons )&lt;br /&gt;
           image/&lt;br /&gt;
           audio/&lt;br /&gt;
           locale_name/&lt;br /&gt;
                    image/            &lt;br /&gt;
                    locale_name.json   ( karma actually needs the .po file to be converted to .json )&lt;br /&gt;
                    audio/&lt;br /&gt;
    AUTHORS                         ( Should include names of everyone that has contributed to Karma main package )&lt;br /&gt;
    css/                           ( css/ and js/ contain the code common to all examples, lessons )&lt;br /&gt;
    COPYING                         ( Licensing information, should default to MIT License   ? how distinguish b/w code licensing and content licensing )&lt;br /&gt;
    docs/&lt;br /&gt;
    examples/                       ( working examples of karma lessons )&lt;br /&gt;
    index.html                     ( The starting page for accessing Karma lessons, should include links to the examples, known as the CHAKRA )&lt;br /&gt;
    js/                             ( css/ and js/ contain the code common to all examples, lessons, and karma.html )&lt;br /&gt;
    README&lt;br /&gt;
    tests/                          unit tests&lt;br /&gt;
&lt;br /&gt;
== Karma XO bundle ==&lt;br /&gt;
&lt;br /&gt;
* similar to E-Paath layout and uses the standard [[Development_Team/Almanac/Activity_Bundles|Sugar bundle structure]]&lt;br /&gt;
* It is still undecided whether karma will default to using Browse which is based on Firefox or [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] which based on webkit (Safari/Chrome). Surf requires that you install the rpms for pywebkitgtk and webkitgtk&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Below information is out-of-date&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;strike&amp;gt;&lt;br /&gt;
  activity/&lt;br /&gt;
         activity.info                          (activity info file)&lt;br /&gt;
         activity-web.svg                       (icon for activity as specified in activity.info)&lt;br /&gt;
         mimetypes.xml                          (map documents to MIME types)&lt;br /&gt;
         text-plain.svg                         (icons for documents, e.g. &amp;quot;text-plain.svg&amp;quot; for &amp;quot;text/plain&amp;quot;)&lt;br /&gt;
         text-html.svg&lt;br /&gt;
         contents                               (manifest for bundle contents)&lt;br /&gt;
         contents.sig                           (credentials for signed bundle)&lt;br /&gt;
         permissions.info                       (optional; &#039;&#039;&#039;not a stable API&#039;&#039;&#039;)&lt;br /&gt;
  assets/&lt;br /&gt;
  AUTHORS&lt;br /&gt;
  bin/&lt;br /&gt;
         launch.sh                           (launcher script)&lt;br /&gt;
  browser.dtd&lt;br /&gt;
  browser.py&lt;br /&gt;
  cert8.db&lt;br /&gt;
  clickToView.xml&lt;br /&gt;
  COPYING&lt;br /&gt;
  css/&lt;br /&gt;
  downloadmanager.py&lt;br /&gt;
  edittoolbar.py&lt;br /&gt;
  globalhistory.py&lt;br /&gt;
  icons&lt;br /&gt;
  index.html&lt;br /&gt;
  js/&lt;br /&gt;
  linkbutton.py&lt;br /&gt;
  karma&lt;br /&gt;
  karmaactivity.py&lt;br /&gt;
  lessons/&lt;br /&gt;
  locale&lt;br /&gt;
  MANIFEST&lt;br /&gt;
  messenger.py&lt;br /&gt;
  model.py&lt;br /&gt;
  palettes.py&lt;br /&gt;
  places.py&lt;br /&gt;
  po/ &lt;br /&gt;
  promptservice.py&lt;br /&gt;
  README&lt;br /&gt;
  securitydialogs.py&lt;br /&gt;
  sessionhistory.py&lt;br /&gt;
  sessionstore.py&lt;br /&gt;
  setup.py&lt;br /&gt;
  viewtoolbar.py&lt;br /&gt;
  utils/&lt;br /&gt;
  webtoolbar.py&lt;br /&gt;
&amp;lt;/strike&amp;gt;&lt;br /&gt;
== Lesson ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;consists of a single lesson&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
   lesson_name/&lt;br /&gt;
              assets/&lt;br /&gt;
                      {langCode}/         (files specific to langCode: en-US, en, es-MX, es, ....) and not the default locale&lt;br /&gt;
                      image/&lt;br /&gt;
                      audio/&lt;br /&gt;
                      svg/&lt;br /&gt;
                      video/&lt;br /&gt;
              &lt;br /&gt;
              css/&lt;br /&gt;
                     lesson.css&lt;br /&gt;
              docs/&lt;br /&gt;
                      activity text&lt;br /&gt;
                      lesson plan&lt;br /&gt;
                      teachers note      &lt;br /&gt;
              index.html               &lt;br /&gt;
              js/&lt;br /&gt;
                  lesson.js      main logic of program&lt;br /&gt;
                &lt;br /&gt;
              tests/             unit tests if u have them&lt;br /&gt;
                    assets/&lt;br /&gt;
                    index.html&lt;br /&gt;
                    js/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Notes:&lt;br /&gt;
# {langCode} represents the lang code and country code &lt;br /&gt;
# which will be the template language for assets/docs/* ?, English suggested&lt;br /&gt;
# suggestion: rename assets/{langCode}/docs/ to docs/{langCode}/ . This is based that at this moment there are no other kind of files under assets/ than &#039;docs&#039;&lt;br /&gt;
&lt;br /&gt;
The following is out of date but kept for history&lt;br /&gt;
&amp;lt;strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reading, Game and Exercise ==&lt;br /&gt;
&#039;&#039;consist of a single &#039;reading&#039;, &#039;game&#039; or &#039;exercise&#039; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 {type}/&lt;br /&gt;
              index.html               (valid html5 -- markup only includes visual elements and links in other resources, no inline code or styling )&lt;br /&gt;
              css/{type}.css           ( css files   -- specific to the lesson )&lt;br /&gt;
              js/{type}.js             ( javascript controlling logic for the lesson )&lt;br /&gt;
              po/                      ( translation files )&lt;br /&gt;
                  ne-NP.po             ( example translation file for Nepal - Nepali )&lt;br /&gt;
                  sp-ES.po             ( example translation file for traditional Spanish )&lt;br /&gt;
                  {langCode}.po        ( translation file )&lt;br /&gt;
              assets/&lt;br /&gt;
                     generic/          ( for language independent assets (e.g. arrows, background images, etc.) )&lt;br /&gt;
                        images/&lt;br /&gt;
                            preview.jpg  ( screenshot for Chakra  )&lt;br /&gt;
                        sounds/&lt;br /&gt;
                        videos/&lt;br /&gt;
                        docs/&lt;br /&gt;
                     ne/&lt;br /&gt;
                        images/&lt;br /&gt;
                        sounds/&lt;br /&gt;
                        videos/&lt;br /&gt;
                        docs/&lt;br /&gt;
                     en/&lt;br /&gt;
                        images/&lt;br /&gt;
                        sounds/&lt;br /&gt;
                        videos/&lt;br /&gt;
                        docs/&lt;br /&gt;
                     {langCode}/&lt;br /&gt;
                        images/&lt;br /&gt;
                        sounds/&lt;br /&gt;
                        videos/&lt;br /&gt;
                        docs/&lt;br /&gt;
* Notes&lt;br /&gt;
# {type} represents &#039;game&#039; or &#039;exercise&#039; or &#039;reading&#039;&lt;br /&gt;
# does docs/ is used?&lt;br /&gt;
&amp;lt;/stike&amp;gt;&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/Bundle_layout&amp;diff=49542</id>
		<title>Karma/Bundle layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/Bundle_layout&amp;diff=49542"/>
		<updated>2010-03-10T04:51:53Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* The Main Karma Package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Main Karma Package ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A set of tools that will help you start working with Karma quickly&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is what is contained in the repository at http://git.sugarlabs.org/projects/karma/&lt;br /&gt;
&lt;br /&gt;
* Includes script for Karma activity generation, xo bundle generation&lt;br /&gt;
* includes &amp;quot;platform&amp;quot; files, i.e. a basic html5-capable browser that can be used to create an xo bundle&lt;br /&gt;
&lt;br /&gt;
 ROOT/                              ( ROOT is not actually a directory name, it just labels the top-level of this package )&lt;br /&gt;
    assets/                         ( images, audio, and text common to karma.html, examples, and the lessons )&lt;br /&gt;
           image/&lt;br /&gt;
           audio/&lt;br /&gt;
           locale_name/&lt;br /&gt;
                    image/            &lt;br /&gt;
                    locale_name.json   ( karma actually needs the .po file to be converted to .json )&lt;br /&gt;
                    audio/&lt;br /&gt;
    AUTHORS                         ( Should include names of everyone that has contributed to Karma main package )&lt;br /&gt;
    css/                           ( css/ and js/ contain the code common to all examples, lessons )&lt;br /&gt;
    COPYING                         ( Licensing information, should default to MIT License   ? how distinguish b/w code licensing and content licensing )&lt;br /&gt;
    docs/&lt;br /&gt;
    examples/                       ( working examples of karma lessons )&lt;br /&gt;
    index.html                     ( The starting page for accessing Karma lessons, should include links to the examples, known as the CHAKRA )&lt;br /&gt;
    js/                             ( css/ and js/ contain the code common to all examples, lessons, and karma.html )&lt;br /&gt;
    README&lt;br /&gt;
    tests/                          unit tests&lt;br /&gt;
&lt;br /&gt;
== Karma XO bundle ==&lt;br /&gt;
&lt;br /&gt;
* similar to E-Paath layout and uses the standard [[Development_Team/Almanac/Activity_Bundles|Sugar bundle structure]]&lt;br /&gt;
* It is still undecided whether karma will default to using Browse which is based on Firefox or [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] which based on webkit (Safari/Chrome). Surf requires that you install the rpms for pywebkitgtk and webkitgtk&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Below information is out-of-date&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;strike&amp;gt;&lt;br /&gt;
  activity/&lt;br /&gt;
         activity.info                          (activity info file)&lt;br /&gt;
         activity-web.svg                       (icon for activity as specified in activity.info)&lt;br /&gt;
         mimetypes.xml                          (map documents to MIME types)&lt;br /&gt;
         text-plain.svg                         (icons for documents, e.g. &amp;quot;text-plain.svg&amp;quot; for &amp;quot;text/plain&amp;quot;)&lt;br /&gt;
         text-html.svg&lt;br /&gt;
         contents                               (manifest for bundle contents)&lt;br /&gt;
         contents.sig                           (credentials for signed bundle)&lt;br /&gt;
         permissions.info                       (optional; &#039;&#039;&#039;not a stable API&#039;&#039;&#039;)&lt;br /&gt;
  assets/&lt;br /&gt;
  AUTHORS&lt;br /&gt;
  bin/&lt;br /&gt;
         launch.sh                           (launcher script)&lt;br /&gt;
  browser.dtd&lt;br /&gt;
  browser.py&lt;br /&gt;
  cert8.db&lt;br /&gt;
  clickToView.xml&lt;br /&gt;
  COPYING&lt;br /&gt;
  css/&lt;br /&gt;
  downloadmanager.py&lt;br /&gt;
  edittoolbar.py&lt;br /&gt;
  globalhistory.py&lt;br /&gt;
  icons&lt;br /&gt;
  index.html&lt;br /&gt;
  js/&lt;br /&gt;
  linkbutton.py&lt;br /&gt;
  karma&lt;br /&gt;
  karmaactivity.py&lt;br /&gt;
  lessons/&lt;br /&gt;
  locale&lt;br /&gt;
  MANIFEST&lt;br /&gt;
  messenger.py&lt;br /&gt;
  model.py&lt;br /&gt;
  palettes.py&lt;br /&gt;
  places.py&lt;br /&gt;
  po/ &lt;br /&gt;
  promptservice.py&lt;br /&gt;
  README&lt;br /&gt;
  securitydialogs.py&lt;br /&gt;
  sessionhistory.py&lt;br /&gt;
  sessionstore.py&lt;br /&gt;
  setup.py&lt;br /&gt;
  viewtoolbar.py&lt;br /&gt;
  utils/&lt;br /&gt;
  webtoolbar.py&lt;br /&gt;
&amp;lt;/strike&amp;gt;&lt;br /&gt;
== Lesson ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;consists of a single lesson&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
   lesson_name/&lt;br /&gt;
              assets/&lt;br /&gt;
                      {langCode}/         (files specific to langCode: en-US, en, es-MX, es, ....) and not the default locale&lt;br /&gt;
                      image/&lt;br /&gt;
                      audio/&lt;br /&gt;
                      svg/&lt;br /&gt;
                      video/&lt;br /&gt;
              &lt;br /&gt;
              css/&lt;br /&gt;
                     lesson.css&lt;br /&gt;
              docs/&lt;br /&gt;
                      activity text&lt;br /&gt;
                      lesson plan&lt;br /&gt;
                      teachers note      &lt;br /&gt;
              index.html               &lt;br /&gt;
              js/&lt;br /&gt;
                  lesson.js      main logic of program&lt;br /&gt;
                &lt;br /&gt;
              tests/             unit tests if u have them&lt;br /&gt;
                    assets/&lt;br /&gt;
                    index.html&lt;br /&gt;
                    js/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Notes:&lt;br /&gt;
# {langCode} represents the lang code and country code &lt;br /&gt;
# which will be the template language for assets/docs/* ?, English suggested&lt;br /&gt;
# suggestion: rename assets/{langCode}/docs/ to docs/{langCode}/ . This is based that at this moment there are no other kind of files under assets/ than &#039;docs&#039;&lt;br /&gt;
&lt;br /&gt;
The following is out of date but kept for history&lt;br /&gt;
&amp;lt;strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reading, Game and Exercise ==&lt;br /&gt;
&#039;&#039;consist of a single &#039;reading&#039;, &#039;game&#039; or &#039;exercise&#039; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 {type}/&lt;br /&gt;
              index.html               (valid html5 -- markup only includes visual elements and links in other resources, no inline code or styling )&lt;br /&gt;
              css/{type}.css           ( css files   -- specific to the lesson )&lt;br /&gt;
              js/{type}.js             ( javascript controlling logic for the lesson )&lt;br /&gt;
              po/                      ( translation files )&lt;br /&gt;
                  ne-NP.po             ( example translation file for Nepal - Nepali )&lt;br /&gt;
                  sp-ES.po             ( example translation file for traditional Spanish )&lt;br /&gt;
                  {langCode}.po        ( translation file )&lt;br /&gt;
              assets/&lt;br /&gt;
                     generic/          ( for language independent assets (e.g. arrows, background images, etc.) )&lt;br /&gt;
                        images/&lt;br /&gt;
                            preview.jpg  ( screenshot for Chakra  )&lt;br /&gt;
                        sounds/&lt;br /&gt;
                        videos/&lt;br /&gt;
                        docs/&lt;br /&gt;
                     ne/&lt;br /&gt;
                        images/&lt;br /&gt;
                        sounds/&lt;br /&gt;
                        videos/&lt;br /&gt;
                        docs/&lt;br /&gt;
                     en/&lt;br /&gt;
                        images/&lt;br /&gt;
                        sounds/&lt;br /&gt;
                        videos/&lt;br /&gt;
                        docs/&lt;br /&gt;
                     {langCode}/&lt;br /&gt;
                        images/&lt;br /&gt;
                        sounds/&lt;br /&gt;
                        videos/&lt;br /&gt;
                        docs/&lt;br /&gt;
* Notes&lt;br /&gt;
# {type} represents &#039;game&#039; or &#039;exercise&#039; or &#039;reading&#039;&lt;br /&gt;
# does docs/ is used?&lt;br /&gt;
&amp;lt;/stike&amp;gt;&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/i18n&amp;diff=47117</id>
		<title>Karma/i18n</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/i18n&amp;diff=47117"/>
		<updated>2010-02-24T14:32:50Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rough plan for implementing i18n for Karma&lt;br /&gt;
&lt;br /&gt;
=== Requirements === &lt;br /&gt;
* Integrate with pootle&lt;br /&gt;
* Handle strings inside code and html markup&lt;br /&gt;
  Examples &lt;br /&gt;
  $(&amp;quot;#someDiv&amp;quot;).text(gettext(&amp;quot;Hello World&amp;quot;));&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;Hello &amp;lt;strong&amp;gt;W&amp;lt;/strong&amp;gt;orld&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* All strings stored in one file per locale, messages.json&lt;br /&gt;
* All message identifiers must be unique within an a lesson&lt;br /&gt;
* Accommodating numeric, currency, and date formatting is not an immediate requirement&lt;br /&gt;
&lt;br /&gt;
=== General Strategy ===&lt;br /&gt;
* Use a modified version of gettext, where the key for getting translations, we will use an arbitrary message identifier. This will remove the need for managing translation contexts.&lt;br /&gt;
* We will try to use the [http://en.wikipedia.org/wiki/Internationalization_Tag_Set Internationalization Tag Set] for handling strings inline with html. The [http://okapi.sourceforge.net/ Okapi] tool may be able to parse out strings marked with ITS.&lt;br /&gt;
* We will use this lesson for prototyping examples/6_Maths_matchingAnglesAndShapes/&lt;br /&gt;
* For the immediate future we will dynamically change out strings per locale on page load&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/i18n&amp;diff=47116</id>
		<title>Karma/i18n</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/i18n&amp;diff=47116"/>
		<updated>2010-02-24T14:32:09Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rough plan for implementing i18n for Karma&lt;br /&gt;
&lt;br /&gt;
=== Requirements === &lt;br /&gt;
* Integrate with pootle&lt;br /&gt;
* Handle strings inside code and html markup&lt;br /&gt;
  Examples &lt;br /&gt;
  $(&amp;quot;#someDiv&amp;quot;).text(gettext(&amp;quot;Hello World&amp;quot;));&lt;br /&gt;
  &amp;lt;div&amp;gt;Hello &amp;lt;strong&amp;gt;W&amp;lt;/strong&amp;gt;orld&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* All strings stored in one file per locale, messages.json&lt;br /&gt;
* All message identifiers must be unique within an a lesson&lt;br /&gt;
* Accommodating numeric, currency, and date formatting is not an immediate requirement&lt;br /&gt;
&lt;br /&gt;
=== General Strategy ===&lt;br /&gt;
* Use a modified version of gettext, where the key for getting translations, we will use an arbitrary message identifier. This will remove the need for managing translation contexts.&lt;br /&gt;
* We will try to use the [http://en.wikipedia.org/wiki/Internationalization_Tag_Set Internationalization Tag Set] for handling strings inline with html. The [http://okapi.sourceforge.net/ Okapi] tool may be able to parse out strings marked with ITS.&lt;br /&gt;
* We will use this lesson for prototyping examples/6_Maths_matchingAnglesAndShapes/&lt;br /&gt;
* For the immediate future we will dynamically change out strings per locale on page load&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/i18n&amp;diff=47115</id>
		<title>Karma/i18n</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/i18n&amp;diff=47115"/>
		<updated>2010-02-24T14:31:46Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rough plan for implementing i18n for Karma&lt;br /&gt;
&lt;br /&gt;
=== Requirements === &lt;br /&gt;
* Integrate with pootle&lt;br /&gt;
* Handle strings inside code and html markup&lt;br /&gt;
  Examples &lt;br /&gt;
&lt;br /&gt;
  $(&amp;quot;#someDiv&amp;quot;).text(gettext(&amp;quot;Hello World&amp;quot;));&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;div&amp;gt;Hello &amp;lt;strong&amp;gt;W&amp;lt;/strong&amp;gt;orld&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* All strings stored in one file per locale, messages.json&lt;br /&gt;
* All message identifiers must be unique within an a lesson&lt;br /&gt;
* Accommodating numeric, currency, and date formatting is not an immediate requirement&lt;br /&gt;
&lt;br /&gt;
=== General Strategy ===&lt;br /&gt;
* Use a modified version of gettext, where the key for getting translations, we will use an arbitrary message identifier. This will remove the need for managing translation contexts.&lt;br /&gt;
* We will try to use the [http://en.wikipedia.org/wiki/Internationalization_Tag_Set Internationalization Tag Set] for handling strings inline with html. The [http://okapi.sourceforge.net/ Okapi] tool may be able to parse out strings marked with ITS.&lt;br /&gt;
* We will use this lesson for prototyping examples/6_Maths_matchingAnglesAndShapes/&lt;br /&gt;
* For the immediate future we will dynamically change out strings per locale on page load&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/i18n&amp;diff=47114</id>
		<title>Karma/i18n</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/i18n&amp;diff=47114"/>
		<updated>2010-02-24T14:16:57Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rough plan for implementing i18n for Karma&lt;br /&gt;
&lt;br /&gt;
=== Requirements === &lt;br /&gt;
* Integrate with pootle&lt;br /&gt;
* Handle strings inside code and html markup&lt;br /&gt;
&lt;br /&gt;
=== Technical Requirements ===&lt;br /&gt;
* All strings stored in one file, messages.json&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
=== General Strategy ===&lt;br /&gt;
&lt;br /&gt;
Lesson to use for prototyping&lt;br /&gt;
examples/6_Maths_matchingAnglesAndShapes/&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/i18n&amp;diff=47113</id>
		<title>Karma/i18n</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/i18n&amp;diff=47113"/>
		<updated>2010-02-24T14:07:08Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rough plan for implementing i18n for Karma&lt;br /&gt;
&lt;br /&gt;
== Requirements == &lt;br /&gt;
* All strings stored in one file, messages.json&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lesson to use for prototyping&lt;br /&gt;
examples/6_Maths_matchingAnglesAndShapes/&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/Layout_Converted_Squeak_Lessons&amp;diff=43520</id>
		<title>Karma/Layout Converted Squeak Lessons</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/Layout_Converted_Squeak_Lessons&amp;diff=43520"/>
		<updated>2010-01-26T07:53:38Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Feedback */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overrall Considerations==&lt;br /&gt;
We are converting the Squeak lessons for the XO, which has peculiar display characteristics&lt;br /&gt;
* 96 DPI (dots per inch) instead of the usual 126 or 134&lt;br /&gt;
* 1200x900 screen resolution&lt;br /&gt;
&lt;br /&gt;
The header and footer both use 75 pixels of vertical space.&lt;br /&gt;
&lt;br /&gt;
Your working area is roughly (0, 75px) to (1200px, 1125px).&lt;br /&gt;
&lt;br /&gt;
We are trying to make the Converted Squeak lessons look as much as possible like the flash-based EPaath lessons.&lt;br /&gt;
&lt;br /&gt;
==Background Image==&lt;br /&gt;
&lt;br /&gt;
Your background image should 1200px by 900px&lt;br /&gt;
The best way to designate the background image is in your css/lesson.css file&lt;br /&gt;
&lt;br /&gt;
   body {&lt;br /&gt;
     background-image: url(./path/to/file.png);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
The following items are on the header bar from left to right:&lt;br /&gt;
* Back button - returns to the lessons list (left aligned)&lt;br /&gt;
* Activity title (position to the right of back button)&lt;br /&gt;
* OLE logo button – A short description of OLE Nepal pops up (position to the left of help button)&lt;br /&gt;
* Help button – help text appears (right aligned)&lt;br /&gt;
&lt;br /&gt;
==Footer==&lt;br /&gt;
The following items should appear on the footer bar from left to right:&lt;br /&gt;
Score board (left aligned)&lt;br /&gt;
Level indicator – if required (position to the right score board)&lt;br /&gt;
Start button (position to the left of play again button)&lt;br /&gt;
Play again button (right aligned)&lt;br /&gt;
&lt;br /&gt;
==Feedback==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==Help==&lt;br /&gt;
&lt;br /&gt;
TODO &lt;br /&gt;
&lt;br /&gt;
==Page Navigation==&lt;br /&gt;
&lt;br /&gt;
The next page button should be positioned just above the footer bar to the right of the screen.&lt;br /&gt;
&lt;br /&gt;
Previous page button should be positioned just above the footer bar to the left of the screen&lt;br /&gt;
 &lt;br /&gt;
Sequence control buttons (these are the buttons that you click to go to next or previous step of lesson on the same page). To the left and right of the lesson area for back and next respectively, vertically centered to the page.&lt;br /&gt;
 &lt;br /&gt;
==Text==&lt;br /&gt;
&lt;br /&gt;
* Size – Big enough so that its clearly readable on a XO screen&lt;br /&gt;
* Color – Contrasting from the background so that its distinctly visible&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/Layout_Converted_Squeak_Lessons&amp;diff=43519</id>
		<title>Karma/Layout Converted Squeak Lessons</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/Layout_Converted_Squeak_Lessons&amp;diff=43519"/>
		<updated>2010-01-26T07:52:48Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overrall Considerations==&lt;br /&gt;
We are converting the Squeak lessons for the XO, which has peculiar display characteristics&lt;br /&gt;
* 96 DPI (dots per inch) instead of the usual 126 or 134&lt;br /&gt;
* 1200x900 screen resolution&lt;br /&gt;
&lt;br /&gt;
The header and footer both use 75 pixels of vertical space.&lt;br /&gt;
&lt;br /&gt;
Your working area is roughly (0, 75px) to (1200px, 1125px).&lt;br /&gt;
&lt;br /&gt;
We are trying to make the Converted Squeak lessons look as much as possible like the flash-based EPaath lessons.&lt;br /&gt;
&lt;br /&gt;
==Background Image==&lt;br /&gt;
&lt;br /&gt;
Your background image should 1200px by 900px&lt;br /&gt;
The best way to designate the background image is in your css/lesson.css file&lt;br /&gt;
&lt;br /&gt;
   body {&lt;br /&gt;
     background-image: url(./path/to/file.png);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
The following items are on the header bar from left to right:&lt;br /&gt;
* Back button - returns to the lessons list (left aligned)&lt;br /&gt;
* Activity title (position to the right of back button)&lt;br /&gt;
* OLE logo button – A short description of OLE Nepal pops up (position to the left of help button)&lt;br /&gt;
* Help button – help text appears (right aligned)&lt;br /&gt;
&lt;br /&gt;
==Footer==&lt;br /&gt;
The following items should appear on the footer bar from left to right:&lt;br /&gt;
Score board (left aligned)&lt;br /&gt;
Level indicator – if required (position to the right score board)&lt;br /&gt;
Start button (position to the left of play again button)&lt;br /&gt;
Play again button (right aligned)&lt;br /&gt;
&lt;br /&gt;
==Feedback==&lt;br /&gt;
&lt;br /&gt;
==Help==&lt;br /&gt;
&lt;br /&gt;
TODO &lt;br /&gt;
&lt;br /&gt;
==Page Navigation==&lt;br /&gt;
&lt;br /&gt;
The next page button should be positioned just above the footer bar to the right of the screen.&lt;br /&gt;
&lt;br /&gt;
Previous page button should be positioned just above the footer bar to the left of the screen&lt;br /&gt;
 &lt;br /&gt;
Sequence control buttons (these are the buttons that you click to go to next or previous step of lesson on the same page). To the left and right of the lesson area for back and next respectively, vertically centered to the page.&lt;br /&gt;
 &lt;br /&gt;
==Text==&lt;br /&gt;
&lt;br /&gt;
* Size – Big enough so that its clearly readable on a XO screen&lt;br /&gt;
* Color – Contrasting from the background so that its distinctly visible&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/Layout_Converted_Squeak_Lessons&amp;diff=43518</id>
		<title>Karma/Layout Converted Squeak Lessons</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/Layout_Converted_Squeak_Lessons&amp;diff=43518"/>
		<updated>2010-01-26T07:48:54Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Background Image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overrall Considerations==&lt;br /&gt;
We are converting the Squeak lessons for the XO, which has peculiar display characteristics&lt;br /&gt;
* 96 DPI (dots per inch) instead of the usual 126 or 134&lt;br /&gt;
* 1200x900 screen resolution&lt;br /&gt;
&lt;br /&gt;
The header and footer both use 75 pixels of vertical space.&lt;br /&gt;
&lt;br /&gt;
Your working area is roughly (0, 75px) to (1200px, 1125px).&lt;br /&gt;
&lt;br /&gt;
We are trying to make the Converted Squeak lessons look as much as possible like the flash-based EPaath lessons.&lt;br /&gt;
&lt;br /&gt;
==Background Image==&lt;br /&gt;
&lt;br /&gt;
Your background image should 1200px by 900px&lt;br /&gt;
The best way to designate the background image is in your css/lesson.css file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 body {&lt;br /&gt;
   background-image: url(./path/to/file.png);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
The following items are on the header bar from left to right:&lt;br /&gt;
* Back button - returns to the lessons list (left aligned)&lt;br /&gt;
* Activity title (position to the right of back button)&lt;br /&gt;
* OLE logo button – A short description of OLE Nepal pops up (position to the left of help button)&lt;br /&gt;
* Help button – help text appears (right aligned)&lt;br /&gt;
&lt;br /&gt;
==Footer==&lt;br /&gt;
The following items should appear on the footer bar from left to right:&lt;br /&gt;
Score board (left aligned)&lt;br /&gt;
Level indicator – if required (position to the right score board)&lt;br /&gt;
Start button (position to the left of play again button)&lt;br /&gt;
Play again button (right aligned)&lt;br /&gt;
 &lt;br /&gt;
Page navigation controls&lt;br /&gt;
Next page button should be positioned just above the footer bar to the right of the screen&lt;br /&gt;
Previous page button should be positioned just above the footer bar to the left of the screen&lt;br /&gt;
 &lt;br /&gt;
Sequence control buttons (these are the buttons that you click to go to next or previous step of lesson on the same page)&lt;br /&gt;
To the left and right of the lesson area for back and next respectively, vertically centered to the page.&lt;br /&gt;
 &lt;br /&gt;
Text&lt;br /&gt;
Size – Big enough so that its clearly readable on a XO screen&lt;br /&gt;
Color – Contrasting from the background so that its distinctly visible&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/Layout_Converted_Squeak_Lessons&amp;diff=43517</id>
		<title>Karma/Layout Converted Squeak Lessons</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/Layout_Converted_Squeak_Lessons&amp;diff=43517"/>
		<updated>2010-01-26T07:48:16Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overrall Considerations==&lt;br /&gt;
We are converting the Squeak lessons for the XO, which has peculiar display characteristics&lt;br /&gt;
* 96 DPI (dots per inch) instead of the usual 126 or 134&lt;br /&gt;
* 1200x900 screen resolution&lt;br /&gt;
&lt;br /&gt;
The header and footer both use 75 pixels of vertical space.&lt;br /&gt;
&lt;br /&gt;
Your working area is roughly (0, 75px) to (1200px, 1125px).&lt;br /&gt;
&lt;br /&gt;
We are trying to make the Converted Squeak lessons look as much as possible like the flash-based EPaath lessons.&lt;br /&gt;
&lt;br /&gt;
==Background Image==&lt;br /&gt;
&lt;br /&gt;
Your background image should 1200px by 900px&lt;br /&gt;
The best way to designate the background image is in your css/lesson.css file&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 body {&lt;br /&gt;
   background-image: url(./path/to/file.png);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
The following items are on the header bar from left to right:&lt;br /&gt;
* Back button - returns to the lessons list (left aligned)&lt;br /&gt;
* Activity title (position to the right of back button)&lt;br /&gt;
* OLE logo button – A short description of OLE Nepal pops up (position to the left of help button)&lt;br /&gt;
* Help button – help text appears (right aligned)&lt;br /&gt;
&lt;br /&gt;
==Footer==&lt;br /&gt;
The following items should appear on the footer bar from left to right:&lt;br /&gt;
Score board (left aligned)&lt;br /&gt;
Level indicator – if required (position to the right score board)&lt;br /&gt;
Start button (position to the left of play again button)&lt;br /&gt;
Play again button (right aligned)&lt;br /&gt;
 &lt;br /&gt;
Page navigation controls&lt;br /&gt;
Next page button should be positioned just above the footer bar to the right of the screen&lt;br /&gt;
Previous page button should be positioned just above the footer bar to the left of the screen&lt;br /&gt;
 &lt;br /&gt;
Sequence control buttons (these are the buttons that you click to go to next or previous step of lesson on the same page)&lt;br /&gt;
To the left and right of the lesson area for back and next respectively, vertically centered to the page.&lt;br /&gt;
 &lt;br /&gt;
Text&lt;br /&gt;
Size – Big enough so that its clearly readable on a XO screen&lt;br /&gt;
Color – Contrasting from the background so that its distinctly visible&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/Layout_Converted_Squeak_Lessons&amp;diff=43516</id>
		<title>Karma/Layout Converted Squeak Lessons</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/Layout_Converted_Squeak_Lessons&amp;diff=43516"/>
		<updated>2010-01-26T07:04:46Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: Created page with &amp;#039;We are converting the Squeak lessons for the XO, which has peculiar display characteristics * 96 DPI (dots per inch) instead of the usual 126 or 134 * 1200x900 screen resolution …&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We are converting the Squeak lessons for the XO, which has peculiar display characteristics&lt;br /&gt;
* 96 DPI (dots per inch) instead of the usual 126 or 134&lt;br /&gt;
* 1200x900 screen resolution&lt;br /&gt;
&lt;br /&gt;
Position&lt;br /&gt;
The following items should be on the header bar from left to right:&lt;br /&gt;
Back button - returns to the lessons list (left aligned)&lt;br /&gt;
Activity title (position to the right of back button)&lt;br /&gt;
OLE logo button – A short description of OLE Nepal pops up (position to the left of help button)&lt;br /&gt;
Help button – help text appears (right aligned)&lt;br /&gt;
The following items should appear on the footer bar from left to right:&lt;br /&gt;
Score board (left aligned)&lt;br /&gt;
Level indicator – if required (position to the right score board)&lt;br /&gt;
Start button (position to the left of play again button)&lt;br /&gt;
Play again button (right aligned)&lt;br /&gt;
 &lt;br /&gt;
Page navigation controls&lt;br /&gt;
Next page button should be positioned just above the footer bar to the right of the screen&lt;br /&gt;
Previous page button should be positioned just above the footer bar to the left of the screen&lt;br /&gt;
 &lt;br /&gt;
Sequence control buttons (these are the buttons that you click to go to next or previous step of lesson on the same page)&lt;br /&gt;
To the left and right of the lesson area for back and next respectively, vertically centered to the page.&lt;br /&gt;
 &lt;br /&gt;
Text&lt;br /&gt;
Size – Big enough so that its clearly readable on a XO screen&lt;br /&gt;
Color – Contrasting from the background so that its distinctly visible&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=43515</id>
		<title>Karma</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=43515"/>
		<updated>2010-01-26T07:02:17Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Conventions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TOCleft}}&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Project]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Image:Karma.png|right]]&lt;br /&gt;
&lt;br /&gt;
== The Karma Project ==&lt;br /&gt;
&lt;br /&gt;
Karma is a framework for creating educational software using JavaScript, html5, and SVG. The Karma team is primarily focused on developing Sugar activities but you can also Karma to create lessons that run in any web browser that supports html5. The best ways to get involved are to join the [http://groups.google.com/group/karmajs mailing list] and [http://git.sugarlabs.org/projects/karma/repos/mainline get the code]&lt;br /&gt;
&lt;br /&gt;
=== Rationale ===&lt;br /&gt;
&lt;br /&gt;
Anyone with a modern standards-compliant web browser and a text editor should be able to create learning activities that can be used by anyone with a computer. Sugar should not be a walled garden that only allows learning activities expressly designed for it and it alone but rather gives extra power and depth to learning activities. Karma uses a specialized vocabulary that features a number of specialized terms. Please refer to the [[Karma/Dictionary|Karma Dictionary]] early and often.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
&lt;br /&gt;
Karma is a sub-project of Sugar Labs that is under active development. The latest examples can be seen at [http://karma.sugarlabs.org http://karma.sugarlabs.org]. You can also check out the [http://karmaproject.wordpress.com Karma Project blog] for updates.&lt;br /&gt;
&lt;br /&gt;
To try out the karma examples you need to have an html5-capable browser. The Browse activity within Sugar does not currently support html5. To try out karma within Sugar you need to install [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] and its webkit dependencies or run Firefox 3.5 from the command-line (yum install pywebkitgtk WebKit-gtk gnome-python2-gconf).&lt;br /&gt;
&lt;br /&gt;
The current focus of development is to convert Nepal&#039;s set of lessons coded in Squeak smalltalk. You can find the list of lessons to be converted [http://spreadsheets.google.com/pub?key=tweUJyn1BkEciHqVtSvCYDA&amp;amp;output=html here]. This is a good place for new contributors to get started&lt;br /&gt;
&lt;br /&gt;
=== What Karma Is ===&lt;br /&gt;
&lt;br /&gt;
* Karma is a simple framework to create simple interactive learning activities primarily for Sugar but also to be viewable through any web browser that supports html5&lt;br /&gt;
* Karma is used to create simple activities that run off-line w/out access to the Internet&lt;br /&gt;
* Karma is for web developers who want to contribute to Sugar using their current skills&lt;br /&gt;
* Karma is built on top of open web standards such as html5, javascript, and CSS.&lt;br /&gt;
* Karma is built to run on top of web browsers that support html5, particularly the canvas element.&lt;br /&gt;
* Karma is built around the concept of individual &amp;quot;lessons&amp;quot; and multiple lessons can be aggregated into a sugar activity&lt;br /&gt;
* Karma is the evolution of OLE Nepal&#039;s work on the EPaath suite of lessons in Nepal&lt;br /&gt;
* Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress&lt;br /&gt;
* Karma is pedagogically agnostic. Pedagogical choices are left to the lesson author.&lt;br /&gt;
&lt;br /&gt;
=== What Karma Isn&#039;t ===&lt;br /&gt;
&lt;br /&gt;
* Karma is not compatible with Internet Explorer because Internet Explorer does not support html5 apis such as canvas, svg, localStorage, etc.&lt;br /&gt;
* Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities&lt;br /&gt;
* Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics&lt;br /&gt;
* Karma is not meant as a basis for a WYSIWG programming environment like TurtleArt, EToys, or Logo&lt;br /&gt;
* Karma is not built to support browsers that do not support html5, such as Internet Explorer and Firefox &amp;lt; version 3.5 &lt;br /&gt;
* Karma is not intended to teach programming to children though it could be used as such&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
&lt;br /&gt;
A Karma lesson is composed of a valid html5 document, javascript code, and css stylesheets and optional assets such as images, audio, video and lesson plans. Karma should be very easy for inexperienced developers to understand and work with. Even non-programmers should be able to make visible changes by tweaking the code and liberal use of cut-and-paste. Complexities such as integration with pootle, local storage, and certain types of animation should be abstracted so that novice developers don&#039;t have to understand them in order to effectively use Karma. Karma strictly adheres to the Model-View-Controller Pattern and similarly to unobtrusive JavaScript. In essence. you should be able to substantially change the look and feel of a Karma lesson by modifying the CSS or you could translate the activity, without having to understand the JavaScript code.&lt;br /&gt;
&lt;br /&gt;
=== Design Goals ===&lt;br /&gt;
* Unobtrusive JavaScript&lt;br /&gt;
* No globals&lt;br /&gt;
* No extension of native objects&lt;br /&gt;
&lt;br /&gt;
=== Technical Architecture ===&lt;br /&gt;
&lt;br /&gt;
* Run-time - Karma will work with basic functionality on any W3C standards-compliant browser that supports HTML5 tags canvas, audio, and svg. This notably excludes Microsoft&#039;s Internet Explorer. Karma will be particularly tailored to work with Sugar&#039;s Journal and collaboration through Telepathy. Longer-term we hope to extend Karma to take advantage of Sugar&#039;s collaboration features.&lt;br /&gt;
* Primary Programming language - [https://developer.mozilla.org/en/New_in_JavaScript_1.6 Javascript 1.6] &lt;br /&gt;
* [[Karma/i18n|i18n]] -- Pervasive internationalization is a critical part of Karma&lt;br /&gt;
** Supported types of i18n  -- ToDo&lt;br /&gt;
*** Output of Native Digits&lt;br /&gt;
*** Image switching per locale&lt;br /&gt;
*** Regular text, though it is unclear how to support plural forms, grammar shifts, and gender&lt;br /&gt;
*** Audio switching per locale&lt;br /&gt;
** Integration with pootle&lt;br /&gt;
* [[Karma/Utilities|Utilities]] -- we primarily use [http://www.narwhaljs.org narwhal] for command-line scripting and [http://code.google.com/p/jsdoc-toolkit/ jsdoc] for documentation&lt;br /&gt;
* Journal, Telepathy Integration -- method to be determined, perhaps using html5&#039;s offline storage feature, some resources [https://developer.mozilla.org/en/Offline_resources_in_Firefox here] and [http://www.weboshelp.net/webos-tutorials/156-palm-webos-html5-database-storage-tutorial here] &lt;br /&gt;
* Moodle Integration -- method to be determined&lt;br /&gt;
* [[Karma/Bundle_layout|Repo and Bundle layout]]&lt;br /&gt;
* UI Widgets&lt;br /&gt;
** [[Scoreboard]]&lt;br /&gt;
** Dialog -- use standard jQuery UI one?&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
&lt;br /&gt;
* [[Karma:Anatomy_of_Lesson|Anatomy of a Karma Lesson]]&lt;br /&gt;
* The [[Karma/Dictionary|Karma Dictionary]]&lt;br /&gt;
* [[Karma/Specifications|Karma Specifications]] (early draft)&lt;br /&gt;
* [[Karma/Anti-conventions|Anti-Conventions]] -- coding no-nos&lt;br /&gt;
* [[Karma/Layout_Converted_Squeak_Lessons|Layout for converted Squeak Lessons]]&lt;br /&gt;
* Source Code stored in http://git.sugarlabs.org/projects/karma&lt;br /&gt;
* Each lesson must be in a folder named according to the schema &amp;quot;karma_Grade_Maths_title_WeekNo&amp;quot; where the week number is optional &lt;br /&gt;
  The following are valid names&lt;br /&gt;
  karma_3_Maths_LargestNumber_15&lt;br /&gt;
  karma_2_English_MatchingPuzzle&lt;br /&gt;
  karma_6_Maths_AddingUpTo10_4&lt;br /&gt;
* Version Control and repository management see the [[Karma#Version_Control|Version Control]] section of this page&lt;br /&gt;
* Unit testing is required for the karma.js library but not for individual lessons http://karma.sugarlabs.org/tests/&lt;br /&gt;
* Project Documentation kept in the Sugar Labs wiki&lt;br /&gt;
* Coding conventions: Based on [http://www.dojotoolkit.org/developer/StyleGuide Dojo Style Guide] &lt;br /&gt;
** Use sadCamelCase for function names and variables&lt;br /&gt;
** Exception to above -- object constructors should start with a capital letter&lt;br /&gt;
** boolean variables should be prefixed with &amp;quot;is&amp;quot;, &amp;quot;has&amp;quot;, &amp;quot;can&amp;quot;, or &amp;quot;should&amp;quot;&lt;br /&gt;
** counters should be prefixed with &amp;quot;num&amp;quot; or &amp;quot;count&amp;quot;&lt;br /&gt;
** Whenever possible, use [http://www.jslint.com/ jslint]&lt;br /&gt;
* File naming conventions: lowercase letters, underscore instead of spaces  (need to write more about it)&lt;br /&gt;
* Coding Pattern - We generally try to follow this coding pattern as it makes it easier to browse your code&lt;br /&gt;
 Put code in following order&lt;br /&gt;
 1) variable declarations&lt;br /&gt;
 2) method declarations&lt;br /&gt;
 3) method calls&lt;br /&gt;
&lt;br /&gt;
== Version Control == &lt;br /&gt;
Currently all lessons are stored in the examples/ folder of [http://git.sugarlabs.org/projects/karma/repos/mainline main karma repository]&lt;br /&gt;
&lt;br /&gt;
We plan to move all lessons into individual repositories at git.sugarlabs.org but only once we have a process to automatically build bundles.&lt;br /&gt;
&lt;br /&gt;
When we do move to individual repos we shall use the [http://git.sugarlabs.org/projects/karma_lesson karma_lesson template] for each new lesson repository &lt;br /&gt;
&lt;br /&gt;
Here is how you can use the karma_lesson template to create a new repository from scratch&lt;br /&gt;
&lt;br /&gt;
  $ git clone git://git.sugarlabs.org/karma_lesson/mainline.git&lt;br /&gt;
  $ mkdir ../karma_3_English_3  # create a new lesson directory following our naming convention&lt;br /&gt;
  $ cp -r * ../karma_3_English_3  &lt;br /&gt;
  $ cd ../karma_3_English_3&lt;br /&gt;
  $ rm -r .git     # make sure you get rid of the old git directory&lt;br /&gt;
  $ git init&lt;br /&gt;
  $ git add .&lt;br /&gt;
  $ git commit -a -m &amp;quot;first commit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now go to the http://git.sugarlabs.org/projects/new, make sure you are logged in&lt;br /&gt;
Create a new project, use the same name as you did for your lesson&#039;s main folder&lt;br /&gt;
then,&lt;br /&gt;
  $ git remote add origin git://...   # the pubic push url&lt;br /&gt;
&lt;br /&gt;
Then on to coding your lesson ;)&lt;br /&gt;
&lt;br /&gt;
From then on &lt;br /&gt;
 $ git push origin master   # will sync your local tree w/ the server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tagging&#039;&#039;&#039; -- a karma lesson can be in only one of two states, stable or unstable. Any commit tagged &#039;stable&#039; is the stable version of your code. Every other version of your code is unstable. We will not use numeric versioning such as 0.1, 1.0, 1.2, etc. for the foreseeable future.&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
[[Karma:Meeting 21 December 2009]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Project ==&lt;br /&gt;
&lt;br /&gt;
Karma started as a GSoC project with Felipe Lopez Toledo &amp;quot;SubZero&amp;quot; as the student participant and [[USER:BryanWB| Bryan Berry]] as mentor. &lt;br /&gt;
&lt;br /&gt;
=== GSoC Meetings ===&lt;br /&gt;
&lt;br /&gt;
Notes from GSoC meetings - kept for archival purposes&lt;br /&gt;
* [[Karma:Meeting 12 May 2009]]&lt;br /&gt;
* [[Karma:Meeting 02 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 09 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 23 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 30 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Jul 2009]]&lt;br /&gt;
* [[Karma:Meeting 4 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 11 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 18 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 24 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 08 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 14 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Sep 2009]]&lt;br /&gt;
&lt;br /&gt;
== Project Roadmap ==&lt;br /&gt;
&lt;br /&gt;
==== 0.1 &amp;quot;Osito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Was completed September 11, 2009&lt;br /&gt;
&lt;br /&gt;
* 1 Working example in &amp;quot;adding_up_to_10&amp;quot;&lt;br /&gt;
* cleaned up documentation with jsdocs api documentation and cleaned up README.txt&lt;br /&gt;
* integrate chakra and &amp;quot;adding_up_to_10&amp;quot; and knavbar&lt;br /&gt;
* adding_up_to_10 works on the XO&lt;br /&gt;
** Surf&lt;br /&gt;
** Browse&lt;br /&gt;
&lt;br /&gt;
==== 0.2 &amp;quot;Gatito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Completed mid-December 2009&lt;br /&gt;
&lt;br /&gt;
* unit testing added to karma.js using QUnit&lt;br /&gt;
* API documented w/ jsdoc-toolkit&lt;br /&gt;
* support for SVG and canvas animation &lt;br /&gt;
* 3 working examples&lt;br /&gt;
** Adding_Up_to_10 using both SVG and canvas&lt;br /&gt;
** Quadrilaterals &lt;br /&gt;
** &amp;quot;Conozco A Uruguay&amp;quot; done with karma  -- 50% done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 0.3 &amp;quot;niño&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due 31 March 2010&lt;br /&gt;
&lt;br /&gt;
* Full i18n support&lt;br /&gt;
* All Squeak lessons converted to Karma&lt;br /&gt;
* Integrate all of the existing E-Paath lesson into chakra &lt;br /&gt;
* narwhal build script to build one giant karma bundle w/ all the E-Paath lessons inside it and chakra&lt;br /&gt;
* At least 6 lessons ready that have been translated into 3 languages each&lt;br /&gt;
* Version 0.1 draft of karma specification done&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
&lt;br /&gt;
here lies a lot of links to resources specific to karma&lt;br /&gt;
&lt;br /&gt;
UI&lt;br /&gt;
* Iphone Human Interface Guide http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/mobilehig/MobileHIG.pdf&lt;br /&gt;
* Palm Pre interface guide http://developer.palm.com/images/palm/pdf/palm_webos_hi_guidelines.pdf&lt;br /&gt;
* 30 Usability Issues To Be Aware Of http://www.smashingmagazine.com/2007/10/09/30-usability-issues-to-be-aware-of/&lt;br /&gt;
* 10 Usability Nightmares You Should Be Aware Of http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/&lt;br /&gt;
* &amp;quot;The Design of Everyday Things&amp;quot; book by Don Norman&lt;br /&gt;
* &amp;quot;Don&#039;t Make me think&amp;quot; by Steve Krug, guide to usability for web apps&lt;br /&gt;
&lt;br /&gt;
HTML5&lt;br /&gt;
* http://www.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/&lt;br /&gt;
* http://www.w3.org/TR/html5-diff/  Differences between html4 and html5&lt;br /&gt;
* [http://diveintohtml5.org/ Dive Into HTML5]&lt;br /&gt;
&lt;br /&gt;
General Web Design&lt;br /&gt;
* &amp;quot;Web Design in a Nutshell&amp;quot; from O&#039;Reilly&lt;br /&gt;
* Apple &amp;quot;Web Page Development: Best Practices&amp;quot; http://developer.apple.com/internet/webcontent/bestwebdev.html&lt;br /&gt;
&lt;br /&gt;
Canvas&lt;br /&gt;
* demos: http://html5demos.com/&lt;br /&gt;
* basics: http://dev.opera.com/articles/view/html-5-canvas-the-basics/&lt;br /&gt;
* painting web app: http://dev.opera.com/articles/view/html5-canvas-painting/&lt;br /&gt;
* mozilla canvas tutorial: https://developer.mozilla.org/en/Canvas_tutorial&lt;br /&gt;
* using canvas on webkit: http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/Canvas.html&lt;br /&gt;
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html&lt;br /&gt;
&lt;br /&gt;
SVG&lt;br /&gt;
* The [http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html SVG Primer] a very detailed and in-depth resource&lt;br /&gt;
* [http://raphaeljs.com/reference.html Raphaeljs documentation]&lt;br /&gt;
* https://developer.mozilla.org/en/svg&lt;br /&gt;
&lt;br /&gt;
Javascript&lt;br /&gt;
* [http://eloquentjavascript.net Eloquent Javascript] best beginning javascript resource&lt;br /&gt;
* &amp;quot;Javascript: The Good Parts&amp;quot; book by Doug Crockford&lt;br /&gt;
* &amp;quot;jQuery in Action&amp;quot; book&lt;br /&gt;
* &amp;quot;Pro Javascript Techniques&amp;quot; by john resig&lt;br /&gt;
* All the tutorials at www.ejohn.org, esp.&lt;br /&gt;
** http://ejohn.org/blog/how-javascript-timers-work/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Coding Tools and Conventions&lt;br /&gt;
* Firebug  --- http://www.getfirebug.com&lt;br /&gt;
* Web-Inspector --- webkit&#039;s answer to firebug&lt;br /&gt;
* Browsers --- We primarily work with Chromium and Firefox &amp;gt; 3.5&lt;br /&gt;
* For emacs users -- nxhtml mode and magit.el for working w/ git&lt;br /&gt;
* [http://www.jslint.com/ jslint]&lt;br /&gt;
* [http://www.inkscape.org inkscape]&lt;br /&gt;
* [http://narwhaljs.org narwhal]&lt;br /&gt;
&lt;br /&gt;
== Subpages ==&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Deployment_Team/Places&amp;diff=43490</id>
		<title>Deployment Team/Places</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Deployment_Team/Places&amp;diff=43490"/>
		<updated>2010-01-25T14:49:48Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Asia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TeamHeader|Deployment Team}}{{TOCright}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
This page lists the places in the world where Sugar is used along with a contact person that will facilitate communication between the global and the local communities.&lt;br /&gt;
&lt;br /&gt;
The column &amp;quot;# of members&amp;quot; is intended to give a rough estimation of the size of the local community and may include children, educators, parents, volunteers, etc&lt;br /&gt;
&lt;br /&gt;
=== Asia ===&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=3 style=&amp;quot;border: 1px solid white; border-collapse: collapse; background: #e3e4e5;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;background:#787878; color: white;&amp;quot;&lt;br /&gt;
! Region&lt;br /&gt;
! Languages&lt;br /&gt;
! # of members&lt;br /&gt;
! Contact&lt;br /&gt;
|-&lt;br /&gt;
| India&lt;br /&gt;
| English, Hindi, Marathi&lt;br /&gt;
| 32&lt;br /&gt;
| [[USER:Jpritikin|Joshua Pritikin]]&lt;br /&gt;
|-&lt;br /&gt;
| Nepal&lt;br /&gt;
| Nepali&lt;br /&gt;
| 50&lt;br /&gt;
| Subir Pradhanang, Rabi Karmacharya&lt;br /&gt;
|-&lt;br /&gt;
| Quezon City, Philippines&lt;br /&gt;
| Filipino, English&lt;br /&gt;
| 30&lt;br /&gt;
| [[USER:Jgotangco|Jerome Gotangco]]&lt;br /&gt;
|-&lt;br /&gt;
| BanSamka, Thailand&lt;br /&gt;
| Thai&lt;br /&gt;
| ~30 OLPC XO (beta-2 machines?)&lt;br /&gt;
| Arnan Sipitakiat?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Africa ===&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=3 style=&amp;quot;border: 1px solid white; border-collapse: collapse; background: #e3e4e5;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;background:#787878; color: white;&amp;quot;&lt;br /&gt;
! Region&lt;br /&gt;
! Languages&lt;br /&gt;
! Software&lt;br /&gt;
! Hardware&lt;br /&gt;
! # of members&lt;br /&gt;
! Contact&lt;br /&gt;
|-&lt;br /&gt;
| Ethiopia&lt;br /&gt;
| Amharic&lt;br /&gt;
| ?&lt;br /&gt;
| OLPC XO-1&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| Rwanda&lt;br /&gt;
| English?&lt;br /&gt;
| ?&lt;br /&gt;
| OLPC XO-1&lt;br /&gt;
| ?&lt;br /&gt;
| David Cavallo?&lt;br /&gt;
|-&lt;br /&gt;
| Nigeria&lt;br /&gt;
| English?&lt;br /&gt;
| ?&lt;br /&gt;
| OLPC XO-1&lt;br /&gt;
| ?&lt;br /&gt;
| Schumberger?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== America ===&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=3 style=&amp;quot;border: 1px solid white; border-collapse: collapse; background: #e3e4e5;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;background:#787878; color: white;&amp;quot;&lt;br /&gt;
! Region&lt;br /&gt;
! Languages&lt;br /&gt;
! Software&lt;br /&gt;
! Hardware&lt;br /&gt;
! # of members&lt;br /&gt;
! Contact&lt;br /&gt;
|-&lt;br /&gt;
| Colombia&lt;br /&gt;
| Spanish&lt;br /&gt;
| Fedora 11/Sugar - LiveCDs - SOAS&lt;br /&gt;
| Desktop PCs&lt;br /&gt;
| 7&lt;br /&gt;
| RafaelOrtiz&lt;br /&gt;
|-&lt;br /&gt;
| Peru&lt;br /&gt;
| Spanish&lt;br /&gt;
| ?&lt;br /&gt;
| OLPC XO-1&lt;br /&gt;
| ?&lt;br /&gt;
| Hernan Pachas?&lt;br /&gt;
|-&lt;br /&gt;
| Uruguay&lt;br /&gt;
| Spanish&lt;br /&gt;
| ?&lt;br /&gt;
| OLPC XO-1&lt;br /&gt;
| ?&lt;br /&gt;
| Pablo Flores?&lt;br /&gt;
|-&lt;br /&gt;
| Paraguay&lt;br /&gt;
| Spanish&lt;br /&gt;
| ?&lt;br /&gt;
| OLPC XO-1&lt;br /&gt;
| 4500&lt;br /&gt;
| Raul Gutierrez S.&lt;br /&gt;
|-&lt;br /&gt;
| Chiapas, Mexico&lt;br /&gt;
| Spanish, Tzotzil&lt;br /&gt;
| SoaS Strawberry on SD cards + ejabberd server&lt;br /&gt;
| Classmate Convertible&lt;br /&gt;
| 44, three rural classrooms&lt;br /&gt;
| [[User:Jose Icaza|Jose I. Icaza]]; [http://sites.google.com/site/tecnotzotzil TecnoTzotzil] project site in English&lt;br /&gt;
|-&lt;br /&gt;
| Bermingham, AL, USA&lt;br /&gt;
| English&lt;br /&gt;
| ?&lt;br /&gt;
| OLPC XO-1&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| Boston, MA, USA&lt;br /&gt;
| English&lt;br /&gt;
| SoaS Strawberry (0.84)&lt;br /&gt;
| HP EVO 500 desktops&lt;br /&gt;
| ?&lt;br /&gt;
| Caroline Meeks&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Europe ===&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=3 style=&amp;quot;border: 1px solid white; border-collapse: collapse; background: #e3e4e5;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;background:#787878; color: white;&amp;quot;&lt;br /&gt;
! Region&lt;br /&gt;
! Languages&lt;br /&gt;
! # of Sugar installations&lt;br /&gt;
! Hardware used&lt;br /&gt;
! Software version&lt;br /&gt;
! Project blog/wiki&lt;br /&gt;
! Contact&lt;br /&gt;
|-&lt;br /&gt;
| Graz, Austria&lt;br /&gt;
| German&lt;br /&gt;
| 25&lt;br /&gt;
| XO-1&lt;br /&gt;
| build 767&lt;br /&gt;
| [http://elearningblog.phst.at/?cat=32 blog] (in German)&lt;br /&gt;
| David Van Assche, [[User:ChristophD|Christoph Derndorfer]]&lt;br /&gt;
|-&lt;br /&gt;
| London, United Kingdom&lt;br /&gt;
| English&lt;br /&gt;
| 30&lt;br /&gt;
| XO-1&lt;br /&gt;
| build 802&lt;br /&gt;
| [http://olpc.org.uk/ blog], [http://lists.laptop.org/listinfo/olpc-uk mailing list], [http://wiki.laptop.org/go/OLPC_UK wiki]&lt;br /&gt;
| [[User:PeterRobinson|Peter Robinson]], [[User:MartinDengler|Martin Dengler]]&lt;br /&gt;
|-&lt;br /&gt;
| Brescia, Italy&lt;br /&gt;
| Italian&lt;br /&gt;
| ?&lt;br /&gt;
| XO-1&lt;br /&gt;
| ?&lt;br /&gt;
| [http://escuola.provincia.brescia.it/olpc/ website] (in Italian)&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| Milan, Italy&lt;br /&gt;
| Italian&lt;br /&gt;
| 30&lt;br /&gt;
| XO-1&lt;br /&gt;
| build 802&lt;br /&gt;
| none&lt;br /&gt;
| Comunità Nuova/Barrio&#039;s - Mario Lenelli (?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Oceania ===&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=3 style=&amp;quot;border: 1px solid white; border-collapse: collapse; background: #e3e4e5;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;background:#787878; color: white;&amp;quot;&lt;br /&gt;
! Region&lt;br /&gt;
! Languages&lt;br /&gt;
! # of members&lt;br /&gt;
! Contact&lt;br /&gt;
|-&lt;br /&gt;
| Solomon Islands&lt;br /&gt;
| Pijin, Marovo&lt;br /&gt;
| ?&lt;br /&gt;
| David Leeming?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== See also ===&lt;br /&gt;
&lt;br /&gt;
See also [[OLPC:Deployments]]&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=43320</id>
		<title>Karma</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=43320"/>
		<updated>2010-01-21T14:47:46Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Conventions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TOCleft}}&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Project]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Image:Karma.png|right]]&lt;br /&gt;
&lt;br /&gt;
== The Karma Project ==&lt;br /&gt;
&lt;br /&gt;
Karma is a framework for creating educational software using JavaScript, html5, and SVG. The Karma team is primarily focused on developing Sugar activities but you can also Karma to create lessons that run in any web browser that supports html5. The best ways to get involved are to join the [http://groups.google.com/group/karmajs mailing list] and [http://git.sugarlabs.org/projects/karma/repos/mainline get the code]&lt;br /&gt;
&lt;br /&gt;
=== Rationale ===&lt;br /&gt;
&lt;br /&gt;
Anyone with a modern standards-compliant web browser and a text editor should be able to create learning activities that can be used by anyone with a computer. Sugar should not be a walled garden that only allows learning activities expressly designed for it and it alone but rather gives extra power and depth to learning activities. Karma uses a specialized vocabulary that features a number of specialized terms. Please refer to the [[Karma/Dictionary|Karma Dictionary]] early and often.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
&lt;br /&gt;
Karma is a sub-project of Sugar Labs that is under active development. The latest examples can be seen at [http://karma.sugarlabs.org http://karma.sugarlabs.org]. You can also check out the [http://karmaproject.wordpress.com Karma Project blog] for updates.&lt;br /&gt;
&lt;br /&gt;
To try out the karma examples you need to have an html5-capable browser. The Browse activity within Sugar does not currently support html5. To try out karma within Sugar you need to install [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] and its webkit dependencies or run Firefox 3.5 from the command-line (yum install pywebkitgtk WebKit-gtk gnome-python2-gconf).&lt;br /&gt;
&lt;br /&gt;
The current focus of development is to convert Nepal&#039;s set of lessons coded in Squeak smalltalk. You can find the list of lessons to be converted [http://spreadsheets.google.com/pub?key=tweUJyn1BkEciHqVtSvCYDA&amp;amp;output=html here]. This is a good place for new contributors to get started&lt;br /&gt;
&lt;br /&gt;
=== What Karma Is ===&lt;br /&gt;
&lt;br /&gt;
* Karma is a simple framework to create simple interactive learning activities primarily for Sugar but also to be viewable through any web browser that supports html5&lt;br /&gt;
* Karma is used to create simple activities that run off-line w/out access to the Internet&lt;br /&gt;
* Karma is for web developers who want to contribute to Sugar using their current skills&lt;br /&gt;
* Karma is built on top of open web standards such as html5, javascript, and CSS.&lt;br /&gt;
* Karma is built to run on top of web browsers that support html5, particularly the canvas element.&lt;br /&gt;
* Karma is built around the concept of individual &amp;quot;lessons&amp;quot; and multiple lessons can be aggregated into a sugar activity&lt;br /&gt;
* Karma is the evolution of OLE Nepal&#039;s work on the EPaath suite of lessons in Nepal&lt;br /&gt;
* Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress&lt;br /&gt;
* Karma is pedagogically agnostic. Pedagogical choices are left to the lesson author.&lt;br /&gt;
&lt;br /&gt;
=== What Karma Isn&#039;t ===&lt;br /&gt;
&lt;br /&gt;
* Karma is not compatible with Internet Explorer because Internet Explorer does not support html5 apis such as canvas, svg, localStorage, etc.&lt;br /&gt;
* Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities&lt;br /&gt;
* Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics&lt;br /&gt;
* Karma is not meant as a basis for a WYSIWG programming environment like TurtleArt, EToys, or Logo&lt;br /&gt;
* Karma is not built to support browsers that do not support html5, such as Internet Explorer and Firefox &amp;lt; version 3.5 &lt;br /&gt;
* Karma is not intended to teach programming to children though it could be used as such&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
&lt;br /&gt;
A Karma lesson is composed of a valid html5 document, javascript code, and css stylesheets and optional assets such as images, audio, video and lesson plans. Karma should be very easy for inexperienced developers to understand and work with. Even non-programmers should be able to make visible changes by tweaking the code and liberal use of cut-and-paste. Complexities such as integration with pootle, local storage, and certain types of animation should be abstracted so that novice developers don&#039;t have to understand them in order to effectively use Karma. Karma strictly adheres to the Model-View-Controller Pattern and similarly to unobtrusive JavaScript. In essence. you should be able to substantially change the look and feel of a Karma lesson by modifying the CSS or you could translate the activity, without having to understand the JavaScript code.&lt;br /&gt;
&lt;br /&gt;
=== Design Goals ===&lt;br /&gt;
* Unobtrusive JavaScript&lt;br /&gt;
* No globals&lt;br /&gt;
* No extension of native objects&lt;br /&gt;
&lt;br /&gt;
=== Technical Architecture ===&lt;br /&gt;
&lt;br /&gt;
* Run-time - Karma will work with basic functionality on any W3C standards-compliant browser that supports HTML5 tags canvas, audio, and svg. This notably excludes Microsoft&#039;s Internet Explorer. Karma will be particularly tailored to work with Sugar&#039;s Journal and collaboration through Telepathy. Longer-term we hope to extend Karma to take advantage of Sugar&#039;s collaboration features.&lt;br /&gt;
* Primary Programming language - [https://developer.mozilla.org/en/New_in_JavaScript_1.6 Javascript 1.6] &lt;br /&gt;
* [[Karma/i18n|i18n]] -- Pervasive internationalization is a critical part of Karma&lt;br /&gt;
** Supported types of i18n  -- ToDo&lt;br /&gt;
*** Output of Native Digits&lt;br /&gt;
*** Image switching per locale&lt;br /&gt;
*** Regular text, though it is unclear how to support plural forms, grammar shifts, and gender&lt;br /&gt;
*** Audio switching per locale&lt;br /&gt;
** Integration with pootle&lt;br /&gt;
* [[Karma/Utilities|Utilities]] -- we primarily use [http://www.narwhaljs.org narwhal] for command-line scripting and [http://code.google.com/p/jsdoc-toolkit/ jsdoc] for documentation&lt;br /&gt;
* Journal, Telepathy Integration -- method to be determined, perhaps using html5&#039;s offline storage feature, some resources [https://developer.mozilla.org/en/Offline_resources_in_Firefox here] and [http://www.weboshelp.net/webos-tutorials/156-palm-webos-html5-database-storage-tutorial here] &lt;br /&gt;
* Moodle Integration -- method to be determined&lt;br /&gt;
* [[Karma/Bundle_layout|Repo and Bundle layout]]&lt;br /&gt;
* UI Widgets&lt;br /&gt;
** [[Scoreboard]]&lt;br /&gt;
** Dialog -- use standard jQuery UI one?&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
&lt;br /&gt;
* [[Karma:Anatomy_of_Lesson|Anatomy of a Karma Lesson]]&lt;br /&gt;
* The [[Karma/Dictionary|Karma Dictionary]]&lt;br /&gt;
* [[Karma/Specifications|Karma Specifications]] (early draft)&lt;br /&gt;
* [[Karma/Anti-conventions|Anti-Conventions]] -- coding no-nos&lt;br /&gt;
* Source Code stored in http://git.sugarlabs.org/projects/karma&lt;br /&gt;
* Each lesson must be in a folder named according to the schema &amp;quot;karma_Grade_Maths_title_WeekNo&amp;quot; where the week number is optional &lt;br /&gt;
  The following are valid names&lt;br /&gt;
  karma_3_Maths_LargestNumber_15&lt;br /&gt;
  karma_2_English_MatchingPuzzle&lt;br /&gt;
  karma_6_Maths_AddingUpTo10_4&lt;br /&gt;
* Version Control and repository management see the [[Karma#Version_Control|Version Control]] section of this page&lt;br /&gt;
* Unit testing is required for the karma.js library but not for individual lessons http://karma.sugarlabs.org/tests/&lt;br /&gt;
* Project Documentation kept in the Sugar Labs wiki&lt;br /&gt;
* Coding conventions: Based on [http://www.dojotoolkit.org/developer/StyleGuide Dojo Style Guide] &lt;br /&gt;
** Use sadCamelCase for function names and variables&lt;br /&gt;
** Exception to above -- object constructors should start with a capital letter&lt;br /&gt;
** boolean variables should be prefixed with &amp;quot;is&amp;quot;, &amp;quot;has&amp;quot;, &amp;quot;can&amp;quot;, or &amp;quot;should&amp;quot;&lt;br /&gt;
** counters should be prefixed with &amp;quot;num&amp;quot; or &amp;quot;count&amp;quot;&lt;br /&gt;
** Whenever possible, use [http://www.jslint.com/ jslint]&lt;br /&gt;
* File naming conventions: lowercase letters, underscore instead of spaces  (need to write more about it)&lt;br /&gt;
* Coding Pattern - We generally try to follow this coding pattern as it makes it easier to browse your code&lt;br /&gt;
 Put code in following order&lt;br /&gt;
 1) variable declarations&lt;br /&gt;
 2) method declarations&lt;br /&gt;
 3) method calls&lt;br /&gt;
&lt;br /&gt;
== Version Control == &lt;br /&gt;
Currently all lessons are stored in the examples/ folder of [http://git.sugarlabs.org/projects/karma/repos/mainline main karma repository]&lt;br /&gt;
&lt;br /&gt;
We plan to move all lessons into individual repositories at git.sugarlabs.org but only once we have a process to automatically build bundles.&lt;br /&gt;
&lt;br /&gt;
When we do move to individual repos we shall use the [http://git.sugarlabs.org/projects/karma_lesson karma_lesson template] for each new lesson repository &lt;br /&gt;
&lt;br /&gt;
Here is how you can use the karma_lesson template to create a new repository from scratch&lt;br /&gt;
&lt;br /&gt;
  $ git clone git://git.sugarlabs.org/karma_lesson/mainline.git&lt;br /&gt;
  $ mkdir ../karma_3_English_3  # create a new lesson directory following our naming convention&lt;br /&gt;
  $ cp -r * ../karma_3_English_3  &lt;br /&gt;
  $ cd ../karma_3_English_3&lt;br /&gt;
  $ rm -r .git     # make sure you get rid of the old git directory&lt;br /&gt;
  $ git init&lt;br /&gt;
  $ git add .&lt;br /&gt;
  $ git commit -a -m &amp;quot;first commit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now go to the http://git.sugarlabs.org/projects/new, make sure you are logged in&lt;br /&gt;
Create a new project, use the same name as you did for your lesson&#039;s main folder&lt;br /&gt;
then,&lt;br /&gt;
  $ git remote add origin git://...   # the pubic push url&lt;br /&gt;
&lt;br /&gt;
Then on to coding your lesson ;)&lt;br /&gt;
&lt;br /&gt;
From then on &lt;br /&gt;
 $ git push origin master   # will sync your local tree w/ the server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tagging&#039;&#039;&#039; -- a karma lesson can be in only one of two states, stable or unstable. Any commit tagged &#039;stable&#039; is the stable version of your code. Every other version of your code is unstable. We will not use numeric versioning such as 0.1, 1.0, 1.2, etc. for the foreseeable future.&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
[[Karma:Meeting 21 December 2009]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Project ==&lt;br /&gt;
&lt;br /&gt;
Karma started as a GSoC project with Felipe Lopez Toledo &amp;quot;SubZero&amp;quot; as the student participant and [[USER:BryanWB| Bryan Berry]] as mentor. &lt;br /&gt;
&lt;br /&gt;
=== GSoC Meetings ===&lt;br /&gt;
&lt;br /&gt;
Notes from GSoC meetings - kept for archival purposes&lt;br /&gt;
* [[Karma:Meeting 12 May 2009]]&lt;br /&gt;
* [[Karma:Meeting 02 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 09 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 23 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 30 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Jul 2009]]&lt;br /&gt;
* [[Karma:Meeting 4 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 11 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 18 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 24 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 08 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 14 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Sep 2009]]&lt;br /&gt;
&lt;br /&gt;
== Project Roadmap ==&lt;br /&gt;
&lt;br /&gt;
==== 0.1 &amp;quot;Osito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Was completed September 11, 2009&lt;br /&gt;
&lt;br /&gt;
* 1 Working example in &amp;quot;adding_up_to_10&amp;quot;&lt;br /&gt;
* cleaned up documentation with jsdocs api documentation and cleaned up README.txt&lt;br /&gt;
* integrate chakra and &amp;quot;adding_up_to_10&amp;quot; and knavbar&lt;br /&gt;
* adding_up_to_10 works on the XO&lt;br /&gt;
** Surf&lt;br /&gt;
** Browse&lt;br /&gt;
&lt;br /&gt;
==== 0.2 &amp;quot;Gatito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Completed mid-December 2009&lt;br /&gt;
&lt;br /&gt;
* unit testing added to karma.js using QUnit&lt;br /&gt;
* API documented w/ jsdoc-toolkit&lt;br /&gt;
* support for SVG and canvas animation &lt;br /&gt;
* 3 working examples&lt;br /&gt;
** Adding_Up_to_10 using both SVG and canvas&lt;br /&gt;
** Quadrilaterals &lt;br /&gt;
** &amp;quot;Conozco A Uruguay&amp;quot; done with karma  -- 50% done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 0.3 &amp;quot;niño&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due 31 March 2010&lt;br /&gt;
&lt;br /&gt;
* Full i18n support&lt;br /&gt;
* All Squeak lessons converted to Karma&lt;br /&gt;
* Integrate all of the existing E-Paath lesson into chakra &lt;br /&gt;
* narwhal build script to build one giant karma bundle w/ all the E-Paath lessons inside it and chakra&lt;br /&gt;
* At least 6 lessons ready that have been translated into 3 languages each&lt;br /&gt;
* Version 0.1 draft of karma specification done&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
&lt;br /&gt;
here lies a lot of links to resources specific to karma&lt;br /&gt;
&lt;br /&gt;
UI&lt;br /&gt;
* Iphone Human Interface Guide http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/mobilehig/MobileHIG.pdf&lt;br /&gt;
* Palm Pre interface guide http://developer.palm.com/images/palm/pdf/palm_webos_hi_guidelines.pdf&lt;br /&gt;
* 30 Usability Issues To Be Aware Of http://www.smashingmagazine.com/2007/10/09/30-usability-issues-to-be-aware-of/&lt;br /&gt;
* 10 Usability Nightmares You Should Be Aware Of http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/&lt;br /&gt;
* &amp;quot;The Design of Everyday Things&amp;quot; book by Don Norman&lt;br /&gt;
* &amp;quot;Don&#039;t Make me think&amp;quot; by Steve Krug, guide to usability for web apps&lt;br /&gt;
&lt;br /&gt;
HTML5&lt;br /&gt;
* http://www.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/&lt;br /&gt;
* http://www.w3.org/TR/html5-diff/  Differences between html4 and html5&lt;br /&gt;
* [http://diveintohtml5.org/ Dive Into HTML5]&lt;br /&gt;
&lt;br /&gt;
General Web Design&lt;br /&gt;
* &amp;quot;Web Design in a Nutshell&amp;quot; from O&#039;Reilly&lt;br /&gt;
* Apple &amp;quot;Web Page Development: Best Practices&amp;quot; http://developer.apple.com/internet/webcontent/bestwebdev.html&lt;br /&gt;
&lt;br /&gt;
Canvas&lt;br /&gt;
* demos: http://html5demos.com/&lt;br /&gt;
* basics: http://dev.opera.com/articles/view/html-5-canvas-the-basics/&lt;br /&gt;
* painting web app: http://dev.opera.com/articles/view/html5-canvas-painting/&lt;br /&gt;
* mozilla canvas tutorial: https://developer.mozilla.org/en/Canvas_tutorial&lt;br /&gt;
* using canvas on webkit: http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/Canvas.html&lt;br /&gt;
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html&lt;br /&gt;
&lt;br /&gt;
SVG&lt;br /&gt;
* The [http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html SVG Primer] a very detailed and in-depth resource&lt;br /&gt;
* [http://raphaeljs.com/reference.html Raphaeljs documentation]&lt;br /&gt;
* https://developer.mozilla.org/en/svg&lt;br /&gt;
&lt;br /&gt;
Javascript&lt;br /&gt;
* [http://eloquentjavascript.net Eloquent Javascript] best beginning javascript resource&lt;br /&gt;
* &amp;quot;Javascript: The Good Parts&amp;quot; book by Doug Crockford&lt;br /&gt;
* &amp;quot;jQuery in Action&amp;quot; book&lt;br /&gt;
* &amp;quot;Pro Javascript Techniques&amp;quot; by john resig&lt;br /&gt;
* All the tutorials at www.ejohn.org, esp.&lt;br /&gt;
** http://ejohn.org/blog/how-javascript-timers-work/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Coding Tools and Conventions&lt;br /&gt;
* Firebug  --- http://www.getfirebug.com&lt;br /&gt;
* Web-Inspector --- webkit&#039;s answer to firebug&lt;br /&gt;
* Browsers --- We primarily work with Chromium and Firefox &amp;gt; 3.5&lt;br /&gt;
* For emacs users -- nxhtml mode and magit.el for working w/ git&lt;br /&gt;
* [http://www.jslint.com/ jslint]&lt;br /&gt;
* [http://www.inkscape.org inkscape]&lt;br /&gt;
* [http://narwhaljs.org narwhal]&lt;br /&gt;
&lt;br /&gt;
== Subpages ==&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/Anti-conventions&amp;diff=43231</id>
		<title>Karma/Anti-conventions</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/Anti-conventions&amp;diff=43231"/>
		<updated>2010-01-18T12:22:17Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Putting style information inline */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Not closing &amp;lt;img /&amp;gt; or &amp;lt;meta /&amp;gt; tags==&lt;br /&gt;
&lt;br /&gt;
You can usually get away with not closing these tags but they could cause weird rendering of elements that follow them. If you don&#039;t close &amp;lt;img&amp;gt;, the browser might think that any following elements are children rather than siblings and display them accordingly.&lt;br /&gt;
&lt;br /&gt;
==Using document.write()==&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Using document.write(&#039;&amp;lt;div&amp;gt;some html&amp;lt;/div&amp;gt;&#039;);  instead of $(&#039;#parentDiv&#039;).html(&#039;&amp;lt;div&amp;gt; some html &amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
document.write is just bad in general. Some browsers don&#039;t like it (chromium) and in all browsers it freezes all other execution while it is writing to the page.&lt;br /&gt;
&lt;br /&gt;
==Manually constructing an html sequence rather than passing a string==&lt;br /&gt;
&lt;br /&gt;
The former is  not incorrect per se, but it is much, much slower than passing a string to .html(), at least according to the jQuery Cookbook.&lt;br /&gt;
   &lt;br /&gt;
   $parent = $(document.createElement(&#039;div&#039;))&lt;br /&gt;
                  .appendTo(&#039;#someId&#039;)&lt;br /&gt;
                  .attr({id: &#039;foo&#039;, class: &#039;foobar baz&#039;})&lt;br /&gt;
                  .text(&#039;hello world&#039;);&lt;br /&gt;
&lt;br /&gt;
According to jQuery Cookbook this is much, much faster&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;	  &lt;br /&gt;
   $parent = $(&#039;#someId&#039;).append($(&#039;&amp;lt;div id=&amp;quot;foo&amp;quot; class=&amp;quot;foobar baz&amp;quot;&amp;gt;Hello World&amp;lt;/div&amp;gt;&#039;));&lt;br /&gt;
   &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
FYI, prefixing cached jQuery reference w/ a &amp;quot;$&amp;quot; is a good practice.&lt;br /&gt;
&lt;br /&gt;
==Putting style information inline==&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   &amp;lt;div style=&amp;quot;display:none;&amp;quot;&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This makes the lesson much harder to debug as you have to look both in the .css file&lt;br /&gt;
and at the html. As the lesson grows, which it will, it gets harder and harder to &lt;br /&gt;
pin down small bugs&lt;br /&gt;
&lt;br /&gt;
==Mixing naming conventions, like camelCase and not_camel_case==&lt;br /&gt;
&lt;br /&gt;
Neither of these naming conventions is the &amp;quot;correct&amp;quot; convention but mixing them makes it hard for others to work w/ your code&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   &amp;lt;div id=&amp;quot;topbtn_right&amp;quot;&amp;gt; would be better written as &amp;lt;div id=&amp;quot;topBtnRight&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/Anti-conventions&amp;diff=43230</id>
		<title>Karma/Anti-conventions</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/Anti-conventions&amp;diff=43230"/>
		<updated>2010-01-18T12:21:48Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Manually constructing an html sequence rather than passing a string */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Not closing &amp;lt;img /&amp;gt; or &amp;lt;meta /&amp;gt; tags==&lt;br /&gt;
&lt;br /&gt;
You can usually get away with not closing these tags but they could cause weird rendering of elements that follow them. If you don&#039;t close &amp;lt;img&amp;gt;, the browser might think that any following elements are children rather than siblings and display them accordingly.&lt;br /&gt;
&lt;br /&gt;
==Using document.write()==&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Using document.write(&#039;&amp;lt;div&amp;gt;some html&amp;lt;/div&amp;gt;&#039;);  instead of $(&#039;#parentDiv&#039;).html(&#039;&amp;lt;div&amp;gt; some html &amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
document.write is just bad in general. Some browsers don&#039;t like it (chromium) and in all browsers it freezes all other execution while it is writing to the page.&lt;br /&gt;
&lt;br /&gt;
==Manually constructing an html sequence rather than passing a string==&lt;br /&gt;
&lt;br /&gt;
The former is  not incorrect per se, but it is much, much slower than passing a string to .html(), at least according to the jQuery Cookbook.&lt;br /&gt;
   &lt;br /&gt;
   $parent = $(document.createElement(&#039;div&#039;))&lt;br /&gt;
                  .appendTo(&#039;#someId&#039;)&lt;br /&gt;
                  .attr({id: &#039;foo&#039;, class: &#039;foobar baz&#039;})&lt;br /&gt;
                  .text(&#039;hello world&#039;);&lt;br /&gt;
&lt;br /&gt;
According to jQuery Cookbook this is much, much faster&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;	  &lt;br /&gt;
   $parent = $(&#039;#someId&#039;).append($(&#039;&amp;lt;div id=&amp;quot;foo&amp;quot; class=&amp;quot;foobar baz&amp;quot;&amp;gt;Hello World&amp;lt;/div&amp;gt;&#039;));&lt;br /&gt;
   &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
FYI, prefixing cached jQuery reference w/ a &amp;quot;$&amp;quot; is a good practice.&lt;br /&gt;
&lt;br /&gt;
==Putting style information inline==&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   &amp;lt;div style=&amp;quot;display:none;&amp;quot;&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   This makes the lesson much harder to debug as you have to look both in the .css file&lt;br /&gt;
   and at the html. As the lesson grows, which it will, it gets harder and harder to &lt;br /&gt;
   pin down small bugs&lt;br /&gt;
&lt;br /&gt;
==Mixing naming conventions, like camelCase and not_camel_case==&lt;br /&gt;
&lt;br /&gt;
Neither of these naming conventions is the &amp;quot;correct&amp;quot; convention but mixing them makes it hard for others to work w/ your code&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   &amp;lt;div id=&amp;quot;topbtn_right&amp;quot;&amp;gt; would be better written as &amp;lt;div id=&amp;quot;topBtnRight&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/Anti-conventions&amp;diff=43229</id>
		<title>Karma/Anti-conventions</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/Anti-conventions&amp;diff=43229"/>
		<updated>2010-01-18T12:20:41Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Not closing &amp;lt;img /&amp;gt; or &amp;lt;meta /&amp;gt; tags==&lt;br /&gt;
&lt;br /&gt;
You can usually get away with not closing these tags but they could cause weird rendering of elements that follow them. If you don&#039;t close &amp;lt;img&amp;gt;, the browser might think that any following elements are children rather than siblings and display them accordingly.&lt;br /&gt;
&lt;br /&gt;
==Using document.write()==&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Using document.write(&#039;&amp;lt;div&amp;gt;some html&amp;lt;/div&amp;gt;&#039;);  instead of $(&#039;#parentDiv&#039;).html(&#039;&amp;lt;div&amp;gt; some html &amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
document.write is just bad in general. Some browsers don&#039;t like it (chromium) and in all browsers it freezes all other execution while it is writing to the page.&lt;br /&gt;
&lt;br /&gt;
==Manually constructing an html sequence rather than passing a string==&lt;br /&gt;
&lt;br /&gt;
The former is  not incorrect per se, but it is much, much slower than passing a string to .html(), at least according to the jQuery Cookbook.&lt;br /&gt;
   &lt;br /&gt;
   $parent = $(document.createElement(&#039;div&#039;))&lt;br /&gt;
                  .appendTo(&#039;#someId&#039;)&lt;br /&gt;
                  .attr({id: &#039;foo&#039;, class: &#039;foobar baz&#039;})&lt;br /&gt;
                  .text(&#039;hello world&#039;);&lt;br /&gt;
&lt;br /&gt;
   According to jQuery Cookbook this is much, much faster&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;	  &lt;br /&gt;
   $parent = $(&#039;#someId&#039;).append($(&#039;&amp;lt;div id=&amp;quot;foo&amp;quot; class=&amp;quot;foobar baz&amp;quot;&amp;gt;Hello World&amp;lt;/div&amp;gt;&#039;));&lt;br /&gt;
   &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 FYI, prefixing cached jQuery reference w/ a &amp;quot;$&amp;quot; is a good practice.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==Putting style information inline==&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   &amp;lt;div style=&amp;quot;display:none;&amp;quot;&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   This makes the lesson much harder to debug as you have to look both in the .css file&lt;br /&gt;
   and at the html. As the lesson grows, which it will, it gets harder and harder to &lt;br /&gt;
   pin down small bugs&lt;br /&gt;
&lt;br /&gt;
==Mixing naming conventions, like camelCase and not_camel_case==&lt;br /&gt;
&lt;br /&gt;
Neither of these naming conventions is the &amp;quot;correct&amp;quot; convention but mixing them makes it hard for others to work w/ your code&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   &amp;lt;div id=&amp;quot;topbtn_right&amp;quot;&amp;gt; would be better written as &amp;lt;div id=&amp;quot;topBtnRight&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/Anti-conventions&amp;diff=43228</id>
		<title>Karma/Anti-conventions</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/Anti-conventions&amp;diff=43228"/>
		<updated>2010-01-18T12:18:33Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Not closing &amp;lt;img /&amp;gt; or &amp;lt;meta /&amp;gt; tags.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
You can usually get away with not closing these tags but they could cause weird rendering of elements that follow them. If you don&#039;t close &amp;lt;img&amp;gt;, the browser might think that any following elements are children rather than siblings and display them accordingly.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Using document.write(&#039;&amp;lt;div&amp;gt;some html&amp;lt;/div&amp;gt;&#039;);  instead of $(&#039;#parentDiv&#039;).html(&#039;&amp;lt;div&amp;gt; some html &amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
document.write is just bad in general. Some browsers don&#039;t like it (chromium) and in all browsers it freezes all other execution while it is writing to the page.&lt;br /&gt;
&lt;br /&gt;
Manually constructing an html sequence rather than passing a string. &lt;br /&gt;
&lt;br /&gt;
The former is  not incorrect per se, but it is much, much slower than passing a string to .html(), at least according to the jQuery Cookbook.&lt;br /&gt;
   &lt;br /&gt;
   $parent = $(document.createElement(&#039;div&#039;))&lt;br /&gt;
                  .appendTo(&#039;#someId&#039;)&lt;br /&gt;
                  .attr({id: &#039;foo&#039;, class: &#039;foobar baz&#039;})&lt;br /&gt;
                  .text(&#039;hello world&#039;);&lt;br /&gt;
&lt;br /&gt;
   According to jQuery Cookbook this is much, much faster&lt;br /&gt;
	  &lt;br /&gt;
   $parent = $(&#039;#someId&#039;).append($(&#039;&amp;lt;div id=&amp;quot;foo&amp;quot; class=&amp;quot;foobar baz&amp;quot;&amp;gt;Hello World&amp;lt;/div&amp;gt;&#039;));&lt;br /&gt;
&lt;br /&gt;
 FYI, prefixing cached jQuery reference w/ a &amp;quot;$&amp;quot; is a good practice.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Putting style information inline&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div style=&amp;quot;display:none;&amp;quot;&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   This makes the lesson much harder to debug as you have to look both in the .css file&lt;br /&gt;
   and at the html. As the lesson grows, which it will, it gets harder and harder to &lt;br /&gt;
   pin down small bugs&lt;br /&gt;
&lt;br /&gt;
Mixing naming conventions, like camelCase and not_camel_case&lt;br /&gt;
&lt;br /&gt;
Neither of these naming conventions is the &amp;quot;correct&amp;quot; convention but mixing them makes it hard for others to work w/ your code&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div id=&amp;quot;topbtn_right&amp;quot;&amp;gt; would be better written as &amp;lt;div id=&amp;quot;topBtnRight&amp;quot;&amp;gt;&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/Anti-conventions&amp;diff=43227</id>
		<title>Karma/Anti-conventions</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/Anti-conventions&amp;diff=43227"/>
		<updated>2010-01-18T12:17:34Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Not closing &amp;lt;img /&amp;gt; or &amp;lt;meta /&amp;gt; tags. &lt;br /&gt;
&lt;br /&gt;
You can usually get away with not closing these tags but they could cause weird rendering of elements that follow them. If you don&#039;t close &amp;lt;img&amp;gt;, the browser might think that any following elements are children rather than siblings and display them accordingly.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Using document.write(&#039;&amp;lt;div&amp;gt;some html&amp;lt;/div&amp;gt;&#039;);  instead of $(&#039;#parentDiv&#039;).html(&#039;&amp;lt;div&amp;gt; some html &amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
document.write is just bad in general. Some browsers don&#039;t like it (chromium) and in all browsers it freezes all other execution while it is writing to the page.&lt;br /&gt;
&lt;br /&gt;
Manually constructing an html sequence rather than passing a string. &lt;br /&gt;
&lt;br /&gt;
The former is  not incorrect per se, but it is much, much slower than passing a string to .html(), at least according to the jQuery Cookbook.&lt;br /&gt;
   &lt;br /&gt;
   $parent = $(document.createElement(&#039;div&#039;))&lt;br /&gt;
                  .appendTo(&#039;#someId&#039;)&lt;br /&gt;
                  .attr({id: &#039;foo&#039;, class: &#039;foobar baz&#039;})&lt;br /&gt;
                  .text(&#039;hello world&#039;);&lt;br /&gt;
&lt;br /&gt;
   According to jQuery Cookbook this is much, much faster&lt;br /&gt;
	  &lt;br /&gt;
   $parent = $(&#039;#someId&#039;).append($(&#039;&amp;lt;div id=&amp;quot;foo&amp;quot; class=&amp;quot;foobar baz&amp;quot;&amp;gt;Hello World&amp;lt;/div&amp;gt;&#039;));&lt;br /&gt;
&lt;br /&gt;
 FYI, prefixing cached jQuery reference w/ a &amp;quot;$&amp;quot; is a good practice.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Putting style information inline&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div style=&amp;quot;display:none;&amp;quot;&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   This makes the lesson much harder to debug as you have to look both in the .css file&lt;br /&gt;
   and at the html. As the lesson grows, which it will, it gets harder and harder to &lt;br /&gt;
   pin down small bugs&lt;br /&gt;
&lt;br /&gt;
Mixing naming conventions, like camelCase and not_camel_case&lt;br /&gt;
&lt;br /&gt;
Neither of these naming conventions is the &amp;quot;correct&amp;quot; convention but mixing them makes it hard for others to work w/ your code&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div id=&amp;quot;topbtn_right&amp;quot;&amp;gt; would be better written as &amp;lt;div id=&amp;quot;topBtnRight&amp;quot;&amp;gt;&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/Anti-conventions&amp;diff=43226</id>
		<title>Karma/Anti-conventions</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/Anti-conventions&amp;diff=43226"/>
		<updated>2010-01-18T12:14:21Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Not closing &amp;lt;img /&amp;gt; or &amp;lt;meta /&amp;gt; tags. &lt;br /&gt;
&lt;br /&gt;
You can usually get away with not closing these tags but they could cause weird rendering of elements that follow them. If you don&#039;t close &amp;lt;img&amp;gt;, the browser might think that any following elements are childrent rather than siblings and display them accordingly.&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Using document.write(&#039;&amp;lt;div&amp;gt;some html&amp;lt;/div&amp;gt;&#039;);  instead of $(&#039;#parentDiv&#039;).html(&#039;&amp;lt;div&amp;gt; some html &amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
document.write is just bad in general. Some browsers don&#039;t like it (chromium) and in all browsers it freezes all other execution while it is writing to the page.&lt;br /&gt;
&lt;br /&gt;
Manually constructing an html sequence rather than passing a string. &lt;br /&gt;
&lt;br /&gt;
The former is  not incorrect per se, but it is much, much slower than passing a string to .html(), at least according to the jQuery Cookbook.&lt;br /&gt;
   &lt;br /&gt;
   $parent = $(document.createElement(&#039;div&#039;))&lt;br /&gt;
                  .appendTo(&#039;#someId&#039;)&lt;br /&gt;
                  .attr({id: &#039;foo&#039;, class: &#039;foobar baz&#039;})&lt;br /&gt;
                  .text(&#039;hello world&#039;);&lt;br /&gt;
&lt;br /&gt;
   According to jQuery Cookbook this is much, much faster&lt;br /&gt;
	  &lt;br /&gt;
   $parent = $(&#039;#someId&#039;).append($(&#039;&amp;lt;div id=&amp;quot;foo&amp;quot; class=&amp;quot;foobar baz&amp;quot;&amp;gt;Hello World&amp;lt;/div&amp;gt;&#039;));&lt;br /&gt;
&lt;br /&gt;
 FYI, prefixing cached jQuery reference w/ a &amp;quot;$&amp;quot; is a good practice.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Putting style information inline&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div style=&amp;quot;display:none;&amp;quot;&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   This makes the lesson much harder to debug as you have to look both in the .css file&lt;br /&gt;
   and at the html. As the lesson grows, which it will, it gets harder and harder to &lt;br /&gt;
   pin down small bugs&lt;br /&gt;
&lt;br /&gt;
Mixing naming conventions, like camelCase and not_camel_case&lt;br /&gt;
&lt;br /&gt;
Neither of these naming conventions is the &amp;quot;correct&amp;quot; convention but mixing them makes it hard for others to work w/ your code&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div id=&amp;quot;topbtn_right&amp;quot;&amp;gt; would be better written as &amp;lt;div id=&amp;quot;topBtnRight&amp;quot;&amp;gt;&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma/Anti-conventions&amp;diff=43225</id>
		<title>Karma/Anti-conventions</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma/Anti-conventions&amp;diff=43225"/>
		<updated>2010-01-18T12:03:59Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: Created page with &amp;#039;Not closing &amp;lt;img /&amp;gt; or &amp;lt;meta /&amp;gt; tags.   You can usually get away with not closing these tags but they could cause weird rendering of elements that follow them. If you don&amp;#039;t close…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Not closing &amp;lt;img /&amp;gt; or &amp;lt;meta /&amp;gt; tags. &lt;br /&gt;
&lt;br /&gt;
You can usually get away with not closing these tags but they could cause weird rendering of elements that follow them. If you don&#039;t close &amp;lt;img&amp;gt;, the browser might think that any following elements are childrent rather than siblings and display them accordingly.&lt;br /&gt;
&lt;br /&gt;
Using document.write(&#039;&amp;lt;div&amp;gt; some html &amp;lt;/div&amp;gt;&#039;);  instead of $(&#039;#parentDiv&#039;).html(&#039;&amp;lt;div&amp;gt; some html &amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
document.write is just bad in general. Some browsers don&#039;t like it (chromium) and in all browsers it freezes all other execution while it is writing to the page.&lt;br /&gt;
&lt;br /&gt;
Manually constructing an html sequence rather than passing a string. &lt;br /&gt;
&lt;br /&gt;
The former is  not incorrect per se, but it is much, much slower than passing a string to .html(), at least according to the jQuery Cookbook.&lt;br /&gt;
   &lt;br /&gt;
   $parent = $(document.createElement(&#039;div&#039;))&lt;br /&gt;
                  .appendTo(&#039;#someId&#039;)&lt;br /&gt;
                  .attr({id: &#039;foo&#039;, class: &#039;foobar baz&#039;})&lt;br /&gt;
                  .text(&#039;hello world&#039;);&lt;br /&gt;
&lt;br /&gt;
   According to jQuery Cookbook this is much, much faster&lt;br /&gt;
	  &lt;br /&gt;
   $parent = $(&#039;#someId&#039;).append($(&#039;&amp;lt;div id=&amp;quot;foo&amp;quot; class=&amp;quot;foobar baz&amp;quot;&amp;gt;Hello World&amp;lt;/div&amp;gt;&#039;));&lt;br /&gt;
&lt;br /&gt;
 FYI, prefixing cached jQuery reference w/ a &amp;quot;$&amp;quot; is a good practice.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Putting style information inline&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div style=&amp;quot;display:none;&amp;quot;&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   This makes the lesson much harder to debug as you have to look both in the .css file&lt;br /&gt;
   and at the html. As the lesson grows, which it will, it gets harder and harder to &lt;br /&gt;
   pin down small bugs&lt;br /&gt;
&lt;br /&gt;
Mixing naming conventions, like camelCase and not_camel_case&lt;br /&gt;
&lt;br /&gt;
Neither of these naming conventions is the &amp;quot;correct&amp;quot; convention but mixing them makes it hard for others to work w/ your code&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div id=&amp;quot;topbtn_right&amp;quot;&amp;gt; would be better written as &amp;lt;div id=&amp;quot;topBtnRight&amp;quot;&amp;gt;&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=43224</id>
		<title>Karma</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=43224"/>
		<updated>2010-01-18T12:02:08Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Conventions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TOCleft}}&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Project]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Image:Karma.png|right]]&lt;br /&gt;
&lt;br /&gt;
== The Karma Project ==&lt;br /&gt;
&lt;br /&gt;
Karma is a framework for creating educational software using JavaScript, html5, and SVG. The Karma team is primarily focused on developing Sugar activities but you can also Karma to create lessons that run in any web browser that supports html5. The best ways to get involved are to join the [http://groups.google.com/group/karmajs mailing list] and [http://git.sugarlabs.org/projects/karma/repos/mainline get the code]&lt;br /&gt;
&lt;br /&gt;
=== Rationale ===&lt;br /&gt;
&lt;br /&gt;
Anyone with a modern standards-compliant web browser and a text editor should be able to create learning activities that can be used by anyone with a computer. Sugar should not be a walled garden that only allows learning activities expressly designed for it and it alone but rather gives extra power and depth to learning activities. Karma uses a specialized vocabulary that features a number of specialized terms. Please refer to the [[Karma/Dictionary|Karma Dictionary]] early and often.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
&lt;br /&gt;
Karma is a sub-project of Sugar Labs that is under active development. The latest examples can be seen at [http://karma.sugarlabs.org http://karma.sugarlabs.org]. You can also check out the [http://karmaproject.wordpress.com Karma Project blog] for updates.&lt;br /&gt;
&lt;br /&gt;
To try out the karma examples you need to have an html5-capable browser. The Browse activity within Sugar does not currently support html5. To try out karma within Sugar you need to install [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] and its webkit dependencies or run Firefox 3.5 from the command-line (yum install pywebkitgtk WebKit-gtk gnome-python2-gconf).&lt;br /&gt;
&lt;br /&gt;
The current focus of development is to convert Nepal&#039;s set of lessons coded in Squeak smalltalk. You can find the list of lessons to be converted [http://spreadsheets.google.com/pub?key=tweUJyn1BkEciHqVtSvCYDA&amp;amp;output=html here]. This is a good place for new contributors to get started&lt;br /&gt;
&lt;br /&gt;
=== What Karma Is ===&lt;br /&gt;
&lt;br /&gt;
* Karma is a simple framework to create simple interactive learning activities primarily for Sugar but also to be viewable through any web browser that supports html5&lt;br /&gt;
* Karma is used to create simple activities that run off-line w/out access to the Internet&lt;br /&gt;
* Karma is for web developers who want to contribute to Sugar using their current skills&lt;br /&gt;
* Karma is built on top of open web standards such as html5, javascript, and CSS.&lt;br /&gt;
* Karma is built to run on top of web browsers that support html5, particularly the canvas element.&lt;br /&gt;
* Karma is built around the concept of individual &amp;quot;lessons&amp;quot; and multiple lessons can be aggregated into a sugar activity&lt;br /&gt;
* Karma is the evolution of OLE Nepal&#039;s work on the EPaath suite of lessons in Nepal&lt;br /&gt;
* Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress&lt;br /&gt;
* Karma is pedagogically agnostic. Pedagogical choices are left to the lesson author.&lt;br /&gt;
&lt;br /&gt;
=== What Karma Isn&#039;t ===&lt;br /&gt;
&lt;br /&gt;
* Karma is not compatible with Internet Explorer because Internet Explorer does not support html5 apis such as canvas, svg, localStorage, etc.&lt;br /&gt;
* Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities&lt;br /&gt;
* Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics&lt;br /&gt;
* Karma is not meant as a basis for a WYSIWG programming environment like TurtleArt, EToys, or Logo&lt;br /&gt;
* Karma is not built to support browsers that do not support html5, such as Internet Explorer and Firefox &amp;lt; version 3.5 &lt;br /&gt;
* Karma is not intended to teach programming to children though it could be used as such&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
&lt;br /&gt;
A Karma lesson is composed of a valid html5 document, javascript code, and css stylesheets and optional assets such as images, audio, video and lesson plans. Karma should be very easy for inexperienced developers to understand and work with. Even non-programmers should be able to make visible changes by tweaking the code and liberal use of cut-and-paste. Complexities such as integration with pootle, local storage, and certain types of animation should be abstracted so that novice developers don&#039;t have to understand them in order to effectively use Karma. Karma strictly adheres to the Model-View-Controller Pattern and similarly to unobtrusive JavaScript. In essence. you should be able to substantially change the look and feel of a Karma lesson by modifying the CSS or you could translate the activity, without having to understand the JavaScript code.&lt;br /&gt;
&lt;br /&gt;
=== Design Goals ===&lt;br /&gt;
* Unobtrusive JavaScript&lt;br /&gt;
* No globals&lt;br /&gt;
* No extension of native objects&lt;br /&gt;
&lt;br /&gt;
=== Technical Architecture ===&lt;br /&gt;
&lt;br /&gt;
* Run-time - Karma will work with basic functionality on any W3C standards-compliant browser that supports HTML5 tags canvas, audio, and svg. This notably excludes Microsoft&#039;s Internet Explorer. Karma will be particularly tailored to work with Sugar&#039;s Journal and collaboration through Telepathy. Longer-term we hope to extend Karma to take advantage of Sugar&#039;s collaboration features.&lt;br /&gt;
* Primary Programming language - [https://developer.mozilla.org/en/New_in_JavaScript_1.6 Javascript 1.6] &lt;br /&gt;
* [[Karma/i18n|i18n]] -- Pervasive internationalization is a critical part of Karma&lt;br /&gt;
** Supported types of i18n  -- ToDo&lt;br /&gt;
*** Output of Native Digits&lt;br /&gt;
*** Image switching per locale&lt;br /&gt;
*** Regular text, though it is unclear how to support plural forms, grammar shifts, and gender&lt;br /&gt;
*** Audio switching per locale&lt;br /&gt;
** Integration with pootle&lt;br /&gt;
* [[Karma/Utilities|Utilities]] -- we primarily use [http://www.narwhaljs.org narwhal] for command-line scripting and [http://code.google.com/p/jsdoc-toolkit/ jsdoc] for documentation&lt;br /&gt;
* Journal, Telepathy Integration -- method to be determined, perhaps using html5&#039;s offline storage feature, some resources [https://developer.mozilla.org/en/Offline_resources_in_Firefox here] and [http://www.weboshelp.net/webos-tutorials/156-palm-webos-html5-database-storage-tutorial here] &lt;br /&gt;
* Moodle Integration -- method to be determined&lt;br /&gt;
* [[Karma/Bundle_layout|Repo and Bundle layout]]&lt;br /&gt;
* UI Widgets&lt;br /&gt;
** [[Scoreboard]]&lt;br /&gt;
** Dialog -- use standard jQuery UI one?&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
&lt;br /&gt;
* [[Karma:Anatomy_of_Lesson|Anatomy of a Karma Lesson]]&lt;br /&gt;
* The [[Karma/Dictionary|Karma Dictionary]]&lt;br /&gt;
* [[Karma/Specifications|Karma Specifications]] (early draft)&lt;br /&gt;
* [[Karma/Anti-conventions|Anti-Conventions]] -- coding no-nos&lt;br /&gt;
* Source Code stored in http://git.sugarlabs.org/projects/karma&lt;br /&gt;
* Each lesson must be in a folder named according to the schema &amp;quot;karma_Grade_Maths_title_WeekNo&amp;quot; where the week number is optional &lt;br /&gt;
  The following are valid names&lt;br /&gt;
  karma_3_Maths_LargestNumber_15&lt;br /&gt;
  karma_2_English_MatchingPuzzle&lt;br /&gt;
  karma_6_Maths_AddingUpTo10_4&lt;br /&gt;
* Version Control and repository management see the [[Karma#Version_Control|Version Control]] section of this page&lt;br /&gt;
* Unit testing is required for the karma.js library but not for individual lessons http://karma.sugarlabs.org/tests/&lt;br /&gt;
* Project Documentation kept in the Sugar Labs wiki&lt;br /&gt;
* Coding conventions: Based on [http://www.dojotoolkit.org/developer/StyleGuide Dojo Style Guide] &lt;br /&gt;
** Use camel-case for function names and variables&lt;br /&gt;
** Exception to above -- object constructors should start with a capital letter&lt;br /&gt;
** boolean variables should be prefixed with &amp;quot;is&amp;quot;, &amp;quot;has&amp;quot;, &amp;quot;can&amp;quot;, or &amp;quot;should&amp;quot;&lt;br /&gt;
** counters should be prefixed with &amp;quot;num&amp;quot; or &amp;quot;count&amp;quot;&lt;br /&gt;
** Whenever possible, use [http://www.jslint.com/ jslint]&lt;br /&gt;
* File naming conventions: lowercase letters, underscore instead of spaces  (need to write more about it)&lt;br /&gt;
* Coding Pattern - We generally try to follow this coding pattern as it makes it easier to browse your code&lt;br /&gt;
 Put code in following order&lt;br /&gt;
 1) variable declarations&lt;br /&gt;
 2) method declarations&lt;br /&gt;
 3) method calls&lt;br /&gt;
&lt;br /&gt;
== Version Control == &lt;br /&gt;
Currently all lessons are stored in the examples/ folder of [http://git.sugarlabs.org/projects/karma/repos/mainline main karma repository]&lt;br /&gt;
&lt;br /&gt;
We plan to move all lessons into individual repositories at git.sugarlabs.org but only once we have a process to automatically build bundles.&lt;br /&gt;
&lt;br /&gt;
When we do move to individual repos we shall use the [http://git.sugarlabs.org/projects/karma_lesson karma_lesson template] for each new lesson repository &lt;br /&gt;
&lt;br /&gt;
Here is how you can use the karma_lesson template to create a new repository from scratch&lt;br /&gt;
&lt;br /&gt;
  $ git clone git://git.sugarlabs.org/karma_lesson/mainline.git&lt;br /&gt;
  $ mkdir ../karma_3_English_3  # create a new lesson directory following our naming convention&lt;br /&gt;
  $ cp -r * ../karma_3_English_3  &lt;br /&gt;
  $ cd ../karma_3_English_3&lt;br /&gt;
  $ rm -r .git     # make sure you get rid of the old git directory&lt;br /&gt;
  $ git init&lt;br /&gt;
  $ git add .&lt;br /&gt;
  $ git commit -a -m &amp;quot;first commit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now go to the http://git.sugarlabs.org/projects/new, make sure you are logged in&lt;br /&gt;
Create a new project, use the same name as you did for your lesson&#039;s main folder&lt;br /&gt;
then,&lt;br /&gt;
  $ git remote add origin git://...   # the pubic push url&lt;br /&gt;
&lt;br /&gt;
Then on to coding your lesson ;)&lt;br /&gt;
&lt;br /&gt;
From then on &lt;br /&gt;
 $ git push origin master   # will sync your local tree w/ the server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tagging&#039;&#039;&#039; -- a karma lesson can be in only one of two states, stable or unstable. Any commit tagged &#039;stable&#039; is the stable version of your code. Every other version of your code is unstable. We will not use numeric versioning such as 0.1, 1.0, 1.2, etc. for the foreseeable future.&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
[[Karma:Meeting 21 December 2009]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Project ==&lt;br /&gt;
&lt;br /&gt;
Karma started as a GSoC project with Felipe Lopez Toledo &amp;quot;SubZero&amp;quot; as the student participant and [[USER:BryanWB| Bryan Berry]] as mentor. &lt;br /&gt;
&lt;br /&gt;
=== GSoC Meetings ===&lt;br /&gt;
&lt;br /&gt;
Notes from GSoC meetings - kept for archival purposes&lt;br /&gt;
* [[Karma:Meeting 12 May 2009]]&lt;br /&gt;
* [[Karma:Meeting 02 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 09 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 23 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 30 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Jul 2009]]&lt;br /&gt;
* [[Karma:Meeting 4 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 11 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 18 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 24 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 08 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 14 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Sep 2009]]&lt;br /&gt;
&lt;br /&gt;
== Project Roadmap ==&lt;br /&gt;
&lt;br /&gt;
==== 0.1 &amp;quot;Osito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Was completed September 11, 2009&lt;br /&gt;
&lt;br /&gt;
* 1 Working example in &amp;quot;adding_up_to_10&amp;quot;&lt;br /&gt;
* cleaned up documentation with jsdocs api documentation and cleaned up README.txt&lt;br /&gt;
* integrate chakra and &amp;quot;adding_up_to_10&amp;quot; and knavbar&lt;br /&gt;
* adding_up_to_10 works on the XO&lt;br /&gt;
** Surf&lt;br /&gt;
** Browse&lt;br /&gt;
&lt;br /&gt;
==== 0.2 &amp;quot;Gatito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Completed mid-December 2009&lt;br /&gt;
&lt;br /&gt;
* unit testing added to karma.js using QUnit&lt;br /&gt;
* API documented w/ jsdoc-toolkit&lt;br /&gt;
* support for SVG and canvas animation &lt;br /&gt;
* 3 working examples&lt;br /&gt;
** Adding_Up_to_10 using both SVG and canvas&lt;br /&gt;
** Quadrilaterals &lt;br /&gt;
** &amp;quot;Conozco A Uruguay&amp;quot; done with karma  -- 50% done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 0.3 &amp;quot;niño&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due 31 March 2010&lt;br /&gt;
&lt;br /&gt;
* Full i18n support&lt;br /&gt;
* All Squeak lessons converted to Karma&lt;br /&gt;
* Integrate all of the existing E-Paath lesson into chakra &lt;br /&gt;
* narwhal build script to build one giant karma bundle w/ all the E-Paath lessons inside it and chakra&lt;br /&gt;
* At least 6 lessons ready that have been translated into 3 languages each&lt;br /&gt;
* Version 0.1 draft of karma specification done&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
&lt;br /&gt;
here lies a lot of links to resources specific to karma&lt;br /&gt;
&lt;br /&gt;
UI&lt;br /&gt;
* Iphone Human Interface Guide http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/mobilehig/MobileHIG.pdf&lt;br /&gt;
* Palm Pre interface guide http://developer.palm.com/images/palm/pdf/palm_webos_hi_guidelines.pdf&lt;br /&gt;
* 30 Usability Issues To Be Aware Of http://www.smashingmagazine.com/2007/10/09/30-usability-issues-to-be-aware-of/&lt;br /&gt;
* 10 Usability Nightmares You Should Be Aware Of http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/&lt;br /&gt;
* &amp;quot;The Design of Everyday Things&amp;quot; book by Don Norman&lt;br /&gt;
* &amp;quot;Don&#039;t Make me think&amp;quot; by Steve Krug, guide to usability for web apps&lt;br /&gt;
&lt;br /&gt;
HTML5&lt;br /&gt;
* http://www.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/&lt;br /&gt;
* http://www.w3.org/TR/html5-diff/  Differences between html4 and html5&lt;br /&gt;
* [http://diveintohtml5.org/ Dive Into HTML5]&lt;br /&gt;
&lt;br /&gt;
General Web Design&lt;br /&gt;
* &amp;quot;Web Design in a Nutshell&amp;quot; from O&#039;Reilly&lt;br /&gt;
* Apple &amp;quot;Web Page Development: Best Practices&amp;quot; http://developer.apple.com/internet/webcontent/bestwebdev.html&lt;br /&gt;
&lt;br /&gt;
Canvas&lt;br /&gt;
* demos: http://html5demos.com/&lt;br /&gt;
* basics: http://dev.opera.com/articles/view/html-5-canvas-the-basics/&lt;br /&gt;
* painting web app: http://dev.opera.com/articles/view/html5-canvas-painting/&lt;br /&gt;
* mozilla canvas tutorial: https://developer.mozilla.org/en/Canvas_tutorial&lt;br /&gt;
* using canvas on webkit: http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/Canvas.html&lt;br /&gt;
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html&lt;br /&gt;
&lt;br /&gt;
SVG&lt;br /&gt;
* The [http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html SVG Primer] a very detailed and in-depth resource&lt;br /&gt;
* [http://raphaeljs.com/reference.html Raphaeljs documentation]&lt;br /&gt;
* https://developer.mozilla.org/en/svg&lt;br /&gt;
&lt;br /&gt;
Javascript&lt;br /&gt;
* [http://eloquentjavascript.net Eloquent Javascript] best beginning javascript resource&lt;br /&gt;
* &amp;quot;Javascript: The Good Parts&amp;quot; book by Doug Crockford&lt;br /&gt;
* &amp;quot;jQuery in Action&amp;quot; book&lt;br /&gt;
* &amp;quot;Pro Javascript Techniques&amp;quot; by john resig&lt;br /&gt;
* All the tutorials at www.ejohn.org, esp.&lt;br /&gt;
** http://ejohn.org/blog/how-javascript-timers-work/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Coding Tools and Conventions&lt;br /&gt;
* Firebug  --- http://www.getfirebug.com&lt;br /&gt;
* Web-Inspector --- webkit&#039;s answer to firebug&lt;br /&gt;
* Browsers --- We primarily work with Chromium and Firefox &amp;gt; 3.5&lt;br /&gt;
* For emacs users -- nxhtml mode and magit.el for working w/ git&lt;br /&gt;
* [http://www.jslint.com/ jslint]&lt;br /&gt;
* [http://www.inkscape.org inkscape]&lt;br /&gt;
* [http://narwhaljs.org narwhal]&lt;br /&gt;
&lt;br /&gt;
== Subpages ==&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Scoreboard&amp;diff=42625</id>
		<title>Scoreboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Scoreboard&amp;diff=42625"/>
		<updated>2010-01-06T09:15:49Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fields&lt;br /&gt;
* Score&lt;br /&gt;
* Total&lt;br /&gt;
* ?# wrong?&lt;br /&gt;
&lt;br /&gt;
Methods&lt;br /&gt;
* maxScore&lt;br /&gt;
* .inc(val), .dec(val) to increment and decrement score, default change by one if no val supplied&lt;br /&gt;
* reset()&lt;br /&gt;
* start()&lt;br /&gt;
&lt;br /&gt;
Options&lt;br /&gt;
* startBtn : true&lt;br /&gt;
* resetBtn : true&lt;br /&gt;
* stopBtn : true&lt;br /&gt;
* incValue : 1&lt;br /&gt;
* maxScore : 0&lt;br /&gt;
&lt;br /&gt;
Possibly For future&lt;br /&gt;
* display difficulty level&lt;br /&gt;
* .stop()&lt;br /&gt;
* pause() score can&#039;t be changed&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Scoreboard&amp;diff=42594</id>
		<title>Scoreboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Scoreboard&amp;diff=42594"/>
		<updated>2010-01-05T05:23:57Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fields&lt;br /&gt;
* Score&lt;br /&gt;
* Total&lt;br /&gt;
* ?# wrong?&lt;br /&gt;
&lt;br /&gt;
Methods&lt;br /&gt;
* maxScore&lt;br /&gt;
* .inc(val), .dec(val) to increment and decrement score, default change by one if no val supplied&lt;br /&gt;
* reset()&lt;br /&gt;
* start()&lt;br /&gt;
&lt;br /&gt;
Options&lt;br /&gt;
* startBtn : true&lt;br /&gt;
* restartBtn : true&lt;br /&gt;
* stopBtn : true&lt;br /&gt;
* incValue : 1&lt;br /&gt;
* maxScore : 0&lt;br /&gt;
&lt;br /&gt;
Possibly For future&lt;br /&gt;
* display difficulty level&lt;br /&gt;
* .stop()&lt;br /&gt;
* pause() score can&#039;t be changed&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Scoreboard&amp;diff=42593</id>
		<title>Scoreboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Scoreboard&amp;diff=42593"/>
		<updated>2010-01-05T05:22:08Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fields&lt;br /&gt;
* Score&lt;br /&gt;
* Total&lt;br /&gt;
* ?# wrong?&lt;br /&gt;
&lt;br /&gt;
Methods&lt;br /&gt;
* maxScore&lt;br /&gt;
* .inc(val), .dec(val) to increment and decrement score, default change by one if no val supplied&lt;br /&gt;
* pause() score can&#039;t be changed&lt;br /&gt;
* reset()&lt;br /&gt;
* start()&lt;br /&gt;
&lt;br /&gt;
Options&lt;br /&gt;
* startBtn : true&lt;br /&gt;
* restartBtn : true&lt;br /&gt;
* stopBtn : true&lt;br /&gt;
* incValue : 1&lt;br /&gt;
* maxScore : 0&lt;br /&gt;
&lt;br /&gt;
Possibly For future&lt;br /&gt;
* display difficulty level&lt;br /&gt;
* .stop()&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Scoreboard&amp;diff=42592</id>
		<title>Scoreboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Scoreboard&amp;diff=42592"/>
		<updated>2010-01-05T05:16:16Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Options&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
Fields&lt;br /&gt;
* Score&lt;br /&gt;
* Total&lt;br /&gt;
* # wrong&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Methods&lt;br /&gt;
* maxScore&lt;br /&gt;
* .inc(val), .dec(val) to increment and decrement score, default change by one if no val supplied&lt;br /&gt;
* pause() score can&#039;t be changed&lt;br /&gt;
* reset()&lt;br /&gt;
&lt;br /&gt;
Possibly For future&lt;br /&gt;
* difficulty level&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Scoreboard&amp;diff=42591</id>
		<title>Scoreboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Scoreboard&amp;diff=42591"/>
		<updated>2010-01-05T05:10:26Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: Created page with &amp;#039;  Methods * maxScore * .inc(val), .dec(val) to increment and decrement score, default change by one if no val supplied * pause() score can&amp;#039;t be changed&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Methods&lt;br /&gt;
* maxScore&lt;br /&gt;
* .inc(val), .dec(val) to increment and decrement score, default change by one if no val supplied&lt;br /&gt;
* pause() score can&#039;t be changed&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42590</id>
		<title>Karma</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42590"/>
		<updated>2010-01-05T05:00:44Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Technical Architecture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TOCleft}}&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Project]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Image:Karma.png|right]]&lt;br /&gt;
&lt;br /&gt;
== The Karma Project ==&lt;br /&gt;
&lt;br /&gt;
Karma is a framework for creating educational software using JavaScript, html5, and SVG. The Karma team is primarily focused on developing Sugar activities but you can also Karma to create lessons that run in any web browser that supports html5. The best ways to get involved are to join the [http://groups.google.com/group/karmajs mailing list] and [http://git.sugarlabs.org/projects/karma/repos/mainline get the code]&lt;br /&gt;
&lt;br /&gt;
=== Rationale ===&lt;br /&gt;
&lt;br /&gt;
Anyone with a modern standards-compliant web browser and a text editor should be able to create learning activities that can be used by anyone with a computer. Sugar should not be a walled garden that only allows learning activities expressly designed for it and it alone but rather gives extra power and depth to learning activities. Karma uses a specialized vocabulary that features a number of specialized terms. Please refer to the [[Karma/Dictionary|Karma Dictionary]] early and often.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
&lt;br /&gt;
Karma is a sub-project of Sugar Labs that is under active development. The latest examples can be seen at [http://karma.sugarlabs.org http://karma.sugarlabs.org]. You can also check out the [http://karmaproject.wordpress.com Karma Project blog] for updates.&lt;br /&gt;
&lt;br /&gt;
To try out the karma examples you need to have an html5-capable browser. The Browse activity within Sugar does not currently support html5. To try out karma within Sugar you need to install [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] and its webkit dependencies or run Firefox 3.5 from the command-line (yum install pywebkitgtk WebKit-gtk gnome-python2-gconf).&lt;br /&gt;
&lt;br /&gt;
The current focus of development is to convert Nepal&#039;s set of lessons coded in Squeak smalltalk. You can find the list of lessons to be converted [http://spreadsheets.google.com/pub?key=tweUJyn1BkEciHqVtSvCYDA&amp;amp;output=html here]. This is a good place for new contributors to get started&lt;br /&gt;
&lt;br /&gt;
=== What Karma Is ===&lt;br /&gt;
&lt;br /&gt;
* Karma is a simple framework to create simple interactive learning activities primarily for Sugar but also to be viewable through any web browser that supports html5&lt;br /&gt;
* Karma is used to create simple activities that run off-line w/out access to the Internet&lt;br /&gt;
* Karma is for web developers who want to contribute to Sugar using their current skills&lt;br /&gt;
* Karma is built on top of open web standards such as html5, javascript, and CSS.&lt;br /&gt;
* Karma is built to run on top of web browsers that support html5, particularly the canvas element.&lt;br /&gt;
* Karma is built around the concept of individual &amp;quot;lessons&amp;quot; and multiple lessons can be aggregated into a sugar activity&lt;br /&gt;
* Karma is the evolution of OLE Nepal&#039;s work on the EPaath suite of lessons in Nepal&lt;br /&gt;
* Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress&lt;br /&gt;
* Karma is pedagogically agnostic. Pedagogical choices are left to the lesson author.&lt;br /&gt;
&lt;br /&gt;
=== What Karma Isn&#039;t ===&lt;br /&gt;
&lt;br /&gt;
* Karma is not compatible with Internet Explorer because Internet Explorer does not support html5 apis such as canvas, svg, localStorage, etc.&lt;br /&gt;
* Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities&lt;br /&gt;
* Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics&lt;br /&gt;
* Karma is not meant as a basis for a WYSIWG programming environment like TurtleArt, EToys, or Logo&lt;br /&gt;
* Karma is not built to support browsers that do not support html5, such as Internet Explorer and Firefox &amp;lt; version 3.5 &lt;br /&gt;
* Karma is not intended to teach programming to children though it could be used as such&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
&lt;br /&gt;
A Karma lesson is composed of a valid html5 document, javascript code, and css stylesheets and optional assets such as images, audio, video and lesson plans. Karma should be very easy for inexperienced developers to understand and work with. Even non-programmers should be able to make visible changes by tweaking the code and liberal use of cut-and-paste. Complexities such as integration with pootle, local storage, and certain types of animation should be abstracted so that novice developers don&#039;t have to understand them in order to effectively use Karma. Karma strictly adheres to the Model-View-Controller Pattern and similarly to unobtrusive JavaScript. In essence. you should be able to substantially change the look and feel of a Karma lesson by modifying the CSS or you could translate the activity, without having to understand the JavaScript code.&lt;br /&gt;
&lt;br /&gt;
=== Design Goals ===&lt;br /&gt;
* Unobtrusive JavaScript&lt;br /&gt;
* No globals&lt;br /&gt;
* No extension of native objects&lt;br /&gt;
&lt;br /&gt;
=== Technical Architecture ===&lt;br /&gt;
&lt;br /&gt;
* Run-time - Karma will work with basic functionality on any W3C standards-compliant browser that supports HTML5 tags canvas, audio, and svg. This notably excludes Microsoft&#039;s Internet Explorer. Karma will be particularly tailored to work with Sugar&#039;s Journal and collaboration through Telepathy. Longer-term we hope to extend Karma to take advantage of Sugar&#039;s collaboration features.&lt;br /&gt;
* Primary Programming language - [https://developer.mozilla.org/en/New_in_JavaScript_1.6 Javascript 1.6] &lt;br /&gt;
* [[Karma/i18n|i18n]] -- Pervasive internationalization is a critical part of Karma&lt;br /&gt;
** Supported types of i18n  -- ToDo&lt;br /&gt;
*** Output of Native Digits&lt;br /&gt;
*** Image switching per locale&lt;br /&gt;
*** Regular text, though it is unclear how to support plural forms, grammar shifts, and gender&lt;br /&gt;
*** Audio switching per locale&lt;br /&gt;
** Integration with pootle&lt;br /&gt;
* [[Karma/Utilities|Utilities]] -- we primarily use [http://www.narwhaljs.org narwhal] for command-line scripting and [http://code.google.com/p/jsdoc-toolkit/ jsdoc] for documentation&lt;br /&gt;
* Journal, Telepathy Integration -- method to be determined, perhaps using html5&#039;s offline storage feature, some resources [https://developer.mozilla.org/en/Offline_resources_in_Firefox here] and [http://www.weboshelp.net/webos-tutorials/156-palm-webos-html5-database-storage-tutorial here] &lt;br /&gt;
* Moodle Integration -- method to be determined&lt;br /&gt;
* [[Karma/Bundle_layout|Repo and Bundle layout]]&lt;br /&gt;
* UI Widgets&lt;br /&gt;
** [[Scoreboard]]&lt;br /&gt;
** Dialog -- use standard jQuery UI one?&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
&lt;br /&gt;
* [[Karma:Anatomy_of_Lesson|Anatomy of a Karma Lesson]]&lt;br /&gt;
* The [[Karma/Dictionary|Karma Dictionary]]&lt;br /&gt;
* [[Karma/Specifications|Karma Specifications]] (early draft)&lt;br /&gt;
* Source Code stored in http://git.sugarlabs.org/projects/karma&lt;br /&gt;
* Each lesson must be in a folder named according to the schema &amp;quot;karma_Grade_Maths_title_WeekNo&amp;quot; where the week number is optional &lt;br /&gt;
  The following are valid names&lt;br /&gt;
  karma_3_Maths_LargestNumber_15&lt;br /&gt;
  karma_2_English_MatchingPuzzle&lt;br /&gt;
  karma_6_Maths_AddingUpTo10_4&lt;br /&gt;
* Version Control and repository management see the [[Karma#Version_Control|Version Control]] section of this page&lt;br /&gt;
* Unit testing is required for the karma.js library but not for individual lessons http://karma.sugarlabs.org/tests/&lt;br /&gt;
* Project Documentation kept in the Sugar Labs wiki&lt;br /&gt;
* Coding conventions: Based on [http://www.dojotoolkit.org/developer/StyleGuide Dojo Style Guide] &lt;br /&gt;
** Use camel-case for function names and variables&lt;br /&gt;
** Exception to above -- object constructors should start with a capital letter&lt;br /&gt;
** boolean variables should be prefixed with &amp;quot;is&amp;quot;, &amp;quot;has&amp;quot;, &amp;quot;can&amp;quot;, or &amp;quot;should&amp;quot;&lt;br /&gt;
** counters should be prefixed with &amp;quot;num&amp;quot; or &amp;quot;count&amp;quot;&lt;br /&gt;
** Whenever possible, use [http://www.jslint.com/ jslint]&lt;br /&gt;
* File naming conventions: lowercase letters, underscore instead of spaces  (need to write more about it)&lt;br /&gt;
* Coding Pattern - We generally try to follow this coding pattern as it makes it easier to browse your code&lt;br /&gt;
 Put code in following order&lt;br /&gt;
 1) variable declarations&lt;br /&gt;
 2) method declarations&lt;br /&gt;
 3) method calls&lt;br /&gt;
&lt;br /&gt;
== Version Control == &lt;br /&gt;
Currently all lessons are stored in the examples/ folder of [http://git.sugarlabs.org/projects/karma/repos/mainline main karma repository]&lt;br /&gt;
&lt;br /&gt;
We plan to move all lessons into individual repositories at git.sugarlabs.org but only once we have a process to automatically build bundles.&lt;br /&gt;
&lt;br /&gt;
When we do move to individual repos we shall use the [http://git.sugarlabs.org/projects/karma_lesson karma_lesson template] for each new lesson repository &lt;br /&gt;
&lt;br /&gt;
Here is how you can use the karma_lesson template to create a new repository from scratch&lt;br /&gt;
&lt;br /&gt;
  $ git clone git://git.sugarlabs.org/karma_lesson/mainline.git&lt;br /&gt;
  $ mkdir ../karma_3_English_3  # create a new lesson directory following our naming convention&lt;br /&gt;
  $ cp -r * ../karma_3_English_3  &lt;br /&gt;
  $ cd ../karma_3_English_3&lt;br /&gt;
  $ rm -r .git     # make sure you get rid of the old git directory&lt;br /&gt;
  $ git init&lt;br /&gt;
  $ git add .&lt;br /&gt;
  $ git commit -a -m &amp;quot;first commit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now go to the http://git.sugarlabs.org/projects/new, make sure you are logged in&lt;br /&gt;
Create a new project, use the same name as you did for your lesson&#039;s main folder&lt;br /&gt;
then,&lt;br /&gt;
  $ git remote add origin git://...   # the pubic push url&lt;br /&gt;
&lt;br /&gt;
Then on to coding your lesson ;)&lt;br /&gt;
&lt;br /&gt;
From then on &lt;br /&gt;
 $ git push origin master   # will sync your local tree w/ the server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tagging&#039;&#039;&#039; -- a karma lesson can be in only one of two states, stable or unstable. Any commit tagged &#039;stable&#039; is the stable version of your code. Every other version of your code is unstable. We will not use numeric versioning such as 0.1, 1.0, 1.2, etc. for the foreseeable future.&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
[[Karma:Meeting 21 December 2009]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Project ==&lt;br /&gt;
&lt;br /&gt;
Karma started as a GSoC project with Felipe Lopez Toledo &amp;quot;SubZero&amp;quot; as the student participant and [[USER:BryanWB| Bryan Berry]] as mentor. &lt;br /&gt;
&lt;br /&gt;
=== GSoC Meetings ===&lt;br /&gt;
&lt;br /&gt;
Notes from GSoC meetings - kept for archival purposes&lt;br /&gt;
* [[Karma:Meeting 12 May 2009]]&lt;br /&gt;
* [[Karma:Meeting 02 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 09 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 23 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 30 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Jul 2009]]&lt;br /&gt;
* [[Karma:Meeting 4 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 11 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 18 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 24 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 08 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 14 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Sep 2009]]&lt;br /&gt;
&lt;br /&gt;
== Project Roadmap ==&lt;br /&gt;
&lt;br /&gt;
==== 0.1 &amp;quot;Osito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Was completed September 11, 2009&lt;br /&gt;
&lt;br /&gt;
* 1 Working example in &amp;quot;adding_up_to_10&amp;quot;&lt;br /&gt;
* cleaned up documentation with jsdocs api documentation and cleaned up README.txt&lt;br /&gt;
* integrate chakra and &amp;quot;adding_up_to_10&amp;quot; and knavbar&lt;br /&gt;
* adding_up_to_10 works on the XO&lt;br /&gt;
** Surf&lt;br /&gt;
** Browse&lt;br /&gt;
&lt;br /&gt;
==== 0.2 &amp;quot;Gatito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Completed mid-December 2009&lt;br /&gt;
&lt;br /&gt;
* unit testing added to karma.js using QUnit&lt;br /&gt;
* API documented w/ jsdoc-toolkit&lt;br /&gt;
* support for SVG and canvas animation &lt;br /&gt;
* 3 working examples&lt;br /&gt;
** Adding_Up_to_10 using both SVG and canvas&lt;br /&gt;
** Quadrilaterals &lt;br /&gt;
** &amp;quot;Conozco A Uruguay&amp;quot; done with karma  -- 50% done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 0.3 &amp;quot;niño&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due 31 March 2010&lt;br /&gt;
&lt;br /&gt;
* Full i18n support&lt;br /&gt;
* All Squeak lessons converted to Karma&lt;br /&gt;
* Integrate all of the existing E-Paath lesson into chakra &lt;br /&gt;
* narwhal build script to build one giant karma bundle w/ all the E-Paath lessons inside it and chakra&lt;br /&gt;
* At least 6 lessons ready that have been translated into 3 languages each&lt;br /&gt;
* Version 0.1 draft of karma specification done&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
&lt;br /&gt;
here lies a lot of links to resources specific to karma&lt;br /&gt;
&lt;br /&gt;
UI&lt;br /&gt;
* Iphone Human Interface Guide http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/mobilehig/MobileHIG.pdf&lt;br /&gt;
* Palm Pre interface guide http://developer.palm.com/images/palm/pdf/palm_webos_hi_guidelines.pdf&lt;br /&gt;
* 30 Usability Issues To Be Aware Of http://www.smashingmagazine.com/2007/10/09/30-usability-issues-to-be-aware-of/&lt;br /&gt;
* 10 Usability Nightmares You Should Be Aware Of http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/&lt;br /&gt;
* &amp;quot;The Design of Everyday Things&amp;quot; book by Don Norman&lt;br /&gt;
* &amp;quot;Don&#039;t Make me think&amp;quot; by Steve Krug, guide to usability for web apps&lt;br /&gt;
&lt;br /&gt;
HTML5&lt;br /&gt;
* http://www.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/&lt;br /&gt;
* http://www.w3.org/TR/html5-diff/  Differences between html4 and html5&lt;br /&gt;
* [http://diveintohtml5.org/ Dive Into HTML5]&lt;br /&gt;
&lt;br /&gt;
General Web Design&lt;br /&gt;
* &amp;quot;Web Design in a Nutshell&amp;quot; from O&#039;Reilly&lt;br /&gt;
* Apple &amp;quot;Web Page Development: Best Practices&amp;quot; http://developer.apple.com/internet/webcontent/bestwebdev.html&lt;br /&gt;
&lt;br /&gt;
Canvas&lt;br /&gt;
* demos: http://html5demos.com/&lt;br /&gt;
* basics: http://dev.opera.com/articles/view/html-5-canvas-the-basics/&lt;br /&gt;
* painting web app: http://dev.opera.com/articles/view/html5-canvas-painting/&lt;br /&gt;
* mozilla canvas tutorial: https://developer.mozilla.org/en/Canvas_tutorial&lt;br /&gt;
* using canvas on webkit: http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/Canvas.html&lt;br /&gt;
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html&lt;br /&gt;
&lt;br /&gt;
SVG&lt;br /&gt;
* The [http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html SVG Primer] a very detailed and in-depth resource&lt;br /&gt;
* [http://raphaeljs.com/reference.html Raphaeljs documentation]&lt;br /&gt;
* https://developer.mozilla.org/en/svg&lt;br /&gt;
&lt;br /&gt;
Javascript&lt;br /&gt;
* [http://eloquentjavascript.net Eloquent Javascript] best beginning javascript resource&lt;br /&gt;
* &amp;quot;Javascript: The Good Parts&amp;quot; book by Doug Crockford&lt;br /&gt;
* &amp;quot;jQuery in Action&amp;quot; book&lt;br /&gt;
* &amp;quot;Pro Javascript Techniques&amp;quot; by john resig&lt;br /&gt;
* All the tutorials at www.ejohn.org, esp.&lt;br /&gt;
** http://ejohn.org/blog/how-javascript-timers-work/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Coding Tools and Conventions&lt;br /&gt;
* Firebug  --- http://www.getfirebug.com&lt;br /&gt;
* Web-Inspector --- webkit&#039;s answer to firebug&lt;br /&gt;
* Browsers --- We primarily work with Chromium and Firefox &amp;gt; 3.5&lt;br /&gt;
* For emacs users -- nxhtml mode and magit.el for working w/ git&lt;br /&gt;
* [http://www.jslint.com/ jslint]&lt;br /&gt;
* [http://www.inkscape.org inkscape]&lt;br /&gt;
* [http://narwhaljs.org narwhal]&lt;br /&gt;
&lt;br /&gt;
== Subpages ==&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42589</id>
		<title>Karma</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42589"/>
		<updated>2010-01-05T04:59:35Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Project Roadmap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TOCleft}}&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Project]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Image:Karma.png|right]]&lt;br /&gt;
&lt;br /&gt;
== The Karma Project ==&lt;br /&gt;
&lt;br /&gt;
Karma is a framework for creating educational software using JavaScript, html5, and SVG. The Karma team is primarily focused on developing Sugar activities but you can also Karma to create lessons that run in any web browser that supports html5. The best ways to get involved are to join the [http://groups.google.com/group/karmajs mailing list] and [http://git.sugarlabs.org/projects/karma/repos/mainline get the code]&lt;br /&gt;
&lt;br /&gt;
=== Rationale ===&lt;br /&gt;
&lt;br /&gt;
Anyone with a modern standards-compliant web browser and a text editor should be able to create learning activities that can be used by anyone with a computer. Sugar should not be a walled garden that only allows learning activities expressly designed for it and it alone but rather gives extra power and depth to learning activities. Karma uses a specialized vocabulary that features a number of specialized terms. Please refer to the [[Karma/Dictionary|Karma Dictionary]] early and often.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
&lt;br /&gt;
Karma is a sub-project of Sugar Labs that is under active development. The latest examples can be seen at [http://karma.sugarlabs.org http://karma.sugarlabs.org]. You can also check out the [http://karmaproject.wordpress.com Karma Project blog] for updates.&lt;br /&gt;
&lt;br /&gt;
To try out the karma examples you need to have an html5-capable browser. The Browse activity within Sugar does not currently support html5. To try out karma within Sugar you need to install [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] and its webkit dependencies or run Firefox 3.5 from the command-line (yum install pywebkitgtk WebKit-gtk gnome-python2-gconf).&lt;br /&gt;
&lt;br /&gt;
The current focus of development is to convert Nepal&#039;s set of lessons coded in Squeak smalltalk. You can find the list of lessons to be converted [http://spreadsheets.google.com/pub?key=tweUJyn1BkEciHqVtSvCYDA&amp;amp;output=html here]. This is a good place for new contributors to get started&lt;br /&gt;
&lt;br /&gt;
=== What Karma Is ===&lt;br /&gt;
&lt;br /&gt;
* Karma is a simple framework to create simple interactive learning activities primarily for Sugar but also to be viewable through any web browser that supports html5&lt;br /&gt;
* Karma is used to create simple activities that run off-line w/out access to the Internet&lt;br /&gt;
* Karma is for web developers who want to contribute to Sugar using their current skills&lt;br /&gt;
* Karma is built on top of open web standards such as html5, javascript, and CSS.&lt;br /&gt;
* Karma is built to run on top of web browsers that support html5, particularly the canvas element.&lt;br /&gt;
* Karma is built around the concept of individual &amp;quot;lessons&amp;quot; and multiple lessons can be aggregated into a sugar activity&lt;br /&gt;
* Karma is the evolution of OLE Nepal&#039;s work on the EPaath suite of lessons in Nepal&lt;br /&gt;
* Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress&lt;br /&gt;
* Karma is pedagogically agnostic. Pedagogical choices are left to the lesson author.&lt;br /&gt;
&lt;br /&gt;
=== What Karma Isn&#039;t ===&lt;br /&gt;
&lt;br /&gt;
* Karma is not compatible with Internet Explorer because Internet Explorer does not support html5 apis such as canvas, svg, localStorage, etc.&lt;br /&gt;
* Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities&lt;br /&gt;
* Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics&lt;br /&gt;
* Karma is not meant as a basis for a WYSIWG programming environment like TurtleArt, EToys, or Logo&lt;br /&gt;
* Karma is not built to support browsers that do not support html5, such as Internet Explorer and Firefox &amp;lt; version 3.5 &lt;br /&gt;
* Karma is not intended to teach programming to children though it could be used as such&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
&lt;br /&gt;
A Karma lesson is composed of a valid html5 document, javascript code, and css stylesheets and optional assets such as images, audio, video and lesson plans. Karma should be very easy for inexperienced developers to understand and work with. Even non-programmers should be able to make visible changes by tweaking the code and liberal use of cut-and-paste. Complexities such as integration with pootle, local storage, and certain types of animation should be abstracted so that novice developers don&#039;t have to understand them in order to effectively use Karma. Karma strictly adheres to the Model-View-Controller Pattern and similarly to unobtrusive JavaScript. In essence. you should be able to substantially change the look and feel of a Karma lesson by modifying the CSS or you could translate the activity, without having to understand the JavaScript code.&lt;br /&gt;
&lt;br /&gt;
=== Design Goals ===&lt;br /&gt;
* Unobtrusive JavaScript&lt;br /&gt;
* No globals&lt;br /&gt;
* No extension of native objects&lt;br /&gt;
&lt;br /&gt;
=== Technical Architecture ===&lt;br /&gt;
&lt;br /&gt;
* Run-time - Karma will work with basic functionality on any W3C standards-compliant browser that supports HTML5 tags canvas, audio, and svg. This notably excludes Microsoft&#039;s Internet Explorer. Karma will be particularly tailored to work with Sugar&#039;s Journal and collaboration through Telepathy. Longer-term we hope to extend Karma to take advantage of Sugar&#039;s collaboration features.&lt;br /&gt;
* Primary Programming language - [https://developer.mozilla.org/en/New_in_JavaScript_1.6 Javascript 1.6] &lt;br /&gt;
* [[Karma/i18n|i18n]] -- Pervasive internationalization is a critical part of Karma&lt;br /&gt;
** Supported types of i18n  -- ToDo&lt;br /&gt;
*** Output of Native Digits&lt;br /&gt;
*** Image switching per locale&lt;br /&gt;
*** Regular text, though it is unclear how to support plural forms, grammar shifts, and gender&lt;br /&gt;
*** Audio switching per locale&lt;br /&gt;
** Integration with pootle&lt;br /&gt;
* [[Karma/Utilities|Utilities]] -- we primarily use [http://www.narwhaljs.org narwhal] for command-line scripting and [http://code.google.com/p/jsdoc-toolkit/ jsdoc] for documentation&lt;br /&gt;
* Journal, Telepathy Integration -- method to be determined, perhaps using html5&#039;s offline storage feature, some resources [https://developer.mozilla.org/en/Offline_resources_in_Firefox here] and [http://www.weboshelp.net/webos-tutorials/156-palm-webos-html5-database-storage-tutorial here] &lt;br /&gt;
* Moodle Integration -- method to be determined&lt;br /&gt;
* [[Karma/Bundle_layout|Repo and Bundle layout]]&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
&lt;br /&gt;
* [[Karma:Anatomy_of_Lesson|Anatomy of a Karma Lesson]]&lt;br /&gt;
* The [[Karma/Dictionary|Karma Dictionary]]&lt;br /&gt;
* [[Karma/Specifications|Karma Specifications]] (early draft)&lt;br /&gt;
* Source Code stored in http://git.sugarlabs.org/projects/karma&lt;br /&gt;
* Each lesson must be in a folder named according to the schema &amp;quot;karma_Grade_Maths_title_WeekNo&amp;quot; where the week number is optional &lt;br /&gt;
  The following are valid names&lt;br /&gt;
  karma_3_Maths_LargestNumber_15&lt;br /&gt;
  karma_2_English_MatchingPuzzle&lt;br /&gt;
  karma_6_Maths_AddingUpTo10_4&lt;br /&gt;
* Version Control and repository management see the [[Karma#Version_Control|Version Control]] section of this page&lt;br /&gt;
* Unit testing is required for the karma.js library but not for individual lessons http://karma.sugarlabs.org/tests/&lt;br /&gt;
* Project Documentation kept in the Sugar Labs wiki&lt;br /&gt;
* Coding conventions: Based on [http://www.dojotoolkit.org/developer/StyleGuide Dojo Style Guide] &lt;br /&gt;
** Use camel-case for function names and variables&lt;br /&gt;
** Exception to above -- object constructors should start with a capital letter&lt;br /&gt;
** boolean variables should be prefixed with &amp;quot;is&amp;quot;, &amp;quot;has&amp;quot;, &amp;quot;can&amp;quot;, or &amp;quot;should&amp;quot;&lt;br /&gt;
** counters should be prefixed with &amp;quot;num&amp;quot; or &amp;quot;count&amp;quot;&lt;br /&gt;
** Whenever possible, use [http://www.jslint.com/ jslint]&lt;br /&gt;
* File naming conventions: lowercase letters, underscore instead of spaces  (need to write more about it)&lt;br /&gt;
* Coding Pattern - We generally try to follow this coding pattern as it makes it easier to browse your code&lt;br /&gt;
 Put code in following order&lt;br /&gt;
 1) variable declarations&lt;br /&gt;
 2) method declarations&lt;br /&gt;
 3) method calls&lt;br /&gt;
&lt;br /&gt;
== Version Control == &lt;br /&gt;
Currently all lessons are stored in the examples/ folder of [http://git.sugarlabs.org/projects/karma/repos/mainline main karma repository]&lt;br /&gt;
&lt;br /&gt;
We plan to move all lessons into individual repositories at git.sugarlabs.org but only once we have a process to automatically build bundles.&lt;br /&gt;
&lt;br /&gt;
When we do move to individual repos we shall use the [http://git.sugarlabs.org/projects/karma_lesson karma_lesson template] for each new lesson repository &lt;br /&gt;
&lt;br /&gt;
Here is how you can use the karma_lesson template to create a new repository from scratch&lt;br /&gt;
&lt;br /&gt;
  $ git clone git://git.sugarlabs.org/karma_lesson/mainline.git&lt;br /&gt;
  $ mkdir ../karma_3_English_3  # create a new lesson directory following our naming convention&lt;br /&gt;
  $ cp -r * ../karma_3_English_3  &lt;br /&gt;
  $ cd ../karma_3_English_3&lt;br /&gt;
  $ rm -r .git     # make sure you get rid of the old git directory&lt;br /&gt;
  $ git init&lt;br /&gt;
  $ git add .&lt;br /&gt;
  $ git commit -a -m &amp;quot;first commit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now go to the http://git.sugarlabs.org/projects/new, make sure you are logged in&lt;br /&gt;
Create a new project, use the same name as you did for your lesson&#039;s main folder&lt;br /&gt;
then,&lt;br /&gt;
  $ git remote add origin git://...   # the pubic push url&lt;br /&gt;
&lt;br /&gt;
Then on to coding your lesson ;)&lt;br /&gt;
&lt;br /&gt;
From then on &lt;br /&gt;
 $ git push origin master   # will sync your local tree w/ the server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tagging&#039;&#039;&#039; -- a karma lesson can be in only one of two states, stable or unstable. Any commit tagged &#039;stable&#039; is the stable version of your code. Every other version of your code is unstable. We will not use numeric versioning such as 0.1, 1.0, 1.2, etc. for the foreseeable future.&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
[[Karma:Meeting 21 December 2009]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Project ==&lt;br /&gt;
&lt;br /&gt;
Karma started as a GSoC project with Felipe Lopez Toledo &amp;quot;SubZero&amp;quot; as the student participant and [[USER:BryanWB| Bryan Berry]] as mentor. &lt;br /&gt;
&lt;br /&gt;
=== GSoC Meetings ===&lt;br /&gt;
&lt;br /&gt;
Notes from GSoC meetings - kept for archival purposes&lt;br /&gt;
* [[Karma:Meeting 12 May 2009]]&lt;br /&gt;
* [[Karma:Meeting 02 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 09 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 23 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 30 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Jul 2009]]&lt;br /&gt;
* [[Karma:Meeting 4 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 11 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 18 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 24 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 08 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 14 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Sep 2009]]&lt;br /&gt;
&lt;br /&gt;
== Project Roadmap ==&lt;br /&gt;
&lt;br /&gt;
==== 0.1 &amp;quot;Osito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Was completed September 11, 2009&lt;br /&gt;
&lt;br /&gt;
* 1 Working example in &amp;quot;adding_up_to_10&amp;quot;&lt;br /&gt;
* cleaned up documentation with jsdocs api documentation and cleaned up README.txt&lt;br /&gt;
* integrate chakra and &amp;quot;adding_up_to_10&amp;quot; and knavbar&lt;br /&gt;
* adding_up_to_10 works on the XO&lt;br /&gt;
** Surf&lt;br /&gt;
** Browse&lt;br /&gt;
&lt;br /&gt;
==== 0.2 &amp;quot;Gatito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Completed mid-December 2009&lt;br /&gt;
&lt;br /&gt;
* unit testing added to karma.js using QUnit&lt;br /&gt;
* API documented w/ jsdoc-toolkit&lt;br /&gt;
* support for SVG and canvas animation &lt;br /&gt;
* 3 working examples&lt;br /&gt;
** Adding_Up_to_10 using both SVG and canvas&lt;br /&gt;
** Quadrilaterals &lt;br /&gt;
** &amp;quot;Conozco A Uruguay&amp;quot; done with karma  -- 50% done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 0.3 &amp;quot;niño&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due 31 March 2010&lt;br /&gt;
&lt;br /&gt;
* Full i18n support&lt;br /&gt;
* All Squeak lessons converted to Karma&lt;br /&gt;
* Integrate all of the existing E-Paath lesson into chakra &lt;br /&gt;
* narwhal build script to build one giant karma bundle w/ all the E-Paath lessons inside it and chakra&lt;br /&gt;
* At least 6 lessons ready that have been translated into 3 languages each&lt;br /&gt;
* Version 0.1 draft of karma specification done&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
&lt;br /&gt;
here lies a lot of links to resources specific to karma&lt;br /&gt;
&lt;br /&gt;
UI&lt;br /&gt;
* Iphone Human Interface Guide http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/mobilehig/MobileHIG.pdf&lt;br /&gt;
* Palm Pre interface guide http://developer.palm.com/images/palm/pdf/palm_webos_hi_guidelines.pdf&lt;br /&gt;
* 30 Usability Issues To Be Aware Of http://www.smashingmagazine.com/2007/10/09/30-usability-issues-to-be-aware-of/&lt;br /&gt;
* 10 Usability Nightmares You Should Be Aware Of http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/&lt;br /&gt;
* &amp;quot;The Design of Everyday Things&amp;quot; book by Don Norman&lt;br /&gt;
* &amp;quot;Don&#039;t Make me think&amp;quot; by Steve Krug, guide to usability for web apps&lt;br /&gt;
&lt;br /&gt;
HTML5&lt;br /&gt;
* http://www.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/&lt;br /&gt;
* http://www.w3.org/TR/html5-diff/  Differences between html4 and html5&lt;br /&gt;
* [http://diveintohtml5.org/ Dive Into HTML5]&lt;br /&gt;
&lt;br /&gt;
General Web Design&lt;br /&gt;
* &amp;quot;Web Design in a Nutshell&amp;quot; from O&#039;Reilly&lt;br /&gt;
* Apple &amp;quot;Web Page Development: Best Practices&amp;quot; http://developer.apple.com/internet/webcontent/bestwebdev.html&lt;br /&gt;
&lt;br /&gt;
Canvas&lt;br /&gt;
* demos: http://html5demos.com/&lt;br /&gt;
* basics: http://dev.opera.com/articles/view/html-5-canvas-the-basics/&lt;br /&gt;
* painting web app: http://dev.opera.com/articles/view/html5-canvas-painting/&lt;br /&gt;
* mozilla canvas tutorial: https://developer.mozilla.org/en/Canvas_tutorial&lt;br /&gt;
* using canvas on webkit: http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/Canvas.html&lt;br /&gt;
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html&lt;br /&gt;
&lt;br /&gt;
SVG&lt;br /&gt;
* The [http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html SVG Primer] a very detailed and in-depth resource&lt;br /&gt;
* [http://raphaeljs.com/reference.html Raphaeljs documentation]&lt;br /&gt;
* https://developer.mozilla.org/en/svg&lt;br /&gt;
&lt;br /&gt;
Javascript&lt;br /&gt;
* [http://eloquentjavascript.net Eloquent Javascript] best beginning javascript resource&lt;br /&gt;
* &amp;quot;Javascript: The Good Parts&amp;quot; book by Doug Crockford&lt;br /&gt;
* &amp;quot;jQuery in Action&amp;quot; book&lt;br /&gt;
* &amp;quot;Pro Javascript Techniques&amp;quot; by john resig&lt;br /&gt;
* All the tutorials at www.ejohn.org, esp.&lt;br /&gt;
** http://ejohn.org/blog/how-javascript-timers-work/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Coding Tools and Conventions&lt;br /&gt;
* Firebug  --- http://www.getfirebug.com&lt;br /&gt;
* Web-Inspector --- webkit&#039;s answer to firebug&lt;br /&gt;
* Browsers --- We primarily work with Chromium and Firefox &amp;gt; 3.5&lt;br /&gt;
* For emacs users -- nxhtml mode and magit.el for working w/ git&lt;br /&gt;
* [http://www.jslint.com/ jslint]&lt;br /&gt;
* [http://www.inkscape.org inkscape]&lt;br /&gt;
* [http://narwhaljs.org narwhal]&lt;br /&gt;
&lt;br /&gt;
== Subpages ==&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42486</id>
		<title>Karma</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42486"/>
		<updated>2010-01-02T03:54:06Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Conventions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TOCleft}}&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Project]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Image:Karma.png|right]]&lt;br /&gt;
&lt;br /&gt;
== The Karma Project ==&lt;br /&gt;
&lt;br /&gt;
Karma is a framework for creating educational software using JavaScript, html5, and SVG. The Karma team is primarily focused on developing Sugar activities but you can also Karma to create lessons that run in any web browser that supports html5. The best ways to get involved are to join the [http://groups.google.com/group/karmajs mailing list] and [http://git.sugarlabs.org/projects/karma/repos/mainline get the code]&lt;br /&gt;
&lt;br /&gt;
=== Rationale ===&lt;br /&gt;
&lt;br /&gt;
Anyone with a modern standards-compliant web browser and a text editor should be able to create learning activities that can be used by anyone with a computer. Sugar should not be a walled garden that only allows learning activities expressly designed for it and it alone but rather gives extra power and depth to learning activities. Karma uses a specialized vocabulary that features a number of specialized terms. Please refer to the [[Karma/Dictionary|Karma Dictionary]] early and often.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
&lt;br /&gt;
Karma is a sub-project of Sugar Labs that is under active development. The latest examples can be seen at [http://karma.sugarlabs.org http://karma.sugarlabs.org]. You can also check out the [http://karmaproject.wordpress.com Karma Project blog] for updates.&lt;br /&gt;
&lt;br /&gt;
To try out the karma examples you need to have an html5-capable browser. The Browse activity within Sugar does not currently support html5. To try out karma within Sugar you need to install [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] and its webkit dependencies or run Firefox 3.5 from the command-line (yum install pywebkitgtk WebKit-gtk gnome-python2-gconf).&lt;br /&gt;
&lt;br /&gt;
The current focus of development is to convert Nepal&#039;s set of lessons coded in Squeak smalltalk. You can find the list of lessons to be converted [http://spreadsheets.google.com/pub?key=tweUJyn1BkEciHqVtSvCYDA&amp;amp;output=html here]. This is a good place for new contributors to get started&lt;br /&gt;
&lt;br /&gt;
=== What Karma Is ===&lt;br /&gt;
&lt;br /&gt;
* Karma is a simple framework to create simple interactive learning activities primarily for Sugar but also to be viewable through any web browser that supports html5&lt;br /&gt;
* Karma is used to create simple activities that run off-line w/out access to the Internet&lt;br /&gt;
* Karma is for web developers who want to contribute to Sugar using their current skills&lt;br /&gt;
* Karma is built on top of open web standards such as html5, javascript, and CSS.&lt;br /&gt;
* Karma is built to run on top of web browsers that support html5, particularly the canvas element.&lt;br /&gt;
* Karma is built around the concept of individual &amp;quot;lessons&amp;quot; and multiple lessons can be aggregated into a sugar activity&lt;br /&gt;
* Karma is the evolution of OLE Nepal&#039;s work on the EPaath suite of lessons in Nepal&lt;br /&gt;
* Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress&lt;br /&gt;
* Karma is pedagogically agnostic. Pedagogical choices are left to the lesson author.&lt;br /&gt;
&lt;br /&gt;
=== What Karma Isn&#039;t ===&lt;br /&gt;
&lt;br /&gt;
* Karma is not compatible with Internet Explorer because Internet Explorer does not support html5 apis such as canvas, svg, localStorage, etc.&lt;br /&gt;
* Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities&lt;br /&gt;
* Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics&lt;br /&gt;
* Karma is not meant as a basis for a WYSIWG programming environment like TurtleArt, EToys, or Logo&lt;br /&gt;
* Karma is not built to support browsers that do not support html5, such as Internet Explorer and Firefox &amp;lt; version 3.5 &lt;br /&gt;
* Karma is not intended to teach programming to children though it could be used as such&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
&lt;br /&gt;
A Karma lesson is composed of a valid html5 document, javascript code, and css stylesheets and optional assets such as images, audio, video and lesson plans. Karma should be very easy for inexperienced developers to understand and work with. Even non-programmers should be able to make visible changes by tweaking the code and liberal use of cut-and-paste. Complexities such as integration with pootle, local storage, and certain types of animation should be abstracted so that novice developers don&#039;t have to understand them in order to effectively use Karma. Karma strictly adheres to the Model-View-Controller Pattern and similarly to unobtrusive JavaScript. In essence. you should be able to substantially change the look and feel of a Karma lesson by modifying the CSS or you could translate the activity, without having to understand the JavaScript code.&lt;br /&gt;
&lt;br /&gt;
=== Design Goals ===&lt;br /&gt;
* Unobtrusive JavaScript&lt;br /&gt;
* No globals&lt;br /&gt;
* No extension of native objects&lt;br /&gt;
&lt;br /&gt;
=== Technical Architecture ===&lt;br /&gt;
&lt;br /&gt;
* Run-time - Karma will work with basic functionality on any W3C standards-compliant browser that supports HTML5 tags canvas, audio, and svg. This notably excludes Microsoft&#039;s Internet Explorer. Karma will be particularly tailored to work with Sugar&#039;s Journal and collaboration through Telepathy. Longer-term we hope to extend Karma to take advantage of Sugar&#039;s collaboration features.&lt;br /&gt;
* Primary Programming language - [https://developer.mozilla.org/en/New_in_JavaScript_1.6 Javascript 1.6] &lt;br /&gt;
* [[Karma/i18n|i18n]] -- Pervasive internationalization is a critical part of Karma&lt;br /&gt;
** Supported types of i18n  -- ToDo&lt;br /&gt;
*** Output of Native Digits&lt;br /&gt;
*** Image switching per locale&lt;br /&gt;
*** Regular text, though it is unclear how to support plural forms, grammar shifts, and gender&lt;br /&gt;
*** Audio switching per locale&lt;br /&gt;
** Integration with pootle&lt;br /&gt;
* [[Karma/Utilities|Utilities]] -- we primarily use [http://www.narwhaljs.org narwhal] for command-line scripting and [http://code.google.com/p/jsdoc-toolkit/ jsdoc] for documentation&lt;br /&gt;
* Journal, Telepathy Integration -- method to be determined, perhaps using html5&#039;s offline storage feature, some resources [https://developer.mozilla.org/en/Offline_resources_in_Firefox here] and [http://www.weboshelp.net/webos-tutorials/156-palm-webos-html5-database-storage-tutorial here] &lt;br /&gt;
* Moodle Integration -- method to be determined&lt;br /&gt;
* [[Karma/Bundle_layout|Repo and Bundle layout]]&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
&lt;br /&gt;
* [[Karma:Anatomy_of_Lesson|Anatomy of a Karma Lesson]]&lt;br /&gt;
* The [[Karma/Dictionary|Karma Dictionary]]&lt;br /&gt;
* [[Karma/Specifications|Karma Specifications]] (early draft)&lt;br /&gt;
* Source Code stored in http://git.sugarlabs.org/projects/karma&lt;br /&gt;
* Each lesson must be in a folder named according to the schema &amp;quot;karma_Grade_Maths_title_WeekNo&amp;quot; where the week number is optional &lt;br /&gt;
  The following are valid names&lt;br /&gt;
  karma_3_Maths_LargestNumber_15&lt;br /&gt;
  karma_2_English_MatchingPuzzle&lt;br /&gt;
  karma_6_Maths_AddingUpTo10_4&lt;br /&gt;
* Version Control and repository management see the [[Karma#Version_Control|Version Control]] section of this page&lt;br /&gt;
* Unit testing is required for the karma.js library but not for individual lessons http://karma.sugarlabs.org/tests/&lt;br /&gt;
* Project Documentation kept in the Sugar Labs wiki&lt;br /&gt;
* Coding conventions: Based on [http://www.dojotoolkit.org/developer/StyleGuide Dojo Style Guide] &lt;br /&gt;
** Use camel-case for function names and variables&lt;br /&gt;
** Exception to above -- object constructors should start with a capital letter&lt;br /&gt;
** boolean variables should be prefixed with &amp;quot;is&amp;quot;, &amp;quot;has&amp;quot;, &amp;quot;can&amp;quot;, or &amp;quot;should&amp;quot;&lt;br /&gt;
** counters should be prefixed with &amp;quot;num&amp;quot; or &amp;quot;count&amp;quot;&lt;br /&gt;
** Whenever possible, use [http://www.jslint.com/ jslint]&lt;br /&gt;
* File naming conventions: lowercase letters, underscore instead of spaces  (need to write more about it)&lt;br /&gt;
* Coding Pattern - We generally try to follow this coding pattern as it makes it easier to browse your code&lt;br /&gt;
 Put code in following order&lt;br /&gt;
 1) variable declarations&lt;br /&gt;
 2) method declarations&lt;br /&gt;
 3) method calls&lt;br /&gt;
&lt;br /&gt;
== Version Control == &lt;br /&gt;
Currently all lessons are stored in the examples/ folder of [http://git.sugarlabs.org/projects/karma/repos/mainline main karma repository]&lt;br /&gt;
&lt;br /&gt;
We plan to move all lessons into individual repositories at git.sugarlabs.org but only once we have a process to automatically build bundles.&lt;br /&gt;
&lt;br /&gt;
When we do move to individual repos we shall use the [http://git.sugarlabs.org/projects/karma_lesson karma_lesson template] for each new lesson repository &lt;br /&gt;
&lt;br /&gt;
Here is how you can use the karma_lesson template to create a new repository from scratch&lt;br /&gt;
&lt;br /&gt;
  $ git clone git://git.sugarlabs.org/karma_lesson/mainline.git&lt;br /&gt;
  $ mkdir ../karma_3_English_3  # create a new lesson directory following our naming convention&lt;br /&gt;
  $ cp -r * ../karma_3_English_3  &lt;br /&gt;
  $ cd ../karma_3_English_3&lt;br /&gt;
  $ rm -r .git     # make sure you get rid of the old git directory&lt;br /&gt;
  $ git init&lt;br /&gt;
  $ git add .&lt;br /&gt;
  $ git commit -a -m &amp;quot;first commit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now go to the http://git.sugarlabs.org/projects/new, make sure you are logged in&lt;br /&gt;
Create a new project, use the same name as you did for your lesson&#039;s main folder&lt;br /&gt;
then,&lt;br /&gt;
  $ git remote add origin git://...   # the pubic push url&lt;br /&gt;
&lt;br /&gt;
Then on to coding your lesson ;)&lt;br /&gt;
&lt;br /&gt;
From then on &lt;br /&gt;
 $ git push origin master   # will sync your local tree w/ the server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tagging&#039;&#039;&#039; -- a karma lesson can be in only one of two states, stable or unstable. Any commit tagged &#039;stable&#039; is the stable version of your code. Every other version of your code is unstable. We will not use numeric versioning such as 0.1, 1.0, 1.2, etc. for the foreseeable future.&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
[[Karma:Meeting 21 December 2009]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Project ==&lt;br /&gt;
&lt;br /&gt;
Karma started as a GSoC project with Felipe Lopez Toledo &amp;quot;SubZero&amp;quot; as the student participant and [[USER:BryanWB| Bryan Berry]] as mentor. &lt;br /&gt;
&lt;br /&gt;
=== GSoC Meetings ===&lt;br /&gt;
&lt;br /&gt;
Notes from GSoC meetings - kept for archival purposes&lt;br /&gt;
* [[Karma:Meeting 12 May 2009]]&lt;br /&gt;
* [[Karma:Meeting 02 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 09 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 23 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 30 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Jul 2009]]&lt;br /&gt;
* [[Karma:Meeting 4 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 11 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 18 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 24 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 08 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 14 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Sep 2009]]&lt;br /&gt;
&lt;br /&gt;
== Project Roadmap ==&lt;br /&gt;
&lt;br /&gt;
==== 0.1 &amp;quot;Osito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Was completed September 11, 2009&lt;br /&gt;
&lt;br /&gt;
* 1 Working example in &amp;quot;adding_up_to_10&amp;quot;&lt;br /&gt;
* cleaned up documentation with jsdocs api documentation and cleaned up README.txt&lt;br /&gt;
* integrate chakra and &amp;quot;adding_up_to_10&amp;quot; and knavbar&lt;br /&gt;
* adding_up_to_10 works on the XO&lt;br /&gt;
** Surf&lt;br /&gt;
** Browse&lt;br /&gt;
&lt;br /&gt;
==== 0.2 &amp;quot;Gatito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due mid-December 2009&lt;br /&gt;
&lt;br /&gt;
This release is timed to coincide with Bryan&#039;s visit to Google HQ for the GSoC Mentor&#039;s Summit&lt;br /&gt;
&lt;br /&gt;
* unit testing added to karma.js using QUnit -- DONE&lt;br /&gt;
* API documented w/ jsdoc-toolkit&lt;br /&gt;
* support for SVG and canvas animation -- DONE&lt;br /&gt;
* 3 working examples&lt;br /&gt;
** Adding_Up_to_10 using both SVG and canvas -- DONE&lt;br /&gt;
** Quadrilaterals  -- 50% done&lt;br /&gt;
** &amp;quot;Conozco A Uruguay&amp;quot; done with karma  -- 50% done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 0.4 &amp;quot;niño&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due 31 January 2010&lt;br /&gt;
&lt;br /&gt;
* Full i18n support&lt;br /&gt;
* Integrate all of the existing E-Paath lesson into chakra &lt;br /&gt;
* narwhal build script to build one giant karma bundle w/ all the E-Paath lessons inside it and chakra&lt;br /&gt;
* At least 6 lessons ready that have been translated into 3 languages each&lt;br /&gt;
* Version 0.1 draft of karma specification done&lt;br /&gt;
&lt;br /&gt;
==== 1.0 &amp;quot;Muchacho&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This release may also be called &amp;quot;Karma 1000&amp;quot; and is a big wishlist&lt;br /&gt;
&lt;br /&gt;
* Full moodle integration&lt;br /&gt;
* Offline storage and synchronization with moodle&lt;br /&gt;
* Integration with the Sugar Journal&lt;br /&gt;
* Integration with Telepathy on Sugar&lt;br /&gt;
* fully functional &amp;quot;kpages&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
&lt;br /&gt;
here lies a lot of links to resources specific to karma&lt;br /&gt;
&lt;br /&gt;
UI&lt;br /&gt;
* Iphone Human Interface Guide http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/mobilehig/MobileHIG.pdf&lt;br /&gt;
* Palm Pre interface guide http://developer.palm.com/images/palm/pdf/palm_webos_hi_guidelines.pdf&lt;br /&gt;
* 30 Usability Issues To Be Aware Of http://www.smashingmagazine.com/2007/10/09/30-usability-issues-to-be-aware-of/&lt;br /&gt;
* 10 Usability Nightmares You Should Be Aware Of http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/&lt;br /&gt;
* &amp;quot;The Design of Everyday Things&amp;quot; book by Don Norman&lt;br /&gt;
* &amp;quot;Don&#039;t Make me think&amp;quot; by Steve Krug, guide to usability for web apps&lt;br /&gt;
&lt;br /&gt;
HTML5&lt;br /&gt;
* http://www.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/&lt;br /&gt;
* http://www.w3.org/TR/html5-diff/  Differences between html4 and html5&lt;br /&gt;
* [http://diveintohtml5.org/ Dive Into HTML5]&lt;br /&gt;
&lt;br /&gt;
General Web Design&lt;br /&gt;
* &amp;quot;Web Design in a Nutshell&amp;quot; from O&#039;Reilly&lt;br /&gt;
* Apple &amp;quot;Web Page Development: Best Practices&amp;quot; http://developer.apple.com/internet/webcontent/bestwebdev.html&lt;br /&gt;
&lt;br /&gt;
Canvas&lt;br /&gt;
* demos: http://html5demos.com/&lt;br /&gt;
* basics: http://dev.opera.com/articles/view/html-5-canvas-the-basics/&lt;br /&gt;
* painting web app: http://dev.opera.com/articles/view/html5-canvas-painting/&lt;br /&gt;
* mozilla canvas tutorial: https://developer.mozilla.org/en/Canvas_tutorial&lt;br /&gt;
* using canvas on webkit: http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/Canvas.html&lt;br /&gt;
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html&lt;br /&gt;
&lt;br /&gt;
SVG&lt;br /&gt;
* The [http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html SVG Primer] a very detailed and in-depth resource&lt;br /&gt;
* [http://raphaeljs.com/reference.html Raphaeljs documentation]&lt;br /&gt;
* https://developer.mozilla.org/en/svg&lt;br /&gt;
&lt;br /&gt;
Javascript&lt;br /&gt;
* [http://eloquentjavascript.net Eloquent Javascript] best beginning javascript resource&lt;br /&gt;
* &amp;quot;Javascript: The Good Parts&amp;quot; book by Doug Crockford&lt;br /&gt;
* &amp;quot;jQuery in Action&amp;quot; book&lt;br /&gt;
* &amp;quot;Pro Javascript Techniques&amp;quot; by john resig&lt;br /&gt;
* All the tutorials at www.ejohn.org, esp.&lt;br /&gt;
** http://ejohn.org/blog/how-javascript-timers-work/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Coding Tools and Conventions&lt;br /&gt;
* Firebug  --- http://www.getfirebug.com&lt;br /&gt;
* Web-Inspector --- webkit&#039;s answer to firebug&lt;br /&gt;
* Browsers --- We primarily work with Chromium and Firefox &amp;gt; 3.5&lt;br /&gt;
* For emacs users -- nxhtml mode and magit.el for working w/ git&lt;br /&gt;
* [http://www.jslint.com/ jslint]&lt;br /&gt;
* [http://www.inkscape.org inkscape]&lt;br /&gt;
* [http://narwhaljs.org narwhal]&lt;br /&gt;
&lt;br /&gt;
== Subpages ==&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42464</id>
		<title>Karma</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42464"/>
		<updated>2010-01-01T11:01:59Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TOCleft}}&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Project]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Image:Karma.png|right]]&lt;br /&gt;
&lt;br /&gt;
== The Karma Project ==&lt;br /&gt;
&lt;br /&gt;
Karma is a framework for creating educational software using JavaScript, html5, and SVG. The Karma team is primarily focused on developing Sugar activities but you can also Karma to create lessons that run in any web browser that supports html5. The best ways to get involved are to join the [http://groups.google.com/group/karmajs mailing list] and [http://git.sugarlabs.org/projects/karma/repos/mainline get the code]&lt;br /&gt;
&lt;br /&gt;
=== Rationale ===&lt;br /&gt;
&lt;br /&gt;
Anyone with a modern standards-compliant web browser and a text editor should be able to create learning activities that can be used by anyone with a computer. Sugar should not be a walled garden that only allows learning activities expressly designed for it and it alone but rather gives extra power and depth to learning activities. Karma uses a specialized vocabulary that features a number of specialized terms. Please refer to the [[Karma/Dictionary|Karma Dictionary]] early and often.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
&lt;br /&gt;
Karma is a sub-project of Sugar Labs that is under active development. The latest examples can be seen at [http://karma.sugarlabs.org http://karma.sugarlabs.org]. You can also check out the [http://karmaproject.wordpress.com Karma Project blog] for updates.&lt;br /&gt;
&lt;br /&gt;
To try out the karma examples you need to have an html5-capable browser. The Browse activity within Sugar does not currently support html5. To try out karma within Sugar you need to install [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] and its webkit dependencies or run Firefox 3.5 from the command-line (yum install pywebkitgtk WebKit-gtk gnome-python2-gconf).&lt;br /&gt;
&lt;br /&gt;
The current focus of development is to convert Nepal&#039;s set of lessons coded in Squeak smalltalk. You can find the list of lessons to be converted [http://spreadsheets.google.com/pub?key=tweUJyn1BkEciHqVtSvCYDA&amp;amp;output=html here]. This is a good place for new contributors to get started&lt;br /&gt;
&lt;br /&gt;
=== What Karma Is ===&lt;br /&gt;
&lt;br /&gt;
* Karma is a simple framework to create simple interactive learning activities primarily for Sugar but also to be viewable through any web browser that supports html5&lt;br /&gt;
* Karma is used to create simple activities that run off-line w/out access to the Internet&lt;br /&gt;
* Karma is for web developers who want to contribute to Sugar using their current skills&lt;br /&gt;
* Karma is built on top of open web standards such as html5, javascript, and CSS.&lt;br /&gt;
* Karma is built to run on top of web browsers that support html5, particularly the canvas element.&lt;br /&gt;
* Karma is built around the concept of individual &amp;quot;lessons&amp;quot; and multiple lessons can be aggregated into a sugar activity&lt;br /&gt;
* Karma is the evolution of OLE Nepal&#039;s work on the EPaath suite of lessons in Nepal&lt;br /&gt;
* Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress&lt;br /&gt;
* Karma is pedagogically agnostic. Pedagogical choices are left to the lesson author.&lt;br /&gt;
&lt;br /&gt;
=== What Karma Isn&#039;t ===&lt;br /&gt;
&lt;br /&gt;
* Karma is not compatible with Internet Explorer because Internet Explorer does not support html5 apis such as canvas, svg, localStorage, etc.&lt;br /&gt;
* Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities&lt;br /&gt;
* Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics&lt;br /&gt;
* Karma is not meant as a basis for a WYSIWG programming environment like TurtleArt, EToys, or Logo&lt;br /&gt;
* Karma is not built to support browsers that do not support html5, such as Internet Explorer and Firefox &amp;lt; version 3.5 &lt;br /&gt;
* Karma is not intended to teach programming to children though it could be used as such&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
&lt;br /&gt;
A Karma lesson is composed of a valid html5 document, javascript code, and css stylesheets and optional assets such as images, audio, video and lesson plans. Karma should be very easy for inexperienced developers to understand and work with. Even non-programmers should be able to make visible changes by tweaking the code and liberal use of cut-and-paste. Complexities such as integration with pootle, local storage, and certain types of animation should be abstracted so that novice developers don&#039;t have to understand them in order to effectively use Karma. Karma strictly adheres to the Model-View-Controller Pattern and similarly to unobtrusive JavaScript. In essence. you should be able to substantially change the look and feel of a Karma lesson by modifying the CSS or you could translate the activity, without having to understand the JavaScript code.&lt;br /&gt;
&lt;br /&gt;
=== Design Goals ===&lt;br /&gt;
* Unobtrusive JavaScript&lt;br /&gt;
* No globals&lt;br /&gt;
* No extension of native objects&lt;br /&gt;
&lt;br /&gt;
=== Technical Architecture ===&lt;br /&gt;
&lt;br /&gt;
* Run-time - Karma will work with basic functionality on any W3C standards-compliant browser that supports HTML5 tags canvas, audio, and svg. This notably excludes Microsoft&#039;s Internet Explorer. Karma will be particularly tailored to work with Sugar&#039;s Journal and collaboration through Telepathy. Longer-term we hope to extend Karma to take advantage of Sugar&#039;s collaboration features.&lt;br /&gt;
* Primary Programming language - [https://developer.mozilla.org/en/New_in_JavaScript_1.6 Javascript 1.6] &lt;br /&gt;
* [[Karma/i18n|i18n]] -- Pervasive internationalization is a critical part of Karma&lt;br /&gt;
** Supported types of i18n  -- ToDo&lt;br /&gt;
*** Output of Native Digits&lt;br /&gt;
*** Image switching per locale&lt;br /&gt;
*** Regular text, though it is unclear how to support plural forms, grammar shifts, and gender&lt;br /&gt;
*** Audio switching per locale&lt;br /&gt;
** Integration with pootle&lt;br /&gt;
* [[Karma/Utilities|Utilities]] -- we primarily use [http://www.narwhaljs.org narwhal] for command-line scripting and [http://code.google.com/p/jsdoc-toolkit/ jsdoc] for documentation&lt;br /&gt;
* Journal, Telepathy Integration -- method to be determined, perhaps using html5&#039;s offline storage feature, some resources [https://developer.mozilla.org/en/Offline_resources_in_Firefox here] and [http://www.weboshelp.net/webos-tutorials/156-palm-webos-html5-database-storage-tutorial here] &lt;br /&gt;
* Moodle Integration -- method to be determined&lt;br /&gt;
* [[Karma/Bundle_layout|Repo and Bundle layout]]&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
&lt;br /&gt;
* [[Karma:Anatomy_of_Lesson|Anatomy of a Karma Lesson]]&lt;br /&gt;
* The [[Karma/Dictionary|Karma Dictionary]]&lt;br /&gt;
* [[Karma/Specifications|Karma Specifications]] (early draft)&lt;br /&gt;
* Source Code stored in http://git.sugarlabs.org/projects/karma&lt;br /&gt;
* Each lesson must be in a folder named according to the schema &amp;quot;karma_Grade_Maths_title_WeekNo&amp;quot; where the week number is optional &lt;br /&gt;
  The following are valid names&lt;br /&gt;
  karma_3_Maths_LargestNumber_15&lt;br /&gt;
  karma_2_English_MatchingPuzzle&lt;br /&gt;
  karma_6_Maths_AddingUpTo10_4&lt;br /&gt;
* Version Control and repository management see the [[Karma#Version_Control|Version Control]] section of this page&lt;br /&gt;
* Unit testing is required for the karma.js library but not for individual lessons http://karma.sugarlabs.org/tests/&lt;br /&gt;
* Project Documentation kept in the Sugar Labs wiki&lt;br /&gt;
* Coding conventions: Based on [http://www.dojotoolkit.org/developer/StyleGuide Dojo Style Guide] &lt;br /&gt;
** Use camel-case for function names and variables&lt;br /&gt;
** Exception to above -- object constructors should start with a capital letter&lt;br /&gt;
** boolean variables should be prefixed with &amp;quot;is&amp;quot;, &amp;quot;has&amp;quot;, &amp;quot;can&amp;quot;, or &amp;quot;should&amp;quot;&lt;br /&gt;
** counters should be prefixed with &amp;quot;num&amp;quot; or &amp;quot;count&amp;quot;&lt;br /&gt;
** Whenever possible, use [http://www.jslint.com/ jslint]&lt;br /&gt;
* File naming conventions: lowercase letters, underscore instead of spaces  (need to write more about it)&lt;br /&gt;
&lt;br /&gt;
== Version Control == &lt;br /&gt;
Currently all lessons are stored in the examples/ folder of [http://git.sugarlabs.org/projects/karma/repos/mainline main karma repository]&lt;br /&gt;
&lt;br /&gt;
We plan to move all lessons into individual repositories at git.sugarlabs.org but only once we have a process to automatically build bundles.&lt;br /&gt;
&lt;br /&gt;
When we do move to individual repos we shall use the [http://git.sugarlabs.org/projects/karma_lesson karma_lesson template] for each new lesson repository &lt;br /&gt;
&lt;br /&gt;
Here is how you can use the karma_lesson template to create a new repository from scratch&lt;br /&gt;
&lt;br /&gt;
  $ git clone git://git.sugarlabs.org/karma_lesson/mainline.git&lt;br /&gt;
  $ mkdir ../karma_3_English_3  # create a new lesson directory following our naming convention&lt;br /&gt;
  $ cp -r * ../karma_3_English_3  &lt;br /&gt;
  $ cd ../karma_3_English_3&lt;br /&gt;
  $ rm -r .git     # make sure you get rid of the old git directory&lt;br /&gt;
  $ git init&lt;br /&gt;
  $ git add .&lt;br /&gt;
  $ git commit -a -m &amp;quot;first commit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now go to the http://git.sugarlabs.org/projects/new, make sure you are logged in&lt;br /&gt;
Create a new project, use the same name as you did for your lesson&#039;s main folder&lt;br /&gt;
then,&lt;br /&gt;
  $ git remote add origin git://...   # the pubic push url&lt;br /&gt;
&lt;br /&gt;
Then on to coding your lesson ;)&lt;br /&gt;
&lt;br /&gt;
From then on &lt;br /&gt;
 $ git push origin master   # will sync your local tree w/ the server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tagging&#039;&#039;&#039; -- a karma lesson can be in only one of two states, stable or unstable. Any commit tagged &#039;stable&#039; is the stable version of your code. Every other version of your code is unstable. We will not use numeric versioning such as 0.1, 1.0, 1.2, etc. for the foreseeable future.&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
[[Karma:Meeting 21 December 2009]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Project ==&lt;br /&gt;
&lt;br /&gt;
Karma started as a GSoC project with Felipe Lopez Toledo &amp;quot;SubZero&amp;quot; as the student participant and [[USER:BryanWB| Bryan Berry]] as mentor. &lt;br /&gt;
&lt;br /&gt;
=== GSoC Meetings ===&lt;br /&gt;
&lt;br /&gt;
Notes from GSoC meetings - kept for archival purposes&lt;br /&gt;
* [[Karma:Meeting 12 May 2009]]&lt;br /&gt;
* [[Karma:Meeting 02 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 09 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 23 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 30 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Jul 2009]]&lt;br /&gt;
* [[Karma:Meeting 4 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 11 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 18 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 24 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 08 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 14 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Sep 2009]]&lt;br /&gt;
&lt;br /&gt;
== Project Roadmap ==&lt;br /&gt;
&lt;br /&gt;
==== 0.1 &amp;quot;Osito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Was completed September 11, 2009&lt;br /&gt;
&lt;br /&gt;
* 1 Working example in &amp;quot;adding_up_to_10&amp;quot;&lt;br /&gt;
* cleaned up documentation with jsdocs api documentation and cleaned up README.txt&lt;br /&gt;
* integrate chakra and &amp;quot;adding_up_to_10&amp;quot; and knavbar&lt;br /&gt;
* adding_up_to_10 works on the XO&lt;br /&gt;
** Surf&lt;br /&gt;
** Browse&lt;br /&gt;
&lt;br /&gt;
==== 0.2 &amp;quot;Gatito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due mid-December 2009&lt;br /&gt;
&lt;br /&gt;
This release is timed to coincide with Bryan&#039;s visit to Google HQ for the GSoC Mentor&#039;s Summit&lt;br /&gt;
&lt;br /&gt;
* unit testing added to karma.js using QUnit -- DONE&lt;br /&gt;
* API documented w/ jsdoc-toolkit&lt;br /&gt;
* support for SVG and canvas animation -- DONE&lt;br /&gt;
* 3 working examples&lt;br /&gt;
** Adding_Up_to_10 using both SVG and canvas -- DONE&lt;br /&gt;
** Quadrilaterals  -- 50% done&lt;br /&gt;
** &amp;quot;Conozco A Uruguay&amp;quot; done with karma  -- 50% done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 0.4 &amp;quot;niño&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due 31 January 2010&lt;br /&gt;
&lt;br /&gt;
* Full i18n support&lt;br /&gt;
* Integrate all of the existing E-Paath lesson into chakra &lt;br /&gt;
* narwhal build script to build one giant karma bundle w/ all the E-Paath lessons inside it and chakra&lt;br /&gt;
* At least 6 lessons ready that have been translated into 3 languages each&lt;br /&gt;
* Version 0.1 draft of karma specification done&lt;br /&gt;
&lt;br /&gt;
==== 1.0 &amp;quot;Muchacho&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This release may also be called &amp;quot;Karma 1000&amp;quot; and is a big wishlist&lt;br /&gt;
&lt;br /&gt;
* Full moodle integration&lt;br /&gt;
* Offline storage and synchronization with moodle&lt;br /&gt;
* Integration with the Sugar Journal&lt;br /&gt;
* Integration with Telepathy on Sugar&lt;br /&gt;
* fully functional &amp;quot;kpages&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
&lt;br /&gt;
here lies a lot of links to resources specific to karma&lt;br /&gt;
&lt;br /&gt;
UI&lt;br /&gt;
* Iphone Human Interface Guide http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/mobilehig/MobileHIG.pdf&lt;br /&gt;
* Palm Pre interface guide http://developer.palm.com/images/palm/pdf/palm_webos_hi_guidelines.pdf&lt;br /&gt;
* 30 Usability Issues To Be Aware Of http://www.smashingmagazine.com/2007/10/09/30-usability-issues-to-be-aware-of/&lt;br /&gt;
* 10 Usability Nightmares You Should Be Aware Of http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/&lt;br /&gt;
* &amp;quot;The Design of Everyday Things&amp;quot; book by Don Norman&lt;br /&gt;
* &amp;quot;Don&#039;t Make me think&amp;quot; by Steve Krug, guide to usability for web apps&lt;br /&gt;
&lt;br /&gt;
HTML5&lt;br /&gt;
* http://www.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/&lt;br /&gt;
* http://www.w3.org/TR/html5-diff/  Differences between html4 and html5&lt;br /&gt;
* [http://diveintohtml5.org/ Dive Into HTML5]&lt;br /&gt;
&lt;br /&gt;
General Web Design&lt;br /&gt;
* &amp;quot;Web Design in a Nutshell&amp;quot; from O&#039;Reilly&lt;br /&gt;
* Apple &amp;quot;Web Page Development: Best Practices&amp;quot; http://developer.apple.com/internet/webcontent/bestwebdev.html&lt;br /&gt;
&lt;br /&gt;
Canvas&lt;br /&gt;
* demos: http://html5demos.com/&lt;br /&gt;
* basics: http://dev.opera.com/articles/view/html-5-canvas-the-basics/&lt;br /&gt;
* painting web app: http://dev.opera.com/articles/view/html5-canvas-painting/&lt;br /&gt;
* mozilla canvas tutorial: https://developer.mozilla.org/en/Canvas_tutorial&lt;br /&gt;
* using canvas on webkit: http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/Canvas.html&lt;br /&gt;
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html&lt;br /&gt;
&lt;br /&gt;
SVG&lt;br /&gt;
* The [http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html SVG Primer] a very detailed and in-depth resource&lt;br /&gt;
* [http://raphaeljs.com/reference.html Raphaeljs documentation]&lt;br /&gt;
* https://developer.mozilla.org/en/svg&lt;br /&gt;
&lt;br /&gt;
Javascript&lt;br /&gt;
* [http://eloquentjavascript.net Eloquent Javascript] best beginning javascript resource&lt;br /&gt;
* &amp;quot;Javascript: The Good Parts&amp;quot; book by Doug Crockford&lt;br /&gt;
* &amp;quot;jQuery in Action&amp;quot; book&lt;br /&gt;
* &amp;quot;Pro Javascript Techniques&amp;quot; by john resig&lt;br /&gt;
* All the tutorials at www.ejohn.org, esp.&lt;br /&gt;
** http://ejohn.org/blog/how-javascript-timers-work/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Coding Tools and Conventions&lt;br /&gt;
* Firebug  --- http://www.getfirebug.com&lt;br /&gt;
* Web-Inspector --- webkit&#039;s answer to firebug&lt;br /&gt;
* Browsers --- We primarily work with Chromium and Firefox &amp;gt; 3.5&lt;br /&gt;
* For emacs users -- nxhtml mode and magit.el for working w/ git&lt;br /&gt;
* [http://www.jslint.com/ jslint]&lt;br /&gt;
* [http://www.inkscape.org inkscape]&lt;br /&gt;
* [http://narwhaljs.org narwhal]&lt;br /&gt;
&lt;br /&gt;
== Subpages ==&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42463</id>
		<title>Karma</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42463"/>
		<updated>2010-01-01T11:01:10Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TOCleft}}&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Project]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Image:Karma.png|right]]&lt;br /&gt;
&lt;br /&gt;
== The Karma Project ==&lt;br /&gt;
&lt;br /&gt;
Karma is a framework for creating educational software using JavaScript, html5, and SVG. The Karma team is primarily focused on developing Sugar activities but you can also Karma to create lessons that run in any web browser that supports html5. The best ways to get involved are to join the [http://groups.google.com/group/karmajs mailing list] and [http://git.sugarlabs.org/projects/karma/repos/mainline get the code]&lt;br /&gt;
&lt;br /&gt;
=== Rationale ===&lt;br /&gt;
&lt;br /&gt;
Anyone with a modern standards-compliant web browser and a text editor should be able to create learning activities that can be used by anyone with a computer. Sugar should not be a walled garden that only allows learning activities expressly designed for it and it alone but rather gives extra power and depth to learning activities. Karma uses a specialized vocabulary that features a number of specialized terms. Please refer to the [[Karma/Dictionary|Karma Dictionary]] early and often.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
&lt;br /&gt;
Karma is a sub-project of Sugar Labs that is under active development as a part of a [[Karma#GSoC_Project| Google Summer of Code project]]. The latest examples can be seen at [http://karma.sugarlabs.org http://karma.sugarlabs.org]. You can also check out the [http://karmaproject.wordpress.com Karma Project blog] for updates.&lt;br /&gt;
&lt;br /&gt;
To try out the karma examples you need to have an html5-capable browser. The Browse activity within Sugar does not currently support html5. To try out karma within Sugar you need to install [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] and its webkit dependencies or run Firefox 3.5 from the command-line (yum install pywebkitgtk WebKit-gtk gnome-python2-gconf).&lt;br /&gt;
&lt;br /&gt;
The current focus of development is to convert Nepal&#039;s set of lessons coded in Squeak smalltalk. You can find the list of lessons to be converted [http://spreadsheets.google.com/pub?key=tweUJyn1BkEciHqVtSvCYDA&amp;amp;output=html here]. This is a good place for new contributors to get started&lt;br /&gt;
&lt;br /&gt;
=== What Karma Is ===&lt;br /&gt;
&lt;br /&gt;
* Karma is a simple framework to create simple interactive learning activities primarily for Sugar but also to be viewable through any web browser that supports html5&lt;br /&gt;
* Karma is used to create simple activities that run off-line w/out access to the Internet&lt;br /&gt;
* Karma is for web developers who want to contribute to Sugar using their current skills&lt;br /&gt;
* Karma is built on top of open web standards such as html5, javascript, and CSS.&lt;br /&gt;
* Karma is built to run on top of web browsers that support html5, particularly the canvas element.&lt;br /&gt;
* Karma is built around the concept of individual &amp;quot;lessons&amp;quot; and multiple lessons can be aggregated into a sugar activity&lt;br /&gt;
* Karma is the evolution of OLE Nepal&#039;s work on the EPaath suite of lessons in Nepal&lt;br /&gt;
* Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress&lt;br /&gt;
* Karma is pedagogically agnostic. Pedagogical choices are left to the lesson author.&lt;br /&gt;
&lt;br /&gt;
=== What Karma Isn&#039;t ===&lt;br /&gt;
&lt;br /&gt;
* Karma is not compatible with Internet Explorer because Internet Explorer does not support html5 apis such as canvas, svg, localStorage, etc.&lt;br /&gt;
* Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities&lt;br /&gt;
* Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics&lt;br /&gt;
* Karma is not meant as a basis for a WYSIWG programming environment like TurtleArt, EToys, or Logo&lt;br /&gt;
* Karma is not built to support browsers that do not support html5, such as Internet Explorer and Firefox &amp;lt; version 3.5 &lt;br /&gt;
* Karma is not intended to teach programming to children though it could be used as such&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
&lt;br /&gt;
A Karma lesson is composed of a valid html5 document, javascript code, and css stylesheets and optional assets such as images, audio, video and lesson plans. Karma should be very easy for inexperienced developers to understand and work with. Even non-programmers should be able to make visible changes by tweaking the code and liberal use of cut-and-paste. Complexities such as integration with pootle, local storage, and certain types of animation should be abstracted so that novice developers don&#039;t have to understand them in order to effectively use Karma. Karma strictly adheres to the Model-View-Controller Pattern and similarly to unobtrusive JavaScript. In essence. you should be able to substantially change the look and feel of a Karma lesson by modifying the CSS or you could translate the activity, without having to understand the JavaScript code.&lt;br /&gt;
&lt;br /&gt;
=== Design Goals ===&lt;br /&gt;
* Unobtrusive JavaScript&lt;br /&gt;
* No globals&lt;br /&gt;
* No extension of native objects&lt;br /&gt;
&lt;br /&gt;
=== Technical Architecture ===&lt;br /&gt;
&lt;br /&gt;
* Run-time - Karma will work with basic functionality on any W3C standards-compliant browser that supports HTML5 tags canvas, audio, and svg. This notably excludes Microsoft&#039;s Internet Explorer. Karma will be particularly tailored to work with Sugar&#039;s Journal and collaboration through Telepathy. Longer-term we hope to extend Karma to take advantage of Sugar&#039;s collaboration features.&lt;br /&gt;
* Primary Programming language - [https://developer.mozilla.org/en/New_in_JavaScript_1.6 Javascript 1.6] &lt;br /&gt;
* [[Karma/i18n|i18n]] -- Pervasive internationalization is a critical part of Karma&lt;br /&gt;
** Supported types of i18n  -- ToDo&lt;br /&gt;
*** Output of Native Digits&lt;br /&gt;
*** Image switching per locale&lt;br /&gt;
*** Regular text, though it is unclear how to support plural forms, grammar shifts, and gender&lt;br /&gt;
*** Audio switching per locale&lt;br /&gt;
** Integration with pootle&lt;br /&gt;
* [[Karma/Utilities|Utilities]] -- we primarily use [http://www.narwhaljs.org narwhal] for command-line scripting and [http://code.google.com/p/jsdoc-toolkit/ jsdoc] for documentation&lt;br /&gt;
* Journal, Telepathy Integration -- method to be determined, perhaps using html5&#039;s offline storage feature, some resources [https://developer.mozilla.org/en/Offline_resources_in_Firefox here] and [http://www.weboshelp.net/webos-tutorials/156-palm-webos-html5-database-storage-tutorial here] &lt;br /&gt;
* Moodle Integration -- method to be determined&lt;br /&gt;
* [[Karma/Bundle_layout|Repo and Bundle layout]]&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
&lt;br /&gt;
* [[Karma:Anatomy_of_Lesson|Anatomy of a Karma Lesson]]&lt;br /&gt;
* The [[Karma/Dictionary|Karma Dictionary]]&lt;br /&gt;
* [[Karma/Specifications|Karma Specifications]] (early draft)&lt;br /&gt;
* Source Code stored in http://git.sugarlabs.org/projects/karma&lt;br /&gt;
* Each lesson must be in a folder named according to the schema &amp;quot;karma_Grade_Maths_title_WeekNo&amp;quot; where the week number is optional &lt;br /&gt;
  The following are valid names&lt;br /&gt;
  karma_3_Maths_LargestNumber_15&lt;br /&gt;
  karma_2_English_MatchingPuzzle&lt;br /&gt;
  karma_6_Maths_AddingUpTo10_4&lt;br /&gt;
* Version Control and repository management see the [[Karma#Version_Control|Version Control]] section of this page&lt;br /&gt;
* Unit testing is required for the karma.js library but not for individual lessons http://karma.sugarlabs.org/tests/&lt;br /&gt;
* Project Documentation kept in the Sugar Labs wiki&lt;br /&gt;
* Coding conventions: Based on [http://www.dojotoolkit.org/developer/StyleGuide Dojo Style Guide] &lt;br /&gt;
** Use camel-case for function names and variables&lt;br /&gt;
** Exception to above -- object constructors should start with a capital letter&lt;br /&gt;
** boolean variables should be prefixed with &amp;quot;is&amp;quot;, &amp;quot;has&amp;quot;, &amp;quot;can&amp;quot;, or &amp;quot;should&amp;quot;&lt;br /&gt;
** counters should be prefixed with &amp;quot;num&amp;quot; or &amp;quot;count&amp;quot;&lt;br /&gt;
** Whenever possible, use [http://www.jslint.com/ jslint]&lt;br /&gt;
* File naming conventions: lowercase letters, underscore instead of spaces  (need to write more about it)&lt;br /&gt;
&lt;br /&gt;
== Version Control == &lt;br /&gt;
Currently all lessons are stored in the examples/ folder of [http://git.sugarlabs.org/projects/karma/repos/mainline main karma repository]&lt;br /&gt;
&lt;br /&gt;
We plan to move all lessons into individual repositories at git.sugarlabs.org but only once we have a process to automatically build bundles.&lt;br /&gt;
&lt;br /&gt;
When we do move to individual repos we shall use the [http://git.sugarlabs.org/projects/karma_lesson karma_lesson template] for each new lesson repository &lt;br /&gt;
&lt;br /&gt;
Here is how you can use the karma_lesson template to create a new repository from scratch&lt;br /&gt;
&lt;br /&gt;
  $ git clone git://git.sugarlabs.org/karma_lesson/mainline.git&lt;br /&gt;
  $ mkdir ../karma_3_English_3  # create a new lesson directory following our naming convention&lt;br /&gt;
  $ cp -r * ../karma_3_English_3  &lt;br /&gt;
  $ cd ../karma_3_English_3&lt;br /&gt;
  $ rm -r .git     # make sure you get rid of the old git directory&lt;br /&gt;
  $ git init&lt;br /&gt;
  $ git add .&lt;br /&gt;
  $ git commit -a -m &amp;quot;first commit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now go to the http://git.sugarlabs.org/projects/new, make sure you are logged in&lt;br /&gt;
Create a new project, use the same name as you did for your lesson&#039;s main folder&lt;br /&gt;
then,&lt;br /&gt;
  $ git remote add origin git://...   # the pubic push url&lt;br /&gt;
&lt;br /&gt;
Then on to coding your lesson ;)&lt;br /&gt;
&lt;br /&gt;
From then on &lt;br /&gt;
 $ git push origin master   # will sync your local tree w/ the server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tagging&#039;&#039;&#039; -- a karma lesson can be in only one of two states, stable or unstable. Any commit tagged &#039;stable&#039; is the stable version of your code. Every other version of your code is unstable. We will not use numeric versioning such as 0.1, 1.0, 1.2, etc. for the foreseeable future.&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
[[Karma:Meeting 21 December 2009]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Project ==&lt;br /&gt;
&lt;br /&gt;
Karma started as a GSoC project with Felipe Lopez Toledo &amp;quot;SubZero&amp;quot; as the student participant and [[USER:BryanWB| Bryan Berry]] as mentor. &lt;br /&gt;
&lt;br /&gt;
=== GSoC Meetings ===&lt;br /&gt;
&lt;br /&gt;
Notes from GSoC meetings - kept for archival purposes&lt;br /&gt;
* [[Karma:Meeting 12 May 2009]]&lt;br /&gt;
* [[Karma:Meeting 02 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 09 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 23 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 30 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Jul 2009]]&lt;br /&gt;
* [[Karma:Meeting 4 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 11 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 18 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 24 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 08 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 14 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Sep 2009]]&lt;br /&gt;
&lt;br /&gt;
== Project Roadmap ==&lt;br /&gt;
&lt;br /&gt;
==== 0.1 &amp;quot;Osito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Was completed September 11, 2009&lt;br /&gt;
&lt;br /&gt;
* 1 Working example in &amp;quot;adding_up_to_10&amp;quot;&lt;br /&gt;
* cleaned up documentation with jsdocs api documentation and cleaned up README.txt&lt;br /&gt;
* integrate chakra and &amp;quot;adding_up_to_10&amp;quot; and knavbar&lt;br /&gt;
* adding_up_to_10 works on the XO&lt;br /&gt;
** Surf&lt;br /&gt;
** Browse&lt;br /&gt;
&lt;br /&gt;
==== 0.2 &amp;quot;Gatito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due mid-December 2009&lt;br /&gt;
&lt;br /&gt;
This release is timed to coincide with Bryan&#039;s visit to Google HQ for the GSoC Mentor&#039;s Summit&lt;br /&gt;
&lt;br /&gt;
* unit testing added to karma.js using QUnit -- DONE&lt;br /&gt;
* API documented w/ jsdoc-toolkit&lt;br /&gt;
* support for SVG and canvas animation -- DONE&lt;br /&gt;
* 3 working examples&lt;br /&gt;
** Adding_Up_to_10 using both SVG and canvas -- DONE&lt;br /&gt;
** Quadrilaterals  -- 50% done&lt;br /&gt;
** &amp;quot;Conozco A Uruguay&amp;quot; done with karma  -- 50% done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 0.4 &amp;quot;niño&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due 31 January 2010&lt;br /&gt;
&lt;br /&gt;
* Full i18n support&lt;br /&gt;
* Integrate all of the existing E-Paath lesson into chakra &lt;br /&gt;
* narwhal build script to build one giant karma bundle w/ all the E-Paath lessons inside it and chakra&lt;br /&gt;
* At least 6 lessons ready that have been translated into 3 languages each&lt;br /&gt;
* Version 0.1 draft of karma specification done&lt;br /&gt;
&lt;br /&gt;
==== 1.0 &amp;quot;Muchacho&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This release may also be called &amp;quot;Karma 1000&amp;quot; and is a big wishlist&lt;br /&gt;
&lt;br /&gt;
* Full moodle integration&lt;br /&gt;
* Offline storage and synchronization with moodle&lt;br /&gt;
* Integration with the Sugar Journal&lt;br /&gt;
* Integration with Telepathy on Sugar&lt;br /&gt;
* fully functional &amp;quot;kpages&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
&lt;br /&gt;
here lies a lot of links to resources specific to karma&lt;br /&gt;
&lt;br /&gt;
UI&lt;br /&gt;
* Iphone Human Interface Guide http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/mobilehig/MobileHIG.pdf&lt;br /&gt;
* Palm Pre interface guide http://developer.palm.com/images/palm/pdf/palm_webos_hi_guidelines.pdf&lt;br /&gt;
* 30 Usability Issues To Be Aware Of http://www.smashingmagazine.com/2007/10/09/30-usability-issues-to-be-aware-of/&lt;br /&gt;
* 10 Usability Nightmares You Should Be Aware Of http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/&lt;br /&gt;
* &amp;quot;The Design of Everyday Things&amp;quot; book by Don Norman&lt;br /&gt;
* &amp;quot;Don&#039;t Make me think&amp;quot; by Steve Krug, guide to usability for web apps&lt;br /&gt;
&lt;br /&gt;
HTML5&lt;br /&gt;
* http://www.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/&lt;br /&gt;
* http://www.w3.org/TR/html5-diff/  Differences between html4 and html5&lt;br /&gt;
* [http://diveintohtml5.org/ Dive Into HTML5]&lt;br /&gt;
&lt;br /&gt;
General Web Design&lt;br /&gt;
* &amp;quot;Web Design in a Nutshell&amp;quot; from O&#039;Reilly&lt;br /&gt;
* Apple &amp;quot;Web Page Development: Best Practices&amp;quot; http://developer.apple.com/internet/webcontent/bestwebdev.html&lt;br /&gt;
&lt;br /&gt;
Canvas&lt;br /&gt;
* demos: http://html5demos.com/&lt;br /&gt;
* basics: http://dev.opera.com/articles/view/html-5-canvas-the-basics/&lt;br /&gt;
* painting web app: http://dev.opera.com/articles/view/html5-canvas-painting/&lt;br /&gt;
* mozilla canvas tutorial: https://developer.mozilla.org/en/Canvas_tutorial&lt;br /&gt;
* using canvas on webkit: http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/Canvas.html&lt;br /&gt;
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html&lt;br /&gt;
&lt;br /&gt;
SVG&lt;br /&gt;
* The [http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html SVG Primer] a very detailed and in-depth resource&lt;br /&gt;
* [http://raphaeljs.com/reference.html Raphaeljs documentation]&lt;br /&gt;
* https://developer.mozilla.org/en/svg&lt;br /&gt;
&lt;br /&gt;
Javascript&lt;br /&gt;
* [http://eloquentjavascript.net Eloquent Javascript] best beginning javascript resource&lt;br /&gt;
* &amp;quot;Javascript: The Good Parts&amp;quot; book by Doug Crockford&lt;br /&gt;
* &amp;quot;jQuery in Action&amp;quot; book&lt;br /&gt;
* &amp;quot;Pro Javascript Techniques&amp;quot; by john resig&lt;br /&gt;
* All the tutorials at www.ejohn.org, esp.&lt;br /&gt;
** http://ejohn.org/blog/how-javascript-timers-work/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Coding Tools and Conventions&lt;br /&gt;
* Firebug  --- http://www.getfirebug.com&lt;br /&gt;
* Web-Inspector --- webkit&#039;s answer to firebug&lt;br /&gt;
* Browsers --- We primarily work with Chromium and Firefox &amp;gt; 3.5&lt;br /&gt;
* For emacs users -- nxhtml mode and magit.el for working w/ git&lt;br /&gt;
* [http://www.jslint.com/ jslint]&lt;br /&gt;
* [http://www.inkscape.org inkscape]&lt;br /&gt;
* [http://narwhaljs.org narwhal]&lt;br /&gt;
&lt;br /&gt;
== Subpages ==&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42167</id>
		<title>Karma</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42167"/>
		<updated>2009-12-22T10:15:15Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Version Control */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TOCleft}}&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Project]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Image:Karma.png|right]]&lt;br /&gt;
&lt;br /&gt;
== The Karma Project ==&lt;br /&gt;
&lt;br /&gt;
Karma is a framework for creating educational software using JavaScript, html5, and SVG. The Karma team is primarily focused on developing Sugar activities but you can also Karma to create lessons that run in any web browser that supports html5. The best ways to get involved are to join the [http://groups.google.com/group/karmajs mailing list] and [http://git.sugarlabs.org/projects/karma/repos/mainline get the code]&lt;br /&gt;
&lt;br /&gt;
=== Rationale ===&lt;br /&gt;
&lt;br /&gt;
Anyone with a modern standards-compliant web browser and a text editor should be able to create learning activities that can be used by anyone with a computer. Sugar should not be a walled garden that only allows learning activities expressly designed for it and it alone but rather gives extra power and depth to learning activities. Karma uses a specialized vocabulary that features a number of specialized terms. Please refer to the [[Karma/Dictionary|Karma Dictionary]] early and often.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
&lt;br /&gt;
Karma is a sub-project of Sugar Labs that is under active development as a part of a [[Karma#GSoC_Project| Google Summer of Code project]]. The latest examples can be seen at [http://karma.sugarlabs.org http://karma.sugarlabs.org]. You can also check out the [http://karmaproject.wordpress.com Karma Project blog] for updates.&lt;br /&gt;
&lt;br /&gt;
To try out the karma examples you need to have an html5-capable browser. The Browse activity within Sugar does not currently support html5. To try out karma within Sugar you need to install [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] and its webkit dependencies or run Firefox 3.5 from the command-line (yum install pywebkitgtk WebKit-gtk gnome-python2-gconf).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What Karma Is ===&lt;br /&gt;
&lt;br /&gt;
* Karma is a simple framework to create simple interactive learning activities primarily for Sugar but also to be viewable through any web browser that supports html5&lt;br /&gt;
* Karma is used to create simple activities that run off-line w/out access to the Internet&lt;br /&gt;
* Karma is for web developers who want to contribute to Sugar using their current skills&lt;br /&gt;
* Karma is built on top of open web standards such as html5, javascript, and CSS.&lt;br /&gt;
* Karma is built to run on top of web browsers that support html5, particularly the canvas element.&lt;br /&gt;
* Karma is built around the concept of individual &amp;quot;lessons&amp;quot; and multiple lessons can be aggregated into a sugar activity&lt;br /&gt;
* Karma is the evolution of OLE Nepal&#039;s work on the EPaath suite of lessons in Nepal&lt;br /&gt;
* Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress&lt;br /&gt;
* Karma is pedagogically agnostic. Pedagogical choices are left to the lesson author.&lt;br /&gt;
&lt;br /&gt;
=== What Karma Isn&#039;t ===&lt;br /&gt;
&lt;br /&gt;
* Karma is not compatible with Internet Explorer because Internet Explorer does not support html5 apis such as canvas, svg, localStorage, etc.&lt;br /&gt;
* Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities&lt;br /&gt;
* Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics&lt;br /&gt;
* Karma is not meant as a basis for a WYSIWG programming environment like TurtleArt, EToys, or Logo&lt;br /&gt;
* Karma is not built to support browsers that do not support html5, such as Internet Explorer and Firefox &amp;lt; version 3.5 &lt;br /&gt;
* Karma is not intended to teach programming to children though it could be used as such&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
&lt;br /&gt;
A Karma lesson is composed of a valid html5 document, javascript code, and css stylesheets and optional assets such as images, audio, video and lesson plans. Karma should be very easy for inexperienced developers to understand and work with. Even non-programmers should be able to make visible changes by tweaking the code and liberal use of cut-and-paste. Complexities such as integration with pootle, local storage, and certain types of animation should be abstracted so that novice developers don&#039;t have to understand them in order to effectively use Karma. Karma strictly adheres to the Model-View-Controller Pattern and similarly to unobtrusive JavaScript. In essence. you should be able to substantially change the look and feel of a Karma lesson by modifying the CSS or you could translate the activity, without having to understand the JavaScript code.&lt;br /&gt;
&lt;br /&gt;
=== Design Goals ===&lt;br /&gt;
* Unobtrusive JavaScript&lt;br /&gt;
* No globals&lt;br /&gt;
* No extension of native objects&lt;br /&gt;
&lt;br /&gt;
=== Technical Architecture ===&lt;br /&gt;
&lt;br /&gt;
* Run-time - Karma will work with basic functionality on any W3C standards-compliant browser that supports HTML5 tags canvas, audio, and svg. This notably excludes Microsoft&#039;s Internet Explorer. Karma will be particularly tailored to work with Sugar&#039;s Journal and collaboration through Telepathy. Longer-term we hope to extend Karma to take advantage of Sugar&#039;s collaboration features.&lt;br /&gt;
* Primary Programming language - [https://developer.mozilla.org/en/New_in_JavaScript_1.6 Javascript 1.6] &lt;br /&gt;
* [[Karma/i18n|i18n]] -- Pervasive internationalization is a critical part of Karma&lt;br /&gt;
** Supported types of i18n  -- ToDo&lt;br /&gt;
*** Output of Native Digits&lt;br /&gt;
*** Image switching per locale&lt;br /&gt;
*** Regular text, though it is unclear how to support plural forms, grammar shifts, and gender&lt;br /&gt;
*** Audio switching per locale&lt;br /&gt;
** Integration with pootle&lt;br /&gt;
* [[Karma/Utilities|Utilities]] -- we primarily use [http://www.narwhaljs.org narwhal] for command-line scripting and [http://code.google.com/p/jsdoc-toolkit/ jsdoc] for documentation&lt;br /&gt;
* Journal, Telepathy Integration -- method to be determined, perhaps using html5&#039;s offline storage feature, some resources [https://developer.mozilla.org/en/Offline_resources_in_Firefox here] and [http://www.weboshelp.net/webos-tutorials/156-palm-webos-html5-database-storage-tutorial here] &lt;br /&gt;
* Moodle Integration -- method to be determined&lt;br /&gt;
* [[Karma/Bundle_layout|Repo and Bundle layout]]&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
&lt;br /&gt;
* [[Karma:Anatomy_of_Lesson|Anatomy of a Karma Lesson]]&lt;br /&gt;
* The [[Karma/Dictionary|Karma Dictionary]]&lt;br /&gt;
* [[Karma/Specifications|Karma Specifications]] (early draft)&lt;br /&gt;
* Source Code stored in http://git.sugarlabs.org/projects/karma&lt;br /&gt;
* Each lesson must be in a folder named according to the schema &amp;quot;karma_Grade_Maths_title_WeekNo&amp;quot; where the week number is optional &lt;br /&gt;
  The following are valid names&lt;br /&gt;
  karma_3_Maths_LargestNumber_15&lt;br /&gt;
  karma_2_English_MatchingPuzzle&lt;br /&gt;
  karma_6_Maths_AddingUpTo10_4&lt;br /&gt;
* Version Control and repository management see the [[Karma#Version_Control|Version Control]] section of this page&lt;br /&gt;
* Unit testing is required for the karma.js library but not for individual lessons http://karma.sugarlabs.org/tests/&lt;br /&gt;
* Project Documentation kept in the Sugar Labs wiki&lt;br /&gt;
* Coding conventions: Based on [http://www.dojotoolkit.org/developer/StyleGuide Dojo Style Guide] &lt;br /&gt;
** Use camel-case for function names and variables&lt;br /&gt;
** Exception to above -- object constructors should start with a capital letter&lt;br /&gt;
** boolean variables should be prefixed with &amp;quot;is&amp;quot;, &amp;quot;has&amp;quot;, &amp;quot;can&amp;quot;, or &amp;quot;should&amp;quot;&lt;br /&gt;
** counters should be prefixed with &amp;quot;num&amp;quot; or &amp;quot;count&amp;quot;&lt;br /&gt;
** Whenever possible, use [http://www.jslint.com/ jslint]&lt;br /&gt;
* File naming conventions: lowercase letters, underscore instead of spaces  (need to write more about it)&lt;br /&gt;
&lt;br /&gt;
== Version Control == &lt;br /&gt;
Currently all lessons are stored in the examples/ folder of [http://git.sugarlabs.org/projects/karma/repos/mainline main karma repository]&lt;br /&gt;
&lt;br /&gt;
We plan to move all lessons into individual repositories at git.sugarlabs.org but only once we have a process to automatically build bundles.&lt;br /&gt;
&lt;br /&gt;
When we do move to individual repos we shall use the [http://git.sugarlabs.org/projects/karma_lesson karma_lesson template] for each new lesson repository &lt;br /&gt;
&lt;br /&gt;
Here is how you can use the karma_lesson template to create a new repository from scratch&lt;br /&gt;
&lt;br /&gt;
  $ git clone git://git.sugarlabs.org/karma_lesson/mainline.git&lt;br /&gt;
  $ mkdir ../karma_3_English_3  # create a new lesson directory following our naming convention&lt;br /&gt;
  $ cp -r * ../karma_3_English_3  &lt;br /&gt;
  $ cd ../karma_3_English_3&lt;br /&gt;
  $ rm -r .git     # make sure you get rid of the old git directory&lt;br /&gt;
  $ git init&lt;br /&gt;
  $ git add .&lt;br /&gt;
  $ git commit -a -m &amp;quot;first commit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now go to the http://git.sugarlabs.org/projects/new, make sure you are logged in&lt;br /&gt;
Create a new project, use the same name as you did for your lesson&#039;s main folder&lt;br /&gt;
then,&lt;br /&gt;
  $ git remote add origin git://...   # the pubic push url&lt;br /&gt;
&lt;br /&gt;
Then on to coding your lesson ;)&lt;br /&gt;
&lt;br /&gt;
From then on &lt;br /&gt;
 $ git push origin master   # will sync your local tree w/ the server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tagging&#039;&#039;&#039; -- a karma lesson can be in only one of two states, stable or unstable. Any commit tagged &#039;stable&#039; is the stable version of your code. Every other version of your code is unstable. We will not use numeric versioning such as 0.1, 1.0, 1.2, etc. for the foreseeable future.&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
[[Karma:Meeting 21 December 2009]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Project ==&lt;br /&gt;
&lt;br /&gt;
Karma started as a GSoC project with Felipe Lopez Toledo &amp;quot;SubZero&amp;quot; as the student participant and [[USER:BryanWB| Bryan Berry]] as mentor. &lt;br /&gt;
&lt;br /&gt;
=== GSoC Meetings ===&lt;br /&gt;
&lt;br /&gt;
Notes from GSoC meetings - kept for archival purposes&lt;br /&gt;
* [[Karma:Meeting 12 May 2009]]&lt;br /&gt;
* [[Karma:Meeting 02 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 09 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 23 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 30 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Jul 2009]]&lt;br /&gt;
* [[Karma:Meeting 4 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 11 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 18 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 24 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 08 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 14 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Sep 2009]]&lt;br /&gt;
&lt;br /&gt;
== Project Roadmap ==&lt;br /&gt;
&lt;br /&gt;
==== 0.1 &amp;quot;Osito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Was completed September 11, 2009&lt;br /&gt;
&lt;br /&gt;
* 1 Working example in &amp;quot;adding_up_to_10&amp;quot;&lt;br /&gt;
* cleaned up documentation with jsdocs api documentation and cleaned up README.txt&lt;br /&gt;
* integrate chakra and &amp;quot;adding_up_to_10&amp;quot; and knavbar&lt;br /&gt;
* adding_up_to_10 works on the XO&lt;br /&gt;
** Surf&lt;br /&gt;
** Browse&lt;br /&gt;
&lt;br /&gt;
==== 0.2 &amp;quot;Gatito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due mid-December 2009&lt;br /&gt;
&lt;br /&gt;
This release is timed to coincide with Bryan&#039;s visit to Google HQ for the GSoC Mentor&#039;s Summit&lt;br /&gt;
&lt;br /&gt;
* unit testing added to karma.js using QUnit -- DONE&lt;br /&gt;
* API documented w/ jsdoc-toolkit&lt;br /&gt;
* support for SVG and canvas animation -- DONE&lt;br /&gt;
* 3 working examples&lt;br /&gt;
** Adding_Up_to_10 using both SVG and canvas -- DONE&lt;br /&gt;
** Quadrilaterals  -- 50% done&lt;br /&gt;
** &amp;quot;Conozco A Uruguay&amp;quot; done with karma  -- 50% done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 0.4 &amp;quot;niño&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due 31 January 2010&lt;br /&gt;
&lt;br /&gt;
* Full i18n support&lt;br /&gt;
* Integrate all of the existing E-Paath lesson into chakra &lt;br /&gt;
* narwhal build script to build one giant karma bundle w/ all the E-Paath lessons inside it and chakra&lt;br /&gt;
* At least 6 lessons ready that have been translated into 3 languages each&lt;br /&gt;
* Version 0.1 draft of karma specification done&lt;br /&gt;
&lt;br /&gt;
==== 1.0 &amp;quot;Muchacho&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This release may also be called &amp;quot;Karma 1000&amp;quot; and is a big wishlist&lt;br /&gt;
&lt;br /&gt;
* Full moodle integration&lt;br /&gt;
* Offline storage and synchronization with moodle&lt;br /&gt;
* Integration with the Sugar Journal&lt;br /&gt;
* Integration with Telepathy on Sugar&lt;br /&gt;
* fully functional &amp;quot;kpages&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
&lt;br /&gt;
here lies a lot of links to resources specific to karma&lt;br /&gt;
&lt;br /&gt;
UI&lt;br /&gt;
* Iphone Human Interface Guide http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/mobilehig/MobileHIG.pdf&lt;br /&gt;
* Palm Pre interface guide http://developer.palm.com/images/palm/pdf/palm_webos_hi_guidelines.pdf&lt;br /&gt;
* 30 Usability Issues To Be Aware Of http://www.smashingmagazine.com/2007/10/09/30-usability-issues-to-be-aware-of/&lt;br /&gt;
* 10 Usability Nightmares You Should Be Aware Of http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/&lt;br /&gt;
* &amp;quot;The Design of Everyday Things&amp;quot; book by Don Norman&lt;br /&gt;
* &amp;quot;Don&#039;t Make me think&amp;quot; by Steve Krug, guide to usability for web apps&lt;br /&gt;
&lt;br /&gt;
HTML5&lt;br /&gt;
* http://www.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/&lt;br /&gt;
* http://www.w3.org/TR/html5-diff/  Differences between html4 and html5&lt;br /&gt;
* [http://diveintohtml5.org/ Dive Into HTML5]&lt;br /&gt;
&lt;br /&gt;
General Web Design&lt;br /&gt;
* &amp;quot;Web Design in a Nutshell&amp;quot; from O&#039;Reilly&lt;br /&gt;
* Apple &amp;quot;Web Page Development: Best Practices&amp;quot; http://developer.apple.com/internet/webcontent/bestwebdev.html&lt;br /&gt;
&lt;br /&gt;
Canvas&lt;br /&gt;
* demos: http://html5demos.com/&lt;br /&gt;
* basics: http://dev.opera.com/articles/view/html-5-canvas-the-basics/&lt;br /&gt;
* painting web app: http://dev.opera.com/articles/view/html5-canvas-painting/&lt;br /&gt;
* mozilla canvas tutorial: https://developer.mozilla.org/en/Canvas_tutorial&lt;br /&gt;
* using canvas on webkit: http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/Canvas.html&lt;br /&gt;
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html&lt;br /&gt;
&lt;br /&gt;
SVG&lt;br /&gt;
* The [http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html SVG Primer] a very detailed and in-depth resource&lt;br /&gt;
* [http://raphaeljs.com/reference.html Raphaeljs documentation]&lt;br /&gt;
* https://developer.mozilla.org/en/svg&lt;br /&gt;
&lt;br /&gt;
Javascript&lt;br /&gt;
* [http://eloquentjavascript.net Eloquent Javascript] best beginning javascript resource&lt;br /&gt;
* &amp;quot;Javascript: The Good Parts&amp;quot; book by Doug Crockford&lt;br /&gt;
* &amp;quot;jQuery in Action&amp;quot; book&lt;br /&gt;
* &amp;quot;Pro Javascript Techniques&amp;quot; by john resig&lt;br /&gt;
* All the tutorials at www.ejohn.org, esp.&lt;br /&gt;
** http://ejohn.org/blog/how-javascript-timers-work/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Coding Tools and Conventions&lt;br /&gt;
* Firebug  --- http://www.getfirebug.com&lt;br /&gt;
* Web-Inspector --- webkit&#039;s answer to firebug&lt;br /&gt;
* Browsers --- We primarily work with Chromium and Firefox &amp;gt; 3.5&lt;br /&gt;
* For emacs users -- nxhtml mode and magit.el for working w/ git&lt;br /&gt;
* [http://www.jslint.com/ jslint]&lt;br /&gt;
* [http://www.inkscape.org inkscape]&lt;br /&gt;
* [http://narwhaljs.org narwhal]&lt;br /&gt;
&lt;br /&gt;
== Subpages ==&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42166</id>
		<title>Karma</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42166"/>
		<updated>2009-12-22T10:14:01Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Version Control */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TOCleft}}&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Project]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Image:Karma.png|right]]&lt;br /&gt;
&lt;br /&gt;
== The Karma Project ==&lt;br /&gt;
&lt;br /&gt;
Karma is a framework for creating educational software using JavaScript, html5, and SVG. The Karma team is primarily focused on developing Sugar activities but you can also Karma to create lessons that run in any web browser that supports html5. The best ways to get involved are to join the [http://groups.google.com/group/karmajs mailing list] and [http://git.sugarlabs.org/projects/karma/repos/mainline get the code]&lt;br /&gt;
&lt;br /&gt;
=== Rationale ===&lt;br /&gt;
&lt;br /&gt;
Anyone with a modern standards-compliant web browser and a text editor should be able to create learning activities that can be used by anyone with a computer. Sugar should not be a walled garden that only allows learning activities expressly designed for it and it alone but rather gives extra power and depth to learning activities. Karma uses a specialized vocabulary that features a number of specialized terms. Please refer to the [[Karma/Dictionary|Karma Dictionary]] early and often.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
&lt;br /&gt;
Karma is a sub-project of Sugar Labs that is under active development as a part of a [[Karma#GSoC_Project| Google Summer of Code project]]. The latest examples can be seen at [http://karma.sugarlabs.org http://karma.sugarlabs.org]. You can also check out the [http://karmaproject.wordpress.com Karma Project blog] for updates.&lt;br /&gt;
&lt;br /&gt;
To try out the karma examples you need to have an html5-capable browser. The Browse activity within Sugar does not currently support html5. To try out karma within Sugar you need to install [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] and its webkit dependencies or run Firefox 3.5 from the command-line (yum install pywebkitgtk WebKit-gtk gnome-python2-gconf).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What Karma Is ===&lt;br /&gt;
&lt;br /&gt;
* Karma is a simple framework to create simple interactive learning activities primarily for Sugar but also to be viewable through any web browser that supports html5&lt;br /&gt;
* Karma is used to create simple activities that run off-line w/out access to the Internet&lt;br /&gt;
* Karma is for web developers who want to contribute to Sugar using their current skills&lt;br /&gt;
* Karma is built on top of open web standards such as html5, javascript, and CSS.&lt;br /&gt;
* Karma is built to run on top of web browsers that support html5, particularly the canvas element.&lt;br /&gt;
* Karma is built around the concept of individual &amp;quot;lessons&amp;quot; and multiple lessons can be aggregated into a sugar activity&lt;br /&gt;
* Karma is the evolution of OLE Nepal&#039;s work on the EPaath suite of lessons in Nepal&lt;br /&gt;
* Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress&lt;br /&gt;
* Karma is pedagogically agnostic. Pedagogical choices are left to the lesson author.&lt;br /&gt;
&lt;br /&gt;
=== What Karma Isn&#039;t ===&lt;br /&gt;
&lt;br /&gt;
* Karma is not compatible with Internet Explorer because Internet Explorer does not support html5 apis such as canvas, svg, localStorage, etc.&lt;br /&gt;
* Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities&lt;br /&gt;
* Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics&lt;br /&gt;
* Karma is not meant as a basis for a WYSIWG programming environment like TurtleArt, EToys, or Logo&lt;br /&gt;
* Karma is not built to support browsers that do not support html5, such as Internet Explorer and Firefox &amp;lt; version 3.5 &lt;br /&gt;
* Karma is not intended to teach programming to children though it could be used as such&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
&lt;br /&gt;
A Karma lesson is composed of a valid html5 document, javascript code, and css stylesheets and optional assets such as images, audio, video and lesson plans. Karma should be very easy for inexperienced developers to understand and work with. Even non-programmers should be able to make visible changes by tweaking the code and liberal use of cut-and-paste. Complexities such as integration with pootle, local storage, and certain types of animation should be abstracted so that novice developers don&#039;t have to understand them in order to effectively use Karma. Karma strictly adheres to the Model-View-Controller Pattern and similarly to unobtrusive JavaScript. In essence. you should be able to substantially change the look and feel of a Karma lesson by modifying the CSS or you could translate the activity, without having to understand the JavaScript code.&lt;br /&gt;
&lt;br /&gt;
=== Design Goals ===&lt;br /&gt;
* Unobtrusive JavaScript&lt;br /&gt;
* No globals&lt;br /&gt;
* No extension of native objects&lt;br /&gt;
&lt;br /&gt;
=== Technical Architecture ===&lt;br /&gt;
&lt;br /&gt;
* Run-time - Karma will work with basic functionality on any W3C standards-compliant browser that supports HTML5 tags canvas, audio, and svg. This notably excludes Microsoft&#039;s Internet Explorer. Karma will be particularly tailored to work with Sugar&#039;s Journal and collaboration through Telepathy. Longer-term we hope to extend Karma to take advantage of Sugar&#039;s collaboration features.&lt;br /&gt;
* Primary Programming language - [https://developer.mozilla.org/en/New_in_JavaScript_1.6 Javascript 1.6] &lt;br /&gt;
* [[Karma/i18n|i18n]] -- Pervasive internationalization is a critical part of Karma&lt;br /&gt;
** Supported types of i18n  -- ToDo&lt;br /&gt;
*** Output of Native Digits&lt;br /&gt;
*** Image switching per locale&lt;br /&gt;
*** Regular text, though it is unclear how to support plural forms, grammar shifts, and gender&lt;br /&gt;
*** Audio switching per locale&lt;br /&gt;
** Integration with pootle&lt;br /&gt;
* [[Karma/Utilities|Utilities]] -- we primarily use [http://www.narwhaljs.org narwhal] for command-line scripting and [http://code.google.com/p/jsdoc-toolkit/ jsdoc] for documentation&lt;br /&gt;
* Journal, Telepathy Integration -- method to be determined, perhaps using html5&#039;s offline storage feature, some resources [https://developer.mozilla.org/en/Offline_resources_in_Firefox here] and [http://www.weboshelp.net/webos-tutorials/156-palm-webos-html5-database-storage-tutorial here] &lt;br /&gt;
* Moodle Integration -- method to be determined&lt;br /&gt;
* [[Karma/Bundle_layout|Repo and Bundle layout]]&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
&lt;br /&gt;
* [[Karma:Anatomy_of_Lesson|Anatomy of a Karma Lesson]]&lt;br /&gt;
* The [[Karma/Dictionary|Karma Dictionary]]&lt;br /&gt;
* [[Karma/Specifications|Karma Specifications]] (early draft)&lt;br /&gt;
* Source Code stored in http://git.sugarlabs.org/projects/karma&lt;br /&gt;
* Each lesson must be in a folder named according to the schema &amp;quot;karma_Grade_Maths_title_WeekNo&amp;quot; where the week number is optional &lt;br /&gt;
  The following are valid names&lt;br /&gt;
  karma_3_Maths_LargestNumber_15&lt;br /&gt;
  karma_2_English_MatchingPuzzle&lt;br /&gt;
  karma_6_Maths_AddingUpTo10_4&lt;br /&gt;
* Version Control and repository management see the [[Karma#Version_Control|Version Control]] section of this page&lt;br /&gt;
* Unit testing is required for the karma.js library but not for individual lessons http://karma.sugarlabs.org/tests/&lt;br /&gt;
* Project Documentation kept in the Sugar Labs wiki&lt;br /&gt;
* Coding conventions: Based on [http://www.dojotoolkit.org/developer/StyleGuide Dojo Style Guide] &lt;br /&gt;
** Use camel-case for function names and variables&lt;br /&gt;
** Exception to above -- object constructors should start with a capital letter&lt;br /&gt;
** boolean variables should be prefixed with &amp;quot;is&amp;quot;, &amp;quot;has&amp;quot;, &amp;quot;can&amp;quot;, or &amp;quot;should&amp;quot;&lt;br /&gt;
** counters should be prefixed with &amp;quot;num&amp;quot; or &amp;quot;count&amp;quot;&lt;br /&gt;
** Whenever possible, use [http://www.jslint.com/ jslint]&lt;br /&gt;
* File naming conventions: lowercase letters, underscore instead of spaces  (need to write more about it)&lt;br /&gt;
&lt;br /&gt;
== Version Control == &lt;br /&gt;
Currently all lessons are stored in the examples/ folder of [http://git.sugarlabs.org/projects/karma/repos/mainline main karma repository]&lt;br /&gt;
&lt;br /&gt;
We plan to move all lessons into individual repositories at git.sugarlabs.org but only once we have a process to automatically build bundles.&lt;br /&gt;
&lt;br /&gt;
When we do move to individual repos we shall use the [http://git.sugarlabs.org/projects/karma_lesson karma_lesson template] for each new lesson repository &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is how you can use the karma_lesson template to create a new repository from scratch&lt;br /&gt;
&lt;br /&gt;
  $ git clone git://git.sugarlabs.org/karma_lesson/mainline.git&lt;br /&gt;
  $ mkdir ../karma_3_English_3  # create a new lesson directory following our naming convention&lt;br /&gt;
  $ cp -r * ../karma_3_English_3  &lt;br /&gt;
  $ cd ../karma_3_English_3&lt;br /&gt;
  $ rm -r .git     # make sure you get rid of the old git directory&lt;br /&gt;
  $ git init&lt;br /&gt;
  $ git add .&lt;br /&gt;
  $ git commit -a -m &amp;quot;first commit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now go to the http://git.sugarlabs.org/projects/new, make sure you are logged in&lt;br /&gt;
Create a new project, use the same name as you did for your lesson&#039;s main folder&lt;br /&gt;
then,&lt;br /&gt;
  $ git remote add origin git://...   # the pubic push url&lt;br /&gt;
&lt;br /&gt;
Then on to coding your lesson ;)&lt;br /&gt;
&lt;br /&gt;
From then on &lt;br /&gt;
 $ git push origin master   # will sync your local tree w/ the server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tagging&#039;&#039; -- a karma lesson can be in only one of two states, stable or unstable. Any commit tagged &#039;stable&#039; is the stable version of your code. Every other version of your code is unstable. We will not use numeric versioning such as 0.1, 1.0, 1.2, etc. for the foreseeable future.&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
[[Karma:Meeting 21 December 2009]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Project ==&lt;br /&gt;
&lt;br /&gt;
Karma started as a GSoC project with Felipe Lopez Toledo &amp;quot;SubZero&amp;quot; as the student participant and [[USER:BryanWB| Bryan Berry]] as mentor. &lt;br /&gt;
&lt;br /&gt;
=== GSoC Meetings ===&lt;br /&gt;
&lt;br /&gt;
Notes from GSoC meetings - kept for archival purposes&lt;br /&gt;
* [[Karma:Meeting 12 May 2009]]&lt;br /&gt;
* [[Karma:Meeting 02 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 09 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 23 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 30 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Jul 2009]]&lt;br /&gt;
* [[Karma:Meeting 4 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 11 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 18 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 24 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 08 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 14 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Sep 2009]]&lt;br /&gt;
&lt;br /&gt;
== Project Roadmap ==&lt;br /&gt;
&lt;br /&gt;
==== 0.1 &amp;quot;Osito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Was completed September 11, 2009&lt;br /&gt;
&lt;br /&gt;
* 1 Working example in &amp;quot;adding_up_to_10&amp;quot;&lt;br /&gt;
* cleaned up documentation with jsdocs api documentation and cleaned up README.txt&lt;br /&gt;
* integrate chakra and &amp;quot;adding_up_to_10&amp;quot; and knavbar&lt;br /&gt;
* adding_up_to_10 works on the XO&lt;br /&gt;
** Surf&lt;br /&gt;
** Browse&lt;br /&gt;
&lt;br /&gt;
==== 0.2 &amp;quot;Gatito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due mid-December 2009&lt;br /&gt;
&lt;br /&gt;
This release is timed to coincide with Bryan&#039;s visit to Google HQ for the GSoC Mentor&#039;s Summit&lt;br /&gt;
&lt;br /&gt;
* unit testing added to karma.js using QUnit -- DONE&lt;br /&gt;
* API documented w/ jsdoc-toolkit&lt;br /&gt;
* support for SVG and canvas animation -- DONE&lt;br /&gt;
* 3 working examples&lt;br /&gt;
** Adding_Up_to_10 using both SVG and canvas -- DONE&lt;br /&gt;
** Quadrilaterals  -- 50% done&lt;br /&gt;
** &amp;quot;Conozco A Uruguay&amp;quot; done with karma  -- 50% done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 0.4 &amp;quot;niño&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due 31 January 2010&lt;br /&gt;
&lt;br /&gt;
* Full i18n support&lt;br /&gt;
* Integrate all of the existing E-Paath lesson into chakra &lt;br /&gt;
* narwhal build script to build one giant karma bundle w/ all the E-Paath lessons inside it and chakra&lt;br /&gt;
* At least 6 lessons ready that have been translated into 3 languages each&lt;br /&gt;
* Version 0.1 draft of karma specification done&lt;br /&gt;
&lt;br /&gt;
==== 1.0 &amp;quot;Muchacho&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This release may also be called &amp;quot;Karma 1000&amp;quot; and is a big wishlist&lt;br /&gt;
&lt;br /&gt;
* Full moodle integration&lt;br /&gt;
* Offline storage and synchronization with moodle&lt;br /&gt;
* Integration with the Sugar Journal&lt;br /&gt;
* Integration with Telepathy on Sugar&lt;br /&gt;
* fully functional &amp;quot;kpages&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
&lt;br /&gt;
here lies a lot of links to resources specific to karma&lt;br /&gt;
&lt;br /&gt;
UI&lt;br /&gt;
* Iphone Human Interface Guide http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/mobilehig/MobileHIG.pdf&lt;br /&gt;
* Palm Pre interface guide http://developer.palm.com/images/palm/pdf/palm_webos_hi_guidelines.pdf&lt;br /&gt;
* 30 Usability Issues To Be Aware Of http://www.smashingmagazine.com/2007/10/09/30-usability-issues-to-be-aware-of/&lt;br /&gt;
* 10 Usability Nightmares You Should Be Aware Of http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/&lt;br /&gt;
* &amp;quot;The Design of Everyday Things&amp;quot; book by Don Norman&lt;br /&gt;
* &amp;quot;Don&#039;t Make me think&amp;quot; by Steve Krug, guide to usability for web apps&lt;br /&gt;
&lt;br /&gt;
HTML5&lt;br /&gt;
* http://www.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/&lt;br /&gt;
* http://www.w3.org/TR/html5-diff/  Differences between html4 and html5&lt;br /&gt;
* [http://diveintohtml5.org/ Dive Into HTML5]&lt;br /&gt;
&lt;br /&gt;
General Web Design&lt;br /&gt;
* &amp;quot;Web Design in a Nutshell&amp;quot; from O&#039;Reilly&lt;br /&gt;
* Apple &amp;quot;Web Page Development: Best Practices&amp;quot; http://developer.apple.com/internet/webcontent/bestwebdev.html&lt;br /&gt;
&lt;br /&gt;
Canvas&lt;br /&gt;
* demos: http://html5demos.com/&lt;br /&gt;
* basics: http://dev.opera.com/articles/view/html-5-canvas-the-basics/&lt;br /&gt;
* painting web app: http://dev.opera.com/articles/view/html5-canvas-painting/&lt;br /&gt;
* mozilla canvas tutorial: https://developer.mozilla.org/en/Canvas_tutorial&lt;br /&gt;
* using canvas on webkit: http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/Canvas.html&lt;br /&gt;
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html&lt;br /&gt;
&lt;br /&gt;
SVG&lt;br /&gt;
* The [http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html SVG Primer] a very detailed and in-depth resource&lt;br /&gt;
* [http://raphaeljs.com/reference.html Raphaeljs documentation]&lt;br /&gt;
* https://developer.mozilla.org/en/svg&lt;br /&gt;
&lt;br /&gt;
Javascript&lt;br /&gt;
* [http://eloquentjavascript.net Eloquent Javascript] best beginning javascript resource&lt;br /&gt;
* &amp;quot;Javascript: The Good Parts&amp;quot; book by Doug Crockford&lt;br /&gt;
* &amp;quot;jQuery in Action&amp;quot; book&lt;br /&gt;
* &amp;quot;Pro Javascript Techniques&amp;quot; by john resig&lt;br /&gt;
* All the tutorials at www.ejohn.org, esp.&lt;br /&gt;
** http://ejohn.org/blog/how-javascript-timers-work/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Coding Tools and Conventions&lt;br /&gt;
* Firebug  --- http://www.getfirebug.com&lt;br /&gt;
* Web-Inspector --- webkit&#039;s answer to firebug&lt;br /&gt;
* Browsers --- We primarily work with Chromium and Firefox &amp;gt; 3.5&lt;br /&gt;
* For emacs users -- nxhtml mode and magit.el for working w/ git&lt;br /&gt;
* [http://www.jslint.com/ jslint]&lt;br /&gt;
* [http://www.inkscape.org inkscape]&lt;br /&gt;
* [http://narwhaljs.org narwhal]&lt;br /&gt;
&lt;br /&gt;
== Subpages ==&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42165</id>
		<title>Karma</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42165"/>
		<updated>2009-12-22T10:07:46Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TOCleft}}&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Project]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Image:Karma.png|right]]&lt;br /&gt;
&lt;br /&gt;
== The Karma Project ==&lt;br /&gt;
&lt;br /&gt;
Karma is a framework for creating educational software using JavaScript, html5, and SVG. The Karma team is primarily focused on developing Sugar activities but you can also Karma to create lessons that run in any web browser that supports html5. The best ways to get involved are to join the [http://groups.google.com/group/karmajs mailing list] and [http://git.sugarlabs.org/projects/karma/repos/mainline get the code]&lt;br /&gt;
&lt;br /&gt;
=== Rationale ===&lt;br /&gt;
&lt;br /&gt;
Anyone with a modern standards-compliant web browser and a text editor should be able to create learning activities that can be used by anyone with a computer. Sugar should not be a walled garden that only allows learning activities expressly designed for it and it alone but rather gives extra power and depth to learning activities. Karma uses a specialized vocabulary that features a number of specialized terms. Please refer to the [[Karma/Dictionary|Karma Dictionary]] early and often.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
&lt;br /&gt;
Karma is a sub-project of Sugar Labs that is under active development as a part of a [[Karma#GSoC_Project| Google Summer of Code project]]. The latest examples can be seen at [http://karma.sugarlabs.org http://karma.sugarlabs.org]. You can also check out the [http://karmaproject.wordpress.com Karma Project blog] for updates.&lt;br /&gt;
&lt;br /&gt;
To try out the karma examples you need to have an html5-capable browser. The Browse activity within Sugar does not currently support html5. To try out karma within Sugar you need to install [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] and its webkit dependencies or run Firefox 3.5 from the command-line (yum install pywebkitgtk WebKit-gtk gnome-python2-gconf).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What Karma Is ===&lt;br /&gt;
&lt;br /&gt;
* Karma is a simple framework to create simple interactive learning activities primarily for Sugar but also to be viewable through any web browser that supports html5&lt;br /&gt;
* Karma is used to create simple activities that run off-line w/out access to the Internet&lt;br /&gt;
* Karma is for web developers who want to contribute to Sugar using their current skills&lt;br /&gt;
* Karma is built on top of open web standards such as html5, javascript, and CSS.&lt;br /&gt;
* Karma is built to run on top of web browsers that support html5, particularly the canvas element.&lt;br /&gt;
* Karma is built around the concept of individual &amp;quot;lessons&amp;quot; and multiple lessons can be aggregated into a sugar activity&lt;br /&gt;
* Karma is the evolution of OLE Nepal&#039;s work on the EPaath suite of lessons in Nepal&lt;br /&gt;
* Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress&lt;br /&gt;
* Karma is pedagogically agnostic. Pedagogical choices are left to the lesson author.&lt;br /&gt;
&lt;br /&gt;
=== What Karma Isn&#039;t ===&lt;br /&gt;
&lt;br /&gt;
* Karma is not compatible with Internet Explorer because Internet Explorer does not support html5 apis such as canvas, svg, localStorage, etc.&lt;br /&gt;
* Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities&lt;br /&gt;
* Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics&lt;br /&gt;
* Karma is not meant as a basis for a WYSIWG programming environment like TurtleArt, EToys, or Logo&lt;br /&gt;
* Karma is not built to support browsers that do not support html5, such as Internet Explorer and Firefox &amp;lt; version 3.5 &lt;br /&gt;
* Karma is not intended to teach programming to children though it could be used as such&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
&lt;br /&gt;
A Karma lesson is composed of a valid html5 document, javascript code, and css stylesheets and optional assets such as images, audio, video and lesson plans. Karma should be very easy for inexperienced developers to understand and work with. Even non-programmers should be able to make visible changes by tweaking the code and liberal use of cut-and-paste. Complexities such as integration with pootle, local storage, and certain types of animation should be abstracted so that novice developers don&#039;t have to understand them in order to effectively use Karma. Karma strictly adheres to the Model-View-Controller Pattern and similarly to unobtrusive JavaScript. In essence. you should be able to substantially change the look and feel of a Karma lesson by modifying the CSS or you could translate the activity, without having to understand the JavaScript code.&lt;br /&gt;
&lt;br /&gt;
=== Design Goals ===&lt;br /&gt;
* Unobtrusive JavaScript&lt;br /&gt;
* No globals&lt;br /&gt;
* No extension of native objects&lt;br /&gt;
&lt;br /&gt;
=== Technical Architecture ===&lt;br /&gt;
&lt;br /&gt;
* Run-time - Karma will work with basic functionality on any W3C standards-compliant browser that supports HTML5 tags canvas, audio, and svg. This notably excludes Microsoft&#039;s Internet Explorer. Karma will be particularly tailored to work with Sugar&#039;s Journal and collaboration through Telepathy. Longer-term we hope to extend Karma to take advantage of Sugar&#039;s collaboration features.&lt;br /&gt;
* Primary Programming language - [https://developer.mozilla.org/en/New_in_JavaScript_1.6 Javascript 1.6] &lt;br /&gt;
* [[Karma/i18n|i18n]] -- Pervasive internationalization is a critical part of Karma&lt;br /&gt;
** Supported types of i18n  -- ToDo&lt;br /&gt;
*** Output of Native Digits&lt;br /&gt;
*** Image switching per locale&lt;br /&gt;
*** Regular text, though it is unclear how to support plural forms, grammar shifts, and gender&lt;br /&gt;
*** Audio switching per locale&lt;br /&gt;
** Integration with pootle&lt;br /&gt;
* [[Karma/Utilities|Utilities]] -- we primarily use [http://www.narwhaljs.org narwhal] for command-line scripting and [http://code.google.com/p/jsdoc-toolkit/ jsdoc] for documentation&lt;br /&gt;
* Journal, Telepathy Integration -- method to be determined, perhaps using html5&#039;s offline storage feature, some resources [https://developer.mozilla.org/en/Offline_resources_in_Firefox here] and [http://www.weboshelp.net/webos-tutorials/156-palm-webos-html5-database-storage-tutorial here] &lt;br /&gt;
* Moodle Integration -- method to be determined&lt;br /&gt;
* [[Karma/Bundle_layout|Repo and Bundle layout]]&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
&lt;br /&gt;
* [[Karma:Anatomy_of_Lesson|Anatomy of a Karma Lesson]]&lt;br /&gt;
* The [[Karma/Dictionary|Karma Dictionary]]&lt;br /&gt;
* [[Karma/Specifications|Karma Specifications]] (early draft)&lt;br /&gt;
* Source Code stored in http://git.sugarlabs.org/projects/karma&lt;br /&gt;
* Each lesson must be in a folder named according to the schema &amp;quot;karma_Grade_Maths_title_WeekNo&amp;quot; where the week number is optional &lt;br /&gt;
  The following are valid names&lt;br /&gt;
  karma_3_Maths_LargestNumber_15&lt;br /&gt;
  karma_2_English_MatchingPuzzle&lt;br /&gt;
  karma_6_Maths_AddingUpTo10_4&lt;br /&gt;
* Version Control and repository management see the [[Karma#Version_Control|Version Control]] section of this page&lt;br /&gt;
* Unit testing is required for the karma.js library but not for individual lessons http://karma.sugarlabs.org/tests/&lt;br /&gt;
* Project Documentation kept in the Sugar Labs wiki&lt;br /&gt;
* Coding conventions: Based on [http://www.dojotoolkit.org/developer/StyleGuide Dojo Style Guide] &lt;br /&gt;
** Use camel-case for function names and variables&lt;br /&gt;
** Exception to above -- object constructors should start with a capital letter&lt;br /&gt;
** boolean variables should be prefixed with &amp;quot;is&amp;quot;, &amp;quot;has&amp;quot;, &amp;quot;can&amp;quot;, or &amp;quot;should&amp;quot;&lt;br /&gt;
** counters should be prefixed with &amp;quot;num&amp;quot; or &amp;quot;count&amp;quot;&lt;br /&gt;
** Whenever possible, use [http://www.jslint.com/ jslint]&lt;br /&gt;
* File naming conventions: lowercase letters, underscore instead of spaces  (need to write more about it)&lt;br /&gt;
&lt;br /&gt;
== Version Control == &lt;br /&gt;
Currently all lessons are stored in the examples/ folder of [http://git.sugarlabs.org/projects/karma/repos/mainline main karma repository]&lt;br /&gt;
&lt;br /&gt;
We plan to move all lessons into individual repositories at git.sugarlabs.org but only once we have a process to automatically build bundles.&lt;br /&gt;
&lt;br /&gt;
When we do move to individual repos we shall use the [http://git.sugarlabs.org/projects/karma_lesson karma_lesson template] for each new lesson repository &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is how you can use the karma_lesson template to create a new repository from scratch&lt;br /&gt;
&lt;br /&gt;
  $ git clone git://git.sugarlabs.org/karma_lesson/mainline.git&lt;br /&gt;
  $ mkdir ../karma_3_English_3  # create a new lesson directory following our naming convention&lt;br /&gt;
  $ cp -r * ../karma_3_English_3  &lt;br /&gt;
  $ cd ../karma_3_English_3&lt;br /&gt;
  $ rm -r .git     # make sure you get rid of the old git directory&lt;br /&gt;
  $ git init&lt;br /&gt;
  $ git add .&lt;br /&gt;
  $ git commit -a -m &amp;quot;first commit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now go to the http://git.sugarlabs.org/projects/new, make sure you are logged in&lt;br /&gt;
Create a new project, use the same name as you did for your lesson&#039;s main folder&lt;br /&gt;
then,&lt;br /&gt;
  $ git remote add origin git://...   # the pubic push url&lt;br /&gt;
&lt;br /&gt;
Then on to coding your lesson ;)&lt;br /&gt;
&lt;br /&gt;
From then on &lt;br /&gt;
 $ git push origin master   # will sync your local tree w/ the server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
[[Karma:Meeting 21 December 2009]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Project ==&lt;br /&gt;
&lt;br /&gt;
Karma started as a GSoC project with Felipe Lopez Toledo &amp;quot;SubZero&amp;quot; as the student participant and [[USER:BryanWB| Bryan Berry]] as mentor. &lt;br /&gt;
&lt;br /&gt;
=== GSoC Meetings ===&lt;br /&gt;
&lt;br /&gt;
Notes from GSoC meetings - kept for archival purposes&lt;br /&gt;
* [[Karma:Meeting 12 May 2009]]&lt;br /&gt;
* [[Karma:Meeting 02 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 09 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 23 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 30 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Jul 2009]]&lt;br /&gt;
* [[Karma:Meeting 4 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 11 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 18 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 24 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 08 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 14 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Sep 2009]]&lt;br /&gt;
&lt;br /&gt;
== Project Roadmap ==&lt;br /&gt;
&lt;br /&gt;
==== 0.1 &amp;quot;Osito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Was completed September 11, 2009&lt;br /&gt;
&lt;br /&gt;
* 1 Working example in &amp;quot;adding_up_to_10&amp;quot;&lt;br /&gt;
* cleaned up documentation with jsdocs api documentation and cleaned up README.txt&lt;br /&gt;
* integrate chakra and &amp;quot;adding_up_to_10&amp;quot; and knavbar&lt;br /&gt;
* adding_up_to_10 works on the XO&lt;br /&gt;
** Surf&lt;br /&gt;
** Browse&lt;br /&gt;
&lt;br /&gt;
==== 0.2 &amp;quot;Gatito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due mid-December 2009&lt;br /&gt;
&lt;br /&gt;
This release is timed to coincide with Bryan&#039;s visit to Google HQ for the GSoC Mentor&#039;s Summit&lt;br /&gt;
&lt;br /&gt;
* unit testing added to karma.js using QUnit -- DONE&lt;br /&gt;
* API documented w/ jsdoc-toolkit&lt;br /&gt;
* support for SVG and canvas animation -- DONE&lt;br /&gt;
* 3 working examples&lt;br /&gt;
** Adding_Up_to_10 using both SVG and canvas -- DONE&lt;br /&gt;
** Quadrilaterals  -- 50% done&lt;br /&gt;
** &amp;quot;Conozco A Uruguay&amp;quot; done with karma  -- 50% done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 0.4 &amp;quot;niño&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due 31 January 2010&lt;br /&gt;
&lt;br /&gt;
* Full i18n support&lt;br /&gt;
* Integrate all of the existing E-Paath lesson into chakra &lt;br /&gt;
* narwhal build script to build one giant karma bundle w/ all the E-Paath lessons inside it and chakra&lt;br /&gt;
* At least 6 lessons ready that have been translated into 3 languages each&lt;br /&gt;
* Version 0.1 draft of karma specification done&lt;br /&gt;
&lt;br /&gt;
==== 1.0 &amp;quot;Muchacho&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This release may also be called &amp;quot;Karma 1000&amp;quot; and is a big wishlist&lt;br /&gt;
&lt;br /&gt;
* Full moodle integration&lt;br /&gt;
* Offline storage and synchronization with moodle&lt;br /&gt;
* Integration with the Sugar Journal&lt;br /&gt;
* Integration with Telepathy on Sugar&lt;br /&gt;
* fully functional &amp;quot;kpages&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
&lt;br /&gt;
here lies a lot of links to resources specific to karma&lt;br /&gt;
&lt;br /&gt;
UI&lt;br /&gt;
* Iphone Human Interface Guide http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/mobilehig/MobileHIG.pdf&lt;br /&gt;
* Palm Pre interface guide http://developer.palm.com/images/palm/pdf/palm_webos_hi_guidelines.pdf&lt;br /&gt;
* 30 Usability Issues To Be Aware Of http://www.smashingmagazine.com/2007/10/09/30-usability-issues-to-be-aware-of/&lt;br /&gt;
* 10 Usability Nightmares You Should Be Aware Of http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/&lt;br /&gt;
* &amp;quot;The Design of Everyday Things&amp;quot; book by Don Norman&lt;br /&gt;
* &amp;quot;Don&#039;t Make me think&amp;quot; by Steve Krug, guide to usability for web apps&lt;br /&gt;
&lt;br /&gt;
HTML5&lt;br /&gt;
* http://www.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/&lt;br /&gt;
* http://www.w3.org/TR/html5-diff/  Differences between html4 and html5&lt;br /&gt;
* [http://diveintohtml5.org/ Dive Into HTML5]&lt;br /&gt;
&lt;br /&gt;
General Web Design&lt;br /&gt;
* &amp;quot;Web Design in a Nutshell&amp;quot; from O&#039;Reilly&lt;br /&gt;
* Apple &amp;quot;Web Page Development: Best Practices&amp;quot; http://developer.apple.com/internet/webcontent/bestwebdev.html&lt;br /&gt;
&lt;br /&gt;
Canvas&lt;br /&gt;
* demos: http://html5demos.com/&lt;br /&gt;
* basics: http://dev.opera.com/articles/view/html-5-canvas-the-basics/&lt;br /&gt;
* painting web app: http://dev.opera.com/articles/view/html5-canvas-painting/&lt;br /&gt;
* mozilla canvas tutorial: https://developer.mozilla.org/en/Canvas_tutorial&lt;br /&gt;
* using canvas on webkit: http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/Canvas.html&lt;br /&gt;
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html&lt;br /&gt;
&lt;br /&gt;
SVG&lt;br /&gt;
* The [http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html SVG Primer] a very detailed and in-depth resource&lt;br /&gt;
* [http://raphaeljs.com/reference.html Raphaeljs documentation]&lt;br /&gt;
* https://developer.mozilla.org/en/svg&lt;br /&gt;
&lt;br /&gt;
Javascript&lt;br /&gt;
* [http://eloquentjavascript.net Eloquent Javascript] best beginning javascript resource&lt;br /&gt;
* &amp;quot;Javascript: The Good Parts&amp;quot; book by Doug Crockford&lt;br /&gt;
* &amp;quot;jQuery in Action&amp;quot; book&lt;br /&gt;
* &amp;quot;Pro Javascript Techniques&amp;quot; by john resig&lt;br /&gt;
* All the tutorials at www.ejohn.org, esp.&lt;br /&gt;
** http://ejohn.org/blog/how-javascript-timers-work/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Coding Tools and Conventions&lt;br /&gt;
* Firebug  --- http://www.getfirebug.com&lt;br /&gt;
* Web-Inspector --- webkit&#039;s answer to firebug&lt;br /&gt;
* Browsers --- We primarily work with Chromium and Firefox &amp;gt; 3.5&lt;br /&gt;
* For emacs users -- nxhtml mode and magit.el for working w/ git&lt;br /&gt;
* [http://www.jslint.com/ jslint]&lt;br /&gt;
* [http://www.inkscape.org inkscape]&lt;br /&gt;
* [http://narwhaljs.org narwhal]&lt;br /&gt;
&lt;br /&gt;
== Subpages ==&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42164</id>
		<title>Karma</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42164"/>
		<updated>2009-12-22T09:48:59Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TOCleft}}&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Project]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Image:Karma.png|right]]&lt;br /&gt;
&lt;br /&gt;
== The Karma Project ==&lt;br /&gt;
&lt;br /&gt;
Karma is a framework for creating educational software using JavaScript, html5, and SVG. The Karma team is primarily focused on developing Sugar activities but you can also Karma to create lessons that run in any web browser that supports html5. The best ways to get involved are to join the [http://groups.google.com/group/karmajs mailing list] and [http://git.sugarlabs.org/projects/karma/repos/mainline get the code]&lt;br /&gt;
&lt;br /&gt;
=== Rationale ===&lt;br /&gt;
&lt;br /&gt;
Anyone with a modern standards-compliant web browser and a text editor should be able to create learning activities that can be used by anyone with a computer. Sugar should not be a walled garden that only allows learning activities expressly designed for it and it alone but rather gives extra power and depth to learning activities. Karma uses a specialized vocabulary that features a number of specialized terms. Please refer to the [[Karma/Dictionary|Karma Dictionary]] early and often.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
&lt;br /&gt;
Karma is a sub-project of Sugar Labs that is under active development as a part of a [[Karma#GSoC_Project| Google Summer of Code project]]. The latest examples can be seen at [http://karma.sugarlabs.org http://karma.sugarlabs.org]. You can also check out the [http://karmaproject.wordpress.com Karma Project blog] for updates.&lt;br /&gt;
&lt;br /&gt;
To try out the karma examples you need to have an html5-capable browser. The Browse activity within Sugar does not currently support html5. To try out karma within Sugar you need to install [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] and its webkit dependencies or run Firefox 3.5 from the command-line (yum install pywebkitgtk WebKit-gtk gnome-python2-gconf).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What Karma Is ===&lt;br /&gt;
&lt;br /&gt;
* Karma is a simple framework to create simple interactive learning activities primarily for Sugar but also to be viewable through any web browser that supports html5&lt;br /&gt;
* Karma is used to create simple activities that run off-line w/out access to the Internet&lt;br /&gt;
* Karma is for web developers who want to contribute to Sugar using their current skills&lt;br /&gt;
* Karma is built on top of open web standards such as html5, javascript, and CSS.&lt;br /&gt;
* Karma is built to run on top of web browsers that support html5, particularly the canvas element.&lt;br /&gt;
* Karma is built around the concept of individual &amp;quot;lessons&amp;quot; and multiple lessons can be aggregated into a sugar activity&lt;br /&gt;
* Karma is the evolution of OLE Nepal&#039;s work on the EPaath suite of lessons in Nepal&lt;br /&gt;
* Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress&lt;br /&gt;
* Karma is pedagogically agnostic. Pedagogical choices are left to the lesson author.&lt;br /&gt;
&lt;br /&gt;
=== What Karma Isn&#039;t ===&lt;br /&gt;
&lt;br /&gt;
* Karma is not compatible with Internet Explorer because Internet Explorer does not support html5 apis such as canvas, svg, localStorage, etc.&lt;br /&gt;
* Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities&lt;br /&gt;
* Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics&lt;br /&gt;
* Karma is not meant as a basis for a WYSIWG programming environment like TurtleArt, EToys, or Logo&lt;br /&gt;
* Karma is not built to support browsers that do not support html5, such as Internet Explorer and Firefox &amp;lt; version 3.5 &lt;br /&gt;
* Karma is not intended to teach programming to children though it could be used as such&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
&lt;br /&gt;
A Karma lesson is composed of a valid html5 document, javascript code, and css stylesheets and optional assets such as images, audio, video and lesson plans. Karma should be very easy for inexperienced developers to understand and work with. Even non-programmers should be able to make visible changes by tweaking the code and liberal use of cut-and-paste. Complexities such as integration with pootle, local storage, and certain types of animation should be abstracted so that novice developers don&#039;t have to understand them in order to effectively use Karma. Karma strictly adheres to the Model-View-Controller Pattern and similarly to unobtrusive JavaScript. In essence. you should be able to substantially change the look and feel of a Karma lesson by modifying the CSS or you could translate the activity, without having to understand the JavaScript code.&lt;br /&gt;
&lt;br /&gt;
=== Design Goals ===&lt;br /&gt;
* Unobtrusive JavaScript&lt;br /&gt;
* No globals&lt;br /&gt;
* No extension of native objects&lt;br /&gt;
&lt;br /&gt;
=== Technical Architecture ===&lt;br /&gt;
&lt;br /&gt;
* Run-time - Karma will work with basic functionality on any W3C standards-compliant browser that supports HTML5 tags canvas, audio, and svg. This notably excludes Microsoft&#039;s Internet Explorer. Karma will be particularly tailored to work with Sugar&#039;s Journal and collaboration through Telepathy. Longer-term we hope to extend Karma to take advantage of Sugar&#039;s collaboration features.&lt;br /&gt;
* Primary Programming language - [https://developer.mozilla.org/en/New_in_JavaScript_1.6 Javascript 1.6] &lt;br /&gt;
* [[Karma/i18n|i18n]] -- Pervasive internationalization is a critical part of Karma&lt;br /&gt;
** Supported types of i18n  -- ToDo&lt;br /&gt;
*** Output of Native Digits&lt;br /&gt;
*** Image switching per locale&lt;br /&gt;
*** Regular text, though it is unclear how to support plural forms, grammar shifts, and gender&lt;br /&gt;
*** Audio switching per locale&lt;br /&gt;
** Integration with pootle&lt;br /&gt;
* [[Karma/Utilities|Utilities]] -- we primarily use [http://www.narwhaljs.org narwhal] for command-line scripting and [http://code.google.com/p/jsdoc-toolkit/ jsdoc] for documentation&lt;br /&gt;
* Journal, Telepathy Integration -- method to be determined, perhaps using html5&#039;s offline storage feature, some resources [https://developer.mozilla.org/en/Offline_resources_in_Firefox here] and [http://www.weboshelp.net/webos-tutorials/156-palm-webos-html5-database-storage-tutorial here] &lt;br /&gt;
* Moodle Integration -- method to be determined&lt;br /&gt;
* [[Karma/Bundle_layout|Repo and Bundle layout]]&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
&lt;br /&gt;
* [[Karma:Anatomy_of_Lesson|Anatomy of a Karma Lesson]]&lt;br /&gt;
* The [[Karma/Dictionary|Karma Dictionary]]&lt;br /&gt;
* [[Karma/Specifications|Karma Specifications]] (early draft)&lt;br /&gt;
* Source Code stored in http://git.sugarlabs.org/projects/karma&lt;br /&gt;
* Version Control and repository management see [[Karma#Version_Control]]&lt;br /&gt;
* Unit testing is required for the karma.js library but not for individual lessons http://karma.sugarlabs.org/tests/&lt;br /&gt;
* Project Documentation kept in the Sugar Labs wiki&lt;br /&gt;
* Coding conventions: Based on [http://www.dojotoolkit.org/developer/StyleGuide Dojo Style Guide] &lt;br /&gt;
** Use camel-case for function names and variables&lt;br /&gt;
** Exception to above -- object constructors should start with a capital letter&lt;br /&gt;
** boolean variables should be prefixed with &amp;quot;is&amp;quot;, &amp;quot;has&amp;quot;, &amp;quot;can&amp;quot;, or &amp;quot;should&amp;quot;&lt;br /&gt;
** counters should be prefixed with &amp;quot;num&amp;quot; or &amp;quot;count&amp;quot;&lt;br /&gt;
** Whenever possible, use [http://www.jslint.com/ jslint]&lt;br /&gt;
* File naming conventions: lowercase letters, underscore instead of spaces  (need to write more about it)&lt;br /&gt;
&lt;br /&gt;
== Version Control == &lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
[[Karma:Meeting 21 December 2009]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Project ==&lt;br /&gt;
&lt;br /&gt;
Karma started as a GSoC project with Felipe Lopez Toledo &amp;quot;SubZero&amp;quot; as the student participant and [[USER:BryanWB| Bryan Berry]] as mentor. &lt;br /&gt;
&lt;br /&gt;
=== GSoC Meetings ===&lt;br /&gt;
&lt;br /&gt;
Notes from GSoC meetings - kept for archival purposes&lt;br /&gt;
* [[Karma:Meeting 12 May 2009]]&lt;br /&gt;
* [[Karma:Meeting 02 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 09 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 23 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 30 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Jul 2009]]&lt;br /&gt;
* [[Karma:Meeting 4 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 11 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 18 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 24 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 08 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 14 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Sep 2009]]&lt;br /&gt;
&lt;br /&gt;
== Project Roadmap ==&lt;br /&gt;
&lt;br /&gt;
==== 0.1 &amp;quot;Osito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Was completed September 11, 2009&lt;br /&gt;
&lt;br /&gt;
* 1 Working example in &amp;quot;adding_up_to_10&amp;quot;&lt;br /&gt;
* cleaned up documentation with jsdocs api documentation and cleaned up README.txt&lt;br /&gt;
* integrate chakra and &amp;quot;adding_up_to_10&amp;quot; and knavbar&lt;br /&gt;
* adding_up_to_10 works on the XO&lt;br /&gt;
** Surf&lt;br /&gt;
** Browse&lt;br /&gt;
&lt;br /&gt;
==== 0.2 &amp;quot;Gatito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due mid-December 2009&lt;br /&gt;
&lt;br /&gt;
This release is timed to coincide with Bryan&#039;s visit to Google HQ for the GSoC Mentor&#039;s Summit&lt;br /&gt;
&lt;br /&gt;
* unit testing added to karma.js using QUnit -- DONE&lt;br /&gt;
* API documented w/ jsdoc-toolkit&lt;br /&gt;
* support for SVG and canvas animation -- DONE&lt;br /&gt;
* 3 working examples&lt;br /&gt;
** Adding_Up_to_10 using both SVG and canvas -- DONE&lt;br /&gt;
** Quadrilaterals  -- 50% done&lt;br /&gt;
** &amp;quot;Conozco A Uruguay&amp;quot; done with karma  -- 50% done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 0.4 &amp;quot;niño&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due 31 January 2010&lt;br /&gt;
&lt;br /&gt;
* Full i18n support&lt;br /&gt;
* Integrate all of the existing E-Paath lesson into chakra &lt;br /&gt;
* narwhal build script to build one giant karma bundle w/ all the E-Paath lessons inside it and chakra&lt;br /&gt;
* At least 6 lessons ready that have been translated into 3 languages each&lt;br /&gt;
* Version 0.1 draft of karma specification done&lt;br /&gt;
&lt;br /&gt;
==== 1.0 &amp;quot;Muchacho&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This release may also be called &amp;quot;Karma 1000&amp;quot; and is a big wishlist&lt;br /&gt;
&lt;br /&gt;
* Full moodle integration&lt;br /&gt;
* Offline storage and synchronization with moodle&lt;br /&gt;
* Integration with the Sugar Journal&lt;br /&gt;
* Integration with Telepathy on Sugar&lt;br /&gt;
* fully functional &amp;quot;kpages&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
&lt;br /&gt;
here lies a lot of links to resources specific to karma&lt;br /&gt;
&lt;br /&gt;
UI&lt;br /&gt;
* Iphone Human Interface Guide http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/mobilehig/MobileHIG.pdf&lt;br /&gt;
* Palm Pre interface guide http://developer.palm.com/images/palm/pdf/palm_webos_hi_guidelines.pdf&lt;br /&gt;
* 30 Usability Issues To Be Aware Of http://www.smashingmagazine.com/2007/10/09/30-usability-issues-to-be-aware-of/&lt;br /&gt;
* 10 Usability Nightmares You Should Be Aware Of http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/&lt;br /&gt;
* &amp;quot;The Design of Everyday Things&amp;quot; book by Don Norman&lt;br /&gt;
* &amp;quot;Don&#039;t Make me think&amp;quot; by Steve Krug, guide to usability for web apps&lt;br /&gt;
&lt;br /&gt;
HTML5&lt;br /&gt;
* http://www.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/&lt;br /&gt;
* http://www.w3.org/TR/html5-diff/  Differences between html4 and html5&lt;br /&gt;
* [http://diveintohtml5.org/ Dive Into HTML5]&lt;br /&gt;
&lt;br /&gt;
General Web Design&lt;br /&gt;
* &amp;quot;Web Design in a Nutshell&amp;quot; from O&#039;Reilly&lt;br /&gt;
* Apple &amp;quot;Web Page Development: Best Practices&amp;quot; http://developer.apple.com/internet/webcontent/bestwebdev.html&lt;br /&gt;
&lt;br /&gt;
Canvas&lt;br /&gt;
* demos: http://html5demos.com/&lt;br /&gt;
* basics: http://dev.opera.com/articles/view/html-5-canvas-the-basics/&lt;br /&gt;
* painting web app: http://dev.opera.com/articles/view/html5-canvas-painting/&lt;br /&gt;
* mozilla canvas tutorial: https://developer.mozilla.org/en/Canvas_tutorial&lt;br /&gt;
* using canvas on webkit: http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/Canvas.html&lt;br /&gt;
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html&lt;br /&gt;
&lt;br /&gt;
SVG&lt;br /&gt;
* The [http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html SVG Primer] a very detailed and in-depth resource&lt;br /&gt;
* [http://raphaeljs.com/reference.html Raphaeljs documentation]&lt;br /&gt;
* https://developer.mozilla.org/en/svg&lt;br /&gt;
&lt;br /&gt;
Javascript&lt;br /&gt;
* [http://eloquentjavascript.net Eloquent Javascript] best beginning javascript resource&lt;br /&gt;
* &amp;quot;Javascript: The Good Parts&amp;quot; book by Doug Crockford&lt;br /&gt;
* &amp;quot;jQuery in Action&amp;quot; book&lt;br /&gt;
* &amp;quot;Pro Javascript Techniques&amp;quot; by john resig&lt;br /&gt;
* All the tutorials at www.ejohn.org, esp.&lt;br /&gt;
** http://ejohn.org/blog/how-javascript-timers-work/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Coding Tools and Conventions&lt;br /&gt;
* Firebug  --- http://www.getfirebug.com&lt;br /&gt;
* Web-Inspector --- webkit&#039;s answer to firebug&lt;br /&gt;
* Browsers --- We primarily work with Chromium and Firefox &amp;gt; 3.5&lt;br /&gt;
* For emacs users -- nxhtml mode and magit.el for working w/ git&lt;br /&gt;
* [http://www.jslint.com/ jslint]&lt;br /&gt;
* [http://www.inkscape.org inkscape]&lt;br /&gt;
* [http://narwhaljs.org narwhal]&lt;br /&gt;
&lt;br /&gt;
== Subpages ==&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42163</id>
		<title>Karma</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42163"/>
		<updated>2009-12-22T09:47:43Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Conventions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TOCleft}}&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Project]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Image:Karma.png|right]]&lt;br /&gt;
&lt;br /&gt;
== The Karma Project ==&lt;br /&gt;
&lt;br /&gt;
Karma is a framework for creating educational software using JavaScript, html5, and SVG. The Karma team is primarily focused on developing Sugar activities but you can also Karma to create lessons that run in any web browser that supports html5. The best ways to get involved are to join the [http://groups.google.com/group/karmajs mailing list] and [http://git.sugarlabs.org/projects/karma/repos/mainline get the code]&lt;br /&gt;
&lt;br /&gt;
=== Rationale ===&lt;br /&gt;
&lt;br /&gt;
Anyone with a modern standards-compliant web browser and a text editor should be able to create learning activities that can be used by anyone with a computer. Sugar should not be a walled garden that only allows learning activities expressly designed for it and it alone but rather gives extra power and depth to learning activities. Karma uses a specialized vocabulary that features a number of specialized terms. Please refer to the [[Karma/Dictionary|Karma Dictionary]] early and often.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
&lt;br /&gt;
Karma is a sub-project of Sugar Labs that is under active development as a part of a [[Karma#GSoC_Project| Google Summer of Code project]]. The latest examples can be seen at [http://karma.sugarlabs.org http://karma.sugarlabs.org]. You can also check out the [http://karmaproject.wordpress.com Karma Project blog] for updates.&lt;br /&gt;
&lt;br /&gt;
To try out the karma examples you need to have an html5-capable browser. The Browse activity within Sugar does not currently support html5. To try out karma within Sugar you need to install [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] and its webkit dependencies or run Firefox 3.5 from the command-line (yum install pywebkitgtk WebKit-gtk gnome-python2-gconf).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What Karma Is ===&lt;br /&gt;
&lt;br /&gt;
* Karma is a simple framework to create simple interactive learning activities primarily for Sugar but also to be viewable through any web browser that supports html5&lt;br /&gt;
* Karma is used to create simple activities that run off-line w/out access to the Internet&lt;br /&gt;
* Karma is for web developers who want to contribute to Sugar using their current skills&lt;br /&gt;
* Karma is built on top of open web standards such as html5, javascript, and CSS.&lt;br /&gt;
* Karma is built to run on top of web browsers that support html5, particularly the canvas element.&lt;br /&gt;
* Karma is built around the concept of individual &amp;quot;lessons&amp;quot; and multiple lessons can be aggregated into a sugar activity&lt;br /&gt;
* Karma is the evolution of OLE Nepal&#039;s work on the EPaath suite of lessons in Nepal&lt;br /&gt;
* Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress&lt;br /&gt;
* Karma is pedagogically agnostic. Pedagogical choices are left to the lesson author.&lt;br /&gt;
&lt;br /&gt;
=== What Karma Isn&#039;t ===&lt;br /&gt;
&lt;br /&gt;
* Karma is not compatible with Internet Explorer because Internet Explorer does not support html5 apis such as canvas, svg, localStorage, etc.&lt;br /&gt;
* Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities&lt;br /&gt;
* Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics&lt;br /&gt;
* Karma is not meant as a basis for a WYSIWG programming environment like TurtleArt, EToys, or Logo&lt;br /&gt;
* Karma is not built to support browsers that do not support html5, such as Internet Explorer and Firefox &amp;lt; version 3.5 &lt;br /&gt;
* Karma is not intended to teach programming to children though it could be used as such&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
&lt;br /&gt;
A Karma lesson is composed of a valid html5 document, javascript code, and css stylesheets and optional assets such as images, audio, video and lesson plans. Karma should be very easy for inexperienced developers to understand and work with. Even non-programmers should be able to make visible changes by tweaking the code and liberal use of cut-and-paste. Complexities such as integration with pootle, local storage, and certain types of animation should be abstracted so that novice developers don&#039;t have to understand them in order to effectively use Karma. Karma strictly adheres to the Model-View-Controller Pattern and similarly to unobtrusive JavaScript. In essence. you should be able to substantially change the look and feel of a Karma lesson by modifying the CSS or you could translate the activity, without having to understand the JavaScript code.&lt;br /&gt;
&lt;br /&gt;
=== Design Goals ===&lt;br /&gt;
* Unobtrusive JavaScript&lt;br /&gt;
* No globals&lt;br /&gt;
* No extension of native objects&lt;br /&gt;
&lt;br /&gt;
=== Technical Architecture ===&lt;br /&gt;
&lt;br /&gt;
* Run-time - Karma will work with basic functionality on any W3C standards-compliant browser that supports HTML5 tags canvas, audio, and svg. This notably excludes Microsoft&#039;s Internet Explorer. Karma will be particularly tailored to work with Sugar&#039;s Journal and collaboration through Telepathy. Longer-term we hope to extend Karma to take advantage of Sugar&#039;s collaboration features.&lt;br /&gt;
* Primary Programming language - [https://developer.mozilla.org/en/New_in_JavaScript_1.6 Javascript 1.6] &lt;br /&gt;
* [[Karma/i18n|i18n]] -- Pervasive internationalization is a critical part of Karma&lt;br /&gt;
** Supported types of i18n  -- ToDo&lt;br /&gt;
*** Output of Native Digits&lt;br /&gt;
*** Image switching per locale&lt;br /&gt;
*** Regular text, though it is unclear how to support plural forms, grammar shifts, and gender&lt;br /&gt;
*** Audio switching per locale&lt;br /&gt;
** Integration with pootle&lt;br /&gt;
* [[Karma/Utilities|Utilities]] -- we primarily use [http://www.narwhaljs.org narwhal] for command-line scripting and [http://code.google.com/p/jsdoc-toolkit/ jsdoc] for documentation&lt;br /&gt;
* Journal, Telepathy Integration -- method to be determined, perhaps using html5&#039;s offline storage feature, some resources [https://developer.mozilla.org/en/Offline_resources_in_Firefox here] and [http://www.weboshelp.net/webos-tutorials/156-palm-webos-html5-database-storage-tutorial here] &lt;br /&gt;
* Moodle Integration -- method to be determined&lt;br /&gt;
* [[Karma/Bundle_layout|Repo and Bundle layout]]&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
&lt;br /&gt;
* [[Karma:Anatomy_of_Lesson|Anatomy of a Karma Lesson]]&lt;br /&gt;
* The [[Karma/Dictionary|Karma Dictionary]]&lt;br /&gt;
* [[Karma/Specifications|Karma Specifications]] (early draft)&lt;br /&gt;
* Source Code stored in http://git.sugarlabs.org/projects/karma&lt;br /&gt;
* Version Control and repository management see &lt;br /&gt;
* Unit testing is required for the karma.js library but not for individual lessons http://karma.sugarlabs.org/tests/&lt;br /&gt;
* Project Documentation kept in the Sugar Labs wiki&lt;br /&gt;
* Coding conventions: Based on [http://www.dojotoolkit.org/developer/StyleGuide Dojo Style Guide] &lt;br /&gt;
** Use camel-case for function names and variables&lt;br /&gt;
** Exception to above -- object constructors should start with a capital letter&lt;br /&gt;
** boolean variables should be prefixed with &amp;quot;is&amp;quot;, &amp;quot;has&amp;quot;, &amp;quot;can&amp;quot;, or &amp;quot;should&amp;quot;&lt;br /&gt;
** counters should be prefixed with &amp;quot;num&amp;quot; or &amp;quot;count&amp;quot;&lt;br /&gt;
** Whenever possible, use [http://www.jslint.com/ jslint]&lt;br /&gt;
* File naming conventions: lowercase letters, underscore instead of spaces  (need to write more about it)&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
[[Karma:Meeting 21 December 2009]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Project ==&lt;br /&gt;
&lt;br /&gt;
Karma started as a GSoC project with Felipe Lopez Toledo &amp;quot;SubZero&amp;quot; as the student participant and [[USER:BryanWB| Bryan Berry]] as mentor. &lt;br /&gt;
&lt;br /&gt;
=== GSoC Meetings ===&lt;br /&gt;
&lt;br /&gt;
Notes from GSoC meetings - kept for archival purposes&lt;br /&gt;
* [[Karma:Meeting 12 May 2009]]&lt;br /&gt;
* [[Karma:Meeting 02 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 09 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 23 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 30 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Jul 2009]]&lt;br /&gt;
* [[Karma:Meeting 4 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 11 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 18 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 24 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 08 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 14 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Sep 2009]]&lt;br /&gt;
&lt;br /&gt;
== Project Roadmap ==&lt;br /&gt;
&lt;br /&gt;
==== 0.1 &amp;quot;Osito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Was completed September 11, 2009&lt;br /&gt;
&lt;br /&gt;
* 1 Working example in &amp;quot;adding_up_to_10&amp;quot;&lt;br /&gt;
* cleaned up documentation with jsdocs api documentation and cleaned up README.txt&lt;br /&gt;
* integrate chakra and &amp;quot;adding_up_to_10&amp;quot; and knavbar&lt;br /&gt;
* adding_up_to_10 works on the XO&lt;br /&gt;
** Surf&lt;br /&gt;
** Browse&lt;br /&gt;
&lt;br /&gt;
==== 0.2 &amp;quot;Gatito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due mid-December 2009&lt;br /&gt;
&lt;br /&gt;
This release is timed to coincide with Bryan&#039;s visit to Google HQ for the GSoC Mentor&#039;s Summit&lt;br /&gt;
&lt;br /&gt;
* unit testing added to karma.js using QUnit -- DONE&lt;br /&gt;
* API documented w/ jsdoc-toolkit&lt;br /&gt;
* support for SVG and canvas animation -- DONE&lt;br /&gt;
* 3 working examples&lt;br /&gt;
** Adding_Up_to_10 using both SVG and canvas -- DONE&lt;br /&gt;
** Quadrilaterals  -- 50% done&lt;br /&gt;
** &amp;quot;Conozco A Uruguay&amp;quot; done with karma  -- 50% done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 0.4 &amp;quot;niño&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due 31 January 2010&lt;br /&gt;
&lt;br /&gt;
* Full i18n support&lt;br /&gt;
* Integrate all of the existing E-Paath lesson into chakra &lt;br /&gt;
* narwhal build script to build one giant karma bundle w/ all the E-Paath lessons inside it and chakra&lt;br /&gt;
* At least 6 lessons ready that have been translated into 3 languages each&lt;br /&gt;
* Version 0.1 draft of karma specification done&lt;br /&gt;
&lt;br /&gt;
==== 1.0 &amp;quot;Muchacho&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This release may also be called &amp;quot;Karma 1000&amp;quot; and is a big wishlist&lt;br /&gt;
&lt;br /&gt;
* Full moodle integration&lt;br /&gt;
* Offline storage and synchronization with moodle&lt;br /&gt;
* Integration with the Sugar Journal&lt;br /&gt;
* Integration with Telepathy on Sugar&lt;br /&gt;
* fully functional &amp;quot;kpages&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
&lt;br /&gt;
here lies a lot of links to resources specific to karma&lt;br /&gt;
&lt;br /&gt;
UI&lt;br /&gt;
* Iphone Human Interface Guide http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/mobilehig/MobileHIG.pdf&lt;br /&gt;
* Palm Pre interface guide http://developer.palm.com/images/palm/pdf/palm_webos_hi_guidelines.pdf&lt;br /&gt;
* 30 Usability Issues To Be Aware Of http://www.smashingmagazine.com/2007/10/09/30-usability-issues-to-be-aware-of/&lt;br /&gt;
* 10 Usability Nightmares You Should Be Aware Of http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/&lt;br /&gt;
* &amp;quot;The Design of Everyday Things&amp;quot; book by Don Norman&lt;br /&gt;
* &amp;quot;Don&#039;t Make me think&amp;quot; by Steve Krug, guide to usability for web apps&lt;br /&gt;
&lt;br /&gt;
HTML5&lt;br /&gt;
* http://www.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/&lt;br /&gt;
* http://www.w3.org/TR/html5-diff/  Differences between html4 and html5&lt;br /&gt;
* [http://diveintohtml5.org/ Dive Into HTML5]&lt;br /&gt;
&lt;br /&gt;
General Web Design&lt;br /&gt;
* &amp;quot;Web Design in a Nutshell&amp;quot; from O&#039;Reilly&lt;br /&gt;
* Apple &amp;quot;Web Page Development: Best Practices&amp;quot; http://developer.apple.com/internet/webcontent/bestwebdev.html&lt;br /&gt;
&lt;br /&gt;
Canvas&lt;br /&gt;
* demos: http://html5demos.com/&lt;br /&gt;
* basics: http://dev.opera.com/articles/view/html-5-canvas-the-basics/&lt;br /&gt;
* painting web app: http://dev.opera.com/articles/view/html5-canvas-painting/&lt;br /&gt;
* mozilla canvas tutorial: https://developer.mozilla.org/en/Canvas_tutorial&lt;br /&gt;
* using canvas on webkit: http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/Canvas.html&lt;br /&gt;
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html&lt;br /&gt;
&lt;br /&gt;
SVG&lt;br /&gt;
* The [http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html SVG Primer] a very detailed and in-depth resource&lt;br /&gt;
* [http://raphaeljs.com/reference.html Raphaeljs documentation]&lt;br /&gt;
* https://developer.mozilla.org/en/svg&lt;br /&gt;
&lt;br /&gt;
Javascript&lt;br /&gt;
* [http://eloquentjavascript.net Eloquent Javascript] best beginning javascript resource&lt;br /&gt;
* &amp;quot;Javascript: The Good Parts&amp;quot; book by Doug Crockford&lt;br /&gt;
* &amp;quot;jQuery in Action&amp;quot; book&lt;br /&gt;
* &amp;quot;Pro Javascript Techniques&amp;quot; by john resig&lt;br /&gt;
* All the tutorials at www.ejohn.org, esp.&lt;br /&gt;
** http://ejohn.org/blog/how-javascript-timers-work/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Coding Tools and Conventions&lt;br /&gt;
* Firebug  --- http://www.getfirebug.com&lt;br /&gt;
* Web-Inspector --- webkit&#039;s answer to firebug&lt;br /&gt;
* Browsers --- We primarily work with Chromium and Firefox &amp;gt; 3.5&lt;br /&gt;
* For emacs users -- nxhtml mode and magit.el for working w/ git&lt;br /&gt;
* [http://www.jslint.com/ jslint]&lt;br /&gt;
* [http://www.inkscape.org inkscape]&lt;br /&gt;
* [http://narwhaljs.org narwhal]&lt;br /&gt;
&lt;br /&gt;
== Subpages ==&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma:Meeting_21_December_2009&amp;diff=42145</id>
		<title>Karma:Meeting 21 December 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma:Meeting_21_December_2009&amp;diff=42145"/>
		<updated>2009-12-21T11:22:52Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Agenda&lt;br /&gt;
# Coding Style &lt;br /&gt;
   when in doubt, use camelCase&lt;br /&gt;
   constants in all CAPS, w/ _ separating multiple words --&amp;gt; COUNT_ERRORS = 10;&lt;br /&gt;
   boolean variables should be prefixed w/ &amp;quot;is&amp;quot; &amp;quot;can&amp;quot; or &amp;quot;should&amp;quot;&lt;br /&gt;
   prefix counters with &amp;quot;count&amp;quot; or &amp;quot;num&amp;quot;&lt;br /&gt;
# common HTML mistakes&lt;br /&gt;
# Let&#039;s try to use a common js coding pattern&lt;br /&gt;
  Put code in following order&lt;br /&gt;
  1) variable declarations&lt;br /&gt;
  2) method declarations&lt;br /&gt;
  3) method calls&lt;br /&gt;
&lt;br /&gt;
  Unobtrusive JavaScript -- let&#039;s try to stick to it&lt;br /&gt;
# common js problems, no blocks around ifs, &#039;  &#039; eval, ==, var methodName = function(){}&lt;br /&gt;
# managing code for lessons in repos, versioning&lt;br /&gt;
   Bryan will create karma-lesson repo&lt;br /&gt;
   lessons will have two states &amp;quot;stable&amp;quot; or &amp;quot;unstable&amp;quot;, the &amp;quot;stable&amp;quot; commit is tagged &amp;quot;stable&amp;quot;&lt;br /&gt;
    everything else is unstable&lt;br /&gt;
   will use repo-naming convention from E-Paath but prefixed w/ &amp;quot;karma_&amp;quot; &lt;br /&gt;
# Using draggable()?&lt;br /&gt;
  Vaibhaw will take look at jquery UI&#039;s draggable and see if useful&lt;br /&gt;
# Create common widgets? Scorebox? timer? -- yes we need all of them&lt;br /&gt;
   Bryan will look at dialog for help, playAgain&lt;br /&gt;
   Bryan will add shuffle() to Karma&lt;br /&gt;
# timeline? milestones?&lt;br /&gt;
   Vaibhaw will complete all 60 by March&lt;br /&gt;
# We need resolution help! at least I do&lt;br /&gt;
   Bryan will check w/ Om to see if lesson dimensions will be part of UI design&lt;br /&gt;
# Workflow - have Om review it?&lt;br /&gt;
   opyadav will review the finished activities&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma:Meeting_21_December_2009&amp;diff=42144</id>
		<title>Karma:Meeting 21 December 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma:Meeting_21_December_2009&amp;diff=42144"/>
		<updated>2009-12-21T11:15:46Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Agenda&lt;br /&gt;
# Coding Style &lt;br /&gt;
# common HTML mistakes&lt;br /&gt;
# Let&#039;s try to use a common js coding pattern&lt;br /&gt;
  Put code in following order&lt;br /&gt;
  1) variable declarations&lt;br /&gt;
  2) method declarations&lt;br /&gt;
  3) method calls&lt;br /&gt;
&lt;br /&gt;
  Unobtrusive JavaScript&lt;br /&gt;
# common js problems, no blocks around ifs, &#039;  &#039; eval, ==, var methodName = function(){}&lt;br /&gt;
# managing code for lessons in repos, versioning&lt;br /&gt;
# Using draggable()?&lt;br /&gt;
  Vaibhaw will take look at jquery UI&#039;s draggable and see if useful&lt;br /&gt;
# Create common widgets? Scorebox? timer? -- yes we need all of them&lt;br /&gt;
   Bryan will look at dialog for help, playAgain&lt;br /&gt;
   Bryan will add shuffle() to Karma&lt;br /&gt;
# layout of karma lesson&lt;br /&gt;
# timeline? milestones?&lt;br /&gt;
   Vaibhaw will complete all 60 by March&lt;br /&gt;
# We need resolution help! at least I do&lt;br /&gt;
   Bryan will check w/ Om to see if lesson dimensions will be part of UI design&lt;br /&gt;
# Workflow - have Om review it?&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma:Meeting_21_December_2009&amp;diff=42143</id>
		<title>Karma:Meeting 21 December 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma:Meeting_21_December_2009&amp;diff=42143"/>
		<updated>2009-12-21T10:39:16Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Agenda&lt;br /&gt;
# Coding Style &lt;br /&gt;
# common HTML mistakes&lt;br /&gt;
# Let&#039;s try to use a common js coding pattern&lt;br /&gt;
  Put code in following order&lt;br /&gt;
  1) variable declarations&lt;br /&gt;
  2) method declarations&lt;br /&gt;
  3) method calls&lt;br /&gt;
&lt;br /&gt;
  Unobtrusive JavaScript&lt;br /&gt;
# common js problems, no blocks around ifs, &#039;  &#039; eval, ==, var methodName = function(){}&lt;br /&gt;
# managing code for lessons in repos, versioning&lt;br /&gt;
# Using draggable()?&lt;br /&gt;
# Create common widgets? Scorebox? timer? -- yes we need all of them&lt;br /&gt;
# layout of karma lesson&lt;br /&gt;
# timeline? milestones?&lt;br /&gt;
# We need resolution help! at least I do&lt;br /&gt;
# Workflow - have Om review it?&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma:Meeting_21_December_2009&amp;diff=42142</id>
		<title>Karma:Meeting 21 December 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma:Meeting_21_December_2009&amp;diff=42142"/>
		<updated>2009-12-21T10:30:00Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Agenda&lt;br /&gt;
# Coding Style &lt;br /&gt;
# common HTML mistakes&lt;br /&gt;
# Let&#039;s try to use a common js coding pattern&lt;br /&gt;
  Put code in following order&lt;br /&gt;
  1) variable declarations&lt;br /&gt;
  2) method declarations&lt;br /&gt;
  3) method calls&lt;br /&gt;
&lt;br /&gt;
  Unobtrusive JavaScript&lt;br /&gt;
# common js problems, no blocks around ifs, &#039;  &#039; eval, ==&lt;br /&gt;
# managing code for lessons in repos, versioning&lt;br /&gt;
# Using draggable()?&lt;br /&gt;
# Create common widgets? Scorebox? timer? -- yes we need all of them&lt;br /&gt;
# layout of karma lesson&lt;br /&gt;
# timeline? milestones?&lt;br /&gt;
# We need resolution help! at least I do&lt;br /&gt;
# Workflow - have Om review it?&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma:Meeting_21_December_2009&amp;diff=42141</id>
		<title>Karma:Meeting 21 December 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma:Meeting_21_December_2009&amp;diff=42141"/>
		<updated>2009-12-21T10:15:13Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Agenda&lt;br /&gt;
# Coding Style &lt;br /&gt;
# common HTML mistakes&lt;br /&gt;
# Let&#039;s try to use a common js coding pattern&lt;br /&gt;
# common js problems, no blocks around ifs, &#039;  &#039; eval, ==&lt;br /&gt;
# managing code for lessons in repos, versioning&lt;br /&gt;
# Using draggable()?&lt;br /&gt;
# Create common widgets? Scorebox? timer? -- yes we need all of them&lt;br /&gt;
# layout of karma lesson&lt;br /&gt;
# timeline? milestones?&lt;br /&gt;
# We need resolution help! at least I do&lt;br /&gt;
# Workflow - have Om review it?&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma:Meeting_21_December_2009&amp;diff=42140</id>
		<title>Karma:Meeting 21 December 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma:Meeting_21_December_2009&amp;diff=42140"/>
		<updated>2009-12-21T10:11:06Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Agenda&lt;br /&gt;
# Coding Style &lt;br /&gt;
# common HTML mistakes&lt;br /&gt;
# Let&#039;s try to use a common js coding pattern&lt;br /&gt;
# common js problems, no blocks around ifs, &#039;  &#039; eval, ==&lt;br /&gt;
# managing code for lessons in repos, versioning&lt;br /&gt;
# Using draggable()?&lt;br /&gt;
# Create common widgets? Scorebox? timer?&lt;br /&gt;
# timeline? milestones?&lt;br /&gt;
# We need resolution help! at least I do&lt;br /&gt;
# Workflow - have Om review it?&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma:Meeting_21_December_2009&amp;diff=42139</id>
		<title>Karma:Meeting 21 December 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma:Meeting_21_December_2009&amp;diff=42139"/>
		<updated>2009-12-21T09:53:37Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: Created page with &amp;#039;Agenda # Coding Style  # common HTML mistakes # Let&amp;#039;s try to use a common js coding pattern # managing code for lessons in repos, versioning # Using draggable()? # Create common …&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Agenda&lt;br /&gt;
# Coding Style &lt;br /&gt;
# common HTML mistakes&lt;br /&gt;
# Let&#039;s try to use a common js coding pattern&lt;br /&gt;
# managing code for lessons in repos, versioning&lt;br /&gt;
# Using draggable()?&lt;br /&gt;
# Create common widgets? Scorebox? timer?&lt;br /&gt;
# timeline? milestones?&lt;br /&gt;
# We need resolution help! at least I do&lt;br /&gt;
# Workflow - have Om review it?&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42138</id>
		<title>Karma</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Karma&amp;diff=42138"/>
		<updated>2009-12-21T09:52:31Z</updated>

		<summary type="html">&lt;p&gt;BryanWB: /* Meetings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TOCleft}}&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Project]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Image:Karma.png|right]]&lt;br /&gt;
&lt;br /&gt;
== The Karma Project ==&lt;br /&gt;
&lt;br /&gt;
Karma is a framework for creating educational software using JavaScript, html5, and SVG. The Karma team is primarily focused on developing Sugar activities but you can also Karma to create lessons that run in any web browser that supports html5. The best ways to get involved are to join the [http://groups.google.com/group/karmajs mailing list] and [http://git.sugarlabs.org/projects/karma/repos/mainline get the code]&lt;br /&gt;
&lt;br /&gt;
=== Rationale ===&lt;br /&gt;
&lt;br /&gt;
Anyone with a modern standards-compliant web browser and a text editor should be able to create learning activities that can be used by anyone with a computer. Sugar should not be a walled garden that only allows learning activities expressly designed for it and it alone but rather gives extra power and depth to learning activities. Karma uses a specialized vocabulary that features a number of specialized terms. Please refer to the [[Karma/Dictionary|Karma Dictionary]] early and often.&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
&lt;br /&gt;
Karma is a sub-project of Sugar Labs that is under active development as a part of a [[Karma#GSoC_Project| Google Summer of Code project]]. The latest examples can be seen at [http://karma.sugarlabs.org http://karma.sugarlabs.org]. You can also check out the [http://karmaproject.wordpress.com Karma Project blog] for updates.&lt;br /&gt;
&lt;br /&gt;
To try out the karma examples you need to have an html5-capable browser. The Browse activity within Sugar does not currently support html5. To try out karma within Sugar you need to install [http://dev.laptop.org/~bobbyp/surf/Surf-106.xo Surf] and its webkit dependencies or run Firefox 3.5 from the command-line (yum install pywebkitgtk WebKit-gtk gnome-python2-gconf).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What Karma Is ===&lt;br /&gt;
&lt;br /&gt;
* Karma is a simple framework to create simple interactive learning activities primarily for Sugar but also to be viewable through any web browser that supports html5&lt;br /&gt;
* Karma is used to create simple activities that run off-line w/out access to the Internet&lt;br /&gt;
* Karma is for web developers who want to contribute to Sugar using their current skills&lt;br /&gt;
* Karma is built on top of open web standards such as html5, javascript, and CSS.&lt;br /&gt;
* Karma is built to run on top of web browsers that support html5, particularly the canvas element.&lt;br /&gt;
* Karma is built around the concept of individual &amp;quot;lessons&amp;quot; and multiple lessons can be aggregated into a sugar activity&lt;br /&gt;
* Karma is the evolution of OLE Nepal&#039;s work on the EPaath suite of lessons in Nepal&lt;br /&gt;
* Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress&lt;br /&gt;
* Karma is pedagogically agnostic. Pedagogical choices are left to the lesson author.&lt;br /&gt;
&lt;br /&gt;
=== What Karma Isn&#039;t ===&lt;br /&gt;
&lt;br /&gt;
* Karma is not compatible with Internet Explorer because Internet Explorer does not support html5 apis such as canvas, svg, localStorage, etc.&lt;br /&gt;
* Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities&lt;br /&gt;
* Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics&lt;br /&gt;
* Karma is not meant as a basis for a WYSIWG programming environment like TurtleArt, EToys, or Logo&lt;br /&gt;
* Karma is not built to support browsers that do not support html5, such as Internet Explorer and Firefox &amp;lt; version 3.5 &lt;br /&gt;
* Karma is not intended to teach programming to children though it could be used as such&lt;br /&gt;
&lt;br /&gt;
=== Design Philosophy ===&lt;br /&gt;
&lt;br /&gt;
A Karma lesson is composed of a valid html5 document, javascript code, and css stylesheets and optional assets such as images, audio, video and lesson plans. Karma should be very easy for inexperienced developers to understand and work with. Even non-programmers should be able to make visible changes by tweaking the code and liberal use of cut-and-paste. Complexities such as integration with pootle, local storage, and certain types of animation should be abstracted so that novice developers don&#039;t have to understand them in order to effectively use Karma. Karma strictly adheres to the Model-View-Controller Pattern and similarly to unobtrusive JavaScript. In essence. you should be able to substantially change the look and feel of a Karma lesson by modifying the CSS or you could translate the activity, without having to understand the JavaScript code.&lt;br /&gt;
&lt;br /&gt;
=== Design Goals ===&lt;br /&gt;
* Unobtrusive JavaScript&lt;br /&gt;
* No globals&lt;br /&gt;
* No extension of native objects&lt;br /&gt;
&lt;br /&gt;
=== Technical Architecture ===&lt;br /&gt;
&lt;br /&gt;
* Run-time - Karma will work with basic functionality on any W3C standards-compliant browser that supports HTML5 tags canvas, audio, and svg. This notably excludes Microsoft&#039;s Internet Explorer. Karma will be particularly tailored to work with Sugar&#039;s Journal and collaboration through Telepathy. Longer-term we hope to extend Karma to take advantage of Sugar&#039;s collaboration features.&lt;br /&gt;
* Primary Programming language - [https://developer.mozilla.org/en/New_in_JavaScript_1.6 Javascript 1.6] &lt;br /&gt;
* [[Karma/i18n|i18n]] -- Pervasive internationalization is a critical part of Karma&lt;br /&gt;
** Supported types of i18n  -- ToDo&lt;br /&gt;
*** Output of Native Digits&lt;br /&gt;
*** Image switching per locale&lt;br /&gt;
*** Regular text, though it is unclear how to support plural forms, grammar shifts, and gender&lt;br /&gt;
*** Audio switching per locale&lt;br /&gt;
** Integration with pootle&lt;br /&gt;
* [[Karma/Utilities|Utilities]] -- we primarily use [http://www.narwhaljs.org narwhal] for command-line scripting and [http://code.google.com/p/jsdoc-toolkit/ jsdoc] for documentation&lt;br /&gt;
* Journal, Telepathy Integration -- method to be determined, perhaps using html5&#039;s offline storage feature, some resources [https://developer.mozilla.org/en/Offline_resources_in_Firefox here] and [http://www.weboshelp.net/webos-tutorials/156-palm-webos-html5-database-storage-tutorial here] &lt;br /&gt;
* Moodle Integration -- method to be determined&lt;br /&gt;
* [[Karma/Bundle_layout|Repo and Bundle layout]]&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
&lt;br /&gt;
* [[Karma:Anatomy_of_Lesson|Anatomy of a Karma Lesson]]&lt;br /&gt;
* The [[Karma/Dictionary|Karma Dictionary]]&lt;br /&gt;
* [[Karma/Specifications|Karma Specifications]] (early draft)&lt;br /&gt;
* Source Code stored in http://git.sugarlabs.org/projects/karma&lt;br /&gt;
* Working demos at http://karma.sugarlabs.org&lt;br /&gt;
* Unit tests http://karma.sugarlabs.org/tests/&lt;br /&gt;
* Project Documentation kept in the Sugar Labs wiki&lt;br /&gt;
* Coding conventions: Based on [http://www.dojotoolkit.org/developer/StyleGuide Dojo Style Guide] &lt;br /&gt;
** Use camel-case for function names and variables&lt;br /&gt;
** Exception to above -- object constructors should start with a capital letter&lt;br /&gt;
** Set column-width to 79 characters (from Python standard practice)&lt;br /&gt;
** Whenever possible, use jslint and then teach the rest of us how&lt;br /&gt;
** Anything Doug Crockford advises in &amp;quot;JavaScript: The Good Parts&amp;quot;&lt;br /&gt;
* File naming conventions: lowercase letters, underscore instead of spaces  (need to write more about it)&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
[[Karma:Meeting 21 December 2009]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Project ==&lt;br /&gt;
&lt;br /&gt;
Karma started as a GSoC project with Felipe Lopez Toledo &amp;quot;SubZero&amp;quot; as the student participant and [[USER:BryanWB| Bryan Berry]] as mentor. &lt;br /&gt;
&lt;br /&gt;
=== GSoC Meetings ===&lt;br /&gt;
&lt;br /&gt;
Notes from GSoC meetings - kept for archival purposes&lt;br /&gt;
* [[Karma:Meeting 12 May 2009]]&lt;br /&gt;
* [[Karma:Meeting 02 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 09 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 23 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 30 Jun 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Jul 2009]]&lt;br /&gt;
* [[Karma:Meeting 4 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 11 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 18 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 24 Aug 2009]]&lt;br /&gt;
* [[Karma:Meeting 08 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 14 Sep 2009]]&lt;br /&gt;
* [[Karma:Meeting 21 Sep 2009]]&lt;br /&gt;
&lt;br /&gt;
== Project Roadmap ==&lt;br /&gt;
&lt;br /&gt;
==== 0.1 &amp;quot;Osito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Was completed September 11, 2009&lt;br /&gt;
&lt;br /&gt;
* 1 Working example in &amp;quot;adding_up_to_10&amp;quot;&lt;br /&gt;
* cleaned up documentation with jsdocs api documentation and cleaned up README.txt&lt;br /&gt;
* integrate chakra and &amp;quot;adding_up_to_10&amp;quot; and knavbar&lt;br /&gt;
* adding_up_to_10 works on the XO&lt;br /&gt;
** Surf&lt;br /&gt;
** Browse&lt;br /&gt;
&lt;br /&gt;
==== 0.2 &amp;quot;Gatito&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due mid-December 2009&lt;br /&gt;
&lt;br /&gt;
This release is timed to coincide with Bryan&#039;s visit to Google HQ for the GSoC Mentor&#039;s Summit&lt;br /&gt;
&lt;br /&gt;
* unit testing added to karma.js using QUnit -- DONE&lt;br /&gt;
* API documented w/ jsdoc-toolkit&lt;br /&gt;
* support for SVG and canvas animation -- DONE&lt;br /&gt;
* 3 working examples&lt;br /&gt;
** Adding_Up_to_10 using both SVG and canvas -- DONE&lt;br /&gt;
** Quadrilaterals  -- 50% done&lt;br /&gt;
** &amp;quot;Conozco A Uruguay&amp;quot; done with karma  -- 50% done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 0.4 &amp;quot;niño&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Due 31 January 2010&lt;br /&gt;
&lt;br /&gt;
* Full i18n support&lt;br /&gt;
* Integrate all of the existing E-Paath lesson into chakra &lt;br /&gt;
* narwhal build script to build one giant karma bundle w/ all the E-Paath lessons inside it and chakra&lt;br /&gt;
* At least 6 lessons ready that have been translated into 3 languages each&lt;br /&gt;
* Version 0.1 draft of karma specification done&lt;br /&gt;
&lt;br /&gt;
==== 1.0 &amp;quot;Muchacho&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
This release may also be called &amp;quot;Karma 1000&amp;quot; and is a big wishlist&lt;br /&gt;
&lt;br /&gt;
* Full moodle integration&lt;br /&gt;
* Offline storage and synchronization with moodle&lt;br /&gt;
* Integration with the Sugar Journal&lt;br /&gt;
* Integration with Telepathy on Sugar&lt;br /&gt;
* fully functional &amp;quot;kpages&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Library ===&lt;br /&gt;
&lt;br /&gt;
here lies a lot of links to resources specific to karma&lt;br /&gt;
&lt;br /&gt;
UI&lt;br /&gt;
* Iphone Human Interface Guide http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/mobilehig/MobileHIG.pdf&lt;br /&gt;
* Palm Pre interface guide http://developer.palm.com/images/palm/pdf/palm_webos_hi_guidelines.pdf&lt;br /&gt;
* 30 Usability Issues To Be Aware Of http://www.smashingmagazine.com/2007/10/09/30-usability-issues-to-be-aware-of/&lt;br /&gt;
* 10 Usability Nightmares You Should Be Aware Of http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/&lt;br /&gt;
* &amp;quot;The Design of Everyday Things&amp;quot; book by Don Norman&lt;br /&gt;
* &amp;quot;Don&#039;t Make me think&amp;quot; by Steve Krug, guide to usability for web apps&lt;br /&gt;
&lt;br /&gt;
HTML5&lt;br /&gt;
* http://www.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/&lt;br /&gt;
* http://www.w3.org/TR/html5-diff/  Differences between html4 and html5&lt;br /&gt;
* [http://diveintohtml5.org/ Dive Into HTML5]&lt;br /&gt;
&lt;br /&gt;
General Web Design&lt;br /&gt;
* &amp;quot;Web Design in a Nutshell&amp;quot; from O&#039;Reilly&lt;br /&gt;
* Apple &amp;quot;Web Page Development: Best Practices&amp;quot; http://developer.apple.com/internet/webcontent/bestwebdev.html&lt;br /&gt;
&lt;br /&gt;
Canvas&lt;br /&gt;
* demos: http://html5demos.com/&lt;br /&gt;
* basics: http://dev.opera.com/articles/view/html-5-canvas-the-basics/&lt;br /&gt;
* painting web app: http://dev.opera.com/articles/view/html5-canvas-painting/&lt;br /&gt;
* mozilla canvas tutorial: https://developer.mozilla.org/en/Canvas_tutorial&lt;br /&gt;
* using canvas on webkit: http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/Canvas.html&lt;br /&gt;
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html&lt;br /&gt;
&lt;br /&gt;
SVG&lt;br /&gt;
* The [http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html SVG Primer] a very detailed and in-depth resource&lt;br /&gt;
* [http://raphaeljs.com/reference.html Raphaeljs documentation]&lt;br /&gt;
* https://developer.mozilla.org/en/svg&lt;br /&gt;
&lt;br /&gt;
Javascript&lt;br /&gt;
* [http://eloquentjavascript.net Eloquent Javascript] best beginning javascript resource&lt;br /&gt;
* &amp;quot;Javascript: The Good Parts&amp;quot; book by Doug Crockford&lt;br /&gt;
* &amp;quot;jQuery in Action&amp;quot; book&lt;br /&gt;
* &amp;quot;Pro Javascript Techniques&amp;quot; by john resig&lt;br /&gt;
* All the tutorials at www.ejohn.org, esp.&lt;br /&gt;
** http://ejohn.org/blog/how-javascript-timers-work/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Coding Tools and Conventions&lt;br /&gt;
* Firebug  --- http://www.getfirebug.com&lt;br /&gt;
* Web-Inspector --- webkit&#039;s answer to firebug&lt;br /&gt;
* Browsers --- We primarily work with Chromium and Firefox &amp;gt; 3.5&lt;br /&gt;
* For emacs users -- nxhtml mode and magit.el for working w/ git&lt;br /&gt;
* [http://www.jslint.com/ jslint]&lt;br /&gt;
* [http://www.inkscape.org inkscape]&lt;br /&gt;
* [http://narwhaljs.org narwhal]&lt;br /&gt;
&lt;br /&gt;
== Subpages ==&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;/div&gt;</summary>
		<author><name>BryanWB</name></author>
	</entry>
</feed>