This is the project page for the Sugar Labs application to Google Code In 2015. Sugar Labs community members: please feel free to add tasks below. We'll do an edit before final applications are due the first week of November 2015.
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.
https://developers.google.com/open-source/gci/resources/contest-rules
Please see the Contest Rules for Eligibility and Registration process.
https://developers.google.com/open-source/gci/resources/contest-rules
Details regarding the required forms and paperwork are here: Google Code In 2015/Participate#Students.
Also, you will likely need to set up the Sugar development environment. See http://developer.sugarlabs.org/dev-environment.md.html for details. Further information about contributing to the project can be found here: http://developer.sugarlabs.org/
Please don't hesitate to ask questions on our irc channel (#sugar on irc.freenode.net) or on the sugar-devel list: sugar-devel AT lists.sugarlabs DOT org
Why we are 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
[See https://developers.google.com/open-source/gci/resources/getting-started]
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:
- Documentation
- 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.
- Research
- 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.
- Outreach
- 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.
- Training
- 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.
- Other
- 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.
Collaboration
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.
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
For some basics about the project, see Chapter 4 of Learning to Change the World.
Getting started with coding
Sugar development is in either Python or Javascript.
- You will need knowledge of Python and GTK (See http://python-gtk-3-tutorial.readthedocs.org/en/latest/);
- or Javascript/HTML5;
- and then the basic of Sugar development (See http://www.flossmanuals.net/make-your-own-sugar-activities/);
- and to have a Sugar development environment running (See http://developer.sugarlabs.org).
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 (https://github.com/sugarlabs). The basic mechanism is a pull request (PR), which is detailed in [1].
GitHub provides a tutorial (See https://try.github.io/levels/1/challenges/1), although there are many others as well.
Note that our bug tracker is http:bugs.sugarlabs.org.
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.
Tasks
Note: This is our preliminary list of tasks. We can add more as the contest progresses.
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.
Beginner Tasks
We have several tasks that are targeting people new to Sugar and Sugar development. You are only allowed to complete two beginner tasks.
Title | Description | Hours | Mentor | Tag |
---|---|---|---|---|
Install the Sugar development environment | Following the instruction at [4], set up the Sugar development environment. Submit a screen-shot of the development environment running to complete this task. You can get help on our irc channel should you run into any difficulties. | 48 | all | beginner |
Install Sugar in a virtual machine | If your intention is to focus on documentation and training or outreach, then you may want to install Sugar in a virtual machine. Following the instructions at [5][6][7], set up the Sugar development environment. Submit a screen-shot of the development environment running to complete this task. You can get help on our irc channel should you run into any difficulties. | 48 | all | beginner |
Create an example program in Turtle Blocks | We distribute examples with the Turtle Blocks programming environment. Create your example -- some art, some geometry, some multimedia, a simple game -- to be included with the package. Deliverable is a Turtle Blocks project file to be reviewed by Sugar Labs designers and educators. (Use either the Python version bundled with Sugar or the Javascript version at Turtle Blocks JS) | 48 | all | beginner |
Create an example program in Music Blocks | We distribute examples with the Music Blocks programming environment. Create your example -- some music (and art) -- to be included with the package. Deliverable is a Music Blocks project file to be reviewed by Sugar Labs designers and educators. | 48 | all | beginner |
Create a simple machine in Physics | We distribute examples with the Physics Activity. Create a simple machine we can include in the examples collection -- some interesting mechanical device. Deliverable is a Physics activity project file to be reviewed by Sugar Labs designers and educators. | 48 | all | beginner |
Documentation/Training
Tasks related to creating/editing documents and helping others learn more
Title | Description | Hours | Mentor | Tag |
---|---|---|---|---|
Update the Sugar Labs entry in Wikipedia | The Sugar Labs entry in Wikipedia could use some TLC. Please bring it up to date. | 48 | Walter | Documentation |
Update the Sugar Labs wiki page on git | The Activity Team/Git Tutorial is out of date: we have migrated to GitHub. Please update the page to reflect the GitHub workflow. See http://developer.sugarlabs.org/contributing.md.html for more details | 48 | Walter | Documentation |
Turtle Blocks Programming Guide | Extend the Guide to Programming with Turtle Blocks to include more examples. | 48 | Walter | Documentation |
Music Blocks Programming Guide | Extend the Guide to Programming with Music Blocks to include more examples. | 48 | Walter | Documentation |
Turtle Blocks Classroom Guide | Write a guide on how to use Turtle Blocks in the classroom -- a manual for teachers who might want to engage in programming. Please consult with a classroom teacher when creating the guide. | 96 | Walter | Documentation |
Music Blocks Classroom Guide | Write a guide on how to use Music Blocks in the classroom -- a manual for teachers who might want to engage in programming with Music. Please consult with a music teacher when creating the guide. | 96 | Walter | Documentation |
Sugarizer Server API Documentation | Write a documentation for the REST API for Sugarizer Server. Include some GET/POST/DELETE sample inside | 24 | Lionel | Documentation |
Sugarizer Server Collaboration Tutorial | Write a tutorial on how to connect a Sugarizer Client to a Sugarizer Server and how to use it to do Journal sharing and collaboration | 16 | Lionel | Documentation |
Sugarizer wiki page | Write a Sugarizer page in the SugarLabs wiki | 16 | Lionel | Documentation |
For information about how to create help pages for activities
http://wiki.sugarlabs.org/go/Activities/Help/Contribute
https://github.com/godiard/help-activity/blob/master/source/restructuredtext.rst
https://github.com/godiard/help-activity/blob/master/source/collaborating.rst
Outreach/Research
Tasks related to community management, outreach/marketing, or studying problems and recommending solutions
Title | Description | Hours | Mentor | Tag |
---|---|---|---|---|
Turtle Art Day | Organize a Turtle Art Day in your community. Details at [8] | 96 | Walter | Outreach |
Promo Video | Create a 60 second promotional video on Sugar and its community. | 96 | Mariah | Outreach |
Hangout Q&A | Host a Question and Answer (Q&A)/Information session about Sugar on Google Hangouts. Invite friends, family, peers, as well as academic and community leaders. | 96 | Mariah | Outreach |
Local Lab Wiki | Create/update a "Local Lab" page for your area/country. Fill in the page with information on the Sugar community in your area. This could include contact information, mailing lists, events and any other information that may be relevant. | 96 | Mariah | Research |
How-To Guide | Create a guide for how to host your own DIY Sugar on a Stick party. The guide should include at least two promotional item designs (like a sticker, brochure, flyer). Feel free to change the name to something else. | 96 | Mariah | Outreach |
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. Then, hold a workshop on the basics of using Sugar. Take pictures to document the experience. Post a blog about it. | 96 | Mariah | Outreach |
Potential Users | Gather information on who could benefit from using or knowing about Sugar. Look at non-profit organizations, academic institutions, the home-school community. Build a database including contact information, website URLS, social media profiles, and any other relevant information. | 96 | Mariah | Research |
Sugar Tools & Resources | Find the resources that people are using throughout the world to learn about or teach Sugar Activities. This can include manuals, teacher guides, YouTube videos, blogs, etc. Document what type of resource it is, the URL for the resource, the target audience of the resource and whether it is up-to-date. | 96 | Mariah | Research |
Introduce Yourself | Write a blog post about why you are participating in Google Code-In, what you hope to learn from the GCI and how Sugar Labs can help you. Include a picture. Share blog post through social media. | 48 | Mariah | Outreach |
Interview a GCI Peer | Interview another Sugar Labs GCI participant. Ask them questions about how they are selecting/completing tasks, any successes/struggles they are having, etc. Post on participant blog. Share blog post through social media. | 48 | Mariah | Outreach |
Interview an Educator | 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. Post about it on the blog, include a picture. Share the blog post through social media and with the educator. | 48 | Mariah | |
Review an Activity | Write a review about an Activity in Sugar. Explain how you use it, what kind of project you could do with it, any bugs it might have, etc. Post your review. The review can be a video review or a written review with screenshots. Share the blog post through social media. | 48 | Mariah | Outreach |
Women in the Sugar Community | Create a 10-minute presentation celebrating at least three women within the Sugar community and/or the open-source community at large. Write a blog post about what you learned when making this presentation and include a link to the presentation. | 48 | Mariah | Outreach |
Wrap-Up | Write a blog post about your experience as a GCI participant for Sugar Labs. Share your thoughts on what was successful and what can be improved for next year's participants. Feel free to include pictures, videos, links to work that you are most proud of. Share the post through social media. | 48 | Mariah | Outreach |
User Interface
Tasks related to user experience research or user interface design and interaction
Title | Description | Hours | Mentor | Tag |
---|---|---|---|---|
Icon design for Music Blocks | The icons used for the main toolbar in Music Block don't "sing" to me. This task is to design better icons both in terms of expressing the intention of the button and visual engagement of the user. | 72 | Walter | UI, design |
Save file design for Music Blocks | Since Music Blocks programs don't always create artwork, when you save the project, there may be no corresponding image to associate with it. This task is to design a default graphic to use in such cases. | 72 | Walter | UI, design |
Classroom collaboration | Sugar provides tools for sharing and collaborating among students, e.g., peer editing of texts, chat, group programming, etc. Survey the list of collaboration-enabled activities and categorize them by whether they are learning utilities, classroom management utilities, communication, games, etc. | 72 | Walter | UI, pedagogy |
Classroom management 1 | Sugar provides only a few tools for classroom management, e.g., the Share With Teacher webservice. Survey classroom services that run either as web services or native in desktop environments. | 72 | Walter | UI, pedagogy |
Classroom management 2 | Sugar provides only a few tools for classroom management, e.g., the Share With Teacher webservice. Which of the results from the Classroom management 1 task would be useful to incorporate into the Sugar ecosystem? Evaluation should include s description of the service and a sketch of how the user interaction would work. | 72 | Walter | UI, pedagogy |
Sugar on a small screen | Sugar was originally designed as a desktop environment for small computers. But these days, many children have access to smart phones rather than computers. This task is to make some sketches as to how Sugar might be redesigned for a smart phone form-factor. A series of annotated sketches should be made as part of completing this task. | 72 | Walter | UI |
Programming on a small screen | We put an emphasis on programming in Sugar. One popular programming environment is Turtle Blocks. Recently we made a Javascript version that can run in a browser (and hence on a smart phone). How should the UI change to accommodate that form-factor? A series of annotated sketches should be made as part of completing this task. | 72 | Walter | UI |
End-user customization | We try to encourage our users to re-imagine Sugar as they'd like it. Users can change the icon layout, the background screen, and the XO avatar. What else should be made easier to customize with minimal programming? | 72 | Walter | UI |
Sugarizer marketing web page | Create a marketing web page to explain what is Sugarizer and replace the current one | 40 | Lionel | UI |
Quality Assurance
Tasks related to testing and ensuring code is of high quality.
Title | Description | Hours | Mentor | Tag |
---|---|---|---|---|
Behavior diff for Turtle Blocks JS | Turtle Blocks JS is a Javascript port from the Python version of the activity. The goal of this task is to document any differences in behavior between the two versions. | 72 | Walter | QA |
Unit tests for JS activities | We have no unit tests for our Javascript activities. This task is to investigate approaches to unit testing in Javascript | 72 | Walter | QA |
Test Sugar on a Stick | Help test the latest Sugar on a Stick on Fedora (F21). See [9], [10] #fedora-qa (freenode IRC). Deliverable is a report of the major Sugar features, e.g., desktop, journal, collaboration, and the core activities, e.g., Write, Browse, Turtle, Chat, Speak, etc. | 48 | Satellit | QA, SoaS |
Interview a teacher | Ultimately the quality of our work is determined by our end users. Interview a classroom teacher who is using Sugar and solicit feedback about what works, what doesn't. | 72 | Walter | QA |
Interview a student | Ultimately the quality of our work is determined by our end users. Interview a student who is using Sugar in school and solicit feedback about what works, what doesn't. | 72 | Walter | QA |
Code
Tasks related to writing or refactoring code
Title | Description | Hours | Mentor | Tag |
---|---|---|---|---|
Sugar Bug 3921 Journal palette is not updated | Ticket 3921 Journal palette is not updated when I stay in the same column | 72 | Martin Abente | Code, Python |
Sugar Bug 4172 Set color of insensitive buttons | Ticket 4172 The greyed-out "Next" button on the intro screen comes up with the text in the same colour as the background, i.e. you cant see it. | 72 | Martin Abente | Code, Python |
Sugar Bug 4461 "Volume busy" dialog appear in Sugar | Ticket 4461 Trying to unmount a pendrive, a "Volume is busy" dialog appear. | 72 | Martin Abente | Code, Python |
Sugar Bug 4613 Neighborhood view should respect max_participants limit | Ticket 4613 max_participants should limit the number of joiners. If the maximum has been reached, joining should be disabled and some feedback given to the user. It would also be nice if the icon indicated (with a badge, perhaps) the maximum. | 72 | Martin Abente | Code, Python |
Sugar Bug 4894 Frame settings doesn't allow option other that edge delay = 0 | Ticket 4894 | 72 | Martin Abente | Code, Python |
Sugar Bug 381 Neighbourhood view icons should be placed in a spatially repeatable way | Ticket 381 Right now the neighbourhood view is disappointingly random | 72 | Martin Abente | Code, Python |
Sugar Bug 2478 Buttons unresponsive when launching Sugar | Ticket 2478 Buttons unresponsive when launching Sugar until Journal appears on Home View | 72 | Martin Abente | Code, Python |
Sugar Bug 3006 Ad-hoc network icon mixup | Ticket 3006 | 72 | Martin Abente | Code, Python |
Sugar Bug 3119 Check if the connection has been established | Ticket 3119 | 72 | Martin Abente | Code, Python |
Sugar Bug 3143 Remove icon-slicer dependency | Ticket 3143 | 72 | Martin Abente | Code, Python |
Sugar Bug 3708 Sugar doesn't DHCP connecting to ad-hoc wifi point | Ticket 3708 | 72 | Martin Abente | Code, Python |
Sugar Bug 3831 Frame animation has regressed | Ticket 3831 | 72 | Martin Abente | Code, Python |
Sugar Bug 4449 Language names are not translated | Ticket 4449 "Spanish" and other language names are not translated in My Settings language section | 72 | Martin Abente | Code, Python |
Sugar Bug 4693 Send to friend not working | Ticket 4693 | 72 | Martin Abente | Code, Python |
Turtle Confusion in Javascript | Turtle Confusion presents 40 shape challenges to the learner that must be completed using basic Logo-blocks. The challenges as based on Barry Newell's 1988 book, Turtle Confusion: Logo Puzzles and Riddles. This task is to implement Turtle Confusion within the framework of the JavaScript version of Turtle Blocks. | 72 | Walter | Code, JavaScript |
Music Blocks: Lilypond CHORDS bug | Issue 70 Currently no Rhythmic Value generated for Chords | 72 | Walter | Code, JavaScript |
Music Blocks: Rhythmic Dot bug | Issue 69 Dot is Calculating Rhythmic Values Incorrectly | 72 | Walter | Code, JavaScript |
Music Blocks: Matrix style 2 | Issue 68 We need a "Sticky" First Column for the Matrix | 72 | Walter | Code, JavaScript |
Music Blocks: Matrix style 1 | Issue 67 Columns are not Spacing Correctly in Matrix | 72 | Walter | Code, JavaScript |
Music Blocks: Repeat Block bug | Issue 66 Repeat is creating parsing problem for TUPLETS in Matrix Generation | 72 | Walter | Code, JavaScript |
Music Blocks: missing chunks | Issue 65 Chunks sometimes do not show up in Palette | 72 | Walter | Code, JavaScript |
Music Blocks: Lilypond TUPLET bug 2 | Issue 64 Scaling issue | 72 | Walter | Code, JavaScript |
Music Blocks Lilypond TUPLET bug 1 | Issue 63 Calculating sixteenth note triplets (and greater?) as "3/4" | 72 | Walter | Code, JavaScript |
Music Blocks Play Backwards Feature | Issue 58 describes a new feature: play the notes backward. | 72 | Walter | Code, JavaScript |
Music Blocks Export Matrix as HTML file Feature | Issue 57 describes a new feature: export the note selection matrix as HTML. | 72 | Walter | Code, JavaScript |
Music Blocks Matrix highlight Bug | Issue 56 describes a bug regarding highlighting the matrix | 72 | Walter | Code, JavaScript |
Music Blocks Lilypond output | Issue 55 More Robust Aggregation for LilyPond output design enhancement lilypond | 72 | Walter | Code, JavaScript |
Music Blocks Parsing voices | Issue 53 Enhancement to Lilypond output: parsing voices when note values are simultaneous | 72 | Walter | Code, JavaScript |
Music Blocks Default Tempo enhancement | Issue 52 Reset tempo on clear | 72 | Walter | Code, JavaScript |
Music Blocks Android | Issue 51 does Tonejs work on Android? is there an alternative? | 72 | Walter | Code, JavaScript |
Music Blocks Lilypond Save Button | Issue 50 Save to Lilypond button design enhancement | 72 | Walter | Code, JavaScript |
Music Blocks timing drifts | Issue 49 We need a realtime clock | 72 | Walter | Code, JavaScript |
Music Blocks Planet graphics | Issue 44 Add some graphic for the planet upload/download | 72 | Walter | Code, JavaScript |
Music Blocks Safari download | Issue 37 Safari does not "download" the .tb files, it just opens a new window with the code in it. | 72 | Walter | Code, JavaScript |
Music Blocks block highlighting is inconsistent | Issue 32 Notes stay lit up during debug mode. | 72 | Walter | Code, JavaScript |
Music Blocks Invert Pitches Feature | Issue 30 Invert pitches clamp based on pitch interval | 72 | Walter | Code, JavaScript |
Music Blocks Skip Feature | Issue 29 Play every nth note enhancement | 72 | Walter | Code, JavaScript |
Music Blocks Transposition by Ratio | Issue 28 Transposition by Ratio | 72 | Walter | Code, JavaScript |
Music Block Matrix enhancements | Issue 27 User Interaction for Matrix Improvement design enhancement | 72 | Walter | Code, JavaScript |
Music Blocks playback notes slowly | Issue 22 Add slow playback step-by-step mode | 72 | Walter | Code, JavaScript |
Music Blocks Synth selection | Issue 19 Add support for voices/instruments/synths | 72 | Walter | Code, JavaScript |
Music Blocks Build Newton's color scheme demo | Issue 17 Program a demo of Newton's Color/Music dualilty | 72 | Walter | Code, JavaScript |
Music Blocks Volume enhancement | Issue 15 Make volume logarithmic | 72 | Walter | Code, JavaScript |
Music Blocks Restore matrix | Issue 13 Restore selected blocks in Matrix | 72 | Walter | Code, JavaScript |
Add collaboration to LOL Game | LOL Game is a small sample of JavaScript activities in Sugar-Web, add Sugarizer presence API to play the game with two player | 40 | Lionel | Code, JavaScript |
Unsorted tasks
Sugar enhancements from bugs.sugarlabs.org
Each of these open tickets is potential task-worthy.
Ticket | Description | Type | Component |
---|---|---|---|
1646 | No way to force-close (kill) an activity | enhancement | Sugar |
Sugar bugs from bugs.sugarlabs.org
Each of these open tickets is potential task-worthy.
Ticket | Description | Type | Component |
---|---|---|---|
4307 | clipboard.set_with_data/set_with_owner is not introspectable | defect | Sugar |
Activity enhancements from bugs.sugarlabs.org
Each of these open tickets is potential task-worthy.
Ticket | Description | Component |
---|---|---|
758 | Port to new tube API | Read |
Mentors
- NOTES TO MENTORS
- Please refer to Google Code In 2015/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 - also org admin for GCI
- Sam Parkinson
- Ignacio Rodriguez
- German
- Amit
- Martin Abente
- Mariah Noelle Villarreal
- Gary Servin Cardozo
- Rajul Srivastava
- Julio Daniel Reyes
- Arturo Volpe
- Lionel Laské