Google Code In 2019

From Sugar Labs
Revision as of 10:12, 18 October 2019 by Llaske (talk | contribs) (Fix link on how to help)
Jump to navigation Jump to search

Sugar Labs community members: please feel free to add tasks below.

Message to potential participants

It is important that you obtain permission of your parents.

Es importante que obtengas el permiso de tus padres para participar.

Please see the Contest Rules for Eligibility and Registration process.

Also, you will likely need to set up the Sugar development environment. To do that and to further information about contributing to the project go to:

Please don't hesitate to ask questions on our IRC channel (#sugar on or on the sugar-devel list: sugar-devel AT lists.sugarlabs DOT org (See below for details regarding setting up an IRC account.)

Why Sugar Labs is participating

Sugar is written and maintained by volunteers, who range from seasoned professionals to children as young as 12-years of age. Children who have grown up with Sugar have transitioned from Sugar users to Sugar App developers to Sugar maintainers. They hang out on IRC with the global Sugar developer community and are full-fledged members of the Sugar development team. It is this latter group of children we hope will participate in and benefit from Google Code-in. Specifically we want to re-enforce the message that Sugar belongs to its users and that they have both ownership and the responsibility that ownership implies. Just as learning is not something done to you, but something you do, learning with Sugar ultimately means participating in the Sugar development process. At Sugar Labs, we are trying to bring the culture of Free Software into the culture of school. So the Code-in is not just an opportunity for us to get some tasks accomplished, it is quintessential to our overall mission.

Some background from GCI


Open Source Fundamentals

You can contribute without being a coder! You do not have to be a coder to contribute to open source. There are many different skill sets needed to help an open source community thrive:

If you are a good writer and enjoy attention to detail then you might want to contribute by writing or editing documentation. Documentation is a huge part of a successful open source project. Organizations need documentation to help attract new contributors as it helps them see what the codebase looks like and where things are and what the plan is for the project.
An organization may need help crunching numbers or sorting through pages of documents to better understand what the users want or need. There are many different types of tasks that students could work on that are very important to the health of the project.
If you have an outgoing personality and like being around and talking to people, take a look at the outreach tasks. Outreach tasks often include hosting meetups in your local community or creating a plan on how people around the globe can host a meetup about the project in their local communities.
You could create a YouTube video discussing a new feature of the project or maybe some basics on what the project does so people who haven’t heard about it can understand the project and get involved.
User Interface
User interface can include many types of tasks including designing new aspects of a web page or creating a new logo for the project. It may also include various accessibility opportunities to help make the project easier for people who are blind.
If you have an idea that may help an organization, reach out to them and let them know! Sometimes the best task is one that the organization hasn’t even considered yet.


Open source is not just about coding but working with other people to find the best solution. Being a part of the community is an essential part of success in Google Code-in. Mentors tell us every year that their best students were the ones who worked hard on their projects but also participated on IRC and helped answer questions other students had. Collaborate with the community and mentors on the #sugar channel in the network.

Quality over Quantity

It’s not about being the student who completes the most tasks, that only gets you to the top 10 to be reviewed, it doesn’t mean you will be a grand prize winner. We have had quite a few students who completed the most tasks for their organization yet were not named as Grand Prize Winners because they did everything solo and didn’t get involved in the community or think about the health of the project as a whole, they just kept completing task after task like a machine. If you actively participate in the community then you not only feel the camaraderie that comes with working as a team but you become committed to making the project better for everyone.

Some basics about Sugar Labs and Sugar development

For some basics about the project, see Chapter 4 of Learning to Change the World.

Getting set up on IRC

We use IRC for some of our communication.

IRC is unlike other chat services in that you should keep it open, otherwise you won't see anything that is said while you are gone.

Unfortunate, Freenode, our IRC network, has been under attack by trolls of late, so we have had to lock down our channels. Therefore, you'll need to create a "registered account" to login. (You can use an IRC client or open in a browser.)

To register on Freenode:

/msg NickServ REGISTER password

(Filling in your email and password)

Leave the IRC window open if possible.

You will get an email that includes a command you'll need to type in to complete your registration. It may take a while for the email to arrive.

Go back to the open IRC window and paste in the verification line from the email you received in the entry space.

If you have closed the IRC window, you will need to reopen it.

Once you are registered, you may join the #sugar channel:

/join #sugar

When you reconnect at a later date, you may have to:

/msg NickServ identify your-password

Please contact walter @ sugarlabs . org if you have any questions.

Basics: Attribution and Licensing

