Difference between revisions of "Activity Team"

From Sugar Labs
Jump to navigation Jump to search
 
(74 intermediate revisions by 13 users not shown)
Line 1: Line 1:
<small>''This article is about the biblical God.  For the term as used to refer to any divine being, see [[Other Gods]]''</small>
+
{{Graduate|Walterbender will move this to http://developer.sugarlabs.org in 2016}}
[[Image:Alphaomega.jpg|thumb|200px|God is the Alpha and Omega, the first and last, the beginning and the ending]]
 
{{cquote|'''Genesis 1:1'''<br />In the beginning God created the heavens and the earth.}}
 
{{trinity}}'''God''' is the sovereign creator and eternal ruler of all things and beings that exist, whether in the physical [[universe]] or in the spiritual realm ([[Heaven]]).  Not only is God the creator and ruler of the things and beings within those two realms, but he is also the creator of the realms themselves. God created the physical universe, and before he acted in this creation, the universe did not exist. Likewise God did with the spiritual realm.
 
  
== God is Revealed: How we know about God ==
+
<noinclude><div class="noprint">{{TeamHeader|Activity Team}}</div></noinclude>
  
Other than creation itself, God is revealed in several ways, including conscience and special revelation (the bible, and prophets). Most importantly though, God is revealed in [[Jesus Christ]], who is the Son of God.
+
==Mission==
  
== Attributes or Character of God ==
+
{{:Activity Team/Mission}}
The attributes of God are things that describe who he is. Similar to the way one might describe a close friend to another individual, so too do these attributes describe God's character and nature. Attributes of God include but are not limited to [[Wisdom]], [[Infinitude]], [[Sovereignty]], [[Holiness]], [[Trinity]], [[Omniscience]], [[Faithfulness]], [[Love]], [[Omnipotence]], [[Self-existence]], [[Self-sufficiency]], [[Justice]], [[Immutability]], [[Mercy]], [[Eternal]], [[Goodness]], [[Gracious]], and [[Omnipresence]]. These attributes all work in complete and perfect harmony with one another.
 
  
God exercises eternal and righteous judgment of the wicked in [[hell]], because of an inherent problem in the human heart, namely [[Sin]]. According to the [[Bible]], the sacrifice of [[Jesus Christ]] on the cross of [[calvary]] and then [[resurrection]], is God's merciful and gracious response to the problem of the human heart.
+
==Tips for Activity Developers==
  
=== God is Triune ===
+
=== Ask your 'newbie' question on-line ===
{{main|Trinity}}
 
  
Although the Bible does not use the term, it is clear that God is a triune God, or three in one.
+
Join [http://en.wikipedia.org/wiki/IRC IRC] channel [irc://irc.freenode.net/sugar #sugar] (e.g. via [http://webchat.freenode.net/?randomnick=1&prompt=1&channels=sugar web client]) and ask your question about activity, or sugar core, development process. Also browse chat [http://meeting.sugarlabs.org/sugar logs].
These are sometimes referred to as ''God the Father'', ''God the Son'' ([[Jesus Christ|Jesus]]), and the ''[[Holy Spirit]]''.
 
  
The first hint of the Trinity is in {{Bible ref|Genesis|1|26}} which relates God saying, "Let us make man in our image", indicating that God is a plurality.
+
=== Creating a new activity ===
  
The three persons of God are treated as equivalents in these words of Jesus shortly after His resurrection:
+
See [[Activity Team/Creating a New Activity|Creating a New Activity]] and [[Activity Team/Resources|Activity Team Resources]].
{{Bible quote|Therefore go and make disciples of all nations, baptizing them in the name of the Father and of the Son and of the Holy Spirit.|book=Matthew|chap=28|verses=19|version=NIV}}
 
  
==== Jesus is God ====
+
=== Automated Testing ===
  
The first verse of the [[Gospel of John]], in which Jesus is referred to as the "Word", makes clear that Jesus is synonymous with God:
+
See [[Automated Activity Testing]]
{{Bible quote|In the beginning was the Word, and the Word was with God, and the Word was God.|book=John|chap=1|verses=1|version=NIV}}
 
This verse not only says that "the Word" (Jesus) is synonymous with God, but also says that the Word was "in the beginning", which means that He existed before all else existed, something that is only true of God.
 
  
This is reinforced two verses later, in which Jesus is described as the creator.
+
===Port to GTK3===
[[Genesis]] refers to God as being the Creator.
 
{{Bible quote|Through him all things were made; without him nothing was made that has been made.|book=John|chap=1|verses=3|version=NIV}}
 
  
==== The Holy Spirit is God ====
+
We have hints on [[Features/GTK3/Porting|porting from GTK2 to GTK3]].
  
In the following passage, the [[Holy Spirit]] is referred to as God:
+
===Move an activity===
{{Bible quote|Then Peter said, "Ananias, how is it that Satan has so filled your heart that you have lied to the Holy Spirit and have kept for yourself some of the money you received for the land? Didn't it belong to you before it was sold? And after it was sold, wasn't the money at your disposal? What made you think of doing such a thing? You have not lied to men but to God."|book=Acts|chap=5|verses=3-4|version=NIV}}
 
  
=== God is omniscient ===
+
We need help moving activities over to Sugar Labs from GitHub servers.  This is a great way to get started helping out the Activity Team.  See [[Activity Team/How to migrate from Gitorious]] for instructions, and [[Activity Team/Activity Status]] for the list of activities that need to be moved.
{{main|omniscience}}
 
  
God knows everything:
+
While moving activities, it would be great to check that the .pot files are up to date and the MANIFEST is correct. This will really help out the distro packagers.
{{Bible quote|This then is how we know that we belong to the truth, and how we set our hearts at rest in his presence whenever our hearts condemn us. For God is greater than our hearts, and he knows everything.|book=1_John|chap=3|verses=19-20|version=NIV}}
 
  
Because God is outside of [[time]], He can see and knows the [[past]] and the [[future]] as well as the present.
+
== Set up Sugar Labs services ==
 +
* '''Upload a xo bundle''' to [http://activities.sugarlabs.org/ activities.sugarlabs.org].  Be sure to include a couple of screenshots of your activity in action.
 +
* If your activity is part of Fructose, '''upload a .tar.bz2''' to [http://download.sugarlabs.org/ download.sugarlabs.org].  Request a shell account from the [[Infrastructure Team]] if you don't have one already.
 +
* '''Update the OLPC wiki page''' for the Activity, noting the migration. Use the [http://wiki.laptop.org/go/Template:Migrated_to_sl.o Migrated to sl.o] template.
 +
* '''Change sugar-jhbuild''' to point to the new repository if this activity was included in sugar-jhbuild (enter a ticket in http://dev.sugarlabs.org if you have no access).
 +
* Ask an [[Activity Team/Contacts|Activity Team Coordinator]] to create a '''Trac component''' for your activity.
  
== "God" sometimes used to refer to God the Father ==
+
===Cross-platform compatibility===
[[Image:Velasco Padre Eterno.jpg|left|140px|God the Father]]
 
In the bible, the word "God" (θεός) does not always refer to God's being as a whole, but more specifically refers to the Person of the Father (God the Father). Here are some verses which demonstrate this:
 
{{cquote|'''John 3:16''' (NASB)<br />For <u>God</u> so loved the world, that He gave His only begotten <u>Son</u>, that whoever believes in Him shall not perish, but have eternal life.}}
 
{{cquote|'''1 John 4:10''' (NASB)<br />In this is love, not that we loved <u>God</u>, but that He loved us and sent <u>His Son</u> to be the propitiation for our sins.}}
 
Notice how in each case, "Father" can be substituted for "God." For example, "For the ''Father'' so loved the world, that He gave His only begotten Son," and "not that we loved the ''Father'', but that He loved us and sent His Son."
 
  
== Terminology ==
+
As Sugar is integrated into more distros and the hardware base expands, it is important to keep Activity developers informed of any issues they need be aware of. For example, when Sugar was only expected to run on the XO-1 laptop, it was safe to assume that the display was always 1200x900.
  
The Bible uses several different words to refer to God.
+
The [[Activity Team/Compatibility Tips|Compatibility Tips]] page is a place to accumulate tips.
"God" itself is not a name, but an [[Old English]] word meaning ''supreme being, diety'',<ref>[http://www.etymonline.com/index.php?term=god God] Online Etymology Dictionary.</ref> which the translators who translated the Bible in to English chose as the appropriate English word for the [[Hebrew]] ''elohim'' and the [[Greek]] ''theos'' used in the [[Old Testament]] and [[New Testament]] respectively.<ref name="DPK">Kruse, Dale P.,[http://www.layevangelism.com/advtxbk/sections/sect-10/sec10-9.htm More on the ''Names'' of God In the Bible], Advanced Training Program of Evangelism.</ref>
 
  
The other main term for God is the Hebrew ''adonai'', usually translated ''Lord''.
+
===Migrating from GTK2 to GTK3===
There are various compound words also used in the Bible, such as ''el shaddai'', which means ''God Almighty'' ("''el''" is a short version of ''elohim'').<ref name="DPK" />
 
  
''YHWH'' is given in the Bible as God's actual name. In most English Bibles it is translated as <span style="font-variant:small-caps">''Lord''</span>, in small capitals. The name has various other English versions, including Yehovah, Jehovah, and Yahweh.<ref>McHyde, Tim, [http://www.escapeallthesethings.com/yahweh.htm God’s Name: LORD, Yahweh, Yahveh, YHWH, YHVH, Jehovah or Yehovah?]</ref>
+
The Sugar platform is migrating from GTK2 to GTK3 to stay relevant with upstream changes and benefit from their efforts. Sugar 0.96 (available in OLPC 12.1 development builds) includes support for a transition period, where both GTK2 and GTK3 activities can coexists, but new Sugar features will only be added to the GTK3 toolkit (e.g., improvements in touchscreen support). Have a read through the [[Features/GTK3/Porting|migration notes]], and the [http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html GTK3 Python tutorials] to get a feel for how things need to be changed. New activities should be developed with GTK3, unless you need to support an existing deployment today using an older build.
  
==See also==
+
===Modify Activities===
*[[Other gods]]
 
*[[Atheism]]
 
*[[Christianity in Conservapedia]]
 
  
== References ==
+
A guide has been  written describing how to make simple modifications to popular Sugar  activities.  Examples include adding sounds to TamTam, blocks to  TurtleArt, buttons to Calculate, etc.
{{Reflist|2}}
 
  
==External links==
+
* [[Activity Team/Modifying an Activity]]
*[http://www.theopedia.com/God Theopedia - God]
 
*[http://christiananswers.net/dictionary/god.html ChristianAnswers.net - God]
 
*[http://wikible.org/en/God Wikible.org - God]
 
*[http://www.opposingviews.com/questions/is-there-a-god Opposing Views: Is There a God?]
 
  
[[Category:Christianity]]
+
===Remote control your XO===
[[Category:Divine Beings]]
+
 
 +
[[Activity Team/Remote control your XO|Remote control your XO]] from your development machine can be handy while developing an activity.
 +
 
 +
===Internationalization===
 +
 
 +
We use '''[http://docs.python.org/library/gettext.html gettext]''' to internationalize activities. The basic steps are:
 +
 
 +
In your Python code:
 +
from gettext import gettext as _
 +
 
 +
Hence forth, encapsulate strings that you want translated in _():
 +
_('string to be translated')
 +
 
 +
Run <code>setup.py</code> to generate a POT file for your project. This file will contain a reference to all of the encapsulated strings.
 +
 
 +
From here, you need to:
 +
# <code>git add</code>, <code>commit</code>, and <code>push</code> the POT file to git
 +
# request that your project be added to the pootle server (by filing a task to the localization component on bugs.sugarlabs.org)
 +
# add pootle as a committer to your project on gitorious
 +
 
 +
Once translations are committed to your project:
 +
# do a <code>git pull</code> to get a local copy of the .po files
 +
# run <code>setup.py fix_manifest</code> to create the .mo files used at run time
 +
Details can be found on the [[Translation Team/i18n Best Practices]] page.
 +
 
 +
===General overview of git===
 +
 
 +
Read the brief overview below but then '''start''' with our
 +
* [[Activity Team/Git Tutorial|git tutorial]].
 +
 
 +
====glossary====
 +
 
 +
;VCS: Version Control System &mdash; keeps track of changes to a set of files.
 +
;git: the distributed VCS used by Sugar Labs
 +
;commit: set of changes to files tracked by a VCS, accompanied by metadata (author, description, etc.)
 +
;diff/patch: (usually textual) representation of changes. These are also the names of specific tools used to create/apply these representations of changes.
 +
;repository: storage place for commits, usually of a certain piece of software
 +
;gitorious: software for hosting git repositories, including a web interface for administration
 +
;git.sugarlabs.org: server hosted by Sugar Labs running gitorious
 +
;GitHub: a web-based hosting service Git repository.  Sugar Labs is migrating projects to this service.
 +
 
 +
====Setup====
 +
(Once per machine you're working on)
 +
git clone git://github.com/whatever/mainline.git whatever
 +
 
 +
====Regular usage====
 +
cd whatever
 +
[hack away and test your changes]
 +
git diff
 +
[review your changes, go back to hacking if you notice a mistake]
 +
git status
 +
git add NameOfNewFile # if you created any file you want included
 +
git commit -a
 +
[describe your changes - by convention the first line is a summary and the remaining lines are long description]
 +
[start again at hacking if you're offline]
 +
git log origin/master..master # shows you all commits not pushed yet
 +
git push # if/once you are online
 +
 
 +
Git offers a lot more commands and features that can make your life
 +
easier, but it's best to start off small and use only those mentioned
 +
above. It's very easy to get confused if you're unfamiliar with git.
 +
 
 +
Even if you use the more advanced features, git does a pretty good job at
 +
allowing you to recover from your mistakes.
 +
So if you ever mess up and don't know how to fix it yourself, please
 +
stop (at least for me that's usually the hardest part ;) ), try to
 +
recollect the exact sequence of actions (e.g., from shell history) and ask
 +
for help.
 +
 
 +
----
 +
 
 +
Once you have [[Activity Team/How_to_migrate_from_OLPC|migrated]] your project, you may have some more detailed [[Activity Team/Git FAQ|questions regarding how Sugar Labs uses git]], particularly in regard to patch management.
 +
 
 +
----
 +
 
 +
{{:Activity Team/Git}}
 +
 
 +
== Maintainers ==
 +
 
 +
{{:Activity Team/Maintainers}}
 +
 
 +
== Testers ==
 +
 
 +
Please see the  [[Testing/Activity Test Table]] for tester information.
 +
 
 +
== Background information ==
 +
 
 +
=== Sugar Activities ===
 +
 
 +
There is an [[Activities]] page where we highlight Sugar activities in the wiki. (We need to discuss how best to manage the content of this page as well as how to manage the activity-specific sub-pages.)
 +
 
 +
===Sugar [[Human Interface Guidelines]]===
 +
 
 +
The [[Human_Interface_Guidelines|Sugar Human Interface Guidelines]] content has also been migrated to Sugar Labs.  This guide is a critical resource when designing activities.
 +
: An [[Activity Team/Project Ideas#Activity HIG|Activity HIG]] discussion
 +
 
 +
===Sugar Almanac===
 +
 
 +
The [[Development Team/Almanac|Sugar Almanac]] content has been migrated to Sugar Labs. It's a great, quick reference when building python Activities.
 +
 
 +
===activities.sugarlabs.org===
 +
 
 +
The [http://activities.sugarlabs.org Sugar Activity Library] is our user-facing portal for Sugar activities.  The site uses the back-end Mozilla built for Firefox and Thunderbird extensions at addons.mozilla.org, called Remora.  To help out, check out [[Activity Library]].
 +
 
 +
===sugar-widgets library===
 +
 
 +
See [[Development Team/sugar-port]].
 +
 
 +
===sugar-sprites library===
 +
 
 +
See [[Activity Team/Sugar-sprites]]
 +
 
 +
== Misc. ==
 +
 
 +
===Mime types and file suffixes===
 +
 
 +
You can associate your activity with mime types by including a mime_types entry in the activity/activity.info file; e.g.,
 +
 
 +
mime_types = text/plain;text/x-python;text/x-logo;text/x-svg;application/xml;text/html;text/xml;image/svg+xml
 +
 
 +
You can associate your activity with a file suffix by including a mimetypes.xml file in your activity subdirectory:
 +
 
 +
<?xml version="1.0" encoding="UTF-8"?>
 +
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
 +
    <mime-type type="application/x-turtle-art">
 +
      <comment xml:lang="en">Turtle Art</comment>
 +
      <glob pattern="*.ta"/>
 +
    </mime-type>
 +
</mime-info>
 +
 
 +
'''Note:''' You cannot just copy your activity into the ~/Activities directory. You have to install it as a .xo bundle or using 'setup.py install' (note that the latter is tricky as the command might get your paths messed up).  This installation step will create a file --> ~/.local/share/mime/packages/<your-bundle_id>.xml
 +
 
 +
If your activity does not register any mimetype, then it won't matter.
 +
 
 +
If your activity was already properly installed (with sugar-install-bundle), then copying new source into Activities will not be affected by this problem unless the new source registers a new mimetype that the old source did not.
 +
 
 +
=== Activity Team users on activities.sugarlabs.org ===
 +
 
 +
Fake emails to identify users:
 +
* ''activity.team@sugarlabs.org'' activities that are supported by Activity Team
 +
* ''trash@dev.null'' activities to remove
 +
 
 +
===setup.py===
 +
 
 +
There is a handy utility that is a standard part of Sugar Activity bundles, setup.py. You should use it to create and update POT files, generate a MANIFEST file and update locale files, and create .xo and .tar files for distribution.
 +
 
 +
./setup.py genpot        # generates or updates the POT file used by gettext for internationalization
 +
./setup.py build
 +
./setup.py fix_manifest  # updates the MANIFEST file and generates or updates the locale files used for internationalization
 +
./setup.py dist_xo      # creates an .xo bundle from your project
 +
./setup.py dist_source  # creates a .tar.gz file from your project
 +
 
 +
===Packaging activities discussion===
 +
 
 +
We are currently discussing how to package activities in the future, in order to support all distributions.  Please add your comments to the following pages.
 +
* [[Activity Team/Packaging|Packaging]]
 +
** should we remove "Activities" section from that page; all issues where moved to Activity_Status page [[User:Alsroot|alsroot]] 10:33, 16 January 2009 (UTC)
 +
* [[Activity Team/Packaging Ideas|Packaging ideas]]
 +
 
 +
=== The Sugar Control Panel ===
 +
 
 +
While not strictly in the realm of Activities, it may be useful on occasion to add a section to the Sugar Control Panel. [[Activity Team/Control Panel|Things to keep in mind]].
 +
 
 +
=== A typical update cycle ===
 +
 
 +
Moved to https://github.com/sugarlabs/sugar-docs/blob/master/src/contributing.md#modifying-activities
 +
 
 +
=== OLPC XO game buttons ===
 +
 
 +
The game buttons on the OLPC XO are accessible:
 +
* The left-side buttons map to KP_Up, KP_Right, KP_Down, and KP_Left
 +
* The right-side buttons map to KP_Page_Up (o), KP_End (✓), KP_Page_Down (×), and KP_Home (◽)
 +
 
 +
=== The Sugar Object Chooser ===
 +
 
 +
The Object Chooser is the activity-level user interface to the Journal. Examples and caveats are found [[Activity_Team/Object_Chooser|here]].
 +
 
 +
==[[Activity Team/Project Ideas|Project Ideas]]==
 +
 
 +
The Activity Team always needs project ideas and suggestions.  Post your ideas to [[Activity Team/Project Ideas]]. 
 +
 
 +
If you see something here you would like to help with, please [[Activity Team/Contacts|contact us]].
 +
 
 +
[[User:Wade|Wade]] 17:19, 13 January 2009 (UTC)
 +
 
 +
==Additional resources==
 +
 
 +
Additional resources may be found [[Activity_Team/Resources|here]].
 +
 
 +
==Sugar Activity development courses==
 +
 
 +
There are university- and secondary-school-level courses being taught around Sugar development. Several of the syllabi are on line:
 +
 
 +
* http://wiki.paraguayeduca.org/index.php/Curso_Sugar_FPUNA is being adapted by UNA
 +
* http://teachingopensource.org/index.php/RIT/The_Course is being taught at RIT
 +
 
 +
==Meetings==
 +
 
 +
Please check [[/Meetings]] for meeting schedules/logs.
 +
 
 +
== Moving to Sugar Labs ==
 +
 
 +
A few notes re moving to the Sugar Labs infrastructure:
 +
 
 +
* use git init to create a new project unless it already exists.
 +
* use <code>setup.py dist_source</code> to make the source package associated with your project.
 +
* source packages now go in:
 +
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/
 +
 
 +
: from there, if your project (if it is an Activity) probably belongs in the honey subdirectory, e.g.,
 +
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/honey/Abacus/
 +
 
 +
: If your project is part of the Sugar core, it goes in sucrose/fructose/ (for core Activities) or sucrose/glucose (for core modules), e.g.,
 +
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/fructore/TurtleArt/
 +
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/glucose/sugar-toolkit/
 +
 
 +
* don't forget to update addons as well!!
 +
activities.sugarlabs.org
 +
 
 +
* and to copy the tar file to download.sugarlabs.org
 +
download.sugarlabs.org:/download/sources/honey/...
 +
download.sugarlabs.org:/download/sources/sucrose/fructose/...
 +
 
 +
== Subpages ==
 +
{{Special:PrefixIndex/{{PAGENAME}}/}}
 +
 
 +
[[Category:Activity Team]]
 +
[[Category:Team]]

Latest revision as of 22:41, 6 March 2018


Team Home   ·   Join   ·   Contacts   ·   Resources   ·   FAQ   ·   Roadmap   ·   To Do   ·   Meetings

Mission

The Activity Team develops and maintains many of the activities available for Sugar. We also encourage independent developers to write activities, and we support them in their efforts. Our goal is to ensure that Sugar provides a complete set of high quality educational, collaborative, constructivist activities.

Our responsibilities

  1. Develop and maintain the ecosystem of Sugar activities.
  2. Recruit and mentor activity developers from the community.
  3. Collect, document and organize new activity and activity feature ideas from the Education Team, deployments and community.
  4. Work with the Development Team and the Infrastructure Team to ensure activity developers are well supported.
  5. Gather feedback with the Deployment Team about how Sugar activities are doing in the field.

Tips for Activity Developers

Ask your 'newbie' question on-line

Join IRC channel #sugar (e.g. via web client) and ask your question about activity, or sugar core, development process. Also browse chat logs.

Creating a new activity

See Creating a New Activity and Activity Team Resources.

Automated Testing

See Automated Activity Testing

Port to GTK3

We have hints on porting from GTK2 to GTK3.

Move an activity

We need help moving activities over to Sugar Labs from GitHub servers. This is a great way to get started helping out the Activity Team. See Activity Team/How to migrate from Gitorious for instructions, and Activity Team/Activity Status for the list of activities that need to be moved.

While moving activities, it would be great to check that the .pot files are up to date and the MANIFEST is correct. This will really help out the distro packagers.

Set up Sugar Labs services

Cross-platform compatibility

As Sugar is integrated into more distros and the hardware base expands, it is important to keep Activity developers informed of any issues they need be aware of. For example, when Sugar was only expected to run on the XO-1 laptop, it was safe to assume that the display was always 1200x900.

The Compatibility Tips page is a place to accumulate tips.

Migrating from GTK2 to GTK3

The Sugar platform is migrating from GTK2 to GTK3 to stay relevant with upstream changes and benefit from their efforts. Sugar 0.96 (available in OLPC 12.1 development builds) includes support for a transition period, where both GTK2 and GTK3 activities can coexists, but new Sugar features will only be added to the GTK3 toolkit (e.g., improvements in touchscreen support). Have a read through the migration notes, and the GTK3 Python tutorials to get a feel for how things need to be changed. New activities should be developed with GTK3, unless you need to support an existing deployment today using an older build.

Modify Activities

A guide has been written describing how to make simple modifications to popular Sugar activities. Examples include adding sounds to TamTam, blocks to TurtleArt, buttons to Calculate, etc.

Remote control your XO

Remote control your XO from your development machine can be handy while developing an activity.

Internationalization

We use gettext to internationalize activities. The basic steps are:

In your Python code:

from gettext import gettext as _

Hence forth, encapsulate strings that you want translated in _():

_('string to be translated')

Run setup.py to generate a POT file for your project. This file will contain a reference to all of the encapsulated strings.

From here, you need to:

  1. git add, commit, and push the POT file to git
  2. request that your project be added to the pootle server (by filing a task to the localization component on bugs.sugarlabs.org)
  3. add pootle as a committer to your project on gitorious

Once translations are committed to your project:

  1. do a git pull to get a local copy of the .po files
  2. run setup.py fix_manifest to create the .mo files used at run time

Details can be found on the Translation Team/i18n Best Practices page.

General overview of git

Read the brief overview below but then start with our

glossary

VCS
Version Control System — keeps track of changes to a set of files.
git
the distributed VCS used by Sugar Labs
commit
set of changes to files tracked by a VCS, accompanied by metadata (author, description, etc.)
diff/patch
(usually textual) representation of changes. These are also the names of specific tools used to create/apply these representations of changes.
repository
storage place for commits, usually of a certain piece of software
gitorious
software for hosting git repositories, including a web interface for administration
git.sugarlabs.org
server hosted by Sugar Labs running gitorious
GitHub
a web-based hosting service Git repository. Sugar Labs is migrating projects to this service.

Setup

(Once per machine you're working on)

git clone git://github.com/whatever/mainline.git whatever

Regular usage

cd whatever

[hack away and test your changes]

git diff

[review your changes, go back to hacking if you notice a mistake]

git status
git add NameOfNewFile # if you created any file you want included
git commit -a

[describe your changes - by convention the first line is a summary and the remaining lines are long description] [start again at hacking if you're offline]

git log origin/master..master # shows you all commits not pushed yet
git push # if/once you are online

Git offers a lot more commands and features that can make your life easier, but it's best to start off small and use only those mentioned above. It's very easy to get confused if you're unfamiliar with git.

Even if you use the more advanced features, git does a pretty good job at allowing you to recover from your mistakes. So if you ever mess up and don't know how to fix it yourself, please stop (at least for me that's usually the hardest part ;) ), try to recollect the exact sequence of actions (e.g., from shell history) and ask for help.


Once you have migrated your project, you may have some more detailed questions regarding how Sugar Labs uses git, particularly in regard to patch management.



Additional background on GitHub



  • James Simmons' book "Make Your Own Sugar Activities!" chapter 11 explains Git for activity developers, it is highly recommended for intermediate and advanced users
  • Anish Mangal explains the git workflow on the Sugar development mailing list


Maintainers

How to become a Maintainer

Please see File:How to become a maintainer.pdf for an overview of the Activity maintenance process.

What to do if a maintainer is absent

Read the Policy for non-responsive maintainers for more details.

Testers

Please see the Testing/Activity Test Table for tester information.

Background information

Sugar Activities

There is an Activities page where we highlight Sugar activities in the wiki. (We need to discuss how best to manage the content of this page as well as how to manage the activity-specific sub-pages.)

Sugar Human Interface Guidelines

The Sugar Human Interface Guidelines content has also been migrated to Sugar Labs. This guide is a critical resource when designing activities.

An Activity HIG discussion

Sugar Almanac

The Sugar Almanac content has been migrated to Sugar Labs. It's a great, quick reference when building python Activities.

activities.sugarlabs.org

The Sugar Activity Library is our user-facing portal for Sugar activities. The site uses the back-end Mozilla built for Firefox and Thunderbird extensions at addons.mozilla.org, called Remora. To help out, check out Activity Library.

sugar-widgets library

See Development Team/sugar-port.

sugar-sprites library

See Activity Team/Sugar-sprites

Misc.

Mime types and file suffixes

You can associate your activity with mime types by including a mime_types entry in the activity/activity.info file; e.g.,

mime_types = text/plain;text/x-python;text/x-logo;text/x-svg;application/xml;text/html;text/xml;image/svg+xml

You can associate your activity with a file suffix by including a mimetypes.xml file in your activity subdirectory:

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
   <mime-type type="application/x-turtle-art">
      <comment xml:lang="en">Turtle Art</comment>
      <glob pattern="*.ta"/>
   </mime-type>
</mime-info>

Note: You cannot just copy your activity into the ~/Activities directory. You have to install it as a .xo bundle or using 'setup.py install' (note that the latter is tricky as the command might get your paths messed up). This installation step will create a file --> ~/.local/share/mime/packages/<your-bundle_id>.xml

If your activity does not register any mimetype, then it won't matter.

If your activity was already properly installed (with sugar-install-bundle), then copying new source into Activities will not be affected by this problem unless the new source registers a new mimetype that the old source did not.

Activity Team users on activities.sugarlabs.org

Fake emails to identify users:

  • activity.team@sugarlabs.org activities that are supported by Activity Team
  • trash@dev.null activities to remove

setup.py

There is a handy utility that is a standard part of Sugar Activity bundles, setup.py. You should use it to create and update POT files, generate a MANIFEST file and update locale files, and create .xo and .tar files for distribution.

./setup.py genpot        # generates or updates the POT file used by gettext for internationalization
./setup.py build
./setup.py fix_manifest  # updates the MANIFEST file and generates or updates the locale files used for internationalization
./setup.py dist_xo       # creates an .xo bundle from your project
./setup.py dist_source   # creates a .tar.gz file from your project

Packaging activities discussion

We are currently discussing how to package activities in the future, in order to support all distributions. Please add your comments to the following pages.

  • Packaging
    • should we remove "Activities" section from that page; all issues where moved to Activity_Status page alsroot 10:33, 16 January 2009 (UTC)
  • Packaging ideas

The Sugar Control Panel

While not strictly in the realm of Activities, it may be useful on occasion to add a section to the Sugar Control Panel. Things to keep in mind.

A typical update cycle

Moved to https://github.com/sugarlabs/sugar-docs/blob/master/src/contributing.md#modifying-activities

OLPC XO game buttons

The game buttons on the OLPC XO are accessible:

  • The left-side buttons map to KP_Up, KP_Right, KP_Down, and KP_Left
  • The right-side buttons map to KP_Page_Up (o), KP_End (✓), KP_Page_Down (×), and KP_Home (◽)

The Sugar Object Chooser

The Object Chooser is the activity-level user interface to the Journal. Examples and caveats are found here.

Project Ideas

The Activity Team always needs project ideas and suggestions. Post your ideas to Activity Team/Project Ideas.

If you see something here you would like to help with, please contact us.

Wade 17:19, 13 January 2009 (UTC)

Additional resources

Additional resources may be found here.

Sugar Activity development courses

There are university- and secondary-school-level courses being taught around Sugar development. Several of the syllabi are on line:

Meetings

Please check /Meetings for meeting schedules/logs.

Moving to Sugar Labs

A few notes re moving to the Sugar Labs infrastructure:

  • use git init to create a new project unless it already exists.
  • use setup.py dist_source to make the source package associated with your project.
  • source packages now go in:
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/
from there, if your project (if it is an Activity) probably belongs in the honey subdirectory, e.g.,
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/honey/Abacus/
If your project is part of the Sugar core, it goes in sucrose/fructose/ (for core Activities) or sucrose/glucose (for core modules), e.g.,
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/fructore/TurtleArt/
download.sugarlabs.org:/srv/www-sugarlabs/download/sources/glucose/sugar-toolkit/
  • don't forget to update addons as well!!
activities.sugarlabs.org
  • and to copy the tar file to download.sugarlabs.org
download.sugarlabs.org:/download/sources/honey/...
download.sugarlabs.org:/download/sources/sucrose/fructose/...

Subpages