GSoC 2022 Project Ideas

GNOME Project Ideas for Google Summer of Code 2022

Welcome to the GNOME project ideas for GSoC 2022! In this page we list ideas that could be used for GSoC proposals.

Visit our Contributor Guidance page for information on how to apply to GSoC.

Important notes:


Health: reworking the sync options for Health

Mentor(s): Rasmus Thomsen (@Cogitri, @Cogitri on Gitlab, email: oss@cogitri.dev , matrix: @cogitri:cogitri.dev)

Source code: https://gitlab.gnome.org/World/Health

Description: Health is a health tracking app. That means it helps the user visualise and understand their health indicators better: It can show the user if they’re active enough, how their weight has developed and more.
However, this data has to be collected somehow. As of now, most users have to manually enter data. This is error prone and tedious. To fix this, the aim of this project is to improve synchronisation with 3rd party services such as Google Health (and possibly Nextcloud Health, Apple Health and the PineTime companion apps). This way activities, steps, weights and so on can be synchronised between Health and 3rd apps that interact with different devices such as smart watches.

Requirements: Health is written in Rust, as such a basic understanding of Rust (e.g. by going through the Rust Book) is a necessity. This project will be done with SCRUM as development tactic. As such, it’s a good idea to read the SCRUM Guide beforehand.

Project length: This project can go either way (175h or 350h). If we only target reworking Health’s database and sync code it’s probably a short project. It’d be nice if we could also try to integrate Health with companion apps that work with devices like the PineTime to sync steps without a 3rd party service.

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/1


Faces of GNOME - Continuing the Development of the Platform

Mentor(s): @cwunder @kristiprogri @Chenriksen

Source code: https://gitlab.gnome.org/Teams/Engagement/websites/people-of-gnome

Description: The Faces of GNOME is a Foundation-led initiative with the intent of championing our contributors and recognising their continuous and previous efforts towards the GNOME project. Faces aim to be a historical platform where you’re able to see the faces behind the GNOME project. From current contributors to past contributors. Faces intend to be a place where Contributors have their own profile, serving as a directory of the current and past Contributors of the Project.

Faces features also different pages where the community is able to see numerous aspects of the people behind the GNOME project. For example, who are the current Maintainers of each Application, Who are the Board of Directors, the Foundation Members, past GSoC and Outreachy mentors/students and more.

Requirements: For GSoC, we’re looking for someone that has previous experience with Web Development. As being a student, we don’t expect much and what matters the most are people eager to learn. Whilst the platform is currently built upon specific technologies such as JavaScript, Jekyll and CSS, we don’t expect the student to be advanced or have experiences with those technologies. Of course, knowing these technologies or having previous experiences with them, might facilitate and ease the development process of the Platform.

Project length: 350h (long)

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/2 The preferred platforms are our Engagement Matrix channels. DM’s and other chatting platforms for occasional/informal conversation, such as asking for advice is also allowed.


GNOME Websites Framework - Part 2

Mentor(s): @cwunder @kristiprogri @Chenriksen

Source code: https://gitlab.gnome.org/Teams/Engagement/websites/gnome-websites-framework

Description: The GNOME Websites Framework is an attempt to create a CSS Library that conforms with GNOME’s HIG and Design principles, that allows in an easy way to create new Websites for the GNOME Project and for the GNOME Foundation that both respect and follow the very same Design principles that compose the GNOME project. The main goal of this project is to allow uniformity and conformity across our GNOME Websites.

Currently, many Websites have different designs (some outdated, and some completely non-fitting). The idea here is that with this Framework we can work on existing Websites and adapt them to the current standards. The Framework would also allow new websites to be quickly built upon.

Requirements: This project requires CSS knowledge mostly. For this project, we’d be accepting students willing to learn and dive deep more into CSS and Web Design. If you’re a student that loves Design, Documentation and/or Open Source that’d be great!

Project length: 350h (long)

Communication: The preferred platforms are our Engagement Matrix channels. DM’s and other chatting platforms for occasional/informal conversation, such as asking for advice is also allowed.

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/5


Overlay plane unredirection of client buffers in GNOME Shell

Mentor(s):

Source code: https://gitlab.gnome.org/GNOME/mutter/

Description: Implement support in mutter (and its scene graph and compositing library Clutter) for unredirecting client buffers into DRM overlay planes. This involves calculating what elements of the scene graph are candidates for unredirection, without relying on anything other than the scene graph state itself, as well as plumbing the act of unredirecting via the relevant kernel mode setting API, as well as evaluating eventually using libraries such as libliftoff.

Related GitLab issues: GNOME/mutter#61,

Requirements: Computer graphics and scene graph knowledge, excellent C skills, KMS/DRM experience

Project length: 350h (long)

Communication: The #gnome-shell IRC/Matrix channel.

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/10


Extend the feature set of Rust GObject introspection code generator

Mentor(s): Bilal Elmoussaoui @bilelmoussaoui:gnome.org on Matrix

Source code: GitHub - gtk-rs/gir: Tool to generate rust bindings and user API for glib-based libraries

Description: If you always wanted to learn more about GObject Introspection and you are familiar with Rust this project might be the perfect match for you!

The Rust bindings of GLib based libraries makes uses of gir to automatically generate the bindings along with their documentations from the .gir files. Lately, the Rust bindings saw a huge growth in number of users along with a growing community of contributors.

This project proposal aims to get some of the nice to have features on the Rust code generator. Below you will find a list of issues I picked from the issues tracker that would be a good fit for the duration of this project.

Requirements: Previous Knowledge of Rust and C preferable.

Project length: 175h (short).

More information: https://gnome.element.io/#/room/#rust:gnome.org


Implement backlog search in Polari IRC client

Mentor(s):

Source code: https://gitlab.gnome.org/gnome/polari and https://gitlab.gnome.org/gnome/tracker

Description: The Polari IRC client currently has limited capabilities to access to logs of old conversations. This project aims to finish the port of its logging infrastructure from Telepathy Logger to Tracker, in order to improve Polari search capabilities from there. Search in old conversations is a valued tool in free software IM channels, this is expected to enhance productivity when using IRC.

Requirements: Knowledge about GTK and JavaScript will be required, a ground knowledge about RDF and SPARQL is accessory, but welcome.

Project length: Can be either:

  • 175h: Goal is porting existing functionality to a Tracker database, update and modernize code
  • 350h: Goal is implementing a fully featured search UI

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/12 the #polari IRC channel at irc.gnome.org, and Discourse


Pitivi: Port UI to GTK4

Mentor(s): aleb cfoch thiblahute yatinmaan

Source code: https://gitlab.gnome.org/GNOME/pitivi/

Description: The scope is the entire Pitivi UI. Pitivi is using the GTK widget toolkit version 3. You can follow the official guide for migrating from GTK 3 to GTK 4.

Requirements: Python. At least a small code-wise contribution to Pitivi so you know what you’re getting into.

Project length: Long

Communication: https://app.element.io/#/room/#pitivi:matrix.org, video call

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/16


Pitivi: Integrate video downloader

Mentor(s): aleb cfoch thiblahute yatinmaan

Source code: https://gitlab.gnome.org/GNOME/pitivi/

Description: The project scope is Pitivi’s media library. The media library panel allows managing the assets imported into the project. In the spirit of creating video mash-ups or simply for integrating a relevant clip from a video hosting website, we can extend the media library with a Download function. The user can simply enter a URL which we pass to an external download manager. The downloaded file is then automatically imported into the project so it can be used right away.

Requirements: Python. At least a small code-wise contribution to Pitivi so you know what you’re getting into.

Project length: Long

Communication: https://app.element.io/#/room/#pitivi:matrix.org, video call

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/17


Pitivi: Timeline improvements

Mentor(s): aleb cfoch thiblahute yatinmaan

Source code: https://gitlab.gnome.org/GNOME/pitivi/

Description: The project scope is Pitivi’s timeline. The timeline is essential for arranging clips in a video project and to synchronize video and audio moments. Get in touch with us to prepare a mix of timeline enhancements and bug-fixes.

Requirements: Python. At least a small code-wise contribution to Pitivi so you know what you’re getting into.

Project length: Long

Communication: https://app.element.io/#/room/#pitivi:matrix.org, video call

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/15


Pitivi: Render improvements

Mentor(s): aleb cfoch thiblahute yatinmaan

Source code: https://gitlab.gnome.org/GNOME/pitivi/

Description: The project’s scope is Pitivi’s render dialog. Currently exporting a video project requires selecting a video encoder. First idea is to expose in the UI which video encoders support hardware-accelerated (GPU) encoding. Second idea is to expose GStreamer’s smart rendering functionality. With some limitations, smart rendering allows exporting the input video as is, offering blazing fast exports with no quality loss.

Requirements: Python. At least a small code-wise contribution to Pitivi so you know what you’re getting into.

Project length: Long

Communication: https://app.element.io/#/room/#pitivi:matrix.org, video call

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/14


Fractal-next: Add room moderation

Mentor(s): @jsparber

Source code: https://gitlab.gnome.org/GNOME/fractal

Description: This project consists of identifying tools and features needed to moderated chat rooms(e.g. setting power levels) and implement it in Fractal-next. You will need touch the matrix-rust-sdk and Fractal-next itself.

Requirements: Basic knowledge with Rust and GTK4 is required. You should also have contributed to Fractal-next or other GNOME projects. Knowledge about the Matrix specs is a plus.

Project length: 350 hours (long)

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/22


Fractal-next: Media history viewer

Mentor(s): @jsparber

Source code: https://gitlab.gnome.org/GNOME/fractal

Description: This project consists of adding a media history viewer to Fractal-next. Currently we have a media viewer but we would like to have a more complete viewer for the history of send media similar to other IM clients. You will need touch the matrix-rust-sdk and Fractal-next itself.

Requirements: Basic knowledge with Rust and GTK4 is required. You should also have contributed to Fractal-next or other GNOME projects.

Project length: 350 hours (long)

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/21


Fractal-next: Implement and design tests

Mentor(s): @jsparber

Source code: https://gitlab.gnome.org/GNOME/fractal

Description: Fractal-next currently doesn’t have any tests. It would be great to add unit and UI tests via gtk-test that can be run on the CI. This requires also mocking a matrix homeserver. This will keep the app more stable with out manual testing. You will need touch the matrix-rust-sdk and Fractal-next itself.

Requirements: Basic knowledge with Rust and GTK4 is required. You should also have contributed to Fractal-next or other GNOME projects.

Project length: 350 hours (long)

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/20


Fractal-next: Add network traffic inspector

Mentor(s): @jsparber

Source code: https://gitlab.gnome.org/GNOME/fractal

Description: Fractal-next sends many HTTP requests. For development and debugging it will be useful to inspect the traffic. The added inspector should work similar to web browsers integrated network inspectors. You will need touch the matrix-rust-sdk and Fractal-next itself.

Requirements: Basic knowledge with Rust and GTK4 is required. You should also have contributed to Fractal-next or other GNOME projects.

Project length: 175 hours (short)

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/19


Add Chromecast support to Gnome-Network-Displays

Mentor(s): (possibly) Benjamin Berg (benzea, bberg)

Source code: https://gitlab.gnome.org/gnome/gnome-network-displays

Description: Gnome-Network-Displays currently works off the Miracast protocol. There is another major and popular network display protocol that is not supported: chromecast. It will be a major benefit to users.

Requirements: Python and GNOME/GTK experience.

Project length: TBD

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/8


Enlarge code testing coverage in GNOME Files

Mentor(s): AntĂłnio Fernandes @antoniof

Source code: https://gitlab.gnome.org/gnome/nautilus

Description: The file browser is expected to be a reliable application which people can use safely to manage their own data and keep open without affecting other tasks.

The GNOME Files application is one such file browser, originating from the nautilus project. It’s a live project, under constant development (maintenance, modernization, enhancement, bugfixing) for over 2 decades. It’s also an extenside codebase and original authors of many portions of it are no longer active participants. This creates a challenge to developers who, while fixing one thing can inadvertly break something else in unexpected ways on unpredictable components. The answer to this challenge are unit tests and integration tests.

Thanks to GNOME’s adoption of GitLab, Continuous Integration has become a norm. GNOME Files has pipelines which test every merge request builds and passes a the tests. The existing tests already cover some critical components, but this coverage is far from complete.

The goal of this project is improving the coverage of code testing, by advancing through the roadmap in GNOME/nautilus#224 . This makes it a sequel to a previous GSoC project which has covered the first steps of that roadmap.

Requirements: Good knowledge of C. Basic knowledge of GObject. Basic knowledge of glib testing framework

Project length: Can be either “Short (~175 hours)” or “Long ~350 hours”. The number of tasks to pick from the roadmap is a function of project length.

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/23
Matrix: #nautilus:gnome.org


Revamp “New Document” submenu in GNOME Files

Mentor(s): AntĂłnio Fernandes @antoniof

Source code: https://gitlab.gnome.org/gnome/nautilus

Description: The scope of the ideal is GNOME/nautilus#2205

The context is that the New Document creation feature has long standing discoverability and usability issues, along with old and new bugs. Porting the application to GTK 4 has brought further regressions that need to be addressed.

The goal of this project is to design and implement a UI for this feature.

The GNOME project will benefit from addressing all these issues at once with a new design.

Development will happen on the GNOME/nautilus project, mostly in the NautilusFilesView class. It’s going to include creating a new composite GTK widget template to be factored out from that class. It may also include reporting and/or fixing GTK bugs found along the way.

This is a UI front end project. It can and should use the NautilusFile abstraction, such that direct no direct filesystem I/O is needed. UI design is expected to be refined during the project, likely including a few prototype iterations, always requesting review and advice from #gnome-design team.

Requirements: Good knowledge of C. Basic knowledge of GObject and GTK 4. Ability to work as part of a team with different sets of expertise. Basic notions of usability. Acknowledgement of the importance of good user experience design.

Project length: Short (~175 hours)

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/24
Matrix: #nautilus:gnome.org


Add PWA manifest support to GNOME Web

Mentor(s): Phaedrus Leeds @mwleeds

Source code: gitlab.gnome.org/gnOME/epiphany/

Description: GNOME Web (aka Epiphany) is GNOME’s web browser. Adding PWA (Progressive Web Apps) manifest support to GNOME Web will improve the experience of managing webapps and also allow for webapps integration with GNOME Software. See also the Web Application Manifest spec.

Project length: Short (~175 hours)

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/7#note_1426506


Add support for the latest GIR attributes and gi-docgen formatting to Valadoc

Mentor(s): Looking for mentors!

Source code: https://valadoc.org/

Description: Valadoc is the API documentation generator for the Vala programming language. First it is needed to make the Vala API generator and Vala compiler support the latest GObject-Introspection attributes to for example marking a method as getter or setter of a property and emit them (issue). This will also benefit other users of Vala libraries, like language bindings. Then in Valadoc would be support implemented for displaying these attributes and information properly.

Other not directly involved but connected things to work on would be to add support to Valadoc for understanding the formatting of gi-docgen API references (issue) and modernizing the style of the outputted documentation pages bit (issue).

Requirements: Experience in programming with the Vala language is recommended. Other helpful topics are how compilers work and knowledge in the GObject type system.

Project length: TBD

More information: https://gitlab.gnome.org/Teams/Engagement/gsoc-2022/-/issues/13
Matrix: #vala:gnome.org
IRC: irc://irc.gnome.org/vala


More ideas to be added to this page soon!

Still looking for a different idea? Maybe visit our 2021 project ideas list for inspiration.


2 Likes

I just saw the GSoC 2022 Project Ideas, you could count me as in for this :slight_smile:

1 Like

Here the description is missing the first letter :slight_smile:

Hi @felipeborges! Thanks for the efforts in publishing comprehensive project ideas! I’m very much interested in the “Port gnome-connections to Rust” idea. Looking into the connections codebase and issues for an opportunity to raise a small PR :slight_smile:

2 Likes

Hey @felipeborges created a new issue with updated link to this idea Pitivi: Port UI to GTK4

Check the issue here.

Also the link to source code for Port gnome-connections to Rust doesn’t work.
This is the updated link: https://gitlab.gnome.org/GNOME/connections