Google Summer of Code/2021

From Official Kodi Wiki
Jump to navigation Jump to search
Google Summer of Code
- GSOC 2019
- GSOC 2020
- GSOC 2021
All GSOC Pages
Home icon grey.png   ▶ Google Summer of Code ▶ 2021
GSOC 2016 logo.png

Welcome to the Kodi Google Summer of Code ideas page. We are pleased to announce that we have been accepted as an official GSoC mentor organization this year.


We encourage interested students of all ethnicities and genders to review some of the ideas on this page, and then feel free to provide input on any ideas you may have in the Kodi GSoC 2021 forum and chat about any project you’d love to cover. To propose a project, see #Students project proposal ideas.


From the 29th March to the 13th of April, any interested students may apply at the GSoC home page to work with Kodi. After that, Google will notify applicants whether we get to work with each other according to the GSoC schedule.

1 About Us

As there may be many students who have landed here as a result of GSoC, but are unfamiliar with the project, here are a few resources that may help explain what we are about.

Kodi (formerly known as XBMC) is an award-winning free and open source (GPL) software media player and entertainment hub for digital media, designed around the 10-foot interface (living room) environment. Created in 2003 by a group of like minded programmers, Kodi is a non-profit project run and developed by volunteers located around the world. More than 500 software developers have contributed to Kodi, and 100-plus translators have worked to expand its reach, making it available in more than 60 languages. For more information, see the page Kodi.


To get an idea of what Kodi is truly capable of, it really must be seen. Check out a few other user-created videos:
Kodi with the default Confluence skin
Kodi with Aeon Nox skin
Kodi on Raspberry Pi
Kodi's new PVR functionality

Kodi is written primarily in c++ and runs on a variety of platforms including Android, iOS, Linux, OS X, and Windows. It has been ported to work on several low-power platforms including the Raspberry Pi and Android.

Kodi was a mentoring organization in 2008, 2012, 2013, 2015, 2017, 2018, 2019 and 2020 and had team members involved in GSoC for other projects during 2011.

If Kodi is selected as a mentoring organization for 2021, students will need to review the Overview of a good project proposal, follow the outline for proposals when applying, and review the list of project ideas detailed below. Students are welcome to propose ideas outside the list and are encouraged to be as creative as they like.

1.1 Mentors

All mentors and backup mentors are extremely experienced in the Kodi codebase and will thus be able to assist students in getting to know the codebase and in quickly identifying projects that are both achievable for someone unfamiliar with the internal workings of Kodi and desirable to the wider Kodi community.

2 Prerequisites

Some coding skills, basic familiarity with Git, solid understanding and interest in programming. Ability to quickly understand existing code is beneficial.

3 Project Proposals

3.1 Overview

Qualifications for a good Summer of Code proposal:

  • Discrete, well-defined, modular
  • Comprised of a series of measurable sub-goals
  • Based on open specs that are available free of charge
  • Based on complete specs

An example of a good proposal is the implementation of a new feature or function that is not yet available in Kodi.

An example of a less desirable proposal is one that's not as measurable, such as refactoring an existing API. Bad proposals tend to be ones that would require touching a lot of core code.

To re-iterate:

  • Localized/isolated code projects = good
  • Global code refactoring = bad
  • A project should have a set of subgoals, so even if the end goal turns out to be too big some of the parts will be of benefit.
  • Not too big! This is an important problem when choosing a project, while it is fun to think about solving a grand project its not always realistic. It's better to finish a smaller project than to start a grand one.
Stop hand.png GSoC 2021 is different from the years before. All projects should have a workload of ~175 hours (previously: 350 hours). Project applications that do not fit this scope will be rejected.


3.2 Where to submit proposals

In addition to submitting to the Google Summer of Code website, you are highly encouraged to submit your idea/proposal to the Kodi forum for discussion. Any proposal not submitted to the forum for discussion will likely not be considered.

3.3 Outline for proposals

4 Team-Kodi proposal ideas up for discussion

4.1 Explore building binary addons in rust

Description: While Kodi has python addons, it can also handle binary addons. But these need to be build one by one for each platform and also might fail on errors. Rust might help with both of those problems and more. The idea is to use the api we have but via rust ffi and see where that leads us.

Expected outcome: Documentation and templates on how to use rust with kodi. In the best case also one or two example addons.

