Difference between revisions of "Karma"

From Sugar Labs
Jump to navigation Jump to search
 
(95 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 +
<noinclude>{{GoogleTrans-en}}{{TOCleft}}
 +
[[Category:GSoC]]
 +
[[Category:Project]]</noinclude>
 
[[Image:Karma.png|right]]
 
[[Image:Karma.png|right]]
  
 
== The Karma Project ==
 
== The Karma Project ==
 +
 +
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]
  
 
=== Rationale ===
 
=== Rationale ===
  
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.
+
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.
  
 
=== Status ===
 
=== Status ===
  
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.
+
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.
 +
 
 +
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).
  
 +
The current focus of development is to convert Nepal'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&output=html here]. This is a good place for new contributors to get started
  
 
=== What Karma Is ===
 
=== What Karma Is ===
Line 22: Line 30:
 
* Karma is the evolution of OLE Nepal's work on the EPaath suite of lessons in Nepal
 
* Karma is the evolution of OLE Nepal's work on the EPaath suite of lessons in Nepal
 
* Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress
 
* Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress
* Karma is pedagogically agnostic. Pedagogy choices are left to the lesson author.
+
* Karma is pedagogically agnostic. Pedagogical choices are left to the lesson author.
  
 
=== What Karma Isn't ===
 
=== What Karma Isn't ===
  
 +
* Karma is not compatible with Internet Explorer because Internet Explorer does not support html5 apis such as canvas, svg, localStorage, etc.
 
* Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities
 
* Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities
 
* Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics
 
* Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics
Line 35: Line 44:
  
 
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'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.
 
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'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.
 +
 +
=== Design Goals ===
 +
* Unobtrusive JavaScript
 +
* No globals
 +
* No extension of native objects
  
 
=== Technical Architecture ===
 
=== Technical Architecture ===
  
