- Refactor the chatbot in the Speak Activity to use AI
- Add an AI chatbot to the Chat Activity
- Add AI-assistant to the Pippy Activity
- Add AI-assistant to the Write Activity
- Refactor the Infoslicer Activity to generate plain-language summaries
- Add real-time collaboration to Music Blocks
- Musical ideation through Generative AI
- Make your own Lesson Plan for Music Blocks
- Musical creation and transcription assistance via generative AI
- Music Blocks 4 Project Builder Integration
- Music Blocks 4 Programming Framework Enhancements
- Maintain/port 12 Sugar activities to FlatPak
- Sugarizer VueJS App
- Sugarizer 3D Volume activity
- Sugar on Raspberry Pi
- Math Games
- GTK4 exploration
Prerequisites
- Experience with Python
- Experience with Sugar activities
- Experience with LLMs/Chatbots
Description
The Speak Activity is one of most popular Sugar activities. It allows someone just beginning to familiarize themselves with reading to interact with synthetic speech. It has both chat and chatbot capabilities, so that learners can share what they type with others, often using invented spelling. It would be a nice improvement if there were a chatbot option to allow a learner to have a conversation with a more modern chatbot -- LLM-based. This would contextualize the learner's experience with writing -- a tool for both self express and communication.
The project would entail both enabling the LLM chatbot and doing some tuning in order to accommodate invented spelling. Finally, it will be important to create the proper persona, in this case, an adult explaining to a young child.
Project Length
175 hours
Difficulty
Medium
Coding Mentors
Ibiam Chihurumnaya
Assisting Mentors
Walter Bender
Prerequisites
- Experience with Python
- Experience with Sugar activities
- Experience with LLMs/Chatbots
Description
The Chat Activity is an interactive chat program. The goal of this project is to add a chatbot that can be engaged as part of the conversation. The chatbot must be tuned to match the age of our learners, which skews younger than the typical chatbots, so some tuning may be necessary.
Project Length
175 hours
Difficulty
Medium
Coding Mentors
Ibiam Chihurumnaya
Assisting Mentors
Walter Bender
Prerequisites
- Experience with Python
- Experience with Sugar activities
- Experience with LLMs/Chatbots
Description
Pippy is the Sugar "learn to program in Python" activity. It comes with lots of examples and has sufficient scaffolding such that a learner could modify an existing Sugar activity or write a new one. The goal of this project is to add "co-pilot"-like assistance to Pippy. A learner should be able to ask the AI to provide example Python code to help them navigate the language and explore possibilities in a more open way than the collection of Pippy examples affords. (The Pippy examples are geared towards activity development, which is largely how to navigate the basics of the Sugar toolkit and some GTK basics. This would be much broader in scope.)
The challenge, beyond the plumbing, is to design and implement a sensible workflow such that the AI is helpful but not in the way.
Project Length
350 hours
Difficulty
High
Coding Mentors
Ibiam Chihurumnaya
Assisting Mentors
Walter Bender
Prerequisites
- Experience with Python
- Experience with Sugar activities
- Experience with LLMs/Chatbots
Description
Sugar pioneered peer editing in its Write activiy. However, the Write Activity has never had any serious support for grammar correction (just spell check) and none of the more recent developments around AI-assisted writing. The goal of this project is to add AI-assistance to the writing process: both in the form of providing feedback as to what has been written and making suggestions as to what might be written.
The challenge will be both in terms of workflow integration and UX.
Project Length
350 hours
Difficulty
High
Coding Mentors
Walter Bender
Assisting Mentors
Ibiam Chihurumnaya
Prerequisites
- Experience with Python
- Experience with Sugar activities
- Experience with LLMs/Chatbots
Description
The Infoslicer Activity is designed to help teachers extract content from the Wikipedia in order to create lesson plans. This is currently a manual, extractive process. It is well suited to generative AI. The goal would be to have a teacher type in a theme for a lesson and have the AI create a simple lesson plan, which the teacher can then edit.
The biggest challenge to summarization using generative AI is hallucinations. A work-around for this is to include a validation step that surfaces evidence (or lack of evidence) for each assertion in the lesson plan. This will introduce some workflow and UX challenges.
Project Length
350 hours
Difficulty
High
Coding Mentors
Walter Bender
Assisting Mentors
Ibiam Chihurumnaya
Prerequisites
- Experience with Python
- Experience with Sugar activities
- Interest in math puzzles and games
Description
While Sugar has lots of activities, you can never have enough math games and puzzles. There is a great website with lots of ideas (See https://www.cut-the-knot.org/) for Sugar acitvities. This project (either medium or large) would be to develop 4 to 8 new activities based on some of Bogomolny's ideas.
Specifically, we are intereted in these games:
- Lewis Carroll's Game of Logic
- Pascal's Triangle
- Nim
- The Candy Game
- Number Guessing Game
- Latin Squares
- 3 Utilities Puzzle
- Goat Cabbage Wolf
In the proposal, please mention some specific ideas for games.
Project Length
350 hours
Difficulty
Medium
Coding Mentors
Ibiam Chihurumnaya
Assisting Mentors
Walter Bender
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.
We'd love to add more Sugar activities to the Flatpak collection, a search for sugar on flathub shows we have about 27 activities on flathub and we'd like to increase that number.
We have a guide that shows you how to port Sugar activities to Flatpak, you'll also need to submit the activity to flatpak.
Project Length
350 hours
Difficulty
Medium
Coding Mentors
Martin Abente
Ibiam Chihurumnaya
Walter Bender
Prerequisites
- Experience with JavaScript
Description
The Python version of Turtle Blocks has a collaboration mode, where the learner can share stacks of code and, in real time, share graphical output. This project is to add similar functionality to Music Blocks. Following the pattern of Turtle Blocks collaboration is pretty straight-forward. What makes this project difficult is that Music Blocks will require a higher degree of synchronization.
Specifically, we would be working toward accomplishing the following:
- Server-side data storage and proxying
- API to syncrhonize Music Blocks projects across browsers
- Features to perform projects in sync, in real time, with low latency
Project Length
350 hours
Difficulty
High
Coding Mentors
Walter Bender
Devin Ulibarri
Prerequisites
- Experience with JavaScript
- Experience with musical composition
- Experience with large language models (LLMs)
Description
We would like to deploy generative AI in support of musical composition. The basic idea is to use AI to generate possible modifications of a phrase (or phrases) generated by the user. In other words, the user would start the composition and the AI would then present different possibilities for enriching the composition to which the user would react and further enhance.
Specifically, we would be working toward accomplishing the following:
- Tune open source LLM to create the ideal output for beginners, and for learning
- Create an API that translates LLM musical data to Music Blocks data, so that the learner has something to work from
- Create a in-app framework for evaluating the AI output, so that the user has several plausible choices and, if they so choose, grade the choices to be used for further improvement
Project Length
350 hours
Difficulty
High
Coding Mentors
Walter Bender
Devin Ulibarri
Prerequisites
- Experience with JavaScript
- Experience with large language models (LLMs)
Description
We would like to deploy generative AI in support of converting Music Blocks projects into lesson plans. An LLM would be used to convert the musical and computational ideas expressed in a project to auto-generate the first draft of lesson plan.
Some examples of lesson plans can be found here and here.
Specifically, we would be working toward accomplishing the following:
- Create scripts that can parse Music Blocks JSON data into data analyzable by LLM
- Input existing lesson plan data into LLM
- Tune LLM to create useful lesson plans
Project Length
175 hours
Difficulty
Medium
Coding Mentors
Walter Bender
Devin Ulibarri
Prerequisites
- Experience with JavaScript
- Experience with musical theory/composition
- Experience with large language models (LLMs)
Description
Many people have musical ideas, but struggle to articulate them. Generative AI has promise to help people find a way to transcribe their musical ideas. The goal would be to create a generative AI tool that assists users such that they could sing (or perform on an instrument) their idea -- as well as speak or type instructions without music -- and be presented with some possible transcriptions of their idea, output as Music Blocks code so that it may be further refined and manipulated.
Specifically, we would be working toward accomplishing the following:
- Create an in-app interface for a user to record or upload an audio file of their musical sample
- Create a server-side LLM service that analyzes the sound file and outputs into Music Blocks data
- Create an API to communicate data between the server and the client
Project Length
350 hours
Difficulty
High
Coding Mentors
Walter Bender
Devin Ulibarri
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 complete the 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. We started working on in last year, and the goal is to complete and integrate it with the application.
General objectives are:
- Create a design document for the WIP
- Complete the incomplete pieces
- 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: 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
- Experience with C
- Experience with Python
- Experience with GTK
- Good understanding of Sugar Core architecture
Project length
350 hours
Difficulty:
High
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
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 first
screens of Sugarizer Core using VueJS.
The idea of this new
project is to finalize the implementation to have a really working
Sugarizer VueJS App.
Tasks
- Implement remaining screens:
- Neighborhood view
- Journal View
- Implement the tutorial
- Port the Electron part to be able to work with the new implementation
- Build Sugarizer for Android and test the new implementation to ensure it works
First steps to starts
- Complete both the Sugarizer Vanilla Javascript activity development tutorial and the Sugarizer Vue.js activity development tutorial.
- Install the current Sugarizer Vue.js implementation from branch feature/v2:
- See README to understand how to install and run it
- Test it from file://
- Test if from a local Sugarizer Server
- Identify differences with the legacy Sugarizer implementation
- Check for bug or for unexpected behavior
- Suggest improvement or fix
- Install and test Sugarizer APK Builder to generate Sugarizer for Android.
Mentor
Lionel Laské
Prerequisites
- Experience with JavaScript/HTML5 development
- Experience with Vue.js framework development
- Understanding of 3D graphics and experience with a 3D engine
Project length
175 hours
Difficulty: ★ ★ ☆ (medium)
Description
The objective of this project is to create a new Sugarizer activity to
explore volume using dices.
Features:
- Display volumes
- Zoom in/out button (or touch)
- Rotate board button (or touch)
- Choose color for facets and text (default is buddy colors)
- Choose volume size : 4, 6, 8, 10, 12, 20 (default is 6)
- Choose volume type : semi-transparent, without number (default), with number
- Choose board background: neutral (default), green playmat, red playmat, wood – friction depend of the background
- Add a volume on board
- Remove a volume on board
- Shake board: clicking on the button or shaking the device if an accelerator is included
- Share the activity: every users connected can do everything on board
- Display total: for volumes with number, when the app stop shaking
Inspirations:
-
Regular volumes (10 is irregular)
- 4 Tetrahedron https://www.cut-the-knot.org/Curriculum/Geometry/Polyhedra/tetrahedron.shtml
- 6 Cube https://www.cut-the-knot.org/Curriculum/Geometry/Polyhedra/cube.shtml
- 8 Octahedron https://www.cut-the-knot.org/Curriculum/Geometry/Polyhedra/octahedron.shtml
- 12 Dodecahedron https://www.cut-the-knot.org/Curriculum/Geometry/Polyhedra/dodecahedron.shtml
- 20 Icosahedron https://www.cut-the-knot.org/Curriculum/Geometry/Polyhedra/icosahedron.shtml
-
Dice simulators
-
Existing Sugarizer activities
- Physics JS because it allows handling of 2D objects in a board and use device accelerator
- Fraction because it allows to customize the board
- Planets because it's an activity to handle planets in 3D
First steps to starts
- Complete both the Sugarizer Vanilla Javascript activity development tutorial and the Sugarizer Vue.js activity development tutorial.
- Choose a JS 3D Framework: it should be open source, lightweight and be compatible with all Sugarizer platforms
- Try to create a Sugarizer activity displaying 3D objects
- Create a mockup of the activity
Mentor
Lionel Laské
Above are a list of ideas we've planned for GSoC 2024 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.