Back to Programs

Operating systems

GNOME Foundation

A diverse and sustainable free software desktop.

Flatpakcgtklinuxrust

Participation history

11 GSoC years

2026

6 projects

Official year page

Add Debug Adapter Protocol Support to GJS

GJS is a JavaScript runtime built on Firefox's SpiderMonkey JavaScript engine and the GNOME platform libraries. It allows the use of the GNOME...

Laureen Caliman Vocab Style Puzzles to GNOME Crosswords

Created in the early 2020’s, GNOME Crosswords became a well-liked application powered by the libipuz C library. While robust, it does not have...

Pitivi Timeline Ruler: Native GTK4/Rust Rewrite

The Pitivi timeline ruler currently relies on a legacy Python implementation using GTK3 and the Cairo drawing model. As Pitivi updates to a modern...

Gitg moving to GTK4

GNOME Gitg is a graphical user interface for Git that aims to be a small, fast, and easy-to-use tool for visualizing repository history and managing...

Implementing App Uninstallation in the GNOME Shell App Grid

This proposal aims to add a simple built in way to uninstall applications directly from the GNOME shell App Grid Right now users have to open the...

Recover from GPU Resets

Mutter is the Wayland display server and compositor library powering GNOME Shell. Currently, an unexpected GPU reset causes the compositor to freeze...

2025

5 projects

Official year page

Papers: Proof of Concept for Backend Isolation in GNOME Papers

GNOME Papers (formerly Evince) currently processes all documents within a single application process, creating significant security and stability...

Vala: XML, JSON, and/or YAML Integration

The main objective is to integrate direct syntax support for parsing and emitting JSON, XML, and/or YAML formats in Vala. This will cut back the...

Add Printing Support to GNOME Crosswords

This project extends GNOME Crosswords' existing rendering facility to support printable puzzles with clues, and integrates printing support with...

Adding eBPF profiling capabilities to Sysprof

This project aims to enhance Sysprof by integrating eBPF-based profiling to reduce overhead and improve performance. Currently, Sysprof relies on...

Improve GNOME Crossword Editor's word suggestion algorithm

I improved GNOME Crossword Editor's word suggestion algorithm, by re-implementing it as a forward-checking algorithm. Previously, our word suggestion...

2024

8 projects

Official year page

Improve Tracker SPARQL developer experience by creating a "web IDE" for developing queries

This proposal aims to create a web-based Integrated Development Environment (IDE) specifically for writing and executing SPARQL queries within...

More durable synching for FlatSync

FlatSync is a GSoC 2023 project to synchronise Flatpak installations across machines. While it already has basic synchronisation functionality, there...

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

The Vala compiler and the Vala API generator currently have no support for the latest GObject Introspection attributes. This proposal plans to add...

Port libipuz to Rust

Libipuz is a C library that loads puzzle files and used by Crosswords as the underlying data structure. It is written in C. Since it is used...

Add TypeScript Support to Workbench

Workbench is a multi-language code sandbox for GNOME. It is prevalent in the GNOME Ecosystem and is helpful to both professional and amateur...

Improve Tracker SPARQL developer experience by creating "web IDE" for developing queries

This will be an online tool whose main purpose would be to improve developer experience in Tracker SPARQL as well as provide a more accessible...

Port Workbench demos to Vala, build a new Workbench Library, and replace the current code search

Port the remaining demos in Workbench to Vala, the plan of action; port demos, get reviews from maintainers, and fix any issues. Build a new and...

Papers' small screen and touch support for mobile and tablet

The ever-growing support of the GNOME ecosystem for both mobile device and tablet use cases highlights the need for a proper support of a PDF viewer,...

2023

9 projects

Official year page

Make GNOME platform demos and create offline documentation viewer for Workbench

Workbench is an application that lets you experiment and tinker with GNOME technologies. An important feature of Workbench is the "Library" which is...

Rust and GTK 4 Bustle Rewrite

