- Improve and maintain 12 Sugar activities
- Improve and maintain 6 Sugar activities
- Port Sugar and core activities to Python 3
- Maintain/port 12 Sugar activities to FlatPak
- Music Blocks 4 Project Builder Integration
- Music Blocks 4 Widgets Framework
- Music Blocks 4 Programming Framework Enhancements
- Maintenance/bug fixes for Music Blocks 3
- Sugarizer VueJS Core
- Sugarizer Server Testing Improvement
- Sugarizer Word Puzzle and Chart activities
- GTK4 Exploration
- Sugar on Raspberry Pi
Prerequisites
- Experience with Python
- Strong experience with Sugar activities
- Experience with maintaining activities on ASLO and ASLO-v4
Description
Sugar has a lot of activities, with 250+ on GitHub, and more
elsewhere. These have scope for improvement; bugs,
features, updated human translations, and release. This project will involve
working on at least 12 activities to improve them. Students can choose
activities on their own, and are encouraged to select activities which
are either a part of Fructose or have a strong pedagogical value. To
understand how to locate and work on activities, see our guide to
Modifying
Activities
In their proposal, students may mention some of the issues they will work on. Any new feature suggestion should be discussed on GitHub Issues or on the mailing list before being added to a proposal.
Since there are a lot of activities to work on, more than one instance of this project may be selected.
Suggested Issues to work on:
- jukebox-activity: #22 Add collaboration for sharing playlist items
Other issues will have been raised since.
Suggesting or adding features, fixing bugs, or releasing activities will help you to gain experience
Project Length
350 hours
Difficulty
Medium
Coding Mentors
Ibiam Chihurumnaya, Sourabha G
Assisting Mentors
To be added.
Prerequisites
- Experience with Python
- Strong experience with Sugar activities
- Experience with maintaining activities on ASLO and ASLO-v4
Description
Sugar has a lot of activities, with 250+ on GitHub, and more
elsewhere. These have scope for improvement; bugs,
features, updated human translations, and release. This project will involve
working on at least 6 activities to improve them. Students can choose
activities on their own, and are encouraged to select activities which
are either a part of Fructose or have a strong pedagogical value. To
understand how to locate and work on activities, see our guide to
[Modifying
Since there are a lot of activities to work on, more than one instance
of this project may be selected.
Suggested Issues to work on:
- jukebox-activity: #22 Add collaboration for sharing playlist items
Other issues will have been raised since.
Suggesting or adding features, fixing bugs, or releasing activities will help you to gain experience.
Project Length
175 hours
Difficulty
Medium
Coding Mentors
Ibiam Chihurumnaya, Sourabha G
Assisting Mentors
To be added.
Prerequisites
- Experience with Python
- Experience with porting telepathy bindings
- Strong experience with Sugar Desktop and Activities
Description
Support for Python 2 was withdrawn by the Python
Foundation, so we need to finish the move to Python 3. The move was
started in GSoC 2018, and continued in GSoC 2020, but there is still
work to be done. Sugar 0.116 runs on Python 2 or Python 3. Core
activities run on Python 3. Many other activities run on Python 2.
Many regressions have been seen as a result of code not being tested.
We have a Python 3 Porting Guide which describes the process for activities.
Project Task Checklist
- Review the Sugar source code changes since 0.112 that were made for porting to Python 3,
- Design tests and iterate until the tests have sufficient coverage for the code changes identified about,
- Fix regressions in Sugar, the Toolkit, and the Datastore,
- For affected activities, port Telepathy bindings to TelepathyGLib, see Port to TelepathyGLib.
- For affected activities, port to the latest Sugargame or CollabWrapper library,
- Port activities to Python 3, fixing any problems that prevent them from being ported or used,
See GitHub Project Port to Python 3 via six for some open issues and pull requests. Most activities do not have issues. Some activities have problems that prevent them from being ported.
The Telepathy library is used by some activities for network collaboration between Sugar users. The library does not have static bindings for Python 3, so porting Telepathy to the PyGObject binding is a prerequisite, see GitHub Project Port to TelepathyGLib.
Project Length
350 hours
Difficulty
Hard
Coding Mentors
Ibiam Chihurumnaya
Assisting Mentors
To be added.
Prerequisites
- Experience with Python
- Strong experience with Sugar Desktop and Activities
Description
We have a number of Sugar Activities bundled with
Flatpak as a way to reach a broader audience
within the Linux community. We'd like to both keep those activities
up to date and also port more.
Two quite popular acitivities are Pippy and Physics. Both of these activities are using an unsupported version of pygame, so they can no longer be updated. The first goal, then, of this project would be to port these activities to pygame-2.0. Then, repackage them.
From there, we'd love to add more Sugar activities to the Flatpak collection.
It would also be nice to include the physics plugin with the TurtleBlocks Flatpak bundle, since it offers another fun way to create projects for the Physics activity mentioned above.
Project Length
350 hours
Difficulty
Medium
Coding Mentors
Martin Abente
Ibiam Chihurumnaya
Walter Bender
Difficulty: ★ ★ ★ ★ ☆
Project Length: 350 hours
Prerequisites
- Strong experience with TypeScript 4
- Strong experience with JavaScript DOM API, Canvas API
- Strong experience with React Functional Components and Hooks (React 18)
- Understanding of the prototype Project Builder Framework
Description
The objective is to build the new Project Builder Framework for Music Blocks (v4).
The Project Builder is the graphical blocks manager module which can be used to
create Music Blocks programs. There is a prototype in
musicblocks-v4-builder-framework
.
General objectives are:
- Refactor the prototype code
- Integrate it in
musicblocks-v4
- Create a wrapper component Project Builder (builder) in
musicblocks-v4
- Add utilities to the wrapper component so that the Project Builder component can communicate with the Specification and Syntax Tree APIs of the Programming Framework
- Create a Palette (palette) component
Mentors
Assisting Mentors
Difficulty: ★ ★ ★ ☆ ☆
Project Length: 175 hours
Prerequisites
- Good experience with TypeScript 4
- Good experience with React Functional Components and Hooks (React 18)
Description
In Music Blocks, Widgets are tools that expose powerful ideas in music, such as rhythm, mode, temperament, etc. In Music Blocks v3, Widgets are subclessed from a common framwwork. They are launched from the blocks language itself so that Widget parameters can be programmed in the block language too -- although this is feature that adds lots of complexity to the code -- we will not support this in v4). However, a very important feature is that Widgets generate code as an output.
The first order of business is to build a widget framework that involves the main widget window and its paraphernalia, and integration hooks to the Singer API. The individual widgets will be built on top of that.
Priorities for the summer would be:
-
the framework
-
Rhythm Maker (drum machines)
-
Musical Mode
-
Phrase Maker
Mentors
Coding Mentors
Difficulty: ★ ★ ★ ★ ☆
Project Length: 350 hours
Prerequisites
- Strong experience with TypeScript 4
- Experience of writing tests using Jest
- Good understanding of the JavaScript Event Loop
Description
There are three parts to this project:
- Improvements and optimizations to the Program Syntax Framework
- Enhancements and performance optimizations to the Execution Engine
- Addition of Telemetry and Debugging support
We need to revisit some design considerations made while initially building the Program Syntax Framework. This framework is responsible for defining the business logic and rules for units of a program's syntax (literals, expressions, statements, blocks, functions) and maintaining the Syntax Tree that represents a program. There's scope for some work to be done in it's refinement.
The Execution Engine handles the runtime behavior of a program. Currently, it is in a very rudimentary state and is a work-in-progress. The goal is to build a low overhead interpreter that supports pseudo real-time and concurrency. Of course, JavaScript is single-threaded and the JavaScript engine on the browser doesn't support concurrency. So, we'll have to mock a closer behavior with Events.
It is desirable to be able to monitor the runtime states of an executing program. We want to collect execution information, messages, errors while a program is executing, and also control the execution itself. The goal is to add support for the said.
The framework code is contained in github.com/sugarlabs/musicblocks-v4-lib.
Mentors
Assisting Mentors
Prerequisites
- Strong experience with JavaScript
- Experience with basic music concepts
Description
We are largely in maintenance mode for Music
Blocks 3.0 while we
continue to move forward on Musick Blocks
4.0. That said, there
are a number of small bugs/regressions that would be worth fixing.
See low-hanging fruit for a list of issues we'd like to close out during GSoC 2023.
Project Length
150 hours
Difficulty
Low
Coding Mentors
Walter Bender
Devin Ulibarri
Prerequisites
- Experience with JavaScript/HTML5 development
- Experience with Vue.js framework development
- Good understanding of Sugarizer Core architecture
Project length
175 hours
Difficulty: ★ ★ ☆ (medium)
Description
Sugarizer Core UI rely on EnyoJS, a deprecated frameworks initially developed for WebOS.
Last year a GSoC project built the basic components stack of the Sugarizer UI (see here).
The idea of this new project is to reimplement a part of Sugarizer Core UI using VueJS components.
Tasks
Use Sugarizer VueJS components and Sugarizer Server API to implement screens:
- First screen
- Login
- Home view
- List view
- Settings
Each screen should integrate unit testing and code coverage.
First steps to starts
- Complete both the Sugarizer Vanilla Javascript activity development tutorial and the Sugarizer Vue.js activity development tutorial.
- Explore the VueJS Sugarizer UI components and try to use it in a web page.
- Read and test the L10N study here because the first step of the project will be to create a localization component.
Mentor
Lionel Laské
Prerequisites
- Experience with JavaScript/HTML5 development
- Experience with node.js and EJS framework
- Experience with unit testing tools
Project length
175 hours
Difficulty: ★ ★ ☆ (medium)
Description
This project aims to increase the quality of Sugarizer Server. It consists in improving the coverage of unit tests and adding interface tests but also in making some evolutions of the UI.
Tasks
- Improve unit testing: define real use case, implement new tests and ensure database is clean at the end of unit testing
- Improve test coverage: add new test to improve test coverage ratio
- Add some UI tests using Selenium testing tool
- Add a Github action to launch unit testing for each new commit on dev branch #293
- Improve UI experience:
- Replace Bootstrap tour by IntroJS in tutorial #363
- Fix next page button in users/assignment view don't take into account search criteria #364
- Add users filtering while exporting #313
- Improve create assignment form: add a search activity in journal feature #365
- Add an export button to assignment deliveries #366
- Add a recent assignment deliveries widget in teacher home screen #367
First steps to starts
- Install Sugarizer Server and dashboard
- Create different Sugarizer users/teachers/classrooms and see how the dashboard work
- Play with current unit testing and propose improvement
- Study the source code of dashboard, try to fix bug or, propose improvement
- Learn how Selenium works and propose how it could be use to test Sugarizer Server dashboard UI
Mentor
Nikhil Mehra
Jaikishan Brijwani
Prerequisites
- Experience with JavaScript/HTML5 development
- Experience with Vue.js framework development
- Experience with ReactJS framework development
- Good understanding of Sugarizer Core architecture
Project length
175 hours
Difficulty: ★ ★ ☆ (medium)
Description
The goal of this project is to develop new Sugarizer activities asked by teachers from Sugarizer deployments.
Specifically, the goal of this project is to:
- Develop a new Chart activity
- Add a new template Word Puzzle for Exerciser activity
Tasks
Chart Activity
The Chart activity will be inspired by the Sugar Chart activity.
The detailed features will be discussed with the project mentor but the new activity will at least reproduce current features of the activity and add new features (share the activity, export chart as image, ...).
Word Puzzle template
The new template Word Puzzle in Exerciser activity will enable a teacher to create word puzzles Exercise by inputting custom words on the go during a lesson and have the learners practice.
The new template will allow to type words by text, images, sounds, speech or videos. It should work with the mouse and on touch devices.
The detailed features will be discussed with the project mentor but the new template will reproduce current features (edit, play, share, view results, convert to evaluation, ...) of other templates in Exerciser.
It's possible to take inspiration for this new template from Learning Apps web site which propose a Word Puzzle template too.
First steps to starts
- Complete both the Sugarizer Vanilla Javascript activity development tutorial and the Sugarizer Vue.js activity development tutorial.
- Study the source code of the Exerciser activity, try to fix bug or propose improvement
- Install Sugar and the Sugar Chart activity and play with it to understand its current features.
Mentor
Lionel Laské
Prerequisites
- Experience with C
- Experience with Python
- Experience with GTK
- Good understanding of Sugar Core architecture
Project length
350 hours
Difficulty:
Hard
Description
Sugar 0.120 runs on GTK3 and needs to be ported to GT4, we need to port Sugar and it's core activities to support GTK4 before GTK3 gets to its EOL.
Project Task Checklist
- Migrate minimal sugar-toolkit-gtk3 components to support Hello World activity, in particular the activity and graphics classes.
- Migrate Hello World activity.
- Document migration strategy based on extending any existing upstream GTK3 to GTK4 porting documentation.
- Migrate remaining toolkit components.
- Extend Hello World to use remaining toolkit components, and rename as a Toolkit Test activity,
- Migrate Sugar.
- Migrate the Fructose activity set, as time permits.
Steps to start
- Plan migration.
- Setup a live build development environment.
- See the GTK4 migrating doc.
Coding Mentors
Ibiam Chihurumnaya
Prerequisites
Project length
175 hours
Difficulty
Easy
Description
Sugar runs on RPi and we should take advantage of that to reach the
Maker community. This project involves ensuring that Sugar runs w/o
any issues; that it is packaged in a way that is suiable for inclusion
on the Raspberry Pi operating system images.
Also, there are any number of Sugar activities that could be enhanced by
knowing some of the details of the RPi, such as Turtle Blocks,
Measure, and Pippy, all of which could be tailored to take advantage
of the sensors available on RPi.
Mentor
Walter Bender
Backup mentor
Alex Perez
Above are a list of ideas we've planned for GSoC 2023 projects. If you have any ideas which can be useful to us, but are not in the list, we'd love to hear from you. You need not be a potential student or a mentor to suggest ideas.
- Does it fill an empty pedagogy niche in the activity set for Sugar or Sugarizer,
- Does it increase quality of our software products (Sugar, activities, Music Blocks, or Sugarizer),
- Does it not involve any project infrastructure, e.g. not another app store, web site, or developer landing page,
- Do we have a developer now who would be willing and able to do it if a student was not available, and who can promise to do it if a student is not selected; these are shown as a coding mentor,
For each idea, we must have offers from one or more coding mentors willing and able to assist students with coding questions.
Requirements for a coding mentor are a demonstrated coding ability in the form of contributions of code to Sugar Labs.
Mentors for a project will be assigned after proposals are received.
mentors who do not code willing to assist students in various other ways, such as gathering requirements, visual design, testing, and deployment; these are shown as an assisting mentor.
The only requirement for an assisting mentor is knowledge of the project.
Mentors for a project will be assigned after proposals are received.
Everyone else in Sugar Labs may also be involved with these projects, through mailing lists, Wiki, and GitHub.
The difference between a mentor and everyone else, is that a mentor is obliged to respond when a student has a question, even if the answer is "I don't know."
When a mentor receives a question for which the best forum is everyone else, then they are to respectively redirect the student to ask everyone else. See Be flexible and When you are unsure, ask for help in our Code of Conduct.
For some ideas, there is a list of 'Suggested issues to work on'. These may help you to get familiar with the project. The more you work on these issues, the more experienced you will be for the project. However, this is not a strict list. You should try and explore other issues as well.