Google Code In 2017

From Sugar Labs
Jump to: navigation, search

This is the project page for the Sugar Labs application to Google Code In 2017. Sugar Labs community members: please feel free to add tasks below. We'll do an edit before final applications are due the fourth week of October 2017.

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.

Details regarding the required forms and paperwork are here: Google Code In 2017/Participate#Students.

Also, you will likely need to set up the Sugar development environment. See for details. Further information about contributing to the project can be found here:

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

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

Setting up the Sugar environment

There are several options for setting up the Sugar environment for development.

  • Install Sugar on Ubuntu, Fedora, or Debian, using apt or dnf;
  • From Windows. macOS or iOS, run Sugar in a virtual machine;
  • Live boot from Sugar on a Stick;
  • or better yet, use Sugar Live Build containing Sugar 0.112, which can be booted from hard drive, flash drive, and optical media, automatically starting Sugar without persistence; or can be installed as a virtual machine, with persistence and password protection, and contains all build dependencies, configured source trees (git clones in /usr/src), and binaries (make install) for Sugar 0.112 (Download from

See also

Getting started with coding in Sugar

Most Sugar development is in either Python or JavaScript.

Please note that you must run pep8 and pyflakes on your code before submitting your patches.

Getting started with GIT

Some knowledge of git is important as your work will be submitted to our git repository ( The basic mechanism is a pull request (PR), which is detailed in [1].

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 (See There are many other guides to GIT as well.

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

Getting started with Sugarizer

Sugar Web Framework is the JavaScript Framework for Sugar [2]. Sugarizer [3] is a subset of Sugar that allow runing activities developed with Sugar Web Framework on any web browser. Sugarizer is also available as Android, iOS, Firefox OS and Chrome Web App.

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

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 [4].
  2. Install Sugar in a virtual machine.
  3. Install Sugar packages on Ubuntu, Debian, or Fedora.
  4. Create an example program in Turtle Blocks (See [5] for some ideas).
  5. Create an example program in Music Blocks.
  6. 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. Investigate Google Fuzzing tool (Research)
  12. Add more synths/sound fonts to Music Blocks (Research)
  13. Design the music equivalent of Turtle Confusion for Music Blocks (Research)
  14. Wiki cleanup (Documentation)
  15. Music Blocks examples (Documentation/Training)
  16. Write a review about an Activity in Sugar. (Documentation)
  17. How should the Sugar UI change to accommodate a small screen? (User interface)
  18. What else should be made easier to customize in Sugar with minimal programming? (User interface)
  19. Create a unit tests for a JavaScript activity (Quality assurance)
  20. Bugzilla clean up (Quality assurance)
  21. Refactor Turtle graphics to adopt look of Javascript version (Code: Python)
  22. Refactor Planet server for Turtle Blocks (Code: Python)
  23. Write a Pinetrest plugin for the Sugar Journal (Code: Python)
  24. Investigate CSound/Python version of Music Blocks (Code: Python)
  25. Resolve an open issue from (Code: Python)
  26. Teach me how to draw activity (Code: Javascript)
  27. Plugin manager for Turtle JS (Code: Javascript)
  28. Improvements to Lilypond interface (Code: Javascript)
  29. Add ABC import to Music Blocks (Code: Javascript)
  30. Add Lilypond import to Music Blocks (Code: Javascript)
  31. Write a Turtle plugin (Code: Javascript)
  32. Visualize turtle movements in Pitch-Time Matrix (Code: Javascript)
  33. Visualize turtle pitch in Music Blocks widget (Code: Javascript)
  34. Write a JavaScript version of Turtle Confusion (Code: JavaScript)
  35. Write a extruder in JavaScript to convert from SVG to STL for 3D printing. (Code: JavaScript)
  36. Write a slicer in JavaScript to convert between SL and GCODE for 3D printing. (Code: JavaScript)
  37. Resolve an open issue from (Code: JavaScript)
  38. Rewrite turtleblocksjs server ( using NodeJS, express ( may be a good module to use (Code: Javascript)

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 refer to Google Code In 2017/Participate#Mentors for details regarding enrolling as a mentor.
Please add yourself to the list below.
Feel free to add new tasks to the table above.

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

  • Walter Bender - co-administrator
  • Ignacio Rodriguez -co-administrator
  • Hrishi Patel
  • Tayba Wasim(Tabs16)
  • Ibiam Chihurumnaya
  • Rishabh Thaney