GNOME Projects for Google Summer of Code 2020

These are the project ideas proposed by the GNOME community for Google Summer of Code 2020. This list is not exclusive, and there are other ways you can find a mentor and define your GSoC project idea.

Students, please read information about our application requirements and advice for students in addition to reviewing the ideas on this page.

Interested students can submit proposals on the program site between now and Tuesday, March 31, 2020 at 18:00 UTC.

Fractal: Multi account support (mentor: DanielGarcia, co-mentors: team)

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 instances. You will implement multi account support in the client so users can have more than one account connected at the same time with a user friendly interface. You will need to work with GNOME’s design team to come up with the interface. To add multi account support first of all we should work on the backend code to make it more client independent, then we can work on the interface.

  • Requirements : Familiarity with Rust and GTK
  • Communication : on Matrix is used for communication by the team. New contributors are expected to be available here.

Evolution Data Server: EteSync sync module (mentor: ?MilanCrha and TomHacohen)

EteSync is a secure, end-to-end encrypted and FLOSS sync solution for your contacts, calendars and tasks. There are are clients for Android, iOS, the desktop (Cal/CardDAV bridge) and the web, and a Thunderbird plugin is in the works. You will implement an EDS module that will enable GNOME/Evolution users to easily end-to-end encrypt and sync their contacts, calendars and tasks.

  • Requirements : Be able to code in either Rust, C, or C++.
  • Communication : mostly IRC (#evolution @ and email.
  • Note: ?MilanCrha is one of the developers of Evolution Data Server, and TomHacohen is one of the developers of EteSync. They will be mentoring together.
  • Note: ?EteSync’s sources: (clients and server).

Games: Add Collections (mentor: AlexanderMikhaylenko)

Make Games automatically generate collections and let the user create their own ones. You will work on the backend and also with the GNOME design team to create a new user interface.

  • Requirements : Familiarity with Vala and GTK. SQL would be a plus.
  • Communication : Alexander Mikhaylenko in
  • Note: See issues #70 and #71.

Games: Add UI for importing and managing firmware (mentor: AlexanderMikhaylenko)

Allow to manage firmware in preferences, add automatic drag-n-drop install. You will work with the GNOME design team to create a new user friendly interface.

  • Requirements : Familiarity with Vala and GTK.
  • Communication : Alexander Mikhaylenko in
  • Note: See issue #145.

GTK/libhandy: Adaptive Grid/Form Widget (mentor: Adrien Plazas)

libhandy is a library full of adaptive GTK widgets, helping applications to be usable at any window and screen size. Application windows with large grids of information or forms often cannot be made small enough to work on phones. The goal is to write a generic grid widget to help them rearrange the information to work well at different sizes.

Sound Recorder: Redesign the app to make it adaptive (mentor: Bilal Elmoussaoui, Felipe Borges)

Sound Recorder’s main window UI has not been updated to follow the latest design patterns. The project is about redesigning the UI to make it fit in smaller screen sizes as well. You will work with GNOME’s design team to implement the changes.

GNOME Shell: Notification Popover Redesign (mentor: Florian Muellner)

Revamp of the Shell notifications popover. This includes making actions being available in the popover, adding app grouping, and various other visual and layout issues.

  • Requirements : Familiarity with Javascript
  • Communication : #gnome-design and #gnome-shell on IRC/Matrix

Music: Support remote sources (mentor: JeanFelder)

Music is not able to display songs or albums from a remote source (DLNA, DAAP, etc.). The project consists of integrating the content of the remote sources in the main views (Album, Song, and Artist views). Then, the search view needs to be redesigned to integrate search results from online sources (such as jamendo).

Geoclue: Port service code to Rust language (mentor: ZeeshanAli)

Port of service to Rust, will bring safety and other benefits, without compromising on efficiency.

  • Requirements : Familiarity with Rust. Familiarity with C as well, would be a big advantage but not required.
  • Communication : zeenix in or on Matrix, or email.
  • Note: More details:

Nautilus: redesign Preferences dialog (mentor: AntĂłnio Fernandes)

The Nautilus preferences are looking a bit old and crufty, and in need of a redesign. The same goes for some of the dialogs (e.g. file/folder properties). This project would update the design of these dialogs to new adaptive design patterns (e.g. listboxes). As a side benefit, this redesign would enable these dialogs to work on narrower screens (i.e. mobile).

Network Displays: Implement further streaming protocols (mentor: BenjaminBerg, ?)

Network Displays is an application that supports Miracast revision 1 to driver wireless displays. There are further popular devices that allow streaming in this way like the Chromecast or Apple ?AirPlay. The task would be to implement protocol support for one or more of these protocols and possibly improve the existing pipelines.

  • Requirements : Familiarity with GStreamer; availability of device(s) for testing purposes
  • Communication : ?

gitg: Polish files plugin (mentor: AlbertoFanjul, co-mentors: team)

gitg is able to show the files involved in each commit, but navigation through them is not smooth and easy to use. You will work with the design team to prepare and execute a usability test to identify which changes are needed. You will then implement the solution with the aim of merging it into the app for the next release.

gitg: Differences between two non-consecutive commits (mentor: AlbertoFanjul, co-mentors: team)

As a git history reviewer, gitg lacks a comparison between non-consecutive commits. That would be really useful and will expand the tool usage. You will need to expand the libgit2 exposed API to implement this feature.

  • Requirements : Familiarity with Vala, GTK+ and libgit2.
  • Communication : on Matrix is used for communication by the team. New contributors are expected to be available here.
  • Evaluation of requirements, content, design and components for the refresh of the website. (mentor: ClaudioSantoro, co-mentors: Engagement Team, co-mentors: NeilMcGovern, Caroline Henriksen)

The website needs a redesign (refresh) both in design terms and look-and-feel (UI) terms. This project is about the technical and content-wise evaluation for a possible refresh of the website. This project would include the assessment of the current state of by its content and then a full evaluation of design-wise and content-wise changes.

  • Goals : Our goals within this GSoC project are the assessment of current followed by an evaluation of a future website. Including also a development of a UI library (Framework) made of UI components (Colours, Grid, Buttons, Containers, etc) that would be used as building bricks (Foundation) for the next website.
  • Requirements : Good communication skills, observational skills and writing skills are a plus. Experience with SCSS/Sass, ES6 (?JavaScript/EcmaScript) is also welcome. Having experience with Node.js, Static-Page-Generators like Jekyll and other web development tools are also a big plus.
  • Communication : The announcements will be made on Discourse. Our internal communication will be done through our Rocket.Chat ( on the channel #outreach. GitLab will be used for planning, issues discussion and development. We may also use additional video-conference tools and/or communicate also through e-mails.

Fonts (Lettercase): enhance the UI and featureset (mentors: FelipeBorges, Bilal Elmoussaoui)

Lettercase is a brand new app with few font management features. This project would make the app much more useful by adding missing features and making the UI more elaborate and useful. See

Librsvg: Revamp the text engine (mentor: FedericoMenaQuintero)

Librsvg supports only a few features of the SVG Text specification. It requires extra features, like proper bidirectional support for right-to-left text, and fine typographical control.

Epiphany: Improve Dialogs (mentor: MichaelCatanzaro and JanMichaelBrummer) [Many strong applicants]

this project consists of making design improvements to the preferences dialog, history dialog, and bookmarks popover.

  • Requirements : experience with GObject and GTK
  • Communication : IRC, Matrix

Builder : Redesign project-wide search (mentor: Umang Jain, co-mentor:team)

The “Find in Files” feature in Builder works, but the UI and workflow is not great at the moment ( The project is to work with the design team on coming up with a new workflow/layout, and implementing it in Builder.

  • Requirements : Familiarity with GTK
  • Communication : #gnome-builder

Geary: Implement Message List Redesign (mentor: ?)

Implement a shiny new design for the message list ( Depending on how much time this takes, some other areas of Geary could also be redesigned (e.g. the conversation list or conversation actions

  • Requirements : Familiarity with GTK
  • Communication : ? Revamp the HIG and GNOME Developer Docs (mentors: Allan Day, Emmanuele Bassi)

Redesign and revamp the HIG and GNOME Developer Docs website by bringing the documentation of GNOME hosted projects at a single place, put in place a static site generator and revamp its UI. Features such a Progressive Web App, Dark Mode, and printable PDFs can also be added as a bonus.

  • Requirements : Familiarity with Static Site generators, basic Frontend Web Development, HTML, CSS/SASS, JS, Gitlab REST API, Gitlab CI/CD
  • Communication : IRC/Matrix

This page is a mirror of the contents in