* Run-time - Karma will work with basic functionality on any W3C standards-compliant browser that supports HTML5 tags canvas and audio. This notably excludes Microsoft's Internet Explorer. Karma will be particularly tailored to work within Sugar's [[Browse]] activity. Longer-term we hope to extend Karma to take advantage of Sugar's collaboration features.
+
* 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's Internet Explorer. Karma will be particularly tailored to work with Sugar's Journal and collaboration through Telepathy. Longer-term we hope to extend Karma to take advantage of Sugar's collaboration features.
* Primary Programming language - Javascript ([https://developer.mozilla.org/En/JavaScript 1.8.1]) Karma depends heavily the javascript library jQuery, version 1.3.
+
* Primary Programming language - [https://developer.mozilla.org/en/New_in_JavaScript_1.6 Javascript 1.6]  
 
* [[Karma/i18n|i18n]] -- Pervasive internationalization is a critical part of Karma
 
* [[Karma/i18n|i18n]] -- Pervasive internationalization is a critical part of Karma
** Supported types of i18n
+
** Supported types of i18n -- ToDo
 
*** Output of Native Digits
 
*** Output of Native Digits
 
*** Image switching per locale
 
*** Image switching per locale
Line 47: Line 61:
 
*** Audio switching per locale
 
*** Audio switching per locale
 
** Integration with pootle
 
** Integration with pootle
* Journal, Telepathy Integration -- method to be determined
+
* [[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
 +
* Journal, Telepathy Integration -- method to be determined, perhaps using html5'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]
 
* Moodle Integration -- method to be determined
 
* Moodle Integration -- method to be determined
* High-Level layout of a lesson
+
* [[Karma/Bundle_layout|Repo and Bundle layout]]
 
+
* UI Widgets
  lesson_name/
+
** [[Scoreboard]]
              index.html              # valid html5 -- markup only includes visual elements and links in other resources, no inline code or styling
+
** Dialog -- use standard jQuery UI one?
              css/                    # css files  -- all control of presentation done in CSS
 
                  karma.css            # default stylesheet for Karma
 
                  lesson_name.css      # custom stylesheet for lesson
 
              js/                      # javascript files
 
                  karma.js            # common javascript functions for a Karma lesson
 
                  jquery.js, jquery.growl.js    # utility functions from jQuery
 
                  lesson_name.js      # javascript controlling logic for the lesson         
 
              po/                      # translation files
 
                  ne_NP.po            # example translation file for Nepal - Nepali
 
                  sp_ES.po            # example translation file for traditional Spanish
 
              assets/
 
                    ne/
 
                        images/
 
                        audio/
 
                        docs/
 
                            lesson plan?
 
                            teachers note?
 
                    en/
 
                        images/
 
                        audio/
 
  
 
=== Conventions ===
 
=== Conventions ===
  
 
* [[Karma:Anatomy_of_Lesson|Anatomy of a Karma Lesson]]
 
* [[Karma:Anatomy_of_Lesson|Anatomy of a Karma Lesson]]
* Source Code stored in http://git.sugarlabs.org/projects/karma
+
* The [[Karma/Dictionary|Karma Dictionary]]
* Working demos at http://karma.sugarlabs.org
+
* [[Karma/Specifications|Karma Specifications]] (early draft)
 +
* [[Karma/Anti-conventions|Anti-Conventions]] -- coding no-nos
 +
* [[Karma/Layout_Converted_Squeak_Lessons|Layout for converted Squeak Lessons]]
 +
* Source Code stored in http://git.olenepal.org/karma/karma
 +
* Each lesson must be in a folder named according to the schema "karma_Grade_Maths_title_WeekNo" where the week number is optional
 +
  The following are valid names
 +
  karma_3_Maths_LargestNumber_15
 +
  karma_2_English_MatchingPuzzle
 +
  karma_6_Maths_AddingUpTo10_4
 +
* Version Control and repository management see the [[Karma#Version_Control|Version Control]] section of this page
 +
* Unit testing is required for the karma.js library but not for individual lessons http://karma.sugarlabs.org/tests/
 
* Project Documentation kept in the Sugar Labs wiki
 
* Project Documentation kept in the Sugar Labs wiki
* Code naming conventions: Based in [http://www.gnu.org/prep/standards/standards.html GNU standards]  
+
* Coding conventions: Based on [http://www.dojotoolkit.org/developer/StyleGuide Dojo Style Guide]
 +
** Use sadCamelCase for function names and variables
 +
** Exception to above -- object constructors should start with a capital letter
 +
** boolean variables should be prefixed with "is", "has", "can", or "should"
 +
** counters should be prefixed with "num" or "count"
 +
** Whenever possible, use [http://www.jslint.com/ jslint]
 
* File naming conventions: lowercase letters, underscore instead of spaces  (need to write more about it)
 
* File naming conventions: lowercase letters, underscore instead of spaces  (need to write more about it)
 +
* Coding Pattern - We generally try to follow this coding pattern as it makes it easier to browse your code
 +
Put code in following order
 +
1) variable declarations
 +
2) method declarations
 +
3) method calls
 +
 +
== Version Control ==
 +
Currently all lessons are stored in the examples/ folder of [http://git.olenepal.org/karma/karma main karma repository]
 +
  
== GSoC Project ==
+
<strike>
 +
Here is how you can use the karma_lesson template to create a new repository from scratch
 +
 
 +
  $ git clone git://git.sugarlabs.org/karma_lesson/mainline.git
 +
  $ mkdir ../karma_3_English_3  # create a new lesson directory following our naming convention
 +
  $ cp -r * ../karma_3_English_3 
 +
  $ cd ../karma_3_English_3
 +
  $ rm -r .git    # make sure you get rid of the old git directory
 +
  $ git init
 +
  $ git add .
 +
  $ git commit -a -m "first commit"
  
=== Team ===
+
Now go to the http://git.sugarlabs.org/projects/new, make sure you are logged in
 +
Create a new project, use the same name as you did for your lesson's main folder
 +
then,
 +
  $ git remote add origin git://...  # the pubic push url
  
Felipe Lopez Toledo "SubZero" is creating a prototype for Karma as a Google Summer of Code project. [[USER:BryanWB| Bryan Berry]] is serving as his mentor.
+
Then on to coding your lesson ;)
  
 +
From then on
 +
$ git push origin master  # will sync your local tree w/ the server
  
=== Project Requirements ===
+
'''Tagging''' -- a karma lesson can be in only one of two states, stable or unstable. Any commit tagged 'stable' 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.
 +
</strike>
  
* Create a single prototype activity which could be used as a template for sugarizing AJAX activities. The GSoC participant should not create her own activity but  recreate an existing activity such as one of [http://www.pustakalaya.org/external-content/static/epaath/E-Paath-2.activity/activity/Activity/MenuStage.html OLE Nepal's flash activities].
+
== Meetings ==
* This prototype should have the following features:
+
[[Karma:Meeting 21 December 2009]]
** Simple interactive animation and audio using html5 tags like <canvas> and <audio>
 
** An assessment section that stores results of student's progress and gives them suggestions on improvement. Assessment info should be persistent.
 
** Has embedded pdf or pdf like document reader for activity lesson plan and teacher notes.
 
** Integrates with the Journal
 
** Navigation and Help elements, ideally reusing widgets from [http://www.jquery.com jQuery]
 
** Some element of collaboration using Telepathy (This could be really hard, depending on the state of javascript bindings to dbus)
 
  
 +
== GSoC Project ==
  
=== Meetings ===
+
Karma started as a GSoC project with Felipe Lopez Toledo "SubZero" as the student participant and [[USER:BryanWB| Bryan Berry]] as mentor.
  
# Regular meeting between Felpe and Bryan every Tuesday 0200 UTC  at #sugar on irc.freenode.net
+
=== GSoC Meetings ===
# General GSOC meeting for participants from Sugar every Tuesday 1400 UTC  #sugar-meeting
 
  
Meeting Notes
+
Notes from GSoC meetings - kept for archival purposes
 
* [[Karma:Meeting 12 May 2009]]
 
* [[Karma:Meeting 12 May 2009]]
 
* [[Karma:Meeting 02 Jun 2009]]
 
* [[Karma:Meeting 02 Jun 2009]]
Line 113: Line 142:
 
* [[Karma:Meeting 23 Jun 2009]]
 
* [[Karma:Meeting 23 Jun 2009]]
 
* [[Karma:Meeting 30 Jun 2009]]
 
* [[Karma:Meeting 30 Jun 2009]]
 +
* [[Karma:Meeting 21 Jul 2009]]
 +
* [[Karma:Meeting 4 Aug 2009]]
 +
* [[Karma:Meeting 11 Aug 2009]]
 +
* [[Karma:Meeting 18 Aug 2009]]
 +
* [[Karma:Meeting 24 Aug 2009]]
 +
* [[Karma:Meeting 08 Sep 2009]]
 +
* [[Karma:Meeting 14 Sep 2009]]
 +
* [[Karma:Meeting 21 Sep 2009]]
 +
* [[Karma:Meeting 21 December 2009]]
 +
 +
== Project Roadmap ==
 +
 +
==== 0.1 "Osito" ====
 +
 +
Was completed September 11, 2009
 +
 +
* 1 Working example in "adding_up_to_10"
 +
* cleaned up documentation with jsdocs api documentation and cleaned up README.txt
 +
* integrate chakra and "adding_up_to_10" and knavbar
 +
* adding_up_to_10 works on the XO
 +
** Surf
 +
** Browse
 +
 +
==== 0.2 "Gatito" ====
 +
 +
Completed mid-December 2009
 +
 +
* unit testing added to karma.js using QUnit
 +
* API documented w/ jsdoc-toolkit
 +
* support for SVG and canvas animation
 +
* 3 working examples
 +
** Adding_Up_to_10 using both SVG and canvas
 +
** Quadrilaterals
 +
** "Conozco A Uruguay" done with karma  -- 50% done
 +
 +
 +
 +
==== 0.3 "niño" ====
 +
 +
Due 31 March 2010
 +
 +
* Full i18n support
 +
* All Squeak lessons converted to Karma
 +
* Integrate all of the existing E-Paath lesson into chakra
 +
* narwhal build script to build one giant karma bundle w/ all the E-Paath lessons inside it and chakra
 +
* At least 6 lessons ready that have been translated into 3 languages each
 +
* Version 0.1 draft of karma specification done
  
=== Project Plan ===
+
==== Future Direction of Karma ====
  
There are roughly 4 parts to this project plan: first get titanium running on the XO, second create a very simple learning activity with javascript and html5, third get that activity running on the XO in a roughly sugarized version of titanium, fourth extend the activity to take advantage of Sugar-specific features such as the Journal and Collaboration.
+
No schedule yet.
  
Before GSoc - June 1:
+
[[Karma/Future Direction|This page]] has more information.
* get familiar with Sugar
 
* get familiar with html5
 
* Felipe to acquire XO
 
* learn more about JavaScript
 
* select the appropriate js framework -- jQuery
 
  
June 2 - June 12:
+
=== Library ===
# “Karming” the "Quadrilaterals" activity using a non-elegant approach
 
# Post blog entry detailing challenges encountered and ideas on how to simplify the animation methods
 
# Post message to jquery-en and jquery-dev mailing lists asking for feedback
 
  
 +
here lies a lot of links to resources specific to karma
  
June 13 - July 12:
+
UI
* Developing the first Karma widget (easy animation tool, boost animation tool from the selected js framework)
+
* Iphone Human Interface Guide http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/mobilehig/MobileHIG.pdf
* Getting familiar with Sugar/Browse code
+
* Palm Pre interface guide http://developer.palm.com/images/palm/pdf/palm_webos_hi_guidelines.pdf
* Providing Karma + audio
+
* 30 Usability Issues To Be Aware Of http://www.smashingmagazine.com/2007/10/09/30-usability-issues-to-be-aware-of/
* Providing Karma + client-side i18n
+
* 10 Usability Nightmares You Should Be Aware Of http://www.smashingmagazine.com/2007/09/27/10-usability-nightmares-you-should-be-aware-of/
* Developing an activity template for Karma
+
* "The Design of Everyday Things" book by Don Norman
* Changing the original activity to include above features
+
* "Don't Make me think" by Steve Krug, guide to usability for web apps
  
July 13:
+
HTML5
Publish blog post that showcases updated activity. Explain problems encountered, what works, what still doesn’t.
+
* http://www.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/
 +
* http://www.w3.org/TR/html5-diff/  Differences between html4 and html5
 +
* [http://diveintohtml5.org/ Dive Into HTML5]
  
July 15 - July 25:
+
General Web Design
* Fixing bugs
+
* "Web Design in a Nutshell" from O'Reilly
* Work on gears+karma support
+
* Apple "Web Page Development: Best Practices" http://developer.apple.com/internet/webcontent/bestwebdev.html
  
July 26 - July 31:
+
Canvas
* Documenting examples
+
* demos: http://html5demos.com/
* Improving documentation
+
* basics: http://dev.opera.com/articles/view/html-5-canvas-the-basics/
 +
* painting web app: http://dev.opera.com/articles/view/html5-canvas-painting/
 +
* mozilla canvas tutorial: https://developer.mozilla.org/en/Canvas_tutorial
 +
* using canvas on webkit: http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/Canvas.html
 +
* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html
  
August 1 - August 9: time for any eventual emergencies
+
SVG
 +
* The [http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html SVG Primer] a very detailed and in-depth resource
 +
* [http://raphaeljs.com/reference.html Raphaeljs documentation]
 +
* https://developer.mozilla.org/en/svg
  
=== Project Risks ===
+
Javascript
 +
* [http://eloquentjavascript.net Eloquent Javascript] best beginning javascript resource
 +
* "Javascript: The Good Parts" book by Doug Crockford
 +
* "jQuery in Action" book
 +
* "Pro Javascript Techniques" by john resig
 +
* All the tutorials at www.ejohn.org, esp.
 +
** http://ejohn.org/blog/how-javascript-timers-work/
  
# Creating interactive animations with html5 and javascript is very new technology as html5 is a new standard. It could be much harder to create animations than we expect. Risk Level: High
 
# Javascript animations could be very slow on the XO. Risk Level: Low, we don't need very complex animations
 
# It could be very difficult to interface titanium with telepathy. Risk Level: High
 
# The Browse Sugar activity uses the spidermonkey javascript interpreter, which is not optimized for hmtl5. Karma's animations may be prohibitively slow in Browse and require a version of Browse that includes the newer tracemonkey javascript interpreter.
 
  
 +
Coding Tools and Conventions
 +
* Firebug  --- http://www.getfirebug.com
 +
* Web-Inspector --- webkit's answer to firebug
 +
* Browsers --- We primarily work with Chromium and Firefox > 3.5
 +
* For emacs users -- nxhtml mode and magit.el for working w/ git
 +
* [http://www.jslint.com/ jslint]
 +
* [http://www.inkscape.org inkscape]
 +
* [http://narwhaljs.org narwhal]
  
[[Category:GSoC]]
+
== Subpages ==
 +
 
 +
{{Special:PrefixIndex/{{PAGENAMEE}}/}}

Latest revision as of 01:31, 19 December 2016

Karma.png

The Karma Project

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 mailing list and get the code

Rationale

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 early and often.

Status

Karma is a sub-project of Sugar Labs that is under active development. The latest examples can be seen at http://karma.sugarlabs.org. You can also check out the Karma Project blog for updates.

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 Surf and its webkit dependencies or run Firefox 3.5 from the command-line (yum install pywebkitgtk WebKit-gtk gnome-python2-gconf).

The current focus of development is to convert Nepal's set of lessons coded in Squeak smalltalk. You can find the list of lessons to be converted here. This is a good place for new contributors to get started

What Karma Is

  • 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
  • Karma is used to create simple activities that run off-line w/out access to the Internet
  • Karma is for web developers who want to contribute to Sugar using their current skills
  • Karma is built on top of open web standards such as html5, javascript, and CSS.
  • Karma is built to run on top of web browsers that support html5, particularly the canvas element.
  • Karma is built around the concept of individual "lessons" and multiple lessons can be aggregated into a sugar activity
  • Karma is the evolution of OLE Nepal's work on the EPaath suite of lessons in Nepal
  • Karma is designed with pervasive and easy internationalizaton in mind and integration with moodle, particularly for monitoring student progress
  • Karma is pedagogically agnostic. Pedagogical choices are left to the lesson author.

What Karma Isn't

  • Karma is not compatible with Internet Explorer because Internet Explorer does not support html5 apis such as canvas, svg, localStorage, etc.
  • Karma is not meant to replace pyGTK as the dominant toolset for creating Sugar activities
  • Karma is not a tool for creating activities with complex 3D graphics. Karma is a tool for creating activities with simple 2D graphics
  • Karma is not meant as a basis for a WYSIWG programming environment like TurtleArt, EToys, or Logo
  • Karma is not built to support browsers that do not support html5, such as Internet Explorer and Firefox < version 3.5
  • Karma is not intended to teach programming to children though it could be used as such

Design Philosophy

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'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.

Design Goals

  • Unobtrusive JavaScript
  • No globals
  • No extension of native objects

Technical Architecture

  • 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's Internet Explorer. Karma will be particularly tailored to work with Sugar's Journal and collaboration through Telepathy. Longer-term we hope to extend Karma to take advantage of Sugar's collaboration features.
  • Primary Programming language - Javascript 1.6
  • i18n -- Pervasive internationalization is a critical part of Karma
    • Supported types of i18n -- ToDo
      • Output of Native Digits
      • Image switching per locale
      • Regular text, though it is unclear how to support plural forms, grammar shifts, and gender
      • Audio switching per locale
    • Integration with pootle
  • Utilities -- we primarily use narwhal for command-line scripting and jsdoc for documentation
  • Journal, Telepathy Integration -- method to be determined, perhaps using html5's offline storage feature, some resources here and here
  • Moodle Integration -- method to be determined
  • Repo and Bundle layout
  • UI Widgets

Conventions

 The following are valid names
 karma_3_Maths_LargestNumber_15
 karma_2_English_MatchingPuzzle
 karma_6_Maths_AddingUpTo10_4
  • Version Control and repository management see the Version Control section of this page
  • Unit testing is required for the karma.js library but not for individual lessons http://karma.sugarlabs.org/tests/
  • Project Documentation kept in the Sugar Labs wiki
  • Coding conventions: Based on Dojo Style Guide
    • Use sadCamelCase for function names and variables
    • Exception to above -- object constructors should start with a capital letter
    • boolean variables should be prefixed with "is", "has", "can", or "should"
    • counters should be prefixed with "num" or "count"
    • Whenever possible, use jslint
  • File naming conventions: lowercase letters, underscore instead of spaces (need to write more about it)
  • Coding Pattern - We generally try to follow this coding pattern as it makes it easier to browse your code
Put code in following order
1) variable declarations
2) method declarations
3) method calls

Version Control

Currently all lessons are stored in the examples/ folder of main karma repository


Here is how you can use the karma_lesson template to create a new repository from scratch

 $ git clone git://git.sugarlabs.org/karma_lesson/mainline.git
 $ mkdir ../karma_3_English_3  # create a new lesson directory following our naming convention
 $ cp -r * ../karma_3_English_3  
 $ cd ../karma_3_English_3
 $ rm -r .git     # make sure you get rid of the old git directory
 $ git init
 $ git add .
 $ git commit -a -m "first commit"

Now go to the http://git.sugarlabs.org/projects/new, make sure you are logged in Create a new project, use the same name as you did for your lesson's main folder then,

 $ git remote add origin git://...   # the pubic push url

Then on to coding your lesson ;)

From then on

$ git push origin master   # will sync your local tree w/ the server

Tagging -- a karma lesson can be in only one of two states, stable or unstable. Any commit tagged 'stable' 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.

Meetings

Karma:Meeting 21 December 2009

GSoC Project

Karma started as a GSoC project with Felipe Lopez Toledo "SubZero" as the student participant and Bryan Berry as mentor.

GSoC Meetings

Notes from GSoC meetings - kept for archival purposes

Project Roadmap

0.1 "Osito"

Was completed September 11, 2009

  • 1 Working example in "adding_up_to_10"
  • cleaned up documentation with jsdocs api documentation and cleaned up README.txt
  • integrate chakra and "adding_up_to_10" and knavbar
  • adding_up_to_10 works on the XO
    • Surf
    • Browse

0.2 "Gatito"

Completed mid-December 2009

  • unit testing added to karma.js using QUnit
  • API documented w/ jsdoc-toolkit
  • support for SVG and canvas animation
  • 3 working examples
    • Adding_Up_to_10 using both SVG and canvas
    • Quadrilaterals
    • "Conozco A Uruguay" done with karma -- 50% done


0.3 "niño"

Due 31 March 2010

  • Full i18n support
  • All Squeak lessons converted to Karma
  • Integrate all of the existing E-Paath lesson into chakra
  • narwhal build script to build one giant karma bundle w/ all the E-Paath lessons inside it and chakra
  • At least 6 lessons ready that have been translated into 3 languages each
  • Version 0.1 draft of karma specification done

Future Direction of Karma

No schedule yet.

This page has more information.

Library

here lies a lot of links to resources specific to karma

UI

HTML5

General Web Design

Canvas

SVG

Javascript


Coding Tools and Conventions

  • Firebug --- http://www.getfirebug.com
  • Web-Inspector --- webkit's answer to firebug
  • Browsers --- We primarily work with Chromium and Firefox > 3.5
  • For emacs users -- nxhtml mode and magit.el for working w/ git
  • jslint
  • inkscape
  • narwhal

Subpages