Skip to content

Latest commit

 

History

History
661 lines (457 loc) · 24.3 KB

Ideas-2023.md

File metadata and controls

661 lines (457 loc) · 24.3 KB

GSoC 2023 Ideas

Project Ideas

Administrative notes


Improve and maintain 12 Sugar activities

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:

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.


Improve and maintain 6 Sugar activities

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:

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.


Port Sugar and core activities to Python 3

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.


Maintain Port 12 Sugar Activities to Flatpak

Prerequisites

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


Music Blocks 4 Project Builder Integration

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

Anindya Kundu

Assisting Mentors

Walter Bender


Music Blocks 4 Widgets Framework

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

Walter Bender, Devin Ulibarri

Coding Mentors

Anindya Kundu


Music Blocks 4 Programming Framework Enhancements

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

Anindya Kundu

Assisting Mentors

Walter Bender


Maintenance/bug fixes for Music Blocks 3

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


Sugarizer VueJS Core

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

Mentor
Lionel Laské


Sugarizer Server Testing Improvement

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


Sugarizer Word Puzzle and Chart activities

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

Mentor
Lionel Laské


GTK4 Exploration

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

Coding Mentors
Ibiam Chihurumnaya


Sugar on Raspberry Pi

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


Administrative notes

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.

Criteria for Ideas

  1. Does it fill an empty pedagogy niche in the activity set for Sugar or Sugarizer,
  2. Does it increase quality of our software products (Sugar, activities, Music Blocks, or Sugarizer),
  3. Does it not involve any project infrastructure, e.g. not another app store, web site, or developer landing page,
  4. 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,

Coding Mentors

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.

Assisting Mentors For each idea, we may have offers from

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

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.

Suggested Issues

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.