Skills preferred: C++, Rust, C

Possible mentors: spiff, Razze

Difficulty: Hard

Type: Binary addon development

4.2 Finish the new web interface

Description: Kodi has a in development webinterface by the name of elm-chorus (https://github.com/xbmc/elm-chorus) which is written in Elm and is still missing some features of Chorus2 (the old interface). So the idea would be to bring it up to speed and do some additional styling and packaging work.

Expected outcome: Finished shipable version of the webinterface

Skills preferred: HTML, CSS, Elm

Possible mentors: Razze

Difficulty: Medium

Type: Webinterface development

4.3 Achievements in RetroPlayer

Description: Retroarch has developed support for achievements in certain select libretro cores. This project would consist of porting whatever work might be portable and otherwise integrating the existing libretro achievement system into Kodi's RetroPlayer implemented using Kodi's UI system. Could be tackled a few different ways, including simply linking the user to the retroachievements.org or creating a full achievement database in Kodi.

Expected Outcome: Users should be able to see their achievements in Kodi. Player manager and Player profile support may be in development concurrently, so thought should be given to those systems.

Skills preferred: C++, python, possibly php

Possible mentor: gusandrianos, NikosSiak

Difficulty: medium

Type: Fun/Peripheral

Notes: Garbear has broken down the Retroplayer project into manageable pieces including input, core, game add-ons, peripheral add-ons, netplay, a game library implementation, and shaders to do things like emulate a CRT monitor. This is one example, but many pieces are currently being worked on or are near completion, and many more could use help from a student familiar with the area. Visit the retroplayer section of the Kodi forum to see all the major projects still to do.

4.4 Add-ons

4.4.1 Automatic add-on checker for binary add-ons

Description: Kodis add-on checker checks each Kodi add-on PR on GitHub for certain problems, which ultimately makes reviewing Python add-ons easier for the team. But the other type of add-ons, binary add-ons is not being checked so far, which makes reviews and coding guidelines hard to handle. Thus it would be nice to also check those add-ons, either via the current checker written in Python or a new binary add-on specific checker. Goals would include checking the addon.xml, the C++ code and a check for potentially malicious code.

Expected outcome: Being able to run the checker against all binary repo PRs on GitHub.

Skills preferred: Python, C++

Possible mentors: Razze

Difficulty: Hard

Type: Low-hanging fruit

4.5 Using fuzz testing to fuzz test Kodi

Description: Adding fuzz testing to Kodi would be very valuable to find problems in the current code base. Especially security problems. First step would be choosing a framework either American fuzzy lop, libFuzzer or other similar projects. After we decided on that it would be time to start to fuzz different methods that are widely used in Kodi and try to expose flaws in those. If this leads to success, it should be documented and made repeatable.

Expected outcome: Being able to easily add more fuzz tests and having the process to do this documented.

Skills preferred: C++, CMake

Possible mentors: Razze

Difficulty: Medium

Type: Risky/Exploratory


4.6 Other ideas

These ideas still need expanding and/or assigned a potential mentor. If one of these ideas interests you, feel free to ask for more info in the GSoC 2020 forum area. We may be able to assign a mentor if enough interest is shown

  • Improvements to Retroplayer (retro gaming integrated in Kodi core)
  • Visual Studio Code addon to validate/syntax highlight Kodi Addons
  • High quality scalers for OpenGL(GLSL). Scale Y and UV plane separately (possible mentors: velocity)
  • Implementing a performance critical element of kodi in rust
  • Add multiroom audio support where each kodi instance can act as client or server. Maybe snapcast could be used somehow.

4.7 More

We feel it is important to note that, while we are interested in a focus on the listed ideas, we would like to stress passion, expertise, and creativity above all else. If you would like to do something completely different, definitely send in that proposal. The ideas listed above are, as always, merely suggestions. We will be interested in any idea, so long as you can communicate your interest, your background, and your solution the problem.

5 Students project proposal ideas

Submit your own proposals on the Kodi GSoC forum. They can be as big or as small as you feel you can comfortably accomplish between June 7 and August 23. In the end, it's better to have a smaller, completed project, rather than a larger, incomplete project.

To submit a proposal idea:

  1. Copy the text from #Outline for proposals.
  2. Create a new forum post HERE and paste the text.
  3. Fill out everything using your specific proposal.