Bustle is a powerful graphical tool for analyzing D-Bus activities. The current implementation, while still functional, cannot take advantage of the...

Create a New “System” panel in GNOME Settings

Create a new system panel to provide users with a unified interface for managing various settings. we can achieve it by merging Date & Time, Users,...

Implement backlog search in Polari IRC client

This project aims to implement backlog search capabilities for the Polari IRC client. The Polari IRC client’s logging infrastructure has ported from...

Integrate GNOME Network Displays features into GNOME Settings

GNOME Settings (aka gnome-control-center) is GNOME's main interface for configuration of various aspects of your desktop. GNOME Network Displays is a...

GNOME Crosswords Anagram Support

This project is meant for Crosswords Editor with main aim of adding anagram search support with word-list. It will be a complete implementation...

Make GNOME Platform Demos for Workbench

GOAL OF THE PROJECT: 1) Create beginner-friendly and easy-to-understand examples/demos for all widgets of GTK 4.10 and Libadwaita 1.3 to help...

Add Acrostic Puzzles to GNOME Crosswords

This project would start by extending a library called libipuz. This library loads and saves puzzles from the free ipuz file format. They would add...

Flatpak synching between machines

Currently, it’s rather bothersome to sync the Flatpak packages installed on multiple systems: One either has to manually keep them in sync or use the...

2022

9 projects

Official year page

Pitivi Timeline Enhancements

The Timeline is one of the most essential parts of a video editor. This project aims to improve the Timeline of Pitivi by adding some enhancements...

Faces of GNOME - Continuing the Development of the Platform

The ultimate purpose of this proposal is to expand the GNOME community and make it more inclusive for everyone who wants to be a part of it, as well...

Pitivi: Port UI to GTK4

The scope is the entire Pitivi UI. It is using the GTK widget toolkit version 3 which needs to be updated to GTK 4 for better compatibility,...

Make "New Documents" feature discoverable

The New Document creation feature is considered to be a part of core user experience, but its design implementation has room for improvement,...

Revamp "New Document" submenu in GNOME Files.

The goal of this project is to design and implement a UI for the New Document creation feature, which has long-standing discoverability and usability...

Fractal: Media history viewer

This project consists of adding a media history viewer to Fractal. Fractal is a Matrix client powered by GTK and Rust. A media history viewer is a...

Chromecast support for GNOME Network Displays

GNOME Network Displays uses Miracast for sharing displays and windows currently. This proposal plans to add support for Chromecast and allow users to...

Reworking Sync Options for Health

Health is a health and fitness tracking application. It helps the user to track and visualize their health indicators better. Currently, most users...

GNOME HIG CSS Library

The GNOME organization has numerous websites to accommodate all its operations. Every website albeit serving different purposes falls under the GNOME...

2021

12 projects

Official year page

Redesigning Health's MainView

It is one of the existing project ideas: https://gitlab.gnome.org/Cogitri/Health/-/issues/70

Shell: Implementing Layout Managers in Rust

Exploration of the benefits of implementing layout manager in rust

Implement active resource management in GNOME

Better resource management in Linux Desktop will help in providing a snappier experience to users by making sure that there is a fair distribution of...

Fractal: Multi account support

Fractal currently supports only one account, if you want to be connected at the same time with different accounts the user has to launch several...

Fractal NEXT

Fractal stands on the brink of adapting new technologies. With the release of GTK 4, the evolution of Fractal’s new foundation – the matrix-rust-sdk...

tracker: Improve custom ontology support

The goal of the project is improving tracker support for custom ontologies. The goal is achieved by solving some bugs which face the application...

Shell: update screenshot and screen recorder

gnome-shell allows taking screenshots and has a built-in screen recorder, it can take screenshots and record screencasts of an area, a window or the...

Rework of Faces of GNOME website

The ultimate goal of the project is to develop & rework the Faces of GNOME website using modern site generators & JavaScript to showcase past,...

Tracker-miners: File creation time