Read Attribution and Licensing, as both are important for all submissions.

Setting up a Sugar desktop environment

There are several options for setting up the Sugar desktop environment for development, depending on what equipment you have;

Your Equipment Your Operating System Our Recommendation
You have only one computer and don't want to erase it Linux, Windows, macOS, or iOS Install virtualisation software, make a new virtual machine and install Sugar Live Build, Sugar on a Stick, Ubuntu, Fedora, or Debian.
Linux Install Sugar packages from your distribution, see Ubuntu, Fedora or Debian. For other distributions, contact your distribution community.
You have another computer that can be erased Doesn't matter Install Sugar Live Build, Sugar on a Stick, Ubuntu, Fedora, or Debian.

What's the difference between Sugar Live Build, Sugar on a Stick and the various Linux options?

Sugar Live Build (based on Debian) Sugar on a Stick (based on Fedora) Ubuntu, Debian or Fedora
Sugar desktop user experience on startup yes, 0.116 yes, 0.114 no, must install packages
Good for Set up the Sugar Desktop task yes yes yes, but not Ubuntu 19.10
Good for Sugar activity development tasks yes no, must install packages no, must install packages
Good for Port to Python 3 tasks yes no, must install from source no, must install from source
Good for Sugar desktop module development yes, source code included no, must install git and use rpmbuild no, must install packages
Works on a spare computer yes yes yes
Works as a Virtual Machine yes yes yes

See also Setup a development environment.

Getting started with coding in Sugar

Sugar development is in either Python or JavaScript languages.

Python programmers, you should run pep8 and flake8 on your changes before submitting your patches.

Getting started with GIT

Some knowledge of git is important as your work will be submitted to our git repositories. The basic mechanism is a pull-request (PR), which is explained in Contributing.

It is required that you follow the steps outlined on the Contributing page when doing coding and documentation tasks in GCI.

GitHub provides a tutorial. There are many other guides to GIT as well.

Our old bug tracker is, but these days, we mostly report bugs using the issues feature of GitHub. (See for details on GitHub Issues.)

Making a Pull Request

We detail the Pull Request process in here in our docs on Git Hub.

A few things to keep in mind:

  • Do not link commits or pull requests to a GCI task, as these are transient and not public,
  • Link commits and pull requests to any relevant GitHub issue, and if there is no such issue, say so,
  • Explain the problem and how it was solved in your commit message, not in your pull request.

Setting up a Sugarizer environment

Your Equipment Your Operating System Our Recommendation
You have a computer Linux, Windows or macOS Install the Sugarizer package for your operating system.
You have a tablet or phone Android Install the Sugarizer app from Google Play.
You have a tablet or phone iOS Install the Sugarizer app from the App Store.
You have just a browser Any Test Sugarizer on the Sugarizer web site.

See also #Getting started with coding in Sugarizer.

Getting started with coding in Sugarizer

A good way to start coding in Sugarizer is to complete the Sugarizer activity development tutorial. To learn more about Sugarizer architecture, see the dedicated page here.

Getting a wiki account

Some tasks require that you make edits to this wiki for which you'll need an account. Please email walter @ sugarlabs . org to request an account.

Editing SVG

Some tasks will require that you edit SVG. You are welcome to use any SVG editor you like, but we recommend Inkscape. That said, when saving from Inkscape, please be sure to "save as plain SVG." The default "save" puts extra data into the files which is not needed by Sugar and makes the file size quite large.

Getting help

Got a problem? Ask your mentors, ask other students, or ask the Sugar Labs community.

The Sugar Labs community is large, and there are people who are not mentors in the contest. Mentors are listed. Everyone else you talk with may be a non-mentor.

As part of Sugar Labs community, non-mentors are to treat students in accord with the Code of Conduct, and as if they are new to Sugar Labs.

