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

Post questions here for the Activity Team.

About the Activity Team

Who is on the Activity Team?

See Activity Team/Contacts for a list of team members.

How can I get in contact with you?

Feel free to write messages on our talk pages, or just drop in on one of our meetings.

Activity Development questions

How can I create a Sugar Activity?

Documentation is available from Activity Team/Resources.

Where do I find information about implementing X in Sugar?

Check Activity Team/Resources for a comprehensive list of developer documentation, tutorials and support channels.

How do I get my activity to install an external dependency?

You don't! Activity bundles are supposed to be self-contained, and not depend on anything else other than the standard Sugar platform. If you need additional dependancies, you will need to include them within your activity bundle. If your additional dependancies are binary, please be aware Sugar can be run on different machine architectures.

I have a question about Git, or Gitorious.

See Activity Team/Git FAQ for a specific FAQ about Git and Gitorious.

How do I upload my new activity to the Activities Library?

The best guide is Activity Team/How_to_migrate_from_OLPC, since that's where activities are coming from. As the infrastructure stabilizes and we get more new activities, we will post a new page.

How do I get my activity in the hands of students?

The absolute best way to get your activity out into the world is to attend an [OLPC:Deployment_meetings OLPC deployment meeting] and suggest it to the deployment representatives. They can test your activity and offer feedback, and will ultimately decide whether it ships.
Another good way is to post and promote your activity on activities.sugarlabs.org. This will get your activity into the hands of the G1G1 community and can be a stepping stone to getting included in the Sugar on a Stick distribution and in OLPC deployments.

How do I adopt an orphaned Activity, or become an Activity co-maintainer

If you want to take on a maintainer-ship role for an Activity, try making contact and emailing the current maintainer first, they may be busy with other projects, or genuinely MIA. If you get no response, ask the Activity Team on the Sugar developers mail list, they will try to make a decision within seven days and make contact the Infrastructure Team to change ownership for resources like the bug tracker, git repository, ASLO.

Help! I suddenly can't push to Gitorious!

The OSUOSL which hosts Gitorious has an aggressive IP blacklist policy. If you once were able to push but now cannot, send an email to support@osuosl.org requesting that your IP be removed from the blacklist.

Is there a Commits mailing list?

Instead of a commits list, we use the RSS feed at http://git.sugarlabs.org/events.atom. This tracks the activity (commits, branches, comments, merge requests) of all projects hosted on Gitorious. Commits of PO files by Pootle are tracked on the pootle-commits list.

How do I get a trac component associated with my project?

File a ticket with the request. Please assign the ticket to the trac component, mark it as a task and don't forget to mention the name of your project and the default owner for the tickets.

How do I analyze my activity's memory usage?

Please refer to these pages for assistance in understanding the memory usage patterns of activities and the shell and for detecting leaks: http://wiki.laptop.org/go/MemoryUsageAnalysis and http://wiki.laptop.org/go/Memory_leak_testing

How does one package an activity?

Save the setup.py file in the top directory of your activity development tree. To make an activity bundle, run the following code:
python setup.py dist_xo
An output bundle will be saved in the dist/ subdirectory. See also Activity bundles specification.

How can I find out what version of Sugar I am running?

You can go into the Sugar Control Panel; it is listed on the about-computer panel (which accesses jarabe.config.version).
  1. From the Terminal, you can type:
    rpm -q sugar
    
  2. or you can:
  3. grep version jarabe/config.py
    
  4. or:
  5. python -c "from jarabe import config; print config.version"
    

How do I know if my activity is running on an OLPC XO laptop?

You can test for the existence of '/etc/olpc-release':
  1. if os.path.exists('/etc/olpc-release'):
         ...
    
Or, check the in /sys/class/dmi/id for the 'product_name' and 'product_version':
  1. def get_hardware():
        """ Determine whether we are using XO 1.0, 1.5, or "unknown" hardware """
        if _get_dmi('product_name') != 'XO':
            return 'unknown'
        version = _get_dmi('product_version')
        if version == '1':
            return 'XO1'
        elif version == '1.5':
            return 'XO1.5'
        else:
            return 'unknown'
    
    
    def _get_dmi(node):
        path = os.path.join('/sys/class/dmi/id', node)
        try:
            return open(path).readline().strip()
        except:
            return None
    

How do I tell Sugar that my activity does not write any data to the Journal?

One of my activities is a game that does not produce any document in the journal. How do I inform Sugar?
Pass to Activity.__init__ create_jobject=False
  1. class MyActivity(activity.Activity):
        def __init__(self, handle):
            activity.Activity.__init__(self, handle, create_jobject=False)
    
  2. (But keep in mind http://bugs.sugarlabs.org/ticket/1714)

How do I run Sugar Runner/emulator in a way that matches the resolution of the OLPC XO?

Running the emulator with sugar-runner --resolution 832x624 or, on older versions, sugar-emulator -i 832x624 will give a close match to the XO screen proportions, i.e., the toolbar will be a close match.

How do I use debugging output and how do I set the debug level?

You need to import logging:

import logging
_logger = logging.getLogger('your-activity-name')

and then insert logging statements in your code:

_logger.debug('some debugging output')
_logger.error('some error output')

See http://docs.python.org/library/logging.html for more details.

To set the level of the debugging output that appears in your log file, edit:

~/.sugar/debug

Typically, you will want to uncomment this line:

#export SUGAR_LOGGER_LEVEL=debug

by removing the leading #

export SUGAR_LOGGER_LEVEL=debug