<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://kodi.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=NikosSiak</id>
	<title>Official Kodi Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://kodi.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=NikosSiak"/>
	<link rel="alternate" type="text/html" href="https://kodi.wiki/view/Special:Contributions/NikosSiak"/>
	<updated>2026-06-20T04:52:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://kodi.wiki/index.php?title=Google_Summer_of_Code/2022&amp;diff=241494</id>
		<title>Google Summer of Code/2022</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Google_Summer_of_Code/2022&amp;diff=241494"/>
		<updated>2022-02-05T19:21:52Z</updated>

		<summary type="html">&lt;p&gt;NikosSiak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GSOC_nav}}&lt;br /&gt;
{{mininav| [[Google Summer of Code]] }}&lt;br /&gt;
[[File:GSOC_2016_logo.png|left|150px]]Welcome to the Kodi [http://summerofcode.withgoogle.com Google Summer of Code] ideas page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This page is currently work in progress. Kodi has applied as mentoring organization for GSoC 2022. Accepted organizations will be announced on March 7.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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 &#039;&#039;&#039;[https://forum.kodi.tv/forumdisplay.php?fid=315 Kodi GSoC 2022 forum]&#039;&#039;&#039; and chat about any project you’d love to cover. To propose a project, see &#039;&#039;&#039;[[#Students project proposal ideas]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- From the 29th March to the 13th of April, any interested students may apply at the [https://summerofcode.withgoogle.com/ GSoC home page] to work with Kodi. After that, Google will notify applicants whether we get to work with each other according to the [https://developers.google.com/open-source/gsoc/timeline GSoC schedule]. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== About Us ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
: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 &#039;&#039;&#039;[[Kodi]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
To get an idea of what Kodi is truly capable of, it really must be seen. Check out a few other user-created videos:&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.youtube.com/watch?v=NcogPuSo-DU Kodi with the default Confluence skin]&amp;lt;br /&amp;gt; &lt;br /&gt;
[http://www.youtube.com/watch?v=4asUCtE0ONU Kodi with Aeon Nox skin]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.youtube.com/watch?v=4NR57ELY28s Kodi on Raspberry Pi]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.youtube.com/watch?v=e_0PB5hfz_k Kodi&#039;s new PVR functionality]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Kodi was a mentoring organization in 2008, 2012, 2013, 2015, 2017, 2018, 2019, 2020 and 2021 and had team members involved in GSoC for other projects during 2011.&lt;br /&gt;
&lt;br /&gt;
If Kodi is selected as a mentoring organization for 2022, 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.&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
Some coding skills, basic familiarity with Git, solid understanding and interest in programming. Ability to quickly understand existing code is beneficial.&lt;br /&gt;
&lt;br /&gt;
== Project Proposals ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
Qualifications for a good Summer of Code proposal:&lt;br /&gt;
* Discrete, well-defined, modular&lt;br /&gt;
* Comprised of a series of measurable sub-goals&lt;br /&gt;
* Based on open specs that are available free of charge&lt;br /&gt;
* Based on complete specs&lt;br /&gt;
An example of a good proposal is the implementation of a new feature or function that is not yet available in Kodi.&lt;br /&gt;
&lt;br /&gt;
An example of a less desirable proposal is one that&#039;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.&lt;br /&gt;
&lt;br /&gt;
To re-iterate:&lt;br /&gt;
* Localized/isolated code projects = &#039;&#039;good&#039;&#039;&lt;br /&gt;
* Global code refactoring = &#039;&#039;bad&#039;&#039;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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&#039;s better to finish a smaller project than to start a grand one.&lt;br /&gt;
&lt;br /&gt;
Projects can have a workload of either 175 hours or 350 hours.&lt;br /&gt;
&lt;br /&gt;
=== Where to submit proposals ===&lt;br /&gt;
In addition to submitting to the [https://g.go/gsoc Google Summer of Code] website, you are highly encouraged to submit your idea/proposal to the [https://forum.kodi.tv/forumdisplay.php?fid=315 Kodi forum] for discussion. Any proposal not submitted to the forum for discussion will likely not be considered.&lt;br /&gt;
&lt;br /&gt;
=== Outline for proposals ===&lt;br /&gt;
{{divbox|blue||&lt;br /&gt;
PROJECT TITLE GOES HERE&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Name:&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;forum/e-mail:&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Summary:&#039;&#039;&#039; A somewhat small but explanatory walk through of the project. It should not be overly detailed just enough to understand the problem trying to be fixed and how this project opt to solve it.&lt;br /&gt;
* &#039;&#039;&#039;How will I achieve this:&#039;&#039;&#039; Explain how the project will be done, what technologies are needed and how to implement them.&lt;br /&gt;
* &#039;&#039;&#039;What will the project focus on:&#039;&#039;&#039; Explain what the project will focus on, what is the important parts of the project.&lt;br /&gt;
* &#039;&#039;&#039;Benefits:&#039;&#039;&#039; Who will benefit and why from this project. Think about what a user or developer may need or do to benefit from it. Why does it benefit many users.&lt;br /&gt;
* &#039;&#039;&#039;Goals:&#039;&#039;&#039; What is the goal of the project, a project may not always solve the problem entirely as it may take to much time. Think hard about what can be accomplished during a summer with your skill and deduct that quite a bit. If the project can&#039;t be done after this perhaps its better to opt for a smaller one or one with subgoals.&lt;br /&gt;
* &#039;&#039;&#039;What does it touch in Kodi:&#039;&#039;&#039; Think about what parts of the code this may touch, Kodi is a big application and a lot of the code is spread out and very complex. If a project touches to much it may be impossible to complete.&lt;br /&gt;
* &#039;&#039;&#039;Requirements:&#039;&#039;&#039; What is needed to complete the project, what code language knowledge what hardware etc.&lt;br /&gt;
* &#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Place to add possible mentors (Team-Kodi will add this). &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Team-Kodi proposal ideas up for discussion ==&lt;br /&gt;
&lt;br /&gt;
=== Explore building binary addons in rust ===&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; 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. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; Documentation and templates on how to use rust with kodi. In the best case also one or two example addons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; C++, Rust, C&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; spiff, Razze&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Hard&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039; Binary addon development&lt;br /&gt;
&lt;br /&gt;
=== Finish the new web interface ===&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; Finished shipable version of the webinterface&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; HTML, CSS, Elm&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Razze&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039; Webinterface development&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== Better profile support ===&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; Profile support inside Kodi remains extremely hacked together. Improving profile projects would likely be broken down into smaller chunks to make each chunk truly achievable in a summer. Database handling for profiles needs to be reviewed and changed so that the user experience is more streamlined. It should also be possible to better guard code paths that need to check for specific profile rights. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; Profiles should be more user-friendly than before and not be an afterthought. Being able to easily add more profile features is the big ultimate goal, as we want to support profiles for kids that automatically hide media that&#039;s not for them. Just as an example.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; C++&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; spiff&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Hard&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039; Core development&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== Replacing depends with a CMake-based system ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; Kodi has its own system for building the many libraries Kodi depends on that supports most platforms (Linux, Android, OS X, iOS) and cross-compiling called depends. At the moment, it is implemented with autotools and hand-crafted Makefiles. This has lead to a lot of code duplication, poor maintainability, and not being very user-friendly. Also, it does not currently work on Windows. This task would be about replacing the current system with a new implementation in CMake that has better maintainability.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; A CMake-based dependency build system that offers roughly the same features as depends (i.e. all required libraries covered, diverse platform support, crosscompilation). If the solution can also be applied to Windows by e.g. adding minimal CMake files to replace some UNIX-only build systems, that would be a big plus, but it is not necessary.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; CMake, shell scripting, general familiarity with UNIX/Linux&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; wsnipex&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039; Infrastructure/Automation&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
===Add-ons===&lt;br /&gt;
====Automatic add-on checker for binary add-ons====&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; Being able to run the checker against all binary repo PRs on GitHub.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; Python, C++&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Razze&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Hard&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039; Low-hanging fruit&lt;br /&gt;
&lt;br /&gt;
===Using fuzz testing to fuzz test Kodi===&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; Being able to easily add more fuzz tests and having the process to do this documented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; C++, CMake &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; Razze&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039; Risky/Exploratory&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===inputstream.adaptive binary addon===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; inputstream.adaptive is a binary kodi inputstream addon written in C++ and handles multi bitrate streams provided in DASH / Smoothstream manifest or HLS multi bitrate playlists. The addon provides demuxed / encoded packets to kodi and kodi renders the data with its internal videoplayer. Digital Rights Management (DRM) is implemented in inputstream.adaptive to allow playback of protected media. inputstream.adaptive is used by many (&amp;gt; 100) addons to play (legal) encrypted media.&lt;br /&gt;
&amp;lt;br&amp;gt;The addon sources are still hosted in my own git repository (https://github.com/peak3d/inputstream.adaptive) but I&#039;ll hand over the sources to kodi repository if someone is interested on working at one of these 2 most urgent topics:&lt;br /&gt;
&lt;br /&gt;
====Bitrate switch====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; In the current inputstream.adaptive implementation a stream resolution / bitrate is selected at start time. Because of network fluctations / manual window / screen changes or performance stats of rendered frames it should be possible to switch seamless to lower / higher stream representations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; Automagically select / change seamless stream depending on external factors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; C++, CMake&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; peak3d&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039; Media playback&lt;br /&gt;
&lt;br /&gt;
====Read ahead====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; Currently stream segments are downloaded on request (that is kodi is requesting more data to display). Because the kodi videoplayer internal buffer is small (8 seconds), network fluctuation can lead to bad user experience (stream interruption). What users want is that inputstream.adaptive buffers a configurable amount of time ahead to bypass this issue.&amp;lt;br&amp;gt; Buffering ahead in multi bitstream is not only a technical task, there are numerous resolutions / bitrates for the same movie time segment in the manifest from which the &amp;quot;best&amp;quot; one should be buffered. The concept of what to read will be an not trivial engeneering task.&amp;lt;br&amp;gt;Bitrate switch (see previous topic) will be a prerequasite to &amp;quot;Read ahead&amp;quot; because on low network times lower bitrate streams are read compared to good network times. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; Implementation of read ahead logic for multi bitrate streams, user configurable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; C++, CMake&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; peak3d&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Medium&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039; Media playback&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Other ideas===&lt;br /&gt;
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&lt;br /&gt;
*Improvements to Retroplayer (retro gaming integrated in Kodi core)&lt;br /&gt;
*Visual Studio Code addon to validate/syntax highlight Kodi Addons&lt;br /&gt;
&amp;lt;!--*Using fruit or similar to use DI in Kodi and write tests--&amp;gt;&lt;br /&gt;
*High quality scalers for OpenGL(GLSL). Scale Y and UV plane separately (possible mentors: velocity)&lt;br /&gt;
&amp;lt;!--*Support downloading of of media items (the actual file not just the metadata) from another Kodi instance (e.g. through UPnP) into the local library. This could be done in a &amp;quot;send to&amp;quot; way and in a &amp;quot;download&amp;quot; way and it could also be combined with transcoding depending on the target device.--&amp;gt;&lt;br /&gt;
&amp;lt;!--*UPnP device profiles. there&#039;s already a PR that goes in that direction and the problem is that right now we can only really provide device specific MIME type hacks but if we have transcoding we&#039;ll definitely need this--&amp;gt;&lt;br /&gt;
*Implementing a performance critical element of kodi in rust&lt;br /&gt;
*Add multiroom audio support where each kodi instance can act as client or server. Maybe snapcast could be used somehow.&lt;br /&gt;
&lt;br /&gt;
=== More ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Students project proposal ideas ==&lt;br /&gt;
&lt;br /&gt;
Submit your own proposals on the &#039;&#039;&#039;[https://forum.kodi.tv/forumdisplay.php?fid=315 Kodi GSoC forum]&#039;&#039;&#039;. They can be as big or as small as you feel you can comfortably accomplish between &#039;&#039;&#039;June 7&#039;&#039;&#039; and &#039;&#039;&#039;August 23&#039;&#039;&#039;. In the end, it&#039;s better to have a smaller, completed project, rather than a larger, incomplete project.&lt;br /&gt;
&lt;br /&gt;
To submit a proposal idea:&lt;br /&gt;
# Copy the text from &#039;&#039;&#039;[[#Outline for proposals]]&#039;&#039;&#039;.&lt;br /&gt;
# Create a new forum post &#039;&#039;&#039;[https://forum.kodi.tv/forumdisplay.php?fid=315 HERE]&#039;&#039;&#039; and paste the text.&lt;br /&gt;
# Fill out everything using your specific proposal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Google Summer of Code]]&lt;/div&gt;</summary>
		<author><name>NikosSiak</name></author>
	</entry>
</feed>