Students should keep in mind that some people are non-mentors, and cannot see the contest tasks, contest progress, dates, or information about students. When communicating widely, be sure to;

  • introduce yourself, the first time;
  • tell us what your task is, without relying on a link to the task (because we probably can't see it);
  • talk about the task as if you want to do it yourself, not because of the contest; and,
  • defend your technical decisions without using the contest as a defence.

Non-mentors may give good guidance on technical decisions, but bad guidance on how they think a task is judged. Always consult with your mentors as well.

This is a stub for 25+ example tasks new for GCI 2019.

Note, more detailed task descriptions will be available once the contest begins.

Beginner tasks

  1. Install the Sugar development environment by following the instruction at [1].
  2. Install Sugar in a virtual machine.
  3. Install Sugar packages on Ubuntu, Debian, or Fedora.
  4. Install Sugarizer on a Raspberry Pi for use by nearby computers, tablets, or phones.
  5. Create an example program in Turtle Blocks (See [2] for some ideas).
  6. Create an example program in Music Blocks.
  7. Create a simple machine in Physics.

General tasks

  1. Organize a Turtle Art Day (or Music Blocks Day) in your community (Outreach)
  2. Create a 60 second promotional video on Sugar and its community (Outreach)
  3. Host a Question and Answer (Q&A)/Information session about Sugar on Google Hangouts. (Outreach)
  4. DIY Sugar on a Stick||Organize and host a Sugar on a Stick party where you show people how to make their own Sugar on a Stick. (Outreach)
  5. Find an educator who is using open-source educational software to teach. Interview the educator about their experience as an educator and why they are using open-source software to teach. (Outreach)
  6. Write a blog post about your experience as a GCI participant for Sugar Labs. (Outreach)
  7. Create a 10-minute presentation celebrating at least three women within the Sugar community and/or the open-source community at large. (Research/Outreach)
  8. Gather information on who could benefit from using or knowing about Sugar. (Research)
  9. Find the resources that people are using throughout the world to learn about or teach Sugar Activities. (Research)
  10. Find the missing repo: we've lost track of the source repository of some Sugar activities: help us find them (Research)
  11. Wiki cleanup (Documentation)
  12. Music Blocks examples (Documentation/Training)
  13. Write a review about an Activity in Sugar. (Documentation)
  14. Create a unit tests for a JavaScript activity (Quality assurance)
  15. Test old Sugar activities and report any really obvious problems (Quality assurance)
  16. Refactor Turtle graphics to adopt look of Javascript version (Code: Python)
  17. write a Python/GTK version of Music Blocks
  18. Investigate CSound/Python version of Music Blocks (Code: Python)
  19. Resolve an open issue from (Code: Python)
  20. Plugin manager for Turtle JS (Code: Javascript)
  21. Add Lilypond import to Music Blocks (Code: Javascript)
  22. Write a Turtle plugin (Code: Javascript)
  23. Write a extruder in JavaScript to convert from SVG to STL for 3D printing. (Code: JavaScript)
  24. Write a slicer in JavaScript to convert between SL and GCODE for 3D printing. (Code: JavaScript)
  25. Resolve an open issue from (Code: JavaScript)
  26. Port a Sugarizer activity to Sugar (Code: Javascript)
  27. Port an old Sugar activity to the most recent Sugar (Code: Python)

Mentors: please feel free to add more tasks and/or add yourself as a potential mentor to an existing task.

Tasks must fall within one of these five categories: #Documentation/Training; #Outreach/Research; #User Interface; #Quality Assurance; and #Code.


Please note that not all tasks are coding tasks so please consider participating even if you are not a coder (there are research, outreach, design, and documentation tasks as well).
But also note that prior participation in the Sugar Labs community is a requirement for mentoring.

Send an email to one of the Org Admins (this year they are Walter and TBD). You will then receive an invitation by email. Follow the instructions in the email to sign up as a Sugar Labs mentor.

Please add yourself to the list below.
Feel free to add new tasks to the table above.

Depending on the task, we will assign multiple mentors from our various development and support teams.

  • Walter Bender - co-administrator
  • James Cameron - release manager
  • Sumit Srivastava - Mentor for Coding, Design, and QA tasks.
  • Jaskirat Singh - Mentor for Research, Documentation, Design and Testing tasks
  • Vaibhav Aren - Mentor for Coding, Research, Documentation, Design and Testing tasks.
  • Hrishi Patel - Mentor for Coding, Research, Documentation, Design and QA tasks.
  • Amaan Iqbal - Mentor for Coding, Research, Documentation, Design, and Testing Tasks
  • Pratul Kumar - Mentor for Coding, Beginner First Issues, Git and Github, Documentation.
  • Vipul Gupta - Mentor for Research, Coding, Git and GitHub, Documentation, Design tasks.
  • Rishabh Thaney - Mentor for Coding, Research, Documentation, Design and Testing tasks.
  • Ashish Aggarwal - Mentor for Coding, Research, Documentation, Design, and Testing Tasks
  • Favour Kelvin - Mentor for Coding, Research, Documentation and Testing Tasks
  • Freddie Nicholson - Mentor for Coding (Sugarizer/Music Blocks), Research, Design, Documentation and Outreach Tasks