Tracker-miners is the indexer used for extracting the metadata from different file types. The project aims to provide the support for storing...

Libadwaita animation API

This is a proposal for the design and implementation of an animation API for libadwaita, as the GNOME ecosystem lacks a framework to provide...

Design tooling: port to gtk 4

The design tooling consists of a small set of applications that boosts the design team and developers productivity. App Icon Preview, Symbolic...

libsecret: Extend file backend to use TPM2 derived encryption keys

The current implementation of libsecret's file backend uses an encryption key derived from the user's login password. Security wise this not an ideal...

2020

14 projects

Official year page

Port Nautilus Properties Dialog to Use GtkBuilder

This Project is about using GtkBuilder to Construct the properties dialog for Nautilus. The result of this project would be that design Improvements...

Fractal: Multi account support

Fractal currently supports only one account, if you want to be connected at the same time with different accounts the user has to launch several...

Detecting Differences Between Two Non-Consecutive Commits For Gitg

Currently in Gitg, We only show the differences between any two consecutive commits. One might find himself/herself want to compare between any two...

Support Remote Sources in Music

The goal of this project is to enable users to discover, play and enjoy music from remote sources with almost zero configuration and user efforts.

Add UI for importing and managing firmware in GNOME Games

Currently if a user wants to play a game that needs a firmware, they would have to go to the application's flatpak directory according to the...

GNOME Shell: Notification Popover Redesign

Notifications are an important part of a system, by providing a way for users to check multiple statuses of apps, messages, or logs, without having...

Implement Collections in GNOME Games

The ultimate objective of this project is to add collections feature to Games. This feature will help users create their own collection of games, as...

gitg: polish and optimise files and diff plugins

Optimise files plugin tree store and implement non-consecutive commit diff features

Sound Recorder: Redesign the app to make it adaptive

Updating whole app to follow the latest design patterns and make it adaptive so can work on small screens and larger screens.

Design Improvements to Epiphany's dialogs

The project aims to bring UI design improvements suggested by the design team and the community to Epiphany's Preferences dialog, History dialog and...

GNOME.org: Evaluation of requirements, content, design and components for the refresh of the website

The GNOME.org website needs a redesign (refresh) both in design terms and look-and-feel (UI) terms. This project is about the technical and...

Battery Bench: Bring battery testing back to the future

One thing we want to do for the next versions of GNOME and Fedora is to improve battery performance. Your laptop may well be advertised by the...

Evolution Data Server EteSync sync module

Implementing an EDS module to sync with EteSync, a secure, end-to-end encrypted and FLOSS sync solution that will enable GNOME/Evolution users to...

Adaptive Grid/Form Widget

Applications can have forms and tables which are a rigid layout to present. Such large rigid layouts can prevent applications from reaching small...

2019

8 projects

Official year page

Improve Google-Drive support for GVfs

Currently, the Google-Backend for GVfs supports only a subset of operations allowed by Google-Drive on the web-interface. The major problem with...

Converting GStreamer plugins to Rust

GStreamer plugins are written in C and the developers are pursuing in an attempt to convert them to Rust which is more robust and easy to maintain. I...

Implement side by side diff view in Gitg

At this time, there's only a unified diff to show changes in gitg. Split view (original and modified file side by side) is a handy representation of...

Polari - Preview Links

The proposed project is the implementation of Preview Links within the Polari IRC. People often share links during conversation and a number of times...

GNOME Music: Full stack MusicBrainz integration

The ultimate goal of the proposal is to provide a seamless integration between Gnome Music and MusicBrainz services. This integration will include...

Rework the GTK Website

The ultimate goal of my project is to redesign and redevelop the GTK’s official website https://gtk.org by providing it a design that follows current...

Saved States Manager for GNOME Games

An attempt at implementing this feature https://wiki.gnome.org/Design/Playground/Games/Snapshots

gtk4-rs: GTK 4 Rust Bindings

With GTK 4 around the corner, supporting it in Rust allows more developers to fully utilize Rust in GNOME development with its rich feature and...

2018

13 projects

Official year page

Dino: Message Search

GNOME is lacking a chat client which looks “modern” and is thus visually and user experience-wise attractive to new users. Dino fits well into the...

Five or More: Modernisation

Five or More is a puzzle game in which the player has to align at least five same coloured shapes into a horizontal, vertical or diagonal line to...

GNOME Games: Add Collection/Developer view

Currently, Games lacks a good UI for displaying games. Displaying game metadata and statistics as well as segregating games by platform/developer...

Implement power panel in gnome-usage

gnome-usage is a tool for informing users about system statistics and performance. This project aims to extend gnome-usage by implementing the power...

Liu Jiahui's applicantion for gnome-logs

Logs could currently update the view when new log messages are added to the journal.

To Do: Make Todoist and Todo.txt integration shine

The project aims at improving the Todo.txt and Todoist plugin and to make them production ready. The Todo.txt parser will be improved to implement...

librsvg: port filter effects to Rust

This project involves porting the librsvg filter effects from C to Rust and making sure they all work by adding missing tests from the SVG test...

Fractal UI redesign and new dialogs

Fractal is still an early alpha Matrix client. There are many features which are left to be implemented and work to beautify the interface, with more...

GJS Example Applications and Overall Improvement

This project will unify the various GJS resources, create and expand the web experiences for GJS, write a tutorial around two created sample...

Tests, profiling and debug framework for Nautilus

This project's goal is to offer the Nautilus' community an easy way to test their contributions with consistent results and a profiling/coverity...

Improve the Fractal UI (A GTK Matrix client)

This project will improve the Fractal UI and add basic missing features, such as user account settings. It will also add a spell checker to improve...

Pitivi: Scaled Proxies

The ability to use low resolution proxies during editing would allow more people to work on wider range of media without requiring access to an...

Pitivi UI Polishing

The current UI of Pitivi serves well to its aim of being an intuitive and flexible application for newbies as well as professionals but a little bit...

2017

19 projects

Official year page

Nautilus: Improve Search

During the last releases, the search in Nautilus received several nice improvements. Though, there are still some improvements left to be made which...

Keysign: Alternative Key transports

Currently, GNOME Keysign transfers keys via a wireless network. This requirement can be challenging in certain situations where the network does not...

Implement a Plugin System in Pitivi and a set of plugins

The goal of this proposal is to implement a Plugin System in Pitivi and a set of at least three plugins: the “Developer Console”, the “Timeline...

Rustify GJS

The research and implementation of Rust language in to GJS to help reduce or eliminate memory leaks and increase memory safety.

To Do: Todoist integration

The project intends to integrate Todoist with GNOME To Do allowing the users to manage their Todoist account using GNOME To Do. Implementation of...

Gnome-shell UX Tweaks

The interface of Gnome-shell is elegant, intuitive and very user-friendly. Proof for this is the fact that GNOME is the most popular Linux Desktop...

Improving the out-of-the-box cloud experience with Nextcloud and GNOME

The integration of privacy-aware cloud services is already quite good inside the GNOME desktop environment as gnome-online-services already provides...

Documentation Cards for GNOME Builder

This project helps GNOME developers find documentation while they are writing code without having to switch to searching documentation on Google or...

Pitivi: Color correction interface using three chromatic wheels

Currently in Pitivi, the UI for configuring an effect applied to a clip is generated dynamically. Also, as of now we simply use a Numeric widget to...

GNOME Disks: Resize and repair filesystems

Disks has only seen minor development recently and needs support for resizing and reparing filesystems in order to fully replace GParted which runs...

Sharing of shopping list in Recipes App

Implementation of sending the shopping list from Recipes to TODOist (the mobile app). The purpose of sharing the shopping list is the ease of...

Nautilus I/O Operation Management Rework

Currently, I/O operations are largely unmanaged, allowing a large number of them to be running concurrently, which increases the amount of random I/O...

GNOME Calendar: Add support to recurrent events

GNOME Calendar doesn't have support for recurrent events as of version 3.24. This project intends to add support for recurrent events (repeating...

Code Search for GNOME Builder

Goal of this project is to implement fuzzy search of symbols in the project and improve Go to Definition in GNOME Builder. Using fuzzy search we can...

Search and User Interface Improvements in GNOME Logs

In GSoC 2016, search functionality in GNOME Logs was improved in many ways. Now, further work to be done in GNOME Logs includes seamless integration...

Mutter Wayland without X11

Currently, Mutter acts as both Wayland compositor and an X Window Manager. Even under Wayland session, X11 support is required to be present, which...

Gamepads and Keyboard Configuration

Games supports many gamepads but does not allow the users to configure them. The project has been divided into three major phases : Gamepad...

Improving word completion in gnome-builder

Currently, Builder relies on “Word Completion” from GtkSourceView. This provides completion of words used within the current, or other open,...

Pitivi - UI for the Ken-Burns effect

The Ken Burns effect is a type of panning and zooming effect used in video production from still imagery. This project aims to provide a way to...

2016

18 projects

Official year page

Horizontal Map Wrapping In Libchamplain

Libchamplain is a C library used to display maps. Currently, exploring locations right on the edge of the map is quite tricky. Having the map wrap...

Games: Support more game formats

Games is a GNOME application that let's you pick games from your library and play them. Basically, the project aims to be like what Music app is for...

Configurable Shortcuts for Pitivi

My primary goal is to implement customisable shortcuts for the Pitivi video editor. Users will be able to set their preference for every single...

Boxes: More SPICE features

GNOME Boxes is an application used to access virtual and remote systems, which targets typical desktop users. This proposal is about successfully...

Web: Session Sync

The ultimate goal of my proposal is to allow users of GNOME Web to seamlessly sync data with Firefox with only using a Firefox account. Epiphany will...

Improve Search Functionality in GNOME Logs

My proposal is about improving the current search functionality in GNOME Logs. The current search functionality doesn't have any graphical option to...

Uploading photos to Google

Sharing is critical for Photos. The inability to upload content is one of the bigger missing pieces, and this will be a big step forward in that...

Proxies in NetworkManager

The project aims at implementing WPAD lookup via DHCP , DNS & VPN servers and also providing manual proxy support in NetworkManager . Merged...

PKCS#11 certificate chooser

Various tools needs certificate and keys for a authentication.The user's certificate and key may reside in the PKCS#11 token so these tools need a...

Audio tag editing support for GNOME Music

Make GNOME Music more than just a read-only view of the user's music collection by providing features to embed metadata into the music files.

Nautilus: Integrate file-roller and compressed file management

This project aims to make compression and decompression a transparent process to the user, minimizing interaction with archives. In the vast majority...

Nautilus: Batch renaming

Until now, renaming of multiple files was a tiresome task, as the user had to do that file by file. The goal of this project is to provide Nautilus...

Web: Bookmarks Subsystem Update

The goal of my proposal is updating the bookmarks subsystem by refactoring the current code and implementing the new bookmarks menu design proposed...

Games: Add gamepad support

GNOME games The ultimate goal of my proposal is to add support for gamepad to the GNOME Games project. A video game player without gamepad support...

Improve the user experience for new and existing users

While experienced IRC users have no problem getting used to Polari, the growing number of new users that are not familiar with IRC clients demands an...

GNOME Music ownCloud support

GNOME has had support for ownCloud integration since the release of GNOME 3.8 with more apps supporting it as a source every release. This project...

Implementation of week view in GNOME Calendar

GNOME Calendar is the calendar application for GNOME. Although it is a usable product, it still misses the important Week and Day view required by...

Modernising GNOME Keysign

GNOME Keysign is a project that got started from the idea to make people more involved and interested in creating trusted “connections” by using...