<?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=Yol</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=Yol"/>
	<link rel="alternate" type="text/html" href="https://kodi.wiki/view/Special:Contributions/Yol"/>
	<updated>2026-06-15T04:33:10Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://kodi.wiki/index.php?title=Kodi_Foundation&amp;diff=258426</id>
		<title>Kodi Foundation</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Kodi_Foundation&amp;diff=258426"/>
		<updated>2025-07-30T18:03:57Z</updated>

		<summary type="html">&lt;p&gt;Yol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav}}&lt;br /&gt;
&amp;lt;section begin=intro /&amp;gt;The &amp;quot;&#039;&#039;&#039;Kodi Foundation&#039;&#039;&#039;&amp;quot; is the non-profit organization that oversees the [[Kodi|{{kodi}}]] project and is registered in the US.&amp;lt;section end=intro /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Members ==&lt;br /&gt;
Membership of the Kodi Foundation is typically taken from members of Team Kodi, but may include non Team members.&lt;br /&gt;
&lt;br /&gt;
== Board of Directors ==&lt;br /&gt;
{| class=&amp;quot;infobox&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;section begin=Foundation members /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Keith Herrington (keith)&#039;&#039;&#039; - Board member - &#039;&#039;Term: 11/2016 - 11/2026&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Markus Härer (neo1973)&#039;&#039;&#039; - Board member - &#039;&#039;Term: 11/2024 - 11/2026&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Prof Yaffle (Prof Yaffle)&#039;&#039;&#039; - Board member - &#039;&#039;Term: 11/2023 - 11/2025&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Yol (Yol)&#039;&#039;&#039; - Board member - &#039;&#039;Term: 11/2019 - 11/2025&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Phunkyfish (Phunkyfish)&#039;&#039;&#039; - Board member - &#039;&#039;Term: 11/2023 - 11/2025&#039;&#039;&amp;lt;section end=Foundation members /&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
The Kodi Board of Directors are Foundation members that manages the Kodi Foundation. The Board consists of five seats that are chosen by vote from the Kodi Foundation members. The Board&#039;s responsibilities include management of funds, publicity, and all business related issues (taxes, communication with other businesses, maintaining non-profit status etc.)&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== Board of Directors meetings ==&lt;br /&gt;
The Board meets about once a month (in addition to any special meetings as required) to discuss any business that needs to be handled by the foundation.  Meetings are typically conducted via teleconference using a service such as Skype.&lt;br /&gt;
&lt;br /&gt;
== Board of Directors elections ==&lt;br /&gt;
;Who can be a Kodi Board member?&lt;br /&gt;
:Any existing member of the foundation, as voted by the remaining members.&lt;br /&gt;
&lt;br /&gt;
;How long does a board member hold office?&lt;br /&gt;
:Terms last for two years. We endeavor to have a staggered cycle so that not all board members are turned over at a single election. There are no term restrictions, so Board members may even run for consecutive terms. However, in the interests of sharing the load, any and all members are encouraged to participate.&lt;br /&gt;
&lt;br /&gt;
;What is expected of a Kodi Board member?&lt;br /&gt;
:Board members are expected to attend all meetings or will otherwise be diligent in letting the other board members know if they won&#039;t be around.  Further, they&#039;ll be expected to make decisions (as a group) in the best interests of the foundation.  The Board accountable to the members, so should consider recommendations made by members during the decision making process, Though they ultimately must make the final decisions.  Any and all discussion should be frankly communicated to members within a reasonable time frame.&lt;br /&gt;
&lt;br /&gt;
;Who elects the officers (President, Secretary, Treasurer etc?)&lt;br /&gt;
:The board elects the officers.  In doing so, they may choose to take advice from the membership, but the decision is theirs.  The President must be from within the board itself, though Secretary, Treasurer, and any other officers the board wishes to appoint may be from outside the board (or outside the membership).&lt;br /&gt;
&lt;br /&gt;
=== Election process ===&lt;br /&gt;
&lt;br /&gt;
Board elections occur as follows:&lt;br /&gt;
# A member is nominated by the Board to oversee the election.&lt;br /&gt;
# Nominations for the open positions are taken from within the existing membership via email and/or via a forum thread.  This lasts a minimum of 10 days.&lt;br /&gt;
# Confirmed nominees are placed on the ballot.&lt;br /&gt;
# A vote of the membership is then taken using a trusted internet voting service using a ranking system. (usually via the Condorcet Internet Voting Service, http://www.cs.cornell.edu/w8/~andru/civs ) and the candidates with the highest ranks take office.  This lasts about two weeks.&lt;br /&gt;
#: &#039;&#039;In the event of a tie, it will be resolved with the existing board members discussing with the tied nominees. Tied nominees that do not go on the board may be nominated as officers of the Foundation, for example.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Previous elections ===&lt;br /&gt;
* [[/Elections/2024|2024]]&lt;br /&gt;
* [[/Elections/2023|2023]]&lt;br /&gt;
* [[/Elections/2022|2022]]&lt;br /&gt;
* [[/Elections/2021|2021]]&lt;br /&gt;
* [[/Elections/2020|2020]]&lt;br /&gt;
* [[/Elections/2019|2019]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2018|2018]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2017|2017]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2016|2016]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2014|2014]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2013|2013]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2012|2012]]&lt;br /&gt;
&lt;br /&gt;
== Foundation Bylaws and other important documents ==&lt;br /&gt;
* [[Media:ByLaws.pdf]]&lt;br /&gt;
* [[Media:Delaware Incorporation Notice.pdf]]&lt;br /&gt;
* [[Media:Delaware Notice Of Good Standing.pdf]]&lt;br /&gt;
* [[Media:KodiFoundationIncorporationNotice.pdf]]&lt;br /&gt;
* [[Media:Kodi_Foundation_exempt.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Trademarks ==&lt;br /&gt;
{{see|Official:Trademark Policy index}}&lt;br /&gt;
&lt;br /&gt;
== Financial information ==&lt;br /&gt;
&lt;br /&gt;
=== Financial status ===&lt;br /&gt;
&lt;br /&gt;
* Form 990 2016 - http://www.guidestar.org/FinDocuments/2016/474/565/2016-474565769-0e36f6e3-9.pdf &lt;br /&gt;
* Income and expenses 2015 - https://drive.google.com/file/d/0BwsEEPRqIzELOVpUa0p4endrRWc/view?usp=sharing&lt;br /&gt;
* Income and expenses 2014 - https://drive.google.com/file/d/0BwsEEPRqIzELVW9rMkpPUWZRSHM/view?usp=sharing&lt;br /&gt;
* Income and expenses 2013 - https://docs.google.com/spreadsheet/ccc?key=0AtlJ3dnHcw46dHpmeXlIV0hGaC13Z3I3b25hZWhWRGc#gid=8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;note&#039;&#039;: 2014 and 2015 expenses are US Foundation account only.&lt;br /&gt;
&lt;br /&gt;
=== Account details ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Unites States account&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Bank: Wells Fargo&lt;br /&gt;
* Beneficiary: Kodi Foundation&lt;br /&gt;
&lt;br /&gt;
== Legal representation ==&lt;br /&gt;
The Kodi Foundation is legally represented by the [[w:Software Freedom Law Center|SFLC (Software Freedom Law Center)]].&lt;br /&gt;
&lt;br /&gt;
In addition the Kodi Foundation is member of [[w:Open_Invention_Network|OIN (Open Invention Network)]] since 9 July 2010. OIN is a defensive patent pool and community of patent non-aggression which enables freedom of action in Linux.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
For contact information, please see http://kodi.tv/about/contact/&lt;br /&gt;
&lt;br /&gt;
[[Category:Kodi_Foundation-Archived]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Kodi_Foundation/Elections/2024&amp;diff=258425</id>
		<title>Kodi Foundation/Elections/2024</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Kodi_Foundation/Elections/2024&amp;diff=258425"/>
		<updated>2025-07-30T18:01:22Z</updated>

		<summary type="html">&lt;p&gt;Yol: Created page with &amp;quot;{{mininav| Kodi Foundation | Elections }}  ==Pre-election== yol was voting admin, as his seat was not up for re-election.  ==Nomination notice== The following notice posted on the Team Kodi private forum, and linked to in an e-mail to all Foundation members, to give due notice about the election and to collect nominations. The Foundation bylaws state that at least ten days must be given for a notice about member decisions such as an elec...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Kodi Foundation]] | [[Kodi Foundation/Elections|Elections]] }}&lt;br /&gt;
&lt;br /&gt;
==Pre-election==&lt;br /&gt;
yol was voting admin, as his seat was not up for re-election.&lt;br /&gt;
&lt;br /&gt;
==Nomination notice==&lt;br /&gt;
The following notice posted on the Team Kodi private forum, and linked to in an e-mail to all Foundation members, to give due notice about the election and to collect nominations. The Foundation bylaws state that at least ten days must be given for a notice about member decisions such as an election, which served as the nomination period.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Nominations for the XBMC Foundation Board Elections 2024&amp;quot;, as written by yol&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
It&#039;s time for the yearly Kodi Foundation board elections again!&lt;br /&gt;
&lt;br /&gt;
This year board member seats up for election are: Keith and DarrenHill. Seats not up for election are: phunkyfish, Prof Yaffle and yol (me).&lt;br /&gt;
&lt;br /&gt;
The rules are pretty simple:&lt;br /&gt;
&lt;br /&gt;
    Any team member can nominate, but the nominee must be a member of the Foundation*.&lt;br /&gt;
    You&#039;re allowed to nominate multiple people if you wish.&lt;br /&gt;
    The nominated member has the option to accept or decline their nomination.&lt;br /&gt;
    Only foundation members will be able to vote. *&lt;br /&gt;
    If a person has already been nominated, please don&#039;t nominate them again.&lt;br /&gt;
&lt;br /&gt;
Please make sure to keep your nominations simple and clear. Eg:&lt;br /&gt;
&lt;br /&gt;
    Quote:&lt;br /&gt;
    Nominate: &amp;lt;member&amp;gt; Motivation: I would like to nominate &amp;lt;member&amp;gt; for the Kodi Foundation Board because &amp;lt;motivation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case you&#039;re nominated, please reply with something like..&lt;br /&gt;
&lt;br /&gt;
    Quote:&lt;br /&gt;
    Thank you. I accept my nomination. &amp;lt;motivation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
    Quote:&lt;br /&gt;
    No, thanks. I decline my nomination. &amp;lt;Optional motivation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second post in this thread will be updated with a list of members and the nomination status on a regular basis, so you don&#039;t have to crawl through all posts/pages to check.&lt;br /&gt;
&lt;br /&gt;
The nomination period is 1 month starting today and will end on September 18th.&lt;br /&gt;
Actual voting will begin after that and will be closed a couple of weeks later (if a vote is required).&lt;br /&gt;
Once the voting is over, the results will be announced in this thread as well as through a team email.&lt;br /&gt;
&lt;br /&gt;
The actual starting date for the new board seats will be in October or November, when we would like to have a joint online meeting with the old and new board members as a smooth hand-over and to welcome the new board members.&lt;br /&gt;
&lt;br /&gt;
* If you&#039;d like to vote in the election, you need to be accepted as a foundation member and affirm the by-laws of the foundation.&lt;br /&gt;
Details on applying to join the Foundation are at: Click here to join the foundation&lt;br /&gt;
A list of all foundation members can be found here: https://drive.google.com/open?id=1yy_gPb...Y0UJaJRPHE (Foundation member list - only accessible to Google accounts logged in using your Kodi address). &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following text was later added: &amp;quot;EDIT September 17: The nomination period has been extended to October 18th.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
&lt;br /&gt;
;Final list of confirmed nominees:&lt;br /&gt;
* Keith&lt;br /&gt;
* neo1973&lt;br /&gt;
&lt;br /&gt;
==Results==&lt;br /&gt;
&lt;br /&gt;
As two nominations were accepted for two seats, no vote was held and all two nominees were accepted onto the board.&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=DevCon&amp;diff=255289</id>
		<title>DevCon</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=DevCon&amp;diff=255289"/>
		<updated>2025-04-13T14:17:34Z</updated>

		<summary type="html">&lt;p&gt;Yol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav}}&lt;br /&gt;
&lt;br /&gt;
The Kodi developers conference is where Team Kodi members gather to discuss and handle various Kodi related business. It is one of the few times where Team members meet up in real life. &lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;nonumtoc&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2025 (Tirana) ==&lt;br /&gt;
&lt;br /&gt;
[[File:2025 Tirana.webp|600px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Tirana, Albania&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; April 11-13&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2025-tirana-part-i/&lt;br /&gt;
* https://kodi.tv/article/devcon-2025-tirana-part-ii/&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2024 (Budapest) ==&lt;br /&gt;
&lt;br /&gt;
[[File:2024 Budapest.webp|600px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Budapest, Hungary&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; March 22-24&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2024-budapest-part-i/&lt;br /&gt;
* https://kodi.tv/article/devcon-2024-budapest-part-ii/&lt;br /&gt;
* https://kodi.tv/article/devcon-2024-budapest-part-iii/&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2023 (Bergamo) ==&lt;br /&gt;
&lt;br /&gt;
[[File:2023 Bergamo.webp|600px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Costa Volpino near Bergamo, Italy&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; March 31-April 02&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2023-buongiorno-lombardia/&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2022 (Barcelona) ==&lt;br /&gt;
&lt;br /&gt;
[[File:2024 Barcelona.webp|600px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Sitges near Barcelona, Spain&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; April 01-03&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2022-moltes-gr%C3%A0cies-catalunya/&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2019 (Serbia) ==&lt;br /&gt;
&lt;br /&gt;
[[File:2019 Belgrade.jpg|600px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Belgrade, Serbia&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 11-13&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2019-belgrade-part-i/&lt;br /&gt;
* https://kodi.tv/article/devcon-2019-belgrade-part-ii/&lt;br /&gt;
* https://kodi.tv/article/devcon-2019-belgrade-part-iii/&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2018 (Bulgaria) ==&lt;br /&gt;
[[File:Devcon 20180930 Sofia Bulgaria.jpg|600px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Sofia, Bulgaria&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; September 28-30&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2018-sofia-part-i&lt;br /&gt;
* https://kodi.tv/article/devcon-2018-sofia-part-ii&lt;br /&gt;
* https://kodi.tv/article/devcon-2018-sofia-part-iii&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2017 (Czech Republic) ==&lt;br /&gt;
[[File:DevCon2017IITeamPhoto.jpg|600px|right|thumb]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Prague, Czech Republic&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 27-29&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-part-ii-day-one&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-part-ii-day-two&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-part-ii-day-three&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2017 (Portugal) ==&lt;br /&gt;
[[File:DevCon2017TeamPhoto.jpg|600px|right|thumb]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Porto, Portugal&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; May 5th - 7th&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-day-one&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-day-two&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-day-three&lt;br /&gt;
* https://kodi.tv/article/kodis-2017-developers-conference&lt;br /&gt;
* http://forum.kodi.tv/showthread.php?tid=311585&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2016 (Hungary) ==&lt;br /&gt;
[[File:DevCon2016Teamfoto2.jpg|600px|right|thumb]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Budapest, Hungary&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 10th - 12th&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/kodi-devcon-2016-live-blog&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2015 (Czech Republic) ==&lt;br /&gt;
[[File:Devcon2015.jpg|600px|right|thumb|&amp;lt;section begin=&amp;quot;2016 photo&amp;quot;/&amp;gt;Top: alwinus, jjd-uk, keith, razze, ksoo, zag&amp;lt;br/&amp;gt;Middle: ruuk, koying, montellese, mkortstiege, , phil65, martijn&amp;lt;br/&amp;gt;Bottom: natethomas, paxxi, garbear, ansii, wisler, negge, hitcher, bignoid, fkoch, kib&amp;lt;section end=&amp;quot;2016 photo&amp;quot;/&amp;gt;]]&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Prague, Czech Republic&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 7th - 9th&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2015-liveblog&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2014 (Portugal) ==&lt;br /&gt;
[[File:DevCon2014.jpg|500px|right|thumb]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Lisbon, Portugal&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 10th - 12th&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/kodi-devcon-2014-live-blog/&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2013 (Germany) ==&lt;br /&gt;
[[File:2013 DevCon.jpg|600px|right|thumb|&amp;lt;section begin=&amp;quot;2013 photo&amp;quot;/&amp;gt;The team in Munich&amp;lt;section end=&amp;quot;2012 photo&amp;quot;/&amp;gt;]]&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Munich, Germany&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 11th - 13th&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/xbmc-devcon-2013/&lt;br /&gt;
* https://kodi.tv/article/xbmc-devcon-2013-liveblog/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2012 (Austria) ==&lt;br /&gt;
[[File:Devcon2012.JPG|right|600px|thumb|&amp;lt;section begin=&amp;quot;2012 photo&amp;quot;/&amp;gt;From left to right: topfs2, da-anda, Martijn, fneufneu, sraue, benjee , Memphiz, Wiso, Montellese, chadoe, Davilla, jfcarrol, cptspiff, amet, vdrfan, olympia, anssi, alanwww1, jmarshall, TheUni, Clumsy, Freezy, natethomas&amp;lt;section end=&amp;quot;2012 photo&amp;quot;/&amp;gt;]]&lt;br /&gt;
Vienna, sponsored by at-visions&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Vienna, Austria&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sponsored by:&#039;&#039;&#039; At-Visions&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2012-user-meetup/&lt;br /&gt;
* http://www.at-visions.com/XBMC-conference-in-Vienna.html&lt;br /&gt;
&lt;br /&gt;
Photos and videos:&lt;br /&gt;
* http://www.flickr.com/photos/23449328@N05/sets/72157631428716214/&lt;br /&gt;
* http://www.youtube.com/watch?v=jJBhe7arBlk&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2010 (Austria) ==&lt;br /&gt;
[[File:2010 DevCon.png|right|frame|alt=Group photograph of DevCon 2010 attendees|&amp;lt;section begin=&amp;quot;2010devcon&amp;quot;/&amp;gt;&#039;&#039;&#039;From left to right&#039;&#039;&#039; Amet (Zeljko), Andy (at-visions), freezy (Nico), clumsy (Thomas), topfs2 (Tobias), chadoe (Martin), jmarshall (Jonathan), &#039;&#039;BACK&#039;&#039;:unknown &#039;&#039;FRONT&#039;&#039;:elupus (Joakim), vdrfan (Matthias), prae5 (Paul), davilla (Scott), WiSo (Winfried), malloc (Sean), Malard (Martin), TheUni (Cory), Michael (at-visions), Olympia (Bence), Ronen (At-Visions&#039; CEO), &#039;&#039;BACK&#039;&#039;:lcapriotti (Luigi) &#039;&#039;FRONT&#039;&#039;:spiff (Dr. Arne), Lucas (at-visions)&amp;lt;section end=&amp;quot;2010devcon&amp;quot;/&amp;gt;]]&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; [[w:Vienna|Vienna, Austria]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sponsored by:&#039;&#039;&#039; At-Visions&lt;br /&gt;
&lt;br /&gt;
* [https://kodi.tv/article/devcon-2010/ Official Announcement]&lt;br /&gt;
* [https://kodi.tv/article/xbmc-devcon-2010-summary/ Event Summary]&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2009 (Germany) ==&lt;br /&gt;
[[File:2009 DevCon.jpg|right|600px|thumb|From left to right: Erez, Pike, Yuvalt, WiSo, vulkanr, vdrfan, elupus, blittan, chadoe, MaestroDD]]&lt;br /&gt;
Berlin&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2008 (Netherlands) ==&lt;br /&gt;
[[File:2008 DevCon.jpg|right|600px|thumb|]]&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Amsterdam, The Netherlands&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sponsored by:&#039;&#039;&#039; Boxee&lt;br /&gt;
&lt;br /&gt;
* http://www.bunniestudios.com/blog/?p=251&lt;br /&gt;
* https://www.flickr.com/photos/27660056@N07/sets/72157605632155509/&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
[[Category:XBMC_Foundation]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=File:2025_Tirana.webp&amp;diff=255288</id>
		<title>File:2025 Tirana.webp</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=File:2025_Tirana.webp&amp;diff=255288"/>
		<updated>2025-04-13T14:16:19Z</updated>

		<summary type="html">&lt;p&gt;Yol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;2025 Tirana&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=File:2019_Belgrade.jpg&amp;diff=255287</id>
		<title>File:2019 Belgrade.jpg</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=File:2019_Belgrade.jpg&amp;diff=255287"/>
		<updated>2025-04-13T14:14:02Z</updated>

		<summary type="html">&lt;p&gt;Yol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;2019 Belgrade&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=DevCon&amp;diff=255286</id>
		<title>DevCon</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=DevCon&amp;diff=255286"/>
		<updated>2025-04-13T14:10:49Z</updated>

		<summary type="html">&lt;p&gt;Yol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav}}&lt;br /&gt;
&lt;br /&gt;
The Kodi developers conference is where Team Kodi members gather to discuss and handle various Kodi related business. It is one of the few times where Team members meet up in real life. &lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;nonumtoc&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2025 (Tirana) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Tirana, Albania&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; April 11-13&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2025-tirana-part-i/&lt;br /&gt;
* https://kodi.tv/article/devcon-2025-tirana-part-ii/&lt;br /&gt;
&lt;br /&gt;
== 2024 (Budapest) ==&lt;br /&gt;
&lt;br /&gt;
[[File:2024 Budapest.webp|600px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Budapest, Hungary&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; March 22-24&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2024-budapest-part-i/&lt;br /&gt;
* https://kodi.tv/article/devcon-2024-budapest-part-ii/&lt;br /&gt;
* https://kodi.tv/article/devcon-2024-budapest-part-iii/&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2023 (Bergamo) ==&lt;br /&gt;
&lt;br /&gt;
[[File:2023 Bergamo.webp|600px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Costa Volpino near Bergamo, Italy&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; March 31-April 02&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2023-buongiorno-lombardia/&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2022 (Barcelona) ==&lt;br /&gt;
&lt;br /&gt;
[[File:2024 Barcelona.webp|600px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Sitges near Barcelona, Spain&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; April 01-03&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2022-moltes-gr%C3%A0cies-catalunya/&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2019 (Serbia) ==&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Belgrade, Serbia&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 11-13&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2019-belgrade-part-i/&lt;br /&gt;
* https://kodi.tv/article/devcon-2019-belgrade-part-ii/&lt;br /&gt;
* https://kodi.tv/article/devcon-2019-belgrade-part-iii/&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2018 (Bulgaria) ==&lt;br /&gt;
[[File:Devcon 20180930 Sofia Bulgaria.jpg|600px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Sofia, Bulgaria&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; September 28-30&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2018-sofia-part-i&lt;br /&gt;
* https://kodi.tv/article/devcon-2018-sofia-part-ii&lt;br /&gt;
* https://kodi.tv/article/devcon-2018-sofia-part-iii&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2017 (Czech Republic) ==&lt;br /&gt;
[[File:DevCon2017IITeamPhoto.jpg|600px|right|thumb]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Prague, Czech Republic&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 27-29&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-part-ii-day-one&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-part-ii-day-two&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-part-ii-day-three&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2017 (Portugal) ==&lt;br /&gt;
[[File:DevCon2017TeamPhoto.jpg|600px|right|thumb]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Porto, Portugal&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; May 5th - 7th&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-day-one&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-day-two&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-day-three&lt;br /&gt;
* https://kodi.tv/article/kodis-2017-developers-conference&lt;br /&gt;
* http://forum.kodi.tv/showthread.php?tid=311585&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2016 (Hungary) ==&lt;br /&gt;
[[File:DevCon2016Teamfoto2.jpg|600px|right|thumb]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Budapest, Hungary&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 10th - 12th&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/kodi-devcon-2016-live-blog&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2015 (Czech Republic) ==&lt;br /&gt;
[[File:Devcon2015.jpg|600px|right|thumb|&amp;lt;section begin=&amp;quot;2016 photo&amp;quot;/&amp;gt;Top: alwinus, jjd-uk, keith, razze, ksoo, zag&amp;lt;br/&amp;gt;Middle: ruuk, koying, montellese, mkortstiege, , phil65, martijn&amp;lt;br/&amp;gt;Bottom: natethomas, paxxi, garbear, ansii, wisler, negge, hitcher, bignoid, fkoch, kib&amp;lt;section end=&amp;quot;2016 photo&amp;quot;/&amp;gt;]]&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Prague, Czech Republic&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 7th - 9th&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2015-liveblog&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2014 (Portugal) ==&lt;br /&gt;
[[File:DevCon2014.jpg|500px|right|thumb]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Lisbon, Portugal&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 10th - 12th&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/kodi-devcon-2014-live-blog/&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2013 (Germany) ==&lt;br /&gt;
[[File:2013 DevCon.jpg|600px|right|thumb|&amp;lt;section begin=&amp;quot;2013 photo&amp;quot;/&amp;gt;The team in Munich&amp;lt;section end=&amp;quot;2012 photo&amp;quot;/&amp;gt;]]&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Munich, Germany&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 11th - 13th&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/xbmc-devcon-2013/&lt;br /&gt;
* https://kodi.tv/article/xbmc-devcon-2013-liveblog/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2012 (Austria) ==&lt;br /&gt;
[[File:Devcon2012.JPG|right|600px|thumb|&amp;lt;section begin=&amp;quot;2012 photo&amp;quot;/&amp;gt;From left to right: topfs2, da-anda, Martijn, fneufneu, sraue, benjee , Memphiz, Wiso, Montellese, chadoe, Davilla, jfcarrol, cptspiff, amet, vdrfan, olympia, anssi, alanwww1, jmarshall, TheUni, Clumsy, Freezy, natethomas&amp;lt;section end=&amp;quot;2012 photo&amp;quot;/&amp;gt;]]&lt;br /&gt;
Vienna, sponsored by at-visions&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Vienna, Austria&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sponsored by:&#039;&#039;&#039; At-Visions&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2012-user-meetup/&lt;br /&gt;
* http://www.at-visions.com/XBMC-conference-in-Vienna.html&lt;br /&gt;
&lt;br /&gt;
Photos and videos:&lt;br /&gt;
* http://www.flickr.com/photos/23449328@N05/sets/72157631428716214/&lt;br /&gt;
* http://www.youtube.com/watch?v=jJBhe7arBlk&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2010 (Austria) ==&lt;br /&gt;
[[File:2010 DevCon.png|right|frame|alt=Group photograph of DevCon 2010 attendees|&amp;lt;section begin=&amp;quot;2010devcon&amp;quot;/&amp;gt;&#039;&#039;&#039;From left to right&#039;&#039;&#039; Amet (Zeljko), Andy (at-visions), freezy (Nico), clumsy (Thomas), topfs2 (Tobias), chadoe (Martin), jmarshall (Jonathan), &#039;&#039;BACK&#039;&#039;:unknown &#039;&#039;FRONT&#039;&#039;:elupus (Joakim), vdrfan (Matthias), prae5 (Paul), davilla (Scott), WiSo (Winfried), malloc (Sean), Malard (Martin), TheUni (Cory), Michael (at-visions), Olympia (Bence), Ronen (At-Visions&#039; CEO), &#039;&#039;BACK&#039;&#039;:lcapriotti (Luigi) &#039;&#039;FRONT&#039;&#039;:spiff (Dr. Arne), Lucas (at-visions)&amp;lt;section end=&amp;quot;2010devcon&amp;quot;/&amp;gt;]]&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; [[w:Vienna|Vienna, Austria]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sponsored by:&#039;&#039;&#039; At-Visions&lt;br /&gt;
&lt;br /&gt;
* [https://kodi.tv/article/devcon-2010/ Official Announcement]&lt;br /&gt;
* [https://kodi.tv/article/xbmc-devcon-2010-summary/ Event Summary]&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2009 (Germany) ==&lt;br /&gt;
[[File:2009 DevCon.jpg|right|600px|thumb|From left to right: Erez, Pike, Yuvalt, WiSo, vulkanr, vdrfan, elupus, blittan, chadoe, MaestroDD]]&lt;br /&gt;
Berlin&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2008 (Netherlands) ==&lt;br /&gt;
[[File:2008 DevCon.jpg|right|600px|thumb|]]&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Amsterdam, The Netherlands&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sponsored by:&#039;&#039;&#039; Boxee&lt;br /&gt;
&lt;br /&gt;
* http://www.bunniestudios.com/blog/?p=251&lt;br /&gt;
* https://www.flickr.com/photos/27660056@N07/sets/72157605632155509/&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
[[Category:XBMC_Foundation]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=File:2024_Budapest.webp&amp;diff=255285</id>
		<title>File:2024 Budapest.webp</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=File:2024_Budapest.webp&amp;diff=255285"/>
		<updated>2025-04-13T14:09:46Z</updated>

		<summary type="html">&lt;p&gt;Yol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;2024 Budapest&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=File:2023_Bergamo.webp&amp;diff=255284</id>
		<title>File:2023 Bergamo.webp</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=File:2023_Bergamo.webp&amp;diff=255284"/>
		<updated>2025-04-13T14:07:40Z</updated>

		<summary type="html">&lt;p&gt;Yol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;2023 Bergamo&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=File:2024_Barcelona.webp&amp;diff=255283</id>
		<title>File:2024 Barcelona.webp</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=File:2024_Barcelona.webp&amp;diff=255283"/>
		<updated>2025-04-13T14:06:44Z</updated>

		<summary type="html">&lt;p&gt;Yol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;2024 Barcelona&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=DevCon&amp;diff=255177</id>
		<title>DevCon</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=DevCon&amp;diff=255177"/>
		<updated>2025-04-11T16:38:28Z</updated>

		<summary type="html">&lt;p&gt;Yol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav}}&lt;br /&gt;
&lt;br /&gt;
The Kodi developers conference is where Team Kodi members gather to discuss and handle various Kodi related business. It is one of the few times where Team members meet up in real life. &lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;nonumtoc&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2024 (Budapest) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Budapest, Hungary&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; March 22-24&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2024-budapest-part-i/&lt;br /&gt;
* https://kodi.tv/article/devcon-2024-budapest-part-ii/&lt;br /&gt;
* https://kodi.tv/article/devcon-2024-budapest-part-iii/&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2023 (Bergamo) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Costa Volpino near Bergamo, Italy&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; March 31-April 02&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2023-buongiorno-lombardia/&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2022 (Barcelona) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Sitges near Barcelona, Spain&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; April 01-03&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2022-moltes-gr%C3%A0cies-catalunya/&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2019 (Serbia) ==&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Belgrade, Serbia&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 11-13&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2019-belgrade-part-i/&lt;br /&gt;
* https://kodi.tv/article/devcon-2019-belgrade-part-ii/&lt;br /&gt;
* https://kodi.tv/article/devcon-2019-belgrade-part-iii/&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2018 (Bulgaria) ==&lt;br /&gt;
[[File:Devcon 20180930 Sofia Bulgaria.jpg|600px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Sofia, Bulgaria&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; September 28-30&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2018-sofia-part-i&lt;br /&gt;
* https://kodi.tv/article/devcon-2018-sofia-part-ii&lt;br /&gt;
* https://kodi.tv/article/devcon-2018-sofia-part-iii&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2017 (Czech Republic) ==&lt;br /&gt;
[[File:DevCon2017IITeamPhoto.jpg|600px|right|thumb]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Prague, Czech Republic&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 27-29&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-part-ii-day-one&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-part-ii-day-two&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-part-ii-day-three&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2017 (Portugal) ==&lt;br /&gt;
[[File:DevCon2017TeamPhoto.jpg|600px|right|thumb]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Porto, Portugal&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; May 5th - 7th&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-day-one&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-day-two&lt;br /&gt;
* https://kodi.tv/article/devcon-2017-day-three&lt;br /&gt;
* https://kodi.tv/article/kodis-2017-developers-conference&lt;br /&gt;
* http://forum.kodi.tv/showthread.php?tid=311585&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2016 (Hungary) ==&lt;br /&gt;
[[File:DevCon2016Teamfoto2.jpg|600px|right|thumb]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Budapest, Hungary&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 10th - 12th&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/kodi-devcon-2016-live-blog&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2015 (Czech Republic) ==&lt;br /&gt;
[[File:Devcon2015.jpg|600px|right|thumb|&amp;lt;section begin=&amp;quot;2016 photo&amp;quot;/&amp;gt;Top: alwinus, jjd-uk, keith, razze, ksoo, zag&amp;lt;br/&amp;gt;Middle: ruuk, koying, montellese, mkortstiege, , phil65, martijn&amp;lt;br/&amp;gt;Bottom: natethomas, paxxi, garbear, ansii, wisler, negge, hitcher, bignoid, fkoch, kib&amp;lt;section end=&amp;quot;2016 photo&amp;quot;/&amp;gt;]]&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Prague, Czech Republic&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 7th - 9th&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2015-liveblog&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2014 (Portugal) ==&lt;br /&gt;
[[File:DevCon2014.jpg|500px|right|thumb]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Lisbon, Portugal&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 10th - 12th&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/kodi-devcon-2014-live-blog/&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2013 (Germany) ==&lt;br /&gt;
[[File:2013 DevCon.jpg|600px|right|thumb|&amp;lt;section begin=&amp;quot;2013 photo&amp;quot;/&amp;gt;The team in Munich&amp;lt;section end=&amp;quot;2012 photo&amp;quot;/&amp;gt;]]&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Munich, Germany&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date:&#039;&#039;&#039; October 11th - 13th&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/xbmc-devcon-2013/&lt;br /&gt;
* https://kodi.tv/article/xbmc-devcon-2013-liveblog/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2012 (Austria) ==&lt;br /&gt;
[[File:Devcon2012.JPG|right|600px|thumb|&amp;lt;section begin=&amp;quot;2012 photo&amp;quot;/&amp;gt;From left to right: topfs2, da-anda, Martijn, fneufneu, sraue, benjee , Memphiz, Wiso, Montellese, chadoe, Davilla, jfcarrol, cptspiff, amet, vdrfan, olympia, anssi, alanwww1, jmarshall, TheUni, Clumsy, Freezy, natethomas&amp;lt;section end=&amp;quot;2012 photo&amp;quot;/&amp;gt;]]&lt;br /&gt;
Vienna, sponsored by at-visions&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Vienna, Austria&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sponsored by:&#039;&#039;&#039; At-Visions&lt;br /&gt;
&lt;br /&gt;
* https://kodi.tv/article/devcon-2012-user-meetup/&lt;br /&gt;
* http://www.at-visions.com/XBMC-conference-in-Vienna.html&lt;br /&gt;
&lt;br /&gt;
Photos and videos:&lt;br /&gt;
* http://www.flickr.com/photos/23449328@N05/sets/72157631428716214/&lt;br /&gt;
* http://www.youtube.com/watch?v=jJBhe7arBlk&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2010 (Austria) ==&lt;br /&gt;
[[File:2010 DevCon.png|right|frame|alt=Group photograph of DevCon 2010 attendees|&amp;lt;section begin=&amp;quot;2010devcon&amp;quot;/&amp;gt;&#039;&#039;&#039;From left to right&#039;&#039;&#039; Amet (Zeljko), Andy (at-visions), freezy (Nico), clumsy (Thomas), topfs2 (Tobias), chadoe (Martin), jmarshall (Jonathan), &#039;&#039;BACK&#039;&#039;:unknown &#039;&#039;FRONT&#039;&#039;:elupus (Joakim), vdrfan (Matthias), prae5 (Paul), davilla (Scott), WiSo (Winfried), malloc (Sean), Malard (Martin), TheUni (Cory), Michael (at-visions), Olympia (Bence), Ronen (At-Visions&#039; CEO), &#039;&#039;BACK&#039;&#039;:lcapriotti (Luigi) &#039;&#039;FRONT&#039;&#039;:spiff (Dr. Arne), Lucas (at-visions)&amp;lt;section end=&amp;quot;2010devcon&amp;quot;/&amp;gt;]]&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; [[w:Vienna|Vienna, Austria]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sponsored by:&#039;&#039;&#039; At-Visions&lt;br /&gt;
&lt;br /&gt;
* [https://kodi.tv/article/devcon-2010/ Official Announcement]&lt;br /&gt;
* [https://kodi.tv/article/xbmc-devcon-2010-summary/ Event Summary]&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2009 (Germany) ==&lt;br /&gt;
[[File:2009 DevCon.jpg|right|600px|thumb|From left to right: Erez, Pike, Yuvalt, WiSo, vulkanr, vdrfan, elupus, blittan, chadoe, MaestroDD]]&lt;br /&gt;
Berlin&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== 2008 (Netherlands) ==&lt;br /&gt;
[[File:2008 DevCon.jpg|right|600px|thumb|]]&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Amsterdam, The Netherlands&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sponsored by:&#039;&#039;&#039; Boxee&lt;br /&gt;
&lt;br /&gt;
* http://www.bunniestudios.com/blog/?p=251&lt;br /&gt;
* https://www.flickr.com/photos/27660056@N07/sets/72157605632155509/&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
[[Category:XBMC_Foundation]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=PulseAudio&amp;diff=254213</id>
		<title>PulseAudio</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=PulseAudio&amp;diff=254213"/>
		<updated>2025-01-04T19:47:45Z</updated>

		<summary type="html">&lt;p&gt;Yol: switch from deprecated KODI_AE_SINK to --audio-backend&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Audio]]}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;This page goes into detail on using PulseAudio on Linux systems. PulseAudio is used when Kodi is installed in a desktop-environment rather than a dedicated/direct boot setup. PulseAudio allows normal video &amp;amp; audio playback in XBMC while at the same time allowing the user to get audio in their browser or other applications. It also allows Kodi playback of video or audio to be paused in order to run a game, Skype or similar. Kodi is set to only use PulseAudio if you have installed it and running.&amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
In the past users have experienced problems with audio not working within Kodi, because they were running a full-blown Ubuntu desktop environment with PulseAudio installed. This happened because PulseAudio blocked the device Kodi required, and audio playback only worked reliably when using the virtual Pulse device.&lt;br /&gt;
&lt;br /&gt;
Our workaround for those users has been to uninstall PulseAudio which completely broke desktop audio.&lt;br /&gt;
&lt;br /&gt;
For XBMC 13 &#039;Gotham&#039; and later (named Kodi since 14 &#039;Helix&#039;) we wanted this situation to change, so thanks to the new &#039;&#039;&#039;PulseAudio Sink&#039;&#039;&#039; users now can run a normal Ubuntu desktop.&lt;br /&gt;
&lt;br /&gt;
== PulseAudio Output Configuration ==&lt;br /&gt;
PulseAudio will be automatically detected and selected in Kodi when it is running.&lt;br /&gt;
&lt;br /&gt;
PulseAudio can be run in one of two modes these are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;Passthrough Mode&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
Used if you want to passthrough (bitstream) AC3, DTS, and EAC3 to an AVR or other device. In order to allow passthrough to work with PulseAudio then it &#039;&#039;&#039;MUST&#039;&#039;&#039; be set to use a 2.0 channel configuration, despite the 2.0 setting this will still allow 5.1 audio from AC3, DTS, and EAC3.&lt;br /&gt;
&lt;br /&gt;
{{Note| PulseAudio does not currently allow TrueHD or DTS-MA passthrough, this is a PulseAudio limitation and not a limitation of the Kodi implementation, in order to get 7.1 audio Multichannel Mode must be used}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;Multichannel Mode&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Used if you want Multichannel PCM out, in this mode you can configure PulseAudio for up to 7.1 channels. In this mode Kodi must decode all audio formats to PCM for passing onto the PulseAudio, this can have the advantage of improve audio/video sync. In the case of video with TrueHD/DTS-HD 7.1 audio this must be decoded by Kodi to Multichannel PCM by disabling passthrough, then Pulseaudio can handle the 7.1 channels of audio.&lt;br /&gt;
&lt;br /&gt;
{{Note| Audio decoded to PCM and sent through PulseAudio the audio will not likely be &amp;quot;bit perfect&amp;quot;.  As Pulseaudio will always open the number of channels you have configured. You can stop it doing upmixing (see Known issues), but it will still open all configured channels which makes Dolby Pro Logic II of your AVR not usable.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up pavucontrol  ==&lt;br /&gt;
&lt;br /&gt;
=== Passthrough Mode ===&lt;br /&gt;
{{bluev|&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039;|Passthrough is always an exclusive mode. If you have another application hogging the device, e.g. Chrome or Skype, passthrough won&#039;t work. Even applications that simply monitor the device, such as SoundWireServer, will prevent passthrough from working.}}&lt;br /&gt;
{{greenv|&#039;&#039;&#039;REMEMBER:&#039;&#039;&#039;| To use passthrough you need to be using &#039;&#039;&#039;2.0&#039;&#039;&#039; channel configuration via &#039;&#039;&#039;pavucontrol&#039;&#039;&#039; (e.g. Digital Stereo (HDMI)}}&lt;br /&gt;
&lt;br /&gt;
In order to activate passthrough codecs, setup pavucontrol as following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=313px&amp;gt;&lt;br /&gt;
File:Passthrough2.png|&amp;lt;big&amp;gt;&#039;&#039;&#039;Step 1:&#039;&#039;&#039;&amp;lt;/big&amp;gt;  &#039;&#039;pavucontrol&#039;&#039;  &#039;&#039;&#039;Output Settings.&#039;&#039;&#039;&lt;br /&gt;
File:Passthrough1.png|&amp;lt;big&amp;gt;&#039;&#039;&#039;Step 2:&#039;&#039;&#039;&amp;lt;/big&amp;gt;  &#039;&#039;pavucontrol&#039;&#039;  &#039;&#039;&#039;Configuration.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you like to do this from the command line, first, first identify the correct sound card ID:&lt;br /&gt;
 &#039;&#039;&#039;pacmd list-cards&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Look at the output to find the id of the card and  the name/format of the profile you want to use (in this case, card ID is &#039;&#039;&#039;0&#039;&#039;&#039; and profile is &#039;&#039;&#039;output:hdmi-stereo&#039;&#039;&#039;)&lt;br /&gt;
Once you&#039;ve identified this information, set your output profile to the one for hdmi-stereo:&lt;br /&gt;
 &#039;&#039;&#039;pacmd set-card-profile 0 output:hdmi-stereo&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Then, obtain the sink ID you want to set formats on by inspecting output of:&lt;br /&gt;
 &#039;&#039;&#039;pactl list sinks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Then set the sink format for the sink you want, as below (in this case &#039;&#039;&#039;0&#039;&#039;&#039;):&lt;br /&gt;
 &#039;&#039;&#039;pactl set-sink-formats 0 &amp;quot;pcm; ac3-iec61937; dts-iec61937; eac3-iec61937&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can leave out the codecs your AVR does not support, always keep pcm.&lt;br /&gt;
&lt;br /&gt;
{{bluev|&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039;| If you have for example 5.1 flacs or other multichannel files, you can play them as AC3 streams, check the AC3 Transcoding setting.}}&lt;br /&gt;
&lt;br /&gt;
{{redv|&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039;| Enabling &#039;&#039;&#039; Sync Playback to Display &#039;&#039;&#039; will disable passthrough silently, as it makes zero sense to sync with a display clock while one cannot alter audio.}}&lt;br /&gt;
&lt;br /&gt;
=== Multichannel Mode ===&lt;br /&gt;
{{greenv|&#039;&#039;&#039;REMEMBER:&#039;&#039;&#039;| When configuring pulse to use &#039;&#039;&#039;Multichannel configuration&#039;&#039;&#039; passthrough will be disabled}}&lt;br /&gt;
To configure instead Multi channel mode, do the following settings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=313px&amp;gt;&lt;br /&gt;
File:Lpcm2.png|&amp;lt;big&amp;gt;&#039;&#039;&#039;Step 1:&#039;&#039;&#039;&amp;lt;/big&amp;gt; &#039;&#039;To alternatively configure Multi channel, check this:&#039;&#039;.&lt;br /&gt;
File:Lpcm1.png|&amp;lt;big&amp;gt;&#039;&#039;&#039;Step 2:&#039;&#039;&#039;&amp;lt;/big&amp;gt; The &#039;&#039;Add-on manager&#039;&#039;, displaying four/five options  (explained below).&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example setup in Kodi ===&lt;br /&gt;
{{orangev|&#039;&#039;&#039;GOOD TO KNOW:&#039;&#039;&#039;| Limit sample rate can be set to Fixed - between 48kHz ~ 192kHz or as Optimized and even Best match.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=313px&amp;gt;&lt;br /&gt;
File:Xbmclpcm.png |&amp;lt;big&amp;gt;&#039;&#039;&#039;Step 1:&#039;&#039;&#039;&amp;lt;/big&amp;gt;  &#039;&#039;to be edited&#039;&#039;  &#039;&#039;&#039;Output Settings.&#039;&#039;&#039;&lt;br /&gt;
File:Xbmcpaa1.png |&amp;lt;big&amp;gt;&#039;&#039;&#039;Step 2:&#039;&#039;&#039;&amp;lt;/big&amp;gt;  &#039;&#039;to be edited&#039;&#039;  &#039;&#039;&#039;Configuration.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=500px heights=313px&amp;gt;&lt;br /&gt;
File:Xbmcpass2.png |&amp;lt;big&amp;gt;&#039;&#039;&#039;Step 1:&#039;&#039;&#039;&amp;lt;/big&amp;gt;  &#039;&#039;to be edited&#039;&#039;  &#039;&#039;&#039;Output Settings.&#039;&#039;&#039;&lt;br /&gt;
File:Xbmcpass1.png |&amp;lt;big&amp;gt;&#039;&#039;&#039;Step 2:&#039;&#039;&#039;&amp;lt;/big&amp;gt;  &#039;&#039;to be edited&#039;&#039;  &#039;&#039;&#039;Configuration.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
=== Setup Guide ===&lt;br /&gt;
{{orangev|DEVICE ENUMERATION:| Kodi Enumerates Pulseaudio devices as SPDIF when you have &#039;&#039;&#039;Passthrough&#039;&#039;&#039; set. Otherwise its &#039;&#039;&#039;PCM Device&#039;&#039;&#039;. If &#039;&#039;&#039;Passthrough&#039;&#039;&#039; was not configured with pavucontrol - no &#039;&#039;&#039;Passthrough&#039;&#039;&#039; setting within Kodi will be available.}}&lt;br /&gt;
{{bluev|GOOD TO KNOW:|SPDIF has 2 pcm channels but can do virtual 5.1 formats like dts, ac3, eac3.}}&lt;br /&gt;
{{greenv|&#039;&#039;&#039;NOTICE&#039;&#039;&#039;|The following is meant to act as a guide to get you started, thus you may want to adjust things to suit your own particular set of equipment.}}&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; style=&amp;quot;text-align: center; color: black;&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! PC Speakers&amp;lt;br /&amp;gt;2.0&lt;br /&gt;
! PC Speakers&amp;lt;br /&amp;gt;5.1&lt;br /&gt;
! TV SPDIF&amp;lt;br /&amp;gt;2.0&lt;br /&gt;
! TV SPDIF&amp;lt;br /&amp;gt;AC3 (&#039;&#039;&#039;1&#039;&#039;&#039;)&lt;br /&gt;
! AVR SPDIF&amp;lt;br /&amp;gt;AC3/DTS (&#039;&#039;&#039;2&#039;&#039;&#039;)&lt;br /&gt;
! AVR HDMI&amp;lt;br /&amp;gt;PCM (&#039;&#039;&#039;3&#039;&#039;&#039;)&lt;br /&gt;
! AVR HDMI&amp;lt;br /&amp;gt;No HD Audio (&#039;&#039;&#039;4&#039;&#039;&#039;)&lt;br /&gt;
! AVR HDMI&amp;lt;br /&amp;gt;Decode HD Audio (&#039;&#039;&#039;5&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;9&amp;quot;|&#039;&#039;&#039;PulseAudio Mode&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|Multichannel&lt;br /&gt;
|Multichannel&lt;br /&gt;
|Multichannel&lt;br /&gt;
|Passthrough&lt;br /&gt;
|Passthrough&lt;br /&gt;
|Multichannel&lt;br /&gt;
|Passthrough&lt;br /&gt;
|Multichannel&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;9&amp;quot;|&#039;&#039;&#039;Pavucontrol - Output Devices&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&#039;&#039;&#039;Port&#039;&#039;&#039;&lt;br /&gt;
|Speakers&lt;br /&gt;
|Speakers&lt;br /&gt;
|Digital Output (S/PDIF)&lt;br /&gt;
|Digital Output (S/PDIF)&lt;br /&gt;
|Digital Output (S/PDIF)&lt;br /&gt;
|HDMI/Displayport&lt;br /&gt;
|HDMI/Displayport&lt;br /&gt;
|HDMI/Displayport&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&#039;&#039;&#039;AC3&#039;&#039;&#039;&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|Disabled&lt;br /&gt;
|Enabled&lt;br /&gt;
|Enabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Enabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&#039;&#039;&#039;EAC3&#039;&#039;&#039;&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|Disabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Enabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&#039;&#039;&#039;DTS&#039;&#039;&#039;&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|Disabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Enabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Enabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;9&amp;quot;|&#039;&#039;&#039;Pavucontrol - Configuration&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&#039;&#039;&#039;Profile&#039;&#039;&#039;&lt;br /&gt;
|Analog Stereo Output&lt;br /&gt;
|Analog Surround 5.1 Output&lt;br /&gt;
|Digital Stereo &amp;lt;br /&amp;gt;(IEC958) Output&lt;br /&gt;
|Digital Stereo &amp;lt;br /&amp;gt;(IEC958) Output&lt;br /&gt;
|Digital Stereo &amp;lt;br /&amp;gt;(IEC958) Output&lt;br /&gt;
|Digital Surround 5.1 &amp;lt;br /&amp;gt;(HDMI) Output&lt;br /&gt;
|Digital Stereo &amp;lt;br /&amp;gt;(HDMI) Output&lt;br /&gt;
|Digital Surround 7.1 &amp;lt;br /&amp;gt;(HDMI) Output&lt;br /&gt;
|- &lt;br /&gt;
!Colspan=&amp;quot;9&amp;quot;|Kodi Settings&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&#039;&#039;&#039;Audio Output Device&#039;&#039;&#039;&lt;br /&gt;
|Speakers&lt;br /&gt;
|Speakers&lt;br /&gt;
|SPDIF&lt;br /&gt;
|SPDIF&lt;br /&gt;
|SPDIF&lt;br /&gt;
|HDMI&lt;br /&gt;
|HDMI&lt;br /&gt;
|HDMI&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&#039;&#039;&#039;Number of channels&#039;&#039;&#039;&lt;br /&gt;
|2.0&lt;br /&gt;
|5.1&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|5.1&lt;br /&gt;
|2.0&lt;br /&gt;
|7.1&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&#039;&#039;&#039;Enabled passthrough&#039;&#039;&#039;&lt;br /&gt;
|Disabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Enabled&lt;br /&gt;
|Enabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Enabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&#039;&#039;&#039;Passthrough output device&#039;&#039;&#039;&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|SPDIF&lt;br /&gt;
|SPDIF&lt;br /&gt;
|N/A&lt;br /&gt;
|HDMI&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&#039;&#039;&#039;Dolby Digital (AC3) capable receiver&#039;&#039;&#039;&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|Enabled&lt;br /&gt;
|Enabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Enabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&#039;&#039;&#039;Enabled Dolby Digital transcoding&#039;&#039;&#039;&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|Enabled&lt;br /&gt;
|Enabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Enabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&#039;&#039;&#039;DTS capable receiver&#039;&#039;&#039;&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|Disabled&lt;br /&gt;
|Enabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Enabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&#039;&#039;&#039;TrueHD capable receiver&#039;&#039;&#039;&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|Disabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;|&#039;&#039;&#039;DTS-HD capable receiver&#039;&#039;&#039; &lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|Disabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Disabled&lt;br /&gt;
|Dsiabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(1)&#039;&#039;&#039; Where TV can decode 5.1 AC3.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(2)&#039;&#039;&#039; Where AVR only has SPDIF which will support 5.1 AC3 &amp;amp; DTS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(3)&#039;&#039;&#039; Where AVR can do 5.1 PCM.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(4)&#039;&#039;&#039; Where AVR has HDMI inputs but can&#039;t decode TrueHD or DTS-HD but does support 5.1 Ac3 or DTS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(5)&#039;&#039;&#039; Where AVR has full decode capabilities including 7.1 PCM.&lt;br /&gt;
&lt;br /&gt;
{{orangev|&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039;| You can only have &#039;&#039;&#039;AC3&#039;&#039;&#039;, &#039;&#039;&#039;DTS&#039;&#039;&#039;, &#039;&#039;&#039;EAC3&#039;&#039;&#039; passthrough &#039;&#039;&#039;if your Receiver supports it&#039;&#039;&#039;. Most &#039;&#039;&#039;TV&#039;s&#039;&#039;&#039; only support &#039;&#039;&#039;AC3&#039;&#039;&#039;. If you have a &#039;&#039;&#039;HDMI&#039;&#039;&#039; connection to your TV and &#039;&#039;&#039;from this TV&#039;&#039;&#039; a &#039;&#039;&#039;SPDIF/Optical&#039;&#039;&#039; connection to an &#039;&#039;&#039;AVR&#039;&#039;&#039;, passthrough might not work at all.}}&lt;br /&gt;
&lt;br /&gt;
== Combined Output aka dual audio==&lt;br /&gt;
If you want to output to all your attached devices in parallel, e.g. HDMI out, analog out and USB sound card, it is enough to do as below:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Edit &amp;lt;code&amp;gt;/etc/pulse/default.pa&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;load-module module-combine-sink sink_name=combined&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Step 2: &#039;&#039;&#039;Restart pulseaudio.&lt;br /&gt;
&amp;lt;pre&amp;gt;killall pulseaudio&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kodi will then pickup the device, it is named &#039;&#039;&#039;combined&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{{orangev|&#039;&#039;&#039;Downside:&#039;&#039;&#039;| The dual audio sink will only output decoded audio, you cannot use it to have one slave doing AC3/DTS and the other PCM. If you use the combined sink for normal music you will realize that direct passthrough output for your movies won&#039;t be working anymore, too. This is a pulseaudio bug, cause the combine sink is not deconstructed fast enough internally while the passthrough opening is always exclusive. It will work however if your passthrough device is not part of the device combination. }}&lt;br /&gt;
&lt;br /&gt;
== Audiophile Pulse User ==&lt;br /&gt;
Pulseaudio resamples everything that does not match the underlaying sink, so if you are an audiophile user, you perhaps want to hear your 96 / 192 khz and 24 bit recordings as exact as possible. Therefore you need to tell pulseaudio to use a better resampler in general and second  avoid resampling. Starting with version 11 of pulseaudio, it can reopen sinks with their native samplerate. Furthermore you need to take care, that your sink has a wide enough output format. To properly resample samperates that are not available with your sound card, e.g. 176000 or other exotic rates, we set pulseaudio to a default of 44100 khz, which is the default for every standard mp3. As alternate sample-rate we suggest 48000. That means that all non available samplerates are resampled with an exact integer division of src_rate / dst_rate.&lt;br /&gt;
&lt;br /&gt;
To do this configuration systemwide (96 khz in that example), change /etc/pulse/daemon.conf to include (please replace already existing lines and also remove the commenting):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default-sample-format = s24le&lt;br /&gt;
default-sample-rate = 44100&lt;br /&gt;
alternate-sample-rate = 48000&lt;br /&gt;
;new with pulseaudio 11&lt;br /&gt;
avoid-resampling = true&lt;br /&gt;
resample-method = speex-float-5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some remark: This will actively make &#039;&#039;&#039;passthrough non working&#039;&#039;&#039;, as we need s16le format for adding ac3 / dts / etc. to the sink.&lt;br /&gt;
&lt;br /&gt;
The last setting will increase the resample quality from pulse and therefore the CPU load quite a lot. Again: Resampling is only done, when the sink output does not match the data you throw onto it. But as most normal mp3s are in 44.1 khz, you need to take great care when upsampling them. The overwriting of the resample-method is for this use case.&lt;br /&gt;
&lt;br /&gt;
{{orangev|&#039;&#039;&#039;Alternatively:&#039;&#039;&#039;| If you don&#039;t want any resampling outside Kodi, e.g. no resampling done extra by pulse, you need to configure the sink as told above and set Audio Engine to &#039;&#039;&#039;Fixed&#039;&#039;&#039; with the number of channels you configured pulseaudio via pavucontrol and samplerate of &#039;&#039;&#039;96 khz&#039;&#039;&#039; with resample quality high. In that combination Kodi will take care that files are resampled (e.g. 44.1 khz or 48 khz media) in the best possible quality. Already 96 khz files are not touched at all. }}&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
{{FAQ|1=When_would_I_want_Pulseaudio&lt;br /&gt;
| BGcolor=whitesmoke&lt;br /&gt;
| Question=When would I want PulseAudio?&lt;br /&gt;
| Answer=&lt;br /&gt;
You should use &#039;&#039;&#039;PulseAudio&#039;&#039;&#039; when:&lt;br /&gt;
&lt;br /&gt;
* You use your Kodi computer mainly as your Desktop when you don&#039;t run XBMC.&lt;br /&gt;
* You want other applications audio like Skype, youtube, browser mail notification in parallel with Kodi.&lt;br /&gt;
* You use Kodi in windowed mode as Desktop player&lt;br /&gt;
* You use Pulseaudio as a network sink to stream Audio to other devices in your living room.&lt;br /&gt;
* Passthrough is nice to have for you, but to be honest - you don&#039;t really need it.&lt;br /&gt;
* Whenever you plugin your Bluetooth headset, Kodi audio will continue over this new device (when Default &#039;PULSE&#039; device is chosen)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{FAQ|1=When_would_I_want_ALSA&lt;br /&gt;
| BGcolor=&lt;br /&gt;
| Question=When would I want ALSA?&lt;br /&gt;
| Answer=&lt;br /&gt;
You should use &#039;&#039;&#039;ALSA&#039;&#039;&#039; when:&lt;br /&gt;
&lt;br /&gt;
* You use Kodi as your standalone media center.&lt;br /&gt;
* You are highly interested in bitperfect exclusive audio output.&lt;br /&gt;
* DTS-HD, TrueHD is something you use daily and is of high importance.&lt;br /&gt;
* You don&#039;t need other applications that would access audio in parallel.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{FAQ|1=Why_cant_I_have_both?&lt;br /&gt;
| BGcolor=whitesmoke&lt;br /&gt;
| Question=Why can&#039;t I have both?&lt;br /&gt;
| Answer=&lt;br /&gt;
* &#039;&#039;&#039;PulseAudio&#039;&#039;&#039; might hog your Audio device and you cannot open the &#039;&#039;&#039;ALSA&#039;&#039;&#039; device exclusively, therefore we decided for one or the other.&lt;br /&gt;
* Whenever &#039;&#039;&#039;PulseAudio&#039;&#039;&#039; is running your &#039;&#039;&#039;ALSA&#039;&#039;&#039; device that Kodi chooses, might be busy or even might vanish while you are using Kodi, when system sounds are playing and pulseaudio is trying to access the device again. Out of this reason we also won&#039;t implement a selection box to decide between &#039;&#039;&#039;ALSA&#039;&#039;&#039; and &#039;&#039;&#039;PULSE&#039;&#039;&#039;, because it will actively harm users. Advanced Users can go with the workaround listed beneath.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{FAQ|1=Forcing_alsa&lt;br /&gt;
| BGcolor=&lt;br /&gt;
| Question=Can I force ALSA even with PulseAudio installed?&lt;br /&gt;
| Answer=&lt;br /&gt;
{{note|Doing so may cause problems!}}&lt;br /&gt;
&lt;br /&gt;
Yes, you can - start Kodi from terminal with:&lt;br /&gt;
&amp;lt;pre&amp;gt;pasuspender -- kodi --audio-backend=alsa&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;pasuspender&#039;&#039;&#039; is a tool that can be used to tell a local PulseAudio sound server to temporarily suspend access to the audio devices, to allow other applications access them directly. pasuspender will suspend access to the audio devices, fork a child process, and when the child process terminates, resume access again.&lt;br /&gt;
&lt;br /&gt;
You can also put the previous command in a custom .desktop-file.&lt;br /&gt;
&lt;br /&gt;
Be warned as this will interfere with your Desktop sounds!&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
=== Known issues ===&lt;br /&gt;
When your audio is much too fast or crackles a lot or passthrough only produces noise, you might have a broken driver in use. If this is the case, try to add &#039;&#039;tsched=0&#039;&#039; to the udev loading section in /etc/pulse/default.pa to read like:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;load-module module-udev-detect tsched=0&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Audio devices are disappearing with pulseaudio 8.0 (Ubuntu 16.04, even later version are affected) especially while running kodi and while using &#039;&#039;Adjust Refreshrate to match video&#039;&#039;. This is an issue with the module-switch-on-port-available module and will be fixed with pulseaudio 9.0, the fix sadly won&#039;t probably make it into Ubuntu 16.04. As a workaround please disable that feature by editing /etc/pulse/default.pa and commenting or removing &#039;&#039;load-module module-switch-on-port-available&#039;&#039; and reboot the system.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Kodi v16 &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When Pulseaudio is configured to be multi-channel output, e.g. 5.1 profile from within pavucontrol, 2.0 streams are automatically upmixed, no matter what setting you have chosen in Kodi. This is default pulseaudio server behaviour. You can workaround that by disabling &#039;&#039;enable-remixing&#039;&#039; in /etc/pulse/daemon.conf&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;enable-remixing = no&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Beware: This will also forbid PA to remix e.g. FL,FR, LFE, FC, BL, BR into FL, FR, LFE, FC, SL, SR - which means you might loose your rears if your speaker layout is non standard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Kodi v17 &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Starting with the upcoming kodi v17 Krypton the above behaviour is taken care within kodi. You don&#039;t have to disable remixing in pulseaudio anymore. That means content is output without further remixing by pulseaudio server if a sane mapping is possible. Basically that means if the audio is FL, FR, FC, LFE, SL, SR and your speaker-mapping is FL, FR, FC, LFE, BL, BR we will resolve that and output 6 channels accordingly. Whenever we cannot map all input channels to the output we ask pulseaudio to do the mixing for us.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Volume issues &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Issue: Changing kodi&#039;s volume will change overall system volume, especially on song change this is an irritating behaviour. The effect you hear is not done by kodi, but by a systemwide pulseaudio (mis)configuration. Some distributions sadly still ship pulseaudio with &#039;&#039;&#039;flat-volumes = yes&#039;&#039;&#039; as the default, which produces this behaviour. In fact it will cause the hardware volume (or master volume) to go up and down for every pulseaudio stream that changes its own volume. As this effect is unexpected behaviour for users, distributions started to ship pulseaudio with &#039;&#039;&#039;flat-volumes = no&#039;&#039;&#039; by default (as time of writing this is Ubuntu, Arch-Linux and others). In order to change that setting, depending on your distribution edit &#039;&#039;/etc/pulse/daemon.conf&#039;&#039; and set &#039;&#039;&#039;flat-volumes = no&#039;&#039;&#039;. After a PA server restart, the volume handling is more intuitive. If you are at it, please inform your distribution about those issues, so that they can ship a more user-friendly default with next release. At the time of writing, affected distributions: Debian.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Audio]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Mirrors&amp;diff=253960</id>
		<title>Mirrors</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Mirrors&amp;diff=253960"/>
		<updated>2024-12-16T17:15:07Z</updated>

		<summary type="html">&lt;p&gt;Yol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav}}&lt;br /&gt;
&lt;br /&gt;
This page contains information about our mirrors network setup.&lt;br /&gt;
&lt;br /&gt;
== Download mirrors ==&lt;br /&gt;
&lt;br /&gt;
To provide downloads we use a network of mirrors across the globe to provide the best possible location to download from. For actually distributing the downloads and making sure you will download from the best server available we have been using Mirrorbits, which has been operating since August 2015 and so far hasn&#039;t failed us yet. This is a great piece of software that constantly checks the status of the mirrors and dishes out files based on certain criteria, in an effort to ensure that downloads work as quickly and reliably as possible. Besides these builds it also hosts all the add-on which you can find in our official kodi.tv repository.&lt;br /&gt;
&lt;br /&gt;
== Information ==&lt;br /&gt;
&lt;br /&gt;
The actual mirror list is generated automatically and can be found by appending &amp;lt;code&amp;gt;?mirrorlist&amp;lt;/code&amp;gt; to the URL of any mirrored file on mirrors.kodi.tv.&lt;br /&gt;
Example: http://mirrors.kodi.tv/demo-files/BBB/bbb_sunflower_2160p_60fps_normal.mp4?mirrorlist&lt;br /&gt;
&lt;br /&gt;
So we would like to thank all these providers for helping us out on distributing Kodi throughout the world. If you are interested in being added to this list feel free to contact us. &#039;&#039;&#039;Do note that we will only accept offers from large institutions or companies to keep possible problems at a minimum.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Our main mirror address is: http://mirrors.kodi.tv&lt;br /&gt;
&lt;br /&gt;
== rsync setup ==&lt;br /&gt;
&lt;br /&gt;
We have two main rsync mirrors which are used by main Tier1 mirror hosts per continent.&lt;br /&gt;
All other hosts should use those hosts according to their location.&lt;br /&gt;
&lt;br /&gt;
=== main ===&lt;br /&gt;
&lt;br /&gt;
primary Tier1 USA server:&lt;br /&gt;
* Name: gatech.edu&lt;br /&gt;
* address: rsync://rsync.gtlib.gatech.edu/xbmc/&lt;br /&gt;
* Uses: rsync://rsync.kodi.tv/main/&lt;br /&gt;
** sync on half past the hour XX:30&lt;br /&gt;
* Notes:&lt;br /&gt;
** all other USA mirrors should sync from this host&lt;br /&gt;
** mirrors should sync at XX:00&lt;br /&gt;
&lt;br /&gt;
=== euro ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
primary Tier1 Europe server:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Tier1 Europe server has changed from Heanet (which closed down their FTP service) to RWTH Aaachen on 2024-12-16. Please only use RWTH Aachen from now on.&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Name: RWTH Aachen&lt;br /&gt;
* address: rsync://ftp.halifax.rwth-aachen.de/xbmc/&lt;br /&gt;
* Uses: rsync://rsync.kodi.tv/euro/&lt;br /&gt;
** push sync&lt;br /&gt;
* Notes:&lt;br /&gt;
** all other non-USA mirrors pull from them&lt;br /&gt;
** mirrors should sync at XX:00&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* Space needed: ~100GB&lt;br /&gt;
* Mirrors pull at various times, the mirrorbits database contains notes about these times.&lt;br /&gt;
* Every couple of hours. Max is every 24h.&lt;br /&gt;
* If mirrors ever move to a new server, the dns entry for rsync.xbmc.org or rsync.kodi.tv can be changed and there should theoretically be no interruption. In reality, it makes sense to be sure that no one is pulling by IP or has white-listed the current IP for our constant mirror status checks.&lt;br /&gt;
* hosts need to provide this information to have proper setup&lt;br /&gt;
** http:// location (mandatory)&lt;br /&gt;
** ftp:// location (currently not used at all)&lt;br /&gt;
** rsync:// access to the mirrors for scanning available files(mandatory)&lt;br /&gt;
** Network bandwidth (gives indication of probability factor for traffic redirecting)&lt;br /&gt;
** Host webpage&lt;br /&gt;
** Host description&lt;br /&gt;
** Redirect options: AS network only / Continent only/ Country only / Global&lt;br /&gt;
** Admin name (will not be made public)&lt;br /&gt;
** Admin e-mail (will not be made public)&lt;br /&gt;
* rsync server is split up in two sections for providing data&lt;br /&gt;
** Please choose one of the TIER server rsync locations&lt;br /&gt;
&lt;br /&gt;
Extra information&lt;br /&gt;
* rsync data could range to ~400Mb a day (amount may vary up or down)&lt;br /&gt;
* We have no hard data on amount of data that we redirect. We try to expand our network to reduce the amount for each mirror. We can always reduce the redirection criteria to reduce traffic to your mirror. Please contact us if needed.&lt;br /&gt;
&lt;br /&gt;
[[Category:XBMC_Foundation]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Mirrors&amp;diff=253959</id>
		<title>Mirrors</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Mirrors&amp;diff=253959"/>
		<updated>2024-12-16T17:05:41Z</updated>

		<summary type="html">&lt;p&gt;Yol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav}}&lt;br /&gt;
&lt;br /&gt;
This page contains information about our mirrors network setup.&lt;br /&gt;
&lt;br /&gt;
== Download mirrors ==&lt;br /&gt;
&lt;br /&gt;
To provide downloads we use a network of mirrors across the globe to provide the best possible location to download from. For actually distributing the downloads and making sure you will download from the best server available we have been using Mirrorbits, which has been operating since August 2015 and so far hasn&#039;t failed us yet. This is a great piece of software that constantly checks the status of the mirrors and dishes out files based on certain criteria, in an effort to ensure that downloads work as quickly and reliably as possible. Besides these builds it also hosts all the add-on which you can find in our official kodi.tv repository.&lt;br /&gt;
&lt;br /&gt;
== Information ==&lt;br /&gt;
&lt;br /&gt;
The actual mirror list is generated automatically and can be found by appending &amp;lt;code&amp;gt;?mirrorlist&amp;lt;/code&amp;gt; to the URL of any mirrored file on mirrors.kodi.tv.&lt;br /&gt;
Example: http://mirrors.kodi.tv/demo-files/BBB/bbb_sunflower_2160p_60fps_normal.mp4?mirrorlist&lt;br /&gt;
&lt;br /&gt;
So we would like to thank all these providers for helping us out on distributing Kodi throughout the world. If you are interested in being added to this list feel free to contact us. &#039;&#039;&#039;Do note that we will only accept offers from large institutions or companies to keep possible problems at a minimum.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Our main mirror address is: http://mirrors.kodi.tv&lt;br /&gt;
&lt;br /&gt;
== rsync setup ==&lt;br /&gt;
&lt;br /&gt;
We have two main rsync mirrors which are used by main Tier1 mirror hosts per continent.&lt;br /&gt;
All other hosts should use those hosts according to their location.&lt;br /&gt;
&lt;br /&gt;
=== main ===&lt;br /&gt;
&lt;br /&gt;
primary Tier1 USA server:&lt;br /&gt;
* Name: gatech.edu&lt;br /&gt;
* address: rsync://rsync.gtlib.gatech.edu/xbmc/&lt;br /&gt;
* Uses: rsync://rsync.kodi.tv/main/&lt;br /&gt;
** sync on half past the hour XX:30&lt;br /&gt;
* Notes:&lt;br /&gt;
** all other USA mirrors should sync from this host&lt;br /&gt;
** mirrors should sync at XX:00&lt;br /&gt;
&lt;br /&gt;
=== euro ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
primary Tier1 Europe server:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Tier1 Europe server has changed from Heanet (which closed down their FTP service) to RWTH Aaachen on 2024-12-16. Please only use RWTH Aachen from now on.&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Name: RWTH Aachen&lt;br /&gt;
* address: rsync://ftp.halifax.rwth-aachen.de/xbmc/&lt;br /&gt;
* Uses: rsync://rsync.kodi.tv/euro/&lt;br /&gt;
** sync on the hour XX:00&lt;br /&gt;
* Notes:&lt;br /&gt;
** all other non-USA mirrors pull from them&lt;br /&gt;
** mirrors should sync at XX:00&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* Space needed: ~100GB&lt;br /&gt;
* Mirrors pull at various times, the mirrorbits database contains notes about these times.&lt;br /&gt;
* Every couple of hours. Max is every 24h.&lt;br /&gt;
* If mirrors ever move to a new server, the dns entry for rsync.xbmc.org or rsync.kodi.tv can be changed and there should theoretically be no interruption. In reality, it makes sense to be sure that no one is pulling by IP or has white-listed the current IP for our constant mirror status checks.&lt;br /&gt;
* hosts need to provide this information to have proper setup&lt;br /&gt;
** http:// location (mandatory)&lt;br /&gt;
** ftp:// location (currently not used at all)&lt;br /&gt;
** rsync:// access to the mirrors for scanning available files(mandatory)&lt;br /&gt;
** Network bandwidth (gives indication of probability factor for traffic redirecting)&lt;br /&gt;
** Host webpage&lt;br /&gt;
** Host description&lt;br /&gt;
** Redirect options: AS network only / Continent only/ Country only / Global&lt;br /&gt;
** Admin name (will not be made public)&lt;br /&gt;
** Admin e-mail (will not be made public)&lt;br /&gt;
* rsync server is split up in two sections for providing data&lt;br /&gt;
** Please choose one of the TIER server rsync locations&lt;br /&gt;
&lt;br /&gt;
Extra information&lt;br /&gt;
* rsync data could range to ~400Mb a day (amount may vary up or down)&lt;br /&gt;
* We have no hard data on amount of data that we redirect. We try to expand our network to reduce the amount for each mirror. We can always reduce the redirection criteria to reduce traffic to your mirror. Please contact us if needed.&lt;br /&gt;
&lt;br /&gt;
[[Category:XBMC_Foundation]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Mirrors&amp;diff=253958</id>
		<title>Mirrors</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Mirrors&amp;diff=253958"/>
		<updated>2024-12-15T08:45:32Z</updated>

		<summary type="html">&lt;p&gt;Yol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav}}&lt;br /&gt;
&lt;br /&gt;
This page contains information about our mirrors network setup.&lt;br /&gt;
&lt;br /&gt;
== Download mirrors ==&lt;br /&gt;
&lt;br /&gt;
To provide downloads we use a network of mirrors across the globe to provide the best possible location to download from. For actually distributing the downloads and making sure you will download from the best server available we have been using Mirrorbits, which has been operating since August 2015 and so far hasn&#039;t failed us yet. This is a great piece of software that constantly checks the status of the mirrors and dishes out files based on certain criteria, in an effort to ensure that downloads work as quickly and reliably as possible. Besides these builds it also hosts all the add-on which you can find in our official kodi.tv repository.&lt;br /&gt;
&lt;br /&gt;
== Information ==&lt;br /&gt;
&lt;br /&gt;
The actual mirror list is generated automatically and can be found by appending &amp;lt;code&amp;gt;?mirrorlist&amp;lt;/code&amp;gt; to the URL of any mirrored file on mirrors.kodi.tv.&lt;br /&gt;
Example: http://mirrors.kodi.tv/demo-files/BBB/bbb_sunflower_2160p_60fps_normal.mp4?mirrorlist&lt;br /&gt;
&lt;br /&gt;
So we would like to thank all these providers for helping us out on distributing Kodi throughout the world. If you are interested in being added to this list feel free to contact us. &#039;&#039;&#039;Do note that we will only accept offers from large institutions or companies to keep possible problems at a minimum.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Our main mirror address is: http://mirrors.kodi.tv&lt;br /&gt;
&lt;br /&gt;
== rsync setup ==&lt;br /&gt;
&lt;br /&gt;
We have two main rsync mirrors which are used by main Tier1 mirror hosts per continent.&lt;br /&gt;
All other hosts should use those hosts according to their location.&lt;br /&gt;
&lt;br /&gt;
=== main ===&lt;br /&gt;
&lt;br /&gt;
primary Tier1 USA server:&lt;br /&gt;
* Name: gatech.edu&lt;br /&gt;
* address: rsync://rsync.gtlib.gatech.edu/xbmc/&lt;br /&gt;
* Uses: rsync://rsync.kodi.tv/main/&lt;br /&gt;
** sync on half past the hour XX:30&lt;br /&gt;
* Notes:&lt;br /&gt;
** all other USA mirrors should sync from this host&lt;br /&gt;
** mirrors should sync at XX:00&lt;br /&gt;
&lt;br /&gt;
=== euro ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
primary Tier1 Europe server:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;We are currently looking for a new Tier1 server after heanet has closed down. We will change this page and inform mirror administrators once we have something ready.&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Name: heanet.ie&lt;br /&gt;
* address: rsync://ftp.heanet.ie/mirrors/xbmc/&lt;br /&gt;
* Uses: rsync://rsync.kodi.tv/euro/&lt;br /&gt;
** sync on the hour XX:00&lt;br /&gt;
* Notes:&lt;br /&gt;
** all other non-USA mirrors pull from them&lt;br /&gt;
** mirrors should sync at XX:00&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* Space needed: ~100GB&lt;br /&gt;
* Mirrors pull at various times, the mirrorbits database contains notes about these times.&lt;br /&gt;
* Every couple of hours. Max is every 24h.&lt;br /&gt;
* If mirrors ever move to a new server, the dns entry for rsync.xbmc.org or rsync.kodi.tv can be changed and there should theoretically be no interruption. In reality, it makes sense to be sure that no one is pulling by IP or has white-listed the current IP for our constant mirror status checks.&lt;br /&gt;
* hosts need to provide this information to have proper setup&lt;br /&gt;
** http:// location (mandatory)&lt;br /&gt;
** ftp:// location (currently not used at all)&lt;br /&gt;
** rsync:// access to the mirrors for scanning available files(mandatory)&lt;br /&gt;
** Network bandwidth (gives indication of probability factor for traffic redirecting)&lt;br /&gt;
** Host webpage&lt;br /&gt;
** Host description&lt;br /&gt;
** Redirect options: AS network only / Continent only/ Country only / Global&lt;br /&gt;
** Admin name (will not be made public)&lt;br /&gt;
** Admin e-mail (will not be made public)&lt;br /&gt;
* rsync server is split up in two sections for providing data&lt;br /&gt;
** Please choose one of the TIER server rsync locations&lt;br /&gt;
&lt;br /&gt;
Extra information&lt;br /&gt;
* rsync data could range to ~400Mb a day (amount may vary up or down)&lt;br /&gt;
* We have no hard data on amount of data that we redirect. We try to expand our network to reduce the amount for each mirror. We can always reduce the redirection criteria to reduce traffic to your mirror. Please contact us if needed.&lt;br /&gt;
&lt;br /&gt;
[[Category:XBMC_Foundation]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=RSS_ticker&amp;diff=250286</id>
		<title>RSS ticker</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=RSS_ticker&amp;diff=250286"/>
		<updated>2024-03-18T15:18:47Z</updated>

		<summary type="html">&lt;p&gt;Yol: Remove defunct feeds&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[General topics]]|[[Basic controls]]}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;Kodi can display an [[w:RSS|RSS]] feed on the home screen of the default skin/interface, as well as any other skin that supports RSS feeds. By default, the RSS news feed is taken from https://kodi.tv, but the feed can be changed to almost any RSS feed.&amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|Don&#039;t confuse the [[RSS ticker]] with &#039;&#039;&#039;[[RSS media source]]&#039;&#039;&#039;, which allows access to video and/or audio RSS streams.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= RSS ticker settings =&lt;br /&gt;
The RSS ticker can be toggled on or off  by going to {{highlight|bordered=yes|&#039;&#039;&#039;[[Settings/Interface/Skin#Show_RSS_news_feeds|Settings -&amp;gt; Interface -&amp;gt; Skin -&amp;gt; Show RSS news feeds]]&#039;&#039;&#039; }}&lt;br /&gt;
&lt;br /&gt;
Below this setting one can also change the RSS news feed address. This will be done via the RSS Editor add-on, which you will prompted to download before the first usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Kodi RSS Feeds =&lt;br /&gt;
The following addresses are the default RSS Feeds for Kodi:&lt;br /&gt;
&lt;br /&gt;
    https://kodi.tv/feed&lt;br /&gt;
&lt;br /&gt;
= Technical documentation for skinners =&lt;br /&gt;
{{main|Skinning}}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RSS control ==&lt;br /&gt;
The rss control is used for displaying scrolling RSS feeds from the internet in Kodi. You can choose the font, size, colour, location and the RSS feed to be displayed.&lt;br /&gt;
&lt;br /&gt;
;Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;control type=&amp;quot;rss&amp;quot; id=&amp;quot;123&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;My First RSS control&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;left&amp;gt;80&amp;lt;/left&amp;gt;&lt;br /&gt;
  &amp;lt;top&amp;gt;60&amp;lt;/top&amp;gt;&lt;br /&gt;
  &amp;lt;width&amp;gt;500&amp;lt;/width&amp;gt;&lt;br /&gt;
  &amp;lt;visible&amp;gt;true&amp;lt;/visible&amp;gt;&lt;br /&gt;
  &amp;lt;font&amp;gt;font14&amp;lt;/font&amp;gt;&lt;br /&gt;
  &amp;lt;textcolor&amp;gt;FFB2D4F5&amp;lt;/textcolor&amp;gt;&lt;br /&gt;
  &amp;lt;urlset&amp;gt;1&amp;lt;/urlset&amp;gt;&lt;br /&gt;
  &amp;lt;headlinecolor&amp;gt;FFFFFFFF&amp;lt;/headlinecolor&amp;gt;&lt;br /&gt;
  &amp;lt;titlecolor&amp;gt;FF655656&amp;lt;/titlecolor&amp;gt;&lt;br /&gt;
&amp;lt;/control&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Available tags and attributes ==&lt;br /&gt;
In addition to the [[Default_control_tags|default control tags]], the following tags are available. Note that each tag is &#039;&#039;&#039;lower case only.&#039;&#039;&#039; This is important, as xml tags are case-sensitive.&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
! Tag !! Description&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;urlset&#039;&#039;&#039;&lt;br /&gt;
|  This refers to the feedset to be displayed. This is the id reference to the &amp;lt;set&amp;gt; section in [[RssFeeds.xml]] (see below):&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;font&#039;&#039;&#039;&lt;br /&gt;
|  Specifies the font to use from the font.xml file.&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;textcolor&#039;&#039;&#039;&lt;br /&gt;
|  Specified the color the text should be. In hex AARRGGBB format, or a name from the [[Colour_themes|colour theme.]]&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;shadowcolor&#039;&#039;&#039;&lt;br /&gt;
|  Specifies the color of the drop shadow on the text. In AARRGGBB format, or a name from the [[Colour_themes|colour theme.]]&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;headlinecolor&#039;&#039;&#039;&lt;br /&gt;
|  Specified the color that any highlighted text should be. In hex AARRGGBB format, or a name from the [[Colour_themes|colour theme.]]&lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;titlecolor&#039;&#039;&#039;&lt;br /&gt;
|  Specified the color the titles of the feeds should be. In hex AARRGGBB format, or a name from the [[Colour_themes|colour theme.]]&lt;br /&gt;
|- &lt;br /&gt;
|- &lt;br /&gt;
|  &#039;&#039;&#039;scrollspeed&#039;&#039;&#039;&lt;br /&gt;
|  Scroll speed of text in pixels per second.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RssFeeds.xml ==&lt;br /&gt;
{{Main|RssFeeds.xml}}&lt;br /&gt;
The actual content of the RSS feed is defined in the [[RssFeeds.xml]] file stored in the user&#039;s profile. Here is an example :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;rssfeeds&amp;gt;&lt;br /&gt;
   &amp;lt;set id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;feed updateinterval=&amp;quot;30&amp;quot;&amp;gt;http://feeds.feedburner.com/XboxScene&amp;lt;/feed&amp;gt;&lt;br /&gt;
     &amp;lt;feed updateinterval=&amp;quot;30&amp;quot;&amp;gt;http://feeds.wired.com/wired/topheadlines&amp;lt;/feed&amp;gt;&lt;br /&gt;
   &amp;lt;/set&amp;gt;&lt;br /&gt;
   &amp;lt;set id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;feed updateinterval=&amp;quot;30&amp;quot;&amp;gt;http://www.cnet.co.uk/feeds/public/rss_news_10.htm&amp;lt;/feed&amp;gt;&lt;br /&gt;
   &amp;lt;/set&amp;gt;&lt;br /&gt;
 &amp;lt;/rssfeeds&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As can be seen, each feedset has an id attribute – this is what we are referencing in the &amp;lt;id&amp;gt; attribute of the control. There can be more than one &amp;lt;set&amp;gt; defined, and more than one &amp;lt;feed&amp;gt; per set. The &amp;lt;feed&amp;gt;&#039;s must be escaped so that they&#039;re xml-safe &amp;lt;nowiki&amp;gt;(ie replace &amp;amp; with &amp;amp;amp; etc.)&amp;lt;/nowiki&amp;gt;. Each feed in the set runs through in the order they are defined.&lt;br /&gt;
&amp;lt;section end=&amp;quot;main content&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{top}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{updated|18}}&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Skin development]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Google_Summer_of_Code/2023&amp;diff=244158</id>
		<title>Google Summer of Code/2023</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Google_Summer_of_Code/2023&amp;diff=244158"/>
		<updated>2023-02-05T11:24:44Z</updated>

		<summary type="html">&lt;p&gt;Yol: &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.&#039;&#039;&#039;&lt;br /&gt;
Kodi has applied as mentoring organization for GSoC 2023. Accepted organizations will be announced on February 22.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 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=317 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;. --&amp;gt;&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 1000 software developers have contributed to Kodi, and 300-plus translators have worked to expand its reach, making it available in more than 70 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, 2021, and 2022 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 2023, 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 should have a workload of 12 weeks with a possible extension of up to 22 weeks.&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=317 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;
&amp;lt;!-- * &#039;&#039;&#039;Workload:&#039;&#039;&#039; Either 175 or 350 hours. --&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Team-Kodi proposal ideas up for discussion ==&lt;br /&gt;
&lt;br /&gt;
=== Portal integration and Flatpak improvements in Kodi ===&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; Integrate libPortal https://github.com/flatpak/libportal into Kodi, to handle fileaccess and other sandbox relevant factors as far as possible. We could also improve some other sandbox features like handling of binary addons, automatic flatpak build checks and build improvements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; Integration of libPortal into Kodi and possibly other Flatpak improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; C++, libPortal&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Risky/Exploratory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039; Linux/Kodi Core&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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; &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;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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; &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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&lt;br /&gt;
--&amp;gt;&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;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 175 hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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 2022 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;
*Implement IWYU into existing CI (Jenkins). Of note would be the requirement to create IWYU mappings for the Kodi codebase.&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=317 Kodi GSoC forum]&#039;&#039;&#039;. They can be as big or as small as you feel you can comfortably accomplish in the defined time (175 or 350 hours). 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=317 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>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Google_Summer_of_Code/2023&amp;diff=244157</id>
		<title>Google Summer of Code/2023</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Google_Summer_of_Code/2023&amp;diff=244157"/>
		<updated>2023-02-05T11:24:00Z</updated>

		<summary type="html">&lt;p&gt;Yol: &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.&#039;&#039;&#039;&lt;br /&gt;
Kodi has applied as mentoring organization for GSoC 2023. Accepted organizations will be announced on February 22.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 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=317 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;. --&amp;gt;&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 1000 software developers have contributed to Kodi, and 300-plus translators have worked to expand its reach, making it available in more than 70 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, 2021, and 2022 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 2023, 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=317 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;
&amp;lt;!-- * &#039;&#039;&#039;Workload:&#039;&#039;&#039; Either 175 or 350 hours. --&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Team-Kodi proposal ideas up for discussion ==&lt;br /&gt;
&lt;br /&gt;
=== Portal integration and Flatpak improvements in Kodi ===&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; Integrate libPortal https://github.com/flatpak/libportal into Kodi, to handle fileaccess and other sandbox relevant factors as far as possible. We could also improve some other sandbox features like handling of binary addons, automatic flatpak build checks and build improvements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; Integration of libPortal into Kodi and possibly other Flatpak improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; C++, libPortal&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty:&#039;&#039;&#039; Risky/Exploratory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039; Linux/Kodi Core&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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; &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;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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; &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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&lt;br /&gt;
--&amp;gt;&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;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 175 hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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 2022 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;
*Implement IWYU into existing CI (Jenkins). Of note would be the requirement to create IWYU mappings for the Kodi codebase.&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=317 Kodi GSoC forum]&#039;&#039;&#039;. They can be as big or as small as you feel you can comfortably accomplish in the defined time (175 or 350 hours). 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=317 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>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Google_Summer_of_Code/2022&amp;diff=244038</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=244038"/>
		<updated>2023-01-29T16:05:37Z</updated>

		<summary type="html">&lt;p&gt;Yol: &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;
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=317 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 1000 software developers have contributed to Kodi, and 300-plus translators have worked to expand its reach, making it available in more than 70 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=317 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;
* &#039;&#039;&#039;Workload:&#039;&#039;&#039; Either 175 or 350 hours.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Team-Kodi proposal ideas up for discussion ==&lt;br /&gt;
&lt;br /&gt;
=== Portal integration and Flatpak improvements in Kodi ===&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; Integrate libPortal https://github.com/flatpak/libportal into Kodi, to handle fileaccess and other sandbox relevant factors as far as possible. We could also improve some other sandbox features like handling of binary addons, automatic flatpak build checks and build improvements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; Integration of libPortal into Kodi and possibly other Flatpak improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; C++, libPortal&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; Risky/Exploratory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039; Linux/Kodi Core&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&lt;br /&gt;
--&amp;gt;&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;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 175 hours&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;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 175 hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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 2022 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;
*Implement IWYU into existing CI (Jenkins). Of note would be the requirement to create IWYU mappings for the Kodi codebase.&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=317 Kodi GSoC forum]&#039;&#039;&#039;. They can be as big or as small as you feel you can comfortably accomplish in the defined time (175 or 350 hours). 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=317 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>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Google_Summer_of_Code/2023&amp;diff=244037</id>
		<title>Google Summer of Code/2023</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Google_Summer_of_Code/2023&amp;diff=244037"/>
		<updated>2023-01-29T16:05:26Z</updated>

		<summary type="html">&lt;p&gt;Yol: Created page with &amp;quot;{{GSOC_nav}} {{mininav| Google Summer of Code }} 150pxWelcome to the Kodi [http://summerofcode.withgoogle.com Google Summer of Code] ideas page.  &amp;#039;&amp;#039;&amp;#039;This page is currently work in progress.&amp;#039;&amp;#039;&amp;#039; &amp;lt;!-- Kodi has applied as mentoring organization for GSoC 2022. Accepted organizations will be announced on March 7. --&amp;gt;  We encourage interested students of all ethnicities and genders to review some of the ideas on this page, and then feel free...&amp;quot;&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.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;!-- Kodi has applied as mentoring organization for GSoC 2022. Accepted organizations will be announced on March 7. --&amp;gt;&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=317 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 1000 software developers have contributed to Kodi, and 300-plus translators have worked to expand its reach, making it available in more than 70 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=317 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;
* &#039;&#039;&#039;Workload:&#039;&#039;&#039; Either 175 or 350 hours.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Team-Kodi proposal ideas up for discussion ==&lt;br /&gt;
&lt;br /&gt;
=== Portal integration and Flatpak improvements in Kodi ===&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; Integrate libPortal https://github.com/flatpak/libportal into Kodi, to handle fileaccess and other sandbox relevant factors as far as possible. We could also improve some other sandbox features like handling of binary addons, automatic flatpak build checks and build improvements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; Integration of libPortal into Kodi and possibly other Flatpak improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; C++, libPortal&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; Risky/Exploratory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039; Linux/Kodi Core&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&lt;br /&gt;
--&amp;gt;&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;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 175 hours&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;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 175 hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; 350 hours&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 2022 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;
*Implement IWYU into existing CI (Jenkins). Of note would be the requirement to create IWYU mappings for the Kodi codebase.&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=317 Kodi GSoC forum]&#039;&#039;&#039;. They can be as big or as small as you feel you can comfortably accomplish in the defined time (175 or 350 hours). 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=317 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>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Kodi_Foundation&amp;diff=243099</id>
		<title>Kodi Foundation</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Kodi_Foundation&amp;diff=243099"/>
		<updated>2022-09-21T16:26:57Z</updated>

		<summary type="html">&lt;p&gt;Yol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav}}&lt;br /&gt;
&amp;lt;section begin=intro /&amp;gt;The &amp;quot;&#039;&#039;&#039;Kodi Foundation&#039;&#039;&#039;&amp;quot; is the non-profit organization that oversees the [[Kodi|{{kodi}}]] project and is registered in the US.&amp;lt;section end=intro /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Members ==&lt;br /&gt;
Membership of the Kodi Foundation is typically taken from members of Team Kodi, but may include non Team members.&lt;br /&gt;
&lt;br /&gt;
== Board of Directors ==&lt;br /&gt;
{| class=&amp;quot;infobox&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;section begin=Foundation members /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Keith Herrington (keith)&#039;&#039;&#039; - Board member - &#039;&#039;Term: 11/2016 - 11/2024&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Darren Hill (DarrenHill)&#039;&#039;&#039; - Board member - &#039;&#039;Term: 11/2018 - 11/2024&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ronie (ronie)&#039;&#039;&#039; - Board member - &#039;&#039;Term: 11/2019 - 11/2023&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Yol (Yol)&#039;&#039;&#039; - Board member - &#039;&#039;Term: 11/2019 - 11/2023&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Da-Anda (Da-Anda)&#039;&#039;&#039; - Board member - &#039;&#039;Term: 11/2021 - 11/2023&#039;&#039;&amp;lt;section end=Foundation members /&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
The Kodi Board of Directors are Foundation members that manages the Kodi Foundation. The Board consists of five seats that are chosen by vote from the Kodi Foundation members. The Board&#039;s responsibilities include management of funds, publicity, and all business related issues (taxes, communication with other businesses, maintaining non-profit status etc.)&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== Board of Directors meetings ==&lt;br /&gt;
The Board meets about once a month (in addition to any special meetings as required) to discuss any business that needs to be handled by the foundation.  Meetings are typically conducted via teleconference using a service such as Skype.&lt;br /&gt;
&lt;br /&gt;
== Board of Directors elections ==&lt;br /&gt;
;Who can be a Kodi Board member?&lt;br /&gt;
:Any existing member of the foundation, as voted by the remaining members.&lt;br /&gt;
&lt;br /&gt;
;How long does a board member hold office?&lt;br /&gt;
:Terms last for two years. We endeavor to have a staggered cycle so that not all board members are turned over at a single election. There are no term restrictions, so Board members may even run for consecutive terms. However, in the interests of sharing the load, any and all members are encouraged to participate.&lt;br /&gt;
&lt;br /&gt;
;What is expected of a Kodi Board member?&lt;br /&gt;
:Board members are expected to attend all meetings or will otherwise be diligent in letting the other board members know if they won&#039;t be around.  Further, they&#039;ll be expected to make decisions (as a group) in the best interests of the foundation.  The Board accountable to the members, so should consider recommendations made by members during the decision making process, Though they ultimately must make the final decisions.  Any and all discussion should be frankly communicated to members within a reasonable time frame.&lt;br /&gt;
&lt;br /&gt;
;Who elects the officers (President, Secretary, Treasurer etc?)&lt;br /&gt;
:The board elects the officers.  In doing so, they may choose to take advice from the membership, but the decision is theirs.  The President must be from within the board itself, though Secretary, Treasurer, and any other officers the board wishes to appoint may be from outside the board (or outside the membership).&lt;br /&gt;
&lt;br /&gt;
=== Election process ===&lt;br /&gt;
&lt;br /&gt;
Board elections occur as follows:&lt;br /&gt;
# A member is nominated by the Board to oversee the election.&lt;br /&gt;
# Nominations for the open positions are taken from within the existing membership via email and/or via a forum thread.  This lasts a minimum of 10 days.&lt;br /&gt;
# Confirmed nominees are placed on the ballot.&lt;br /&gt;
# A vote of the membership is then taken using a trusted internet voting service using a ranking system. (usually via the Condorcet Internet Voting Service, http://www.cs.cornell.edu/w8/~andru/civs ) and the candidates with the highest ranks take office.  This lasts about two weeks.&lt;br /&gt;
#: &#039;&#039;In the event of a tie, it will be resolved with the existing board members discussing with the tied nominees. Tied nominees that do not go on the board may be nominated as officers of the Foundation, for example.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Previous elections ===&lt;br /&gt;
* [[/Elections/2021|2021]]&lt;br /&gt;
* [[/Elections/2020|2020]]&lt;br /&gt;
* [[/Elections/2019|2019]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2018|2018]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2017|2017]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2016|2016]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2014|2014]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2013|2013]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2012|2012]]&lt;br /&gt;
&lt;br /&gt;
== Foundation Bylaws and other important documents ==&lt;br /&gt;
* [[Media:ByLaws.pdf]]&lt;br /&gt;
* [[Media:Delaware Incorporation Notice.pdf]]&lt;br /&gt;
* [[Media:Delaware Notice Of Good Standing.pdf]]&lt;br /&gt;
* [[Media:KodiFoundationIncorporationNotice.pdf]]&lt;br /&gt;
* [[Media:Kodi_Foundation_exempt.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Trademarks ==&lt;br /&gt;
{{see|Official:Trademark Policy index}}&lt;br /&gt;
&lt;br /&gt;
== Financial information ==&lt;br /&gt;
&lt;br /&gt;
=== Financial status ===&lt;br /&gt;
&lt;br /&gt;
* Form 990 2016 - http://www.guidestar.org/FinDocuments/2016/474/565/2016-474565769-0e36f6e3-9.pdf &lt;br /&gt;
* Income and expenses 2015 - https://drive.google.com/file/d/0BwsEEPRqIzELOVpUa0p4endrRWc/view?usp=sharing&lt;br /&gt;
* Income and expenses 2014 - https://drive.google.com/file/d/0BwsEEPRqIzELVW9rMkpPUWZRSHM/view?usp=sharing&lt;br /&gt;
* Income and expenses 2013 - https://docs.google.com/spreadsheet/ccc?key=0AtlJ3dnHcw46dHpmeXlIV0hGaC13Z3I3b25hZWhWRGc#gid=8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;note&#039;&#039;: 2014 and 2015 expenses are US Foundation account only.&lt;br /&gt;
&lt;br /&gt;
=== Account details ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Unites States account&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Bank: Wells Fargo&lt;br /&gt;
* Beneficiary: Kodi Foundation&lt;br /&gt;
&lt;br /&gt;
== Legal representation ==&lt;br /&gt;
The Kodi Foundation is legally represented by the [[w:Software Freedom Law Center|SFLC (Software Freedom Law Center)]].&lt;br /&gt;
&lt;br /&gt;
In addition the Kodi Foundation is member of [[w:Open_Invention_Network|OIN (Open Invention Network)]] since 9 July 2010. OIN is a defensive patent pool and community of patent non-aggression which enables freedom of action in Linux.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
For contact information, please see http://kodi.tv/about/contact/&lt;br /&gt;
&lt;br /&gt;
[[Category:Kodi_Foundation-Archived]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=XBMC_Foundation&amp;diff=243098</id>
		<title>XBMC Foundation</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=XBMC_Foundation&amp;diff=243098"/>
		<updated>2022-09-21T16:25:11Z</updated>

		<summary type="html">&lt;p&gt;Yol: Yol moved page XBMC Foundation to Kodi Foundation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Kodi Foundation]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Kodi_Foundation&amp;diff=243097</id>
		<title>Kodi Foundation</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Kodi_Foundation&amp;diff=243097"/>
		<updated>2022-09-21T16:25:11Z</updated>

		<summary type="html">&lt;p&gt;Yol: Yol moved page XBMC Foundation to Kodi Foundation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav}}&lt;br /&gt;
&amp;lt;section begin=intro /&amp;gt;The &amp;quot;&#039;&#039;&#039;XBMC Foundation&#039;&#039;&#039;&amp;quot; is the non-profit organization that oversees the [[Kodi|{{kodi}}]] project and is registered in the US.&amp;lt;section end=intro /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Members ==&lt;br /&gt;
Membership of the XBMC Foundation is typically taken from members of Team Kodi, but may include non Team members.&lt;br /&gt;
&lt;br /&gt;
== Board of Directors ==&lt;br /&gt;
{| class=&amp;quot;infobox&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;section begin=Foundation members /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Keith Herrington (keith)&#039;&#039;&#039; - Board member - &#039;&#039;Term: 11/2016 - 11/2022&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Darren Hill (DarrenHill)&#039;&#039;&#039; - Board member - &#039;&#039;Term: 11/2018 - 11/2022&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ronie (ronie)&#039;&#039;&#039; - Board member - &#039;&#039;Term: 11/2019 - 11/2023&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Yol (Yol)&#039;&#039;&#039; - Board member - &#039;&#039;Term: 11/2019 - 11/2023&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Da-Anda (Da-Anda)&#039;&#039;&#039; - Board member - &#039;&#039;Term: 11/2021 - 11/2023&#039;&#039;&amp;lt;section end=Foundation members /&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
The XBMC Board of Directors are Foundation members that manages the XBMC Foundation. The Board consists of five seats that are chosen by vote from the XBMC Foundation members. The Board&#039;s responsibilities include management of funds, publicity, and all business related issues (taxes, communication with other businesses, maintaining non-profit status etc.)&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== Board of Directors meetings ==&lt;br /&gt;
The Board meets about once a month (in addition to any special meetings as required) to discuss any business that needs to be handled by the foundation.  Meetings are typically conducted via teleconference using a service such as Skype.&lt;br /&gt;
&lt;br /&gt;
== Board of Directors elections ==&lt;br /&gt;
;Who can be an XBMC Board member?&lt;br /&gt;
:Any existing member of the foundation, as voted by the remaining members.&lt;br /&gt;
&lt;br /&gt;
;How long does a board member hold office?&lt;br /&gt;
:Terms last for two years. We endeavor to have a staggered cycle so that not all board members are turned over at a single election. There are no term restrictions, so Board members may even run for consecutive terms. However, in the interests of sharing the load, any and all members are encouraged to participate.&lt;br /&gt;
&lt;br /&gt;
;What is expected of an XBMC Board member?&lt;br /&gt;
:Board members are expected to attend all meetings or will otherwise be diligent in letting the other board members know if they won&#039;t be around.  Further, they&#039;ll be expected to make decisions (as a group) in the best interests of the foundation.  The Board accountable to the members, so should consider recommendations made by members during the decision making process, Though they ultimately must make the final decisions.  Any and all discussion should be frankly communicated to members within a reasonable time frame.&lt;br /&gt;
&lt;br /&gt;
;Who elects the officers (President, Secretary, Treasurer etc?)&lt;br /&gt;
:The board elects the officers.  In doing so, they may choose to take advice from the membership, but the decision is theirs.  The President must be from within the board itself, though Secretary, Treasurer, and any other officers the board wishes to appoint may be from outside the board (or outside the membership).&lt;br /&gt;
&lt;br /&gt;
=== Election process ===&lt;br /&gt;
&lt;br /&gt;
Board elections occur as follows:&lt;br /&gt;
# A member is nominated by the Board to oversee the election.&lt;br /&gt;
# Nominations for the open positions are taken from within the existing membership via email and/or via a forum thread.  This lasts a minimum of 10 days.&lt;br /&gt;
# Confirmed nominees are placed on the ballot.&lt;br /&gt;
# A vote of the membership is then taken using a trusted internet voting service using a ranking system. (usually via the Condorcet Internet Voting Service, http://www.cs.cornell.edu/w8/~andru/civs ) and the candidates with the highest ranks take office.  This lasts about two weeks.&lt;br /&gt;
#: &#039;&#039;In the event of a tie, it will be resolved with the existing board members discussing with the tied nominees. Tied nominees that do not go on the board may be nominated as officers of the Foundation, for example.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Previous elections ===&lt;br /&gt;
* [[/Elections/2021|2021]]&lt;br /&gt;
* [[/Elections/2020|2020]]&lt;br /&gt;
* [[/Elections/2019|2019]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2018|2018]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2017|2017]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2016|2016]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2014|2014]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2013|2013]]&lt;br /&gt;
* [[Archive:XBMC_Foundation/Elections/2012|2012]]&lt;br /&gt;
&lt;br /&gt;
== Foundation Bylaws and other important documents ==&lt;br /&gt;
* [[Media:ByLaws.pdf]]&lt;br /&gt;
* [[Media:Delaware Incorporation Notice.pdf]]&lt;br /&gt;
* [[Media:Delaware Notice Of Good Standing.pdf]]&lt;br /&gt;
* [[Media:KodiFoundationIncorporationNotice.pdf]]&lt;br /&gt;
* [[Media:Kodi_Foundation_exempt.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Trademarks ==&lt;br /&gt;
{{see|Official:Trademark Policy index}}&lt;br /&gt;
&lt;br /&gt;
== Financial information ==&lt;br /&gt;
&lt;br /&gt;
=== Financial status ===&lt;br /&gt;
&lt;br /&gt;
* Form 990 2016 - http://www.guidestar.org/FinDocuments/2016/474/565/2016-474565769-0e36f6e3-9.pdf &lt;br /&gt;
* Income and expenses 2015 - https://drive.google.com/file/d/0BwsEEPRqIzELOVpUa0p4endrRWc/view?usp=sharing&lt;br /&gt;
* Income and expenses 2014 - https://drive.google.com/file/d/0BwsEEPRqIzELVW9rMkpPUWZRSHM/view?usp=sharing&lt;br /&gt;
* Income and expenses 2013 - https://docs.google.com/spreadsheet/ccc?key=0AtlJ3dnHcw46dHpmeXlIV0hGaC13Z3I3b25hZWhWRGc#gid=8&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;note&#039;&#039;: 2014 and 2015 expenses are US Foundation account only.&lt;br /&gt;
&lt;br /&gt;
=== Account details ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Unites States account&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Bank: Wells Fargo&lt;br /&gt;
* Beneficiary: Kodi Foundation&lt;br /&gt;
&lt;br /&gt;
== Legal representation ==&lt;br /&gt;
The XBMC Foundation is legally represented by the [[w:Software Freedom Law Center|SFLC (Software Freedom Law Center)]].&lt;br /&gt;
&lt;br /&gt;
In addition the XBMC Foundation is member of [[w:Open_Invention_Network|OIN (Open Invention Network)]] since 9 July 2010. OIN is a defensive patent pool and community of patent non-aggression which enables freedom of action in Linux.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
For contact information, please see http://kodi.tv/about/contact/&lt;br /&gt;
&lt;br /&gt;
[[Category:XBMC_Foundation-Archived]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Kodi_Foundation/Elections/2021&amp;diff=243096</id>
		<title>Kodi Foundation/Elections/2021</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Kodi_Foundation/Elections/2021&amp;diff=243096"/>
		<updated>2022-09-21T16:24:46Z</updated>

		<summary type="html">&lt;p&gt;Yol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Kodi Foundation]] | [[Kodi Foundation/Elections|Elections]] }}&lt;br /&gt;
&lt;br /&gt;
==Pre-election==&lt;br /&gt;
DarrenHill was voting admin, as his seat was not up for re-election.&lt;br /&gt;
&lt;br /&gt;
==Nomination notice==&lt;br /&gt;
The following notice posted on the Team Kodi private forum, and linked to in an e-mail to all Foundation members, to give due notice about the election and to collect nominations. The Foundation bylaws state that at least ten days must be given for a notice about member decisions such as an election, which served as the nomination period.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Nominations for the XBMC Foundation Board Elections 2021&amp;quot;, as written by DarrenHill&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
It&#039;s already September, meaning it&#039;s time for the yearly [url=https://kodi.tv/about/xbmc-foundation]XBMC Foundation[/url] board elections again.&lt;br /&gt;
&lt;br /&gt;
Due to his actual work commitments, Learningit has requested to resign his seat on the board early. With regret, the board have accepted his request and so his seat is also up for nomination.&lt;br /&gt;
&lt;br /&gt;
This year board member seats up for election are: Yol, Ronie and Learningit.&lt;br /&gt;
Seats not up for election are Keith and DarrenHill (me)&lt;br /&gt;
&lt;br /&gt;
The rules are pretty simple:&lt;br /&gt;
&lt;br /&gt;
# Any team member can nominate, but the nominee must be a member of the Foundation*.&lt;br /&gt;
# You&#039;re allowed to nominate multiple people if you wish.&lt;br /&gt;
# The nominated member has the option to accept or decline their nomination.&lt;br /&gt;
# Only foundation members will be able to vote. *&lt;br /&gt;
# If a person has already been nominated, please don&#039;t nominate them again.&lt;br /&gt;
&lt;br /&gt;
Please make sure to keep your nominations simple and clear. Eg:&lt;br /&gt;
[quote]&lt;br /&gt;
Nominate: &amp;lt;member&amp;gt;&lt;br /&gt;
Motivation: I would like to nominate &amp;lt;member&amp;gt; for the XBMC Foundation Board because &amp;lt;motivation&amp;gt;&lt;br /&gt;
[/quote]&lt;br /&gt;
&lt;br /&gt;
In case you&#039;re nominated, please reply with something like..&lt;br /&gt;
[quote]&lt;br /&gt;
Thank you. I accept my nomination. &amp;lt;motivation&amp;gt;&lt;br /&gt;
[/quote]&lt;br /&gt;
or&lt;br /&gt;
[quote]&lt;br /&gt;
No, thanks. I decline my nomination. &amp;lt;Optional motivation&amp;gt;&lt;br /&gt;
[/quote]&lt;br /&gt;
&lt;br /&gt;
The second post in this thread wil be updated with a list of members and the nomination status on a regular basis,&lt;br /&gt;
so you don&#039;t have to crawl through all posts/pages to check.&lt;br /&gt;
&lt;br /&gt;
The nomination period is 1 month starting today and will end on October 16th.&lt;br /&gt;
Actual voting will begin after that and will be closed a couple of weeks later (if a vote is required) &lt;br /&gt;
Once the voting is over, the results will be announced in this thread as well as though a team email.&lt;br /&gt;
&lt;br /&gt;
The actual starting date for the new board seats will be in November, when we would like to have a joint online meeting with the old and new board members as a smooth hand-over and to welcome the new board members.&lt;br /&gt;
&lt;br /&gt;
* If you&#039;d like to vote in the election, you need to be accepted as a foundation member and affirm the by-laws of the foundation.&lt;br /&gt;
Details on applying to join the Foundation are at: https://forum.kodi.tv/showthread.php?tid=335025 (Click here to join the Foundation)&lt;br /&gt;
&lt;br /&gt;
A list of all foundation members can be found here: https://drive.google.com/open?id=1yy_gPbZPGeJUG5GDcZZScek7mEY-EdY0xY0UJaJRPHE (Foundation member list - only accessible to Google accounts logged in using your Kodi address).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Voting started on Tuesday 16th October 2021 and ended on Saturday 6th November 2021 using the Condorcet Internet Voting Service with a ranking scale, https://civs.cs.cornell.edu/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Individual e-mail addresses from Foundation members were entered into the CIVS ballot and mailed each Foundation member with a unique voting key url. This also served as the notice for the start of the voting period.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A second notice was given out outside of the CVIS system in order to reduce the chance of someone accidentally not receiving a voting notice. Voting notices can be sent out again, but voting keys are generated based on e-mail addresses and thus prevent double voting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following description was used for the ballot:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Elections for the Kodi Foundation Board for 2021.&lt;br /&gt;
&lt;br /&gt;
We have 4 candidates for the 3 available seats, so please select your preference for who should take the seats.&lt;br /&gt;
&lt;br /&gt;
Voting is available to all Kodi Foundation members, and will end just before the team meeting on 6th November.&lt;br /&gt;
&lt;br /&gt;
The results will be announced during that meeting.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;Final list of confirmed nominees:&lt;br /&gt;
* da-anda&lt;br /&gt;
* yol&lt;br /&gt;
* ronie&lt;br /&gt;
* phunkyfish&lt;br /&gt;
&lt;br /&gt;
==Results==&lt;br /&gt;
24 Foundation members voted. The top three ranked become board members effective November 2021. Da-anda, Ronie and yol were elected as board members.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Results page:&#039;&#039;&#039; https://civs1.civs.us/cgi-bin/results.pl?id=E_3a8f50794fc75de6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;ronie&#039;&#039;&#039;  (Condorcet winner: wins contests with all other choices)&lt;br /&gt;
# &#039;&#039;&#039;yol&#039;&#039;&#039; &lt;br /&gt;
# &#039;&#039;&#039;da-anda&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Kodi_Foundation/Elections/2020&amp;diff=243095</id>
		<title>Kodi Foundation/Elections/2020</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Kodi_Foundation/Elections/2020&amp;diff=243095"/>
		<updated>2022-09-21T16:24:37Z</updated>

		<summary type="html">&lt;p&gt;Yol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Kodi Foundation]] | [[Kodi Foundation/Elections|Elections]] }}&lt;br /&gt;
&lt;br /&gt;
==Pre-election==&lt;br /&gt;
Ronie was voting admin, as his seat was not up for re-election.&lt;br /&gt;
&lt;br /&gt;
==Nomination notice==&lt;br /&gt;
The following notice posted on the Team Kodi private forum, and linked to in an e-mail to all Foundation members, to give due notice about the election and to collect nominations. The Foundation bylaws state that at least ten days must be given for a notice about member decisions such as an election, which served as the nomination period.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Nominations for the XBMC Foundation Board Elections 2020&amp;quot;, as written by Ronie&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Hi everybody,&lt;br /&gt;
&lt;br /&gt;
It&#039;s the end of August, meaning it&#039;s time for the yearly XBMC Foundation board elections again.&lt;br /&gt;
&lt;br /&gt;
This year board member seats up for election are: Keith, lrusak and DarrenHill.&lt;br /&gt;
Seats not up for election are yol and ronie (me)&lt;br /&gt;
&lt;br /&gt;
The rules are pretty simple:&lt;br /&gt;
&lt;br /&gt;
1. Any team member can nominate, but the nominee must be a member of the Foundation*.&lt;br /&gt;
2. You&#039;re allowed to nominate multiple people if you wish.&lt;br /&gt;
3. The nominated member has the option to accept or decline their nomination.&lt;br /&gt;
4. Only foundation members will be able to vote. *&lt;br /&gt;
5. If a person has already been nominated, please don&#039;t nominate them again.&lt;br /&gt;
&lt;br /&gt;
Please make sure to keep your nominations simple and clear. Eg:&lt;br /&gt;
&lt;br /&gt;
Nominate: &amp;lt;member&amp;gt;&lt;br /&gt;
Motivation: I would like to nominate &amp;lt;member&amp;gt; for the XBMC Foundation Board because &amp;lt;motivation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case you&#039;re nominated, please reply with something like..&lt;br /&gt;
&amp;quot;Thank you. I accept my nomination. &amp;lt;motivation&amp;gt;&amp;quot;&lt;br /&gt;
or&lt;br /&gt;
&amp;quot;No, thanks. I decline my nomination. &amp;lt;Optional motivation&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The second post in this thread wil be updated with a list of members and the nomination status on a regular basis,&lt;br /&gt;
so you don&#039;t have to crawl through all posts/pages to check.&lt;br /&gt;
&lt;br /&gt;
The nomination period is 28 days starting today and will end on September 24th.&lt;br /&gt;
Actual voting will begin after that and will be closed the 19th of October.&lt;br /&gt;
Once the voting is over, the results will be announced in this thread as well as though a team email.&lt;br /&gt;
&lt;br /&gt;
The actual starting date for the new board seats will be in November, when we would like to have a joint online meeting with the old and new board members as a smooth hand-over and to welcome the new board members.&lt;br /&gt;
&lt;br /&gt;
* If you&#039;d like to vote in the election, you need to be accepted as a foundation member and affirm the by-laws of the foundation.&lt;br /&gt;
You can do so here: https://forum.kodi.tv/showthread.php?tid=335025&lt;br /&gt;
A list of all foundation members can be found here: https://drive.google.com/open?id=1yy_gPb...Y0UJaJRPHE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
In the end there were only three nominees, so as there were 3 open seats no vote was held.&lt;br /&gt;
&lt;br /&gt;
;Final list of confirmed nominees:&lt;br /&gt;
* Keith&lt;br /&gt;
* DarrenHill&lt;br /&gt;
* Learningit&lt;br /&gt;
&lt;br /&gt;
==Results==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Keith&#039;&#039;&#039;  &lt;br /&gt;
# &#039;&#039;&#039;DarrenHill&#039;&#039;&#039; &lt;br /&gt;
# &#039;&#039;&#039;Learningit&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Kodi_Foundation/Elections/2019&amp;diff=243094</id>
		<title>Kodi Foundation/Elections/2019</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Kodi_Foundation/Elections/2019&amp;diff=243094"/>
		<updated>2022-09-21T16:24:28Z</updated>

		<summary type="html">&lt;p&gt;Yol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Kodi Foundation]] | [[Kodi Foundation/Elections|Elections]] }}&lt;br /&gt;
&lt;br /&gt;
==Pre-election==&lt;br /&gt;
DarrenHill was voting admin, as his seat was not up for re-election.&lt;br /&gt;
&lt;br /&gt;
==Nomination notice==&lt;br /&gt;
The following notice posted on the Team Kodi private forum, and linked to in an e-mail to all Foundation members, to give due notice about the election and to collect nominations. The Foundation bylaws state that at least ten days must be given for a notice about member decisions such as an election, which served as the nomination period.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Nominations for the XBMC Foundation Board Elections 2019&amp;quot;, as written by DarrenHill&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Hi everybody.&lt;br /&gt;
&lt;br /&gt;
It&#039;s September and we have DevCon coming up, meaning it&#039;s time for [https://kodi.tv/about/xbmc-foundation XBMC Foundation] board elections again.&lt;br /&gt;
&lt;br /&gt;
This year board member seats up for election are: Martijn and Kib.&lt;br /&gt;
Seats not up for election are Keith, lrusak and DarrenHill (me)&lt;br /&gt;
&lt;br /&gt;
The rules are pretty simple:&lt;br /&gt;
&lt;br /&gt;
1. Any team member can nominate, but the nominee must be a member of the Foundation*.&lt;br /&gt;
2. You&#039;re allowed to nominate multiple people if you wish.&lt;br /&gt;
3. The nominated member has the option to accept or decline their nomination.&lt;br /&gt;
4. Only foundation members will be able to vote. *&lt;br /&gt;
5. If a person has already been nominated, please don&#039;t nominate them again.&lt;br /&gt;
&lt;br /&gt;
Please make sure to keep your nominations simple and clear. Eg:&lt;br /&gt;
&lt;br /&gt;
Nominate: &amp;lt;member&amp;gt;&lt;br /&gt;
Motivation: I would like to nominate &amp;lt;member&amp;gt; for the XBMC Foundation Board because &amp;lt;motivation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case you&#039;re nominated, please reply with something like..&lt;br /&gt;
&amp;quot;Thank you. I accept my nomination. &amp;lt;motivation&amp;gt;&amp;quot;&lt;br /&gt;
or&lt;br /&gt;
&amp;quot;No, thanks. I decline my nomination. &amp;lt;Optional motivation&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The second post in this thread wil be updated with a list of members and the nomination status on a regular basis,&lt;br /&gt;
so you don&#039;t have to crawl through all posts/pages to check.&lt;br /&gt;
&lt;br /&gt;
The nomination period is 21 days starting today and will end on September 23rd.&lt;br /&gt;
Actual voting will begin after that and will close during DevCon (11th October), where the results will be announced.&lt;br /&gt;
&lt;br /&gt;
The actual starting date for the new board seats will be in November, when we would like to have a joint meeting with the old and new board members as a smooth hand-over and to welcome the new board members.&lt;br /&gt;
&lt;br /&gt;
* If you&#039;d like to vote in the election, you need to be accepted as a foundation member and affirm the by-laws of the foundation. &lt;br /&gt;
You can do so here or by emailing me: https://forum.kodi.tv/showthread.php?tid=335025 &lt;br /&gt;
If you are not sure whether you are a Foundation member, please check this thread as well.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Voting started on Tuesday 24th September 2019 and ended on Friday 11th October 2019 using the Condorcet Internet Voting Service with a ranking scale, https://civs.cs.cornell.edu/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Individual e-mail addresses from Foundation members were entered into the CIVS ballot and mailed each Foundation member with a unique voting key url. This also served as the notice for the start of the voting period.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A second notice was given out outside of the CVIS system in order to reduce the chance of someone accidentally not receiving a voting notice. Voting notices can be sent out again, but voting keys are generated based on e-mail addresses and thus prevent double voting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following description was used for the ballot:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Voting to fill the two board seats up for election this year.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;Final list of confirmed nominees:&lt;br /&gt;
* jjd-uk&lt;br /&gt;
* yol&lt;br /&gt;
* ronie&lt;br /&gt;
&lt;br /&gt;
==Results==&lt;br /&gt;
29 Foundation members voted. The top two ranked become board members effective October 2019. Ronie and yol were elected as board members.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Results page:&#039;&#039;&#039; https://civs.cs.cornell.edu/cgi-bin/results.pl?id=E_5baf8df362fa250c&amp;amp;rkey=9b4a628ce74e3e16&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;ronie&#039;&#039;&#039;  (Condorcet winner: wins contests with all other choices)&lt;br /&gt;
# &#039;&#039;&#039;yol&#039;&#039;&#039; &lt;br /&gt;
# &#039;&#039;&#039;jjd-uk&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Kodi_Foundation/Elections&amp;diff=243093</id>
		<title>Kodi Foundation/Elections</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Kodi_Foundation/Elections&amp;diff=243093"/>
		<updated>2022-09-21T16:24:15Z</updated>

		<summary type="html">&lt;p&gt;Yol: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Kodi Foundation]] }}&lt;br /&gt;
{{Special:Prefixindex/Kodi Foundation/Elections/}}&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=XBMC_Foundation/Elections&amp;diff=243092</id>
		<title>XBMC Foundation/Elections</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=XBMC_Foundation/Elections&amp;diff=243092"/>
		<updated>2022-09-21T16:23:14Z</updated>

		<summary type="html">&lt;p&gt;Yol: Yol moved page XBMC Foundation/Elections to Kodi Foundation/Elections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Kodi Foundation/Elections]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Kodi_Foundation/Elections&amp;diff=243091</id>
		<title>Kodi Foundation/Elections</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Kodi_Foundation/Elections&amp;diff=243091"/>
		<updated>2022-09-21T16:23:14Z</updated>

		<summary type="html">&lt;p&gt;Yol: Yol moved page XBMC Foundation/Elections to Kodi Foundation/Elections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[XBMC Foundation]] }}&lt;br /&gt;
{{Special:Prefixindex/XBMC Foundation/Elections/}}&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=XBMC_Foundation/Elections/2019&amp;diff=243090</id>
		<title>XBMC Foundation/Elections/2019</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=XBMC_Foundation/Elections/2019&amp;diff=243090"/>
		<updated>2022-09-21T16:22:57Z</updated>

		<summary type="html">&lt;p&gt;Yol: Yol moved page XBMC Foundation/Elections/2019 to Kodi Foundation/Elections/2019&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Kodi Foundation/Elections/2019]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Kodi_Foundation/Elections/2019&amp;diff=243089</id>
		<title>Kodi Foundation/Elections/2019</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Kodi_Foundation/Elections/2019&amp;diff=243089"/>
		<updated>2022-09-21T16:22:57Z</updated>

		<summary type="html">&lt;p&gt;Yol: Yol moved page XBMC Foundation/Elections/2019 to Kodi Foundation/Elections/2019&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[XBMC Foundation]] | [[XBMC Foundation/Elections|Elections]] }}&lt;br /&gt;
&lt;br /&gt;
==Pre-election==&lt;br /&gt;
DarrenHill was voting admin, as his seat was not up for re-election.&lt;br /&gt;
&lt;br /&gt;
==Nomination notice==&lt;br /&gt;
The following notice posted on the Team Kodi private forum, and linked to in an e-mail to all Foundation members, to give due notice about the election and to collect nominations. The Foundation bylaws state that at least ten days must be given for a notice about member decisions such as an election, which served as the nomination period.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Nominations for the XBMC Foundation Board Elections 2019&amp;quot;, as written by DarrenHill&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Hi everybody.&lt;br /&gt;
&lt;br /&gt;
It&#039;s September and we have DevCon coming up, meaning it&#039;s time for [https://kodi.tv/about/xbmc-foundation XBMC Foundation] board elections again.&lt;br /&gt;
&lt;br /&gt;
This year board member seats up for election are: Martijn and Kib.&lt;br /&gt;
Seats not up for election are Keith, lrusak and DarrenHill (me)&lt;br /&gt;
&lt;br /&gt;
The rules are pretty simple:&lt;br /&gt;
&lt;br /&gt;
1. Any team member can nominate, but the nominee must be a member of the Foundation*.&lt;br /&gt;
2. You&#039;re allowed to nominate multiple people if you wish.&lt;br /&gt;
3. The nominated member has the option to accept or decline their nomination.&lt;br /&gt;
4. Only foundation members will be able to vote. *&lt;br /&gt;
5. If a person has already been nominated, please don&#039;t nominate them again.&lt;br /&gt;
&lt;br /&gt;
Please make sure to keep your nominations simple and clear. Eg:&lt;br /&gt;
&lt;br /&gt;
Nominate: &amp;lt;member&amp;gt;&lt;br /&gt;
Motivation: I would like to nominate &amp;lt;member&amp;gt; for the XBMC Foundation Board because &amp;lt;motivation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case you&#039;re nominated, please reply with something like..&lt;br /&gt;
&amp;quot;Thank you. I accept my nomination. &amp;lt;motivation&amp;gt;&amp;quot;&lt;br /&gt;
or&lt;br /&gt;
&amp;quot;No, thanks. I decline my nomination. &amp;lt;Optional motivation&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The second post in this thread wil be updated with a list of members and the nomination status on a regular basis,&lt;br /&gt;
so you don&#039;t have to crawl through all posts/pages to check.&lt;br /&gt;
&lt;br /&gt;
The nomination period is 21 days starting today and will end on September 23rd.&lt;br /&gt;
Actual voting will begin after that and will close during DevCon (11th October), where the results will be announced.&lt;br /&gt;
&lt;br /&gt;
The actual starting date for the new board seats will be in November, when we would like to have a joint meeting with the old and new board members as a smooth hand-over and to welcome the new board members.&lt;br /&gt;
&lt;br /&gt;
* If you&#039;d like to vote in the election, you need to be accepted as a foundation member and affirm the by-laws of the foundation. &lt;br /&gt;
You can do so here or by emailing me: https://forum.kodi.tv/showthread.php?tid=335025 &lt;br /&gt;
If you are not sure whether you are a Foundation member, please check this thread as well.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Voting started on Tuesday 24th September 2019 and ended on Friday 11th October 2019 using the Condorcet Internet Voting Service with a ranking scale, https://civs.cs.cornell.edu/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Individual e-mail addresses from Foundation members were entered into the CIVS ballot and mailed each Foundation member with a unique voting key url. This also served as the notice for the start of the voting period.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A second notice was given out outside of the CVIS system in order to reduce the chance of someone accidentally not receiving a voting notice. Voting notices can be sent out again, but voting keys are generated based on e-mail addresses and thus prevent double voting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following description was used for the ballot:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Voting to fill the two board seats up for election this year.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;Final list of confirmed nominees:&lt;br /&gt;
* jjd-uk&lt;br /&gt;
* yol&lt;br /&gt;
* ronie&lt;br /&gt;
&lt;br /&gt;
==Results==&lt;br /&gt;
29 Foundation members voted. The top two ranked become board members effective October 2019. Ronie and yol were elected as board members.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Results page:&#039;&#039;&#039; https://civs.cs.cornell.edu/cgi-bin/results.pl?id=E_5baf8df362fa250c&amp;amp;rkey=9b4a628ce74e3e16&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;ronie&#039;&#039;&#039;  (Condorcet winner: wins contests with all other choices)&lt;br /&gt;
# &#039;&#039;&#039;yol&#039;&#039;&#039; &lt;br /&gt;
# &#039;&#039;&#039;jjd-uk&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=XBMC_Foundation/Elections/2020&amp;diff=243088</id>
		<title>XBMC Foundation/Elections/2020</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=XBMC_Foundation/Elections/2020&amp;diff=243088"/>
		<updated>2022-09-21T16:22:50Z</updated>

		<summary type="html">&lt;p&gt;Yol: Yol moved page XBMC Foundation/Elections/2020 to Kodi Foundation/Elections/2020&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Kodi Foundation/Elections/2020]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Kodi_Foundation/Elections/2020&amp;diff=243087</id>
		<title>Kodi Foundation/Elections/2020</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Kodi_Foundation/Elections/2020&amp;diff=243087"/>
		<updated>2022-09-21T16:22:50Z</updated>

		<summary type="html">&lt;p&gt;Yol: Yol moved page XBMC Foundation/Elections/2020 to Kodi Foundation/Elections/2020&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[XBMC Foundation]] | [[XBMC Foundation/Elections|Elections]] }}&lt;br /&gt;
&lt;br /&gt;
==Pre-election==&lt;br /&gt;
Ronie was voting admin, as his seat was not up for re-election.&lt;br /&gt;
&lt;br /&gt;
==Nomination notice==&lt;br /&gt;
The following notice posted on the Team Kodi private forum, and linked to in an e-mail to all Foundation members, to give due notice about the election and to collect nominations. The Foundation bylaws state that at least ten days must be given for a notice about member decisions such as an election, which served as the nomination period.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Nominations for the XBMC Foundation Board Elections 2020&amp;quot;, as written by Ronie&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Hi everybody,&lt;br /&gt;
&lt;br /&gt;
It&#039;s the end of August, meaning it&#039;s time for the yearly XBMC Foundation board elections again.&lt;br /&gt;
&lt;br /&gt;
This year board member seats up for election are: Keith, lrusak and DarrenHill.&lt;br /&gt;
Seats not up for election are yol and ronie (me)&lt;br /&gt;
&lt;br /&gt;
The rules are pretty simple:&lt;br /&gt;
&lt;br /&gt;
1. Any team member can nominate, but the nominee must be a member of the Foundation*.&lt;br /&gt;
2. You&#039;re allowed to nominate multiple people if you wish.&lt;br /&gt;
3. The nominated member has the option to accept or decline their nomination.&lt;br /&gt;
4. Only foundation members will be able to vote. *&lt;br /&gt;
5. If a person has already been nominated, please don&#039;t nominate them again.&lt;br /&gt;
&lt;br /&gt;
Please make sure to keep your nominations simple and clear. Eg:&lt;br /&gt;
&lt;br /&gt;
Nominate: &amp;lt;member&amp;gt;&lt;br /&gt;
Motivation: I would like to nominate &amp;lt;member&amp;gt; for the XBMC Foundation Board because &amp;lt;motivation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case you&#039;re nominated, please reply with something like..&lt;br /&gt;
&amp;quot;Thank you. I accept my nomination. &amp;lt;motivation&amp;gt;&amp;quot;&lt;br /&gt;
or&lt;br /&gt;
&amp;quot;No, thanks. I decline my nomination. &amp;lt;Optional motivation&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The second post in this thread wil be updated with a list of members and the nomination status on a regular basis,&lt;br /&gt;
so you don&#039;t have to crawl through all posts/pages to check.&lt;br /&gt;
&lt;br /&gt;
The nomination period is 28 days starting today and will end on September 24th.&lt;br /&gt;
Actual voting will begin after that and will be closed the 19th of October.&lt;br /&gt;
Once the voting is over, the results will be announced in this thread as well as though a team email.&lt;br /&gt;
&lt;br /&gt;
The actual starting date for the new board seats will be in November, when we would like to have a joint online meeting with the old and new board members as a smooth hand-over and to welcome the new board members.&lt;br /&gt;
&lt;br /&gt;
* If you&#039;d like to vote in the election, you need to be accepted as a foundation member and affirm the by-laws of the foundation.&lt;br /&gt;
You can do so here: https://forum.kodi.tv/showthread.php?tid=335025&lt;br /&gt;
A list of all foundation members can be found here: https://drive.google.com/open?id=1yy_gPb...Y0UJaJRPHE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
In the end there were only three nominees, so as there were 3 open seats no vote was held.&lt;br /&gt;
&lt;br /&gt;
;Final list of confirmed nominees:&lt;br /&gt;
* Keith&lt;br /&gt;
* DarrenHill&lt;br /&gt;
* Learningit&lt;br /&gt;
&lt;br /&gt;
==Results==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Keith&#039;&#039;&#039;  &lt;br /&gt;
# &#039;&#039;&#039;DarrenHill&#039;&#039;&#039; &lt;br /&gt;
# &#039;&#039;&#039;Learningit&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=XBMC_Foundation/Elections/2021&amp;diff=243086</id>
		<title>XBMC Foundation/Elections/2021</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=XBMC_Foundation/Elections/2021&amp;diff=243086"/>
		<updated>2022-09-21T16:22:27Z</updated>

		<summary type="html">&lt;p&gt;Yol: Yol moved page XBMC Foundation/Elections/2021 to Kodi Foundation/Elections/2021&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Kodi Foundation/Elections/2021]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Kodi_Foundation/Elections/2021&amp;diff=243085</id>
		<title>Kodi Foundation/Elections/2021</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Kodi_Foundation/Elections/2021&amp;diff=243085"/>
		<updated>2022-09-21T16:22:27Z</updated>

		<summary type="html">&lt;p&gt;Yol: Yol moved page XBMC Foundation/Elections/2021 to Kodi Foundation/Elections/2021&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[XBMC Foundation]] | [[XBMC Foundation/Elections|Elections]] }}&lt;br /&gt;
&lt;br /&gt;
==Pre-election==&lt;br /&gt;
DarrenHill was voting admin, as his seat was not up for re-election.&lt;br /&gt;
&lt;br /&gt;
==Nomination notice==&lt;br /&gt;
The following notice posted on the Team Kodi private forum, and linked to in an e-mail to all Foundation members, to give due notice about the election and to collect nominations. The Foundation bylaws state that at least ten days must be given for a notice about member decisions such as an election, which served as the nomination period.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Nominations for the XBMC Foundation Board Elections 2021&amp;quot;, as written by DarrenHill&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
It&#039;s already September, meaning it&#039;s time for the yearly [url=https://kodi.tv/about/xbmc-foundation]XBMC Foundation[/url] board elections again.&lt;br /&gt;
&lt;br /&gt;
Due to his actual work commitments, Learningit has requested to resign his seat on the board early. With regret, the board have accepted his request and so his seat is also up for nomination.&lt;br /&gt;
&lt;br /&gt;
This year board member seats up for election are: Yol, Ronie and Learningit.&lt;br /&gt;
Seats not up for election are Keith and DarrenHill (me)&lt;br /&gt;
&lt;br /&gt;
The rules are pretty simple:&lt;br /&gt;
&lt;br /&gt;
# Any team member can nominate, but the nominee must be a member of the Foundation*.&lt;br /&gt;
# You&#039;re allowed to nominate multiple people if you wish.&lt;br /&gt;
# The nominated member has the option to accept or decline their nomination.&lt;br /&gt;
# Only foundation members will be able to vote. *&lt;br /&gt;
# If a person has already been nominated, please don&#039;t nominate them again.&lt;br /&gt;
&lt;br /&gt;
Please make sure to keep your nominations simple and clear. Eg:&lt;br /&gt;
[quote]&lt;br /&gt;
Nominate: &amp;lt;member&amp;gt;&lt;br /&gt;
Motivation: I would like to nominate &amp;lt;member&amp;gt; for the XBMC Foundation Board because &amp;lt;motivation&amp;gt;&lt;br /&gt;
[/quote]&lt;br /&gt;
&lt;br /&gt;
In case you&#039;re nominated, please reply with something like..&lt;br /&gt;
[quote]&lt;br /&gt;
Thank you. I accept my nomination. &amp;lt;motivation&amp;gt;&lt;br /&gt;
[/quote]&lt;br /&gt;
or&lt;br /&gt;
[quote]&lt;br /&gt;
No, thanks. I decline my nomination. &amp;lt;Optional motivation&amp;gt;&lt;br /&gt;
[/quote]&lt;br /&gt;
&lt;br /&gt;
The second post in this thread wil be updated with a list of members and the nomination status on a regular basis,&lt;br /&gt;
so you don&#039;t have to crawl through all posts/pages to check.&lt;br /&gt;
&lt;br /&gt;
The nomination period is 1 month starting today and will end on October 16th.&lt;br /&gt;
Actual voting will begin after that and will be closed a couple of weeks later (if a vote is required) &lt;br /&gt;
Once the voting is over, the results will be announced in this thread as well as though a team email.&lt;br /&gt;
&lt;br /&gt;
The actual starting date for the new board seats will be in November, when we would like to have a joint online meeting with the old and new board members as a smooth hand-over and to welcome the new board members.&lt;br /&gt;
&lt;br /&gt;
* If you&#039;d like to vote in the election, you need to be accepted as a foundation member and affirm the by-laws of the foundation.&lt;br /&gt;
Details on applying to join the Foundation are at: https://forum.kodi.tv/showthread.php?tid=335025 (Click here to join the Foundation)&lt;br /&gt;
&lt;br /&gt;
A list of all foundation members can be found here: https://drive.google.com/open?id=1yy_gPbZPGeJUG5GDcZZScek7mEY-EdY0xY0UJaJRPHE (Foundation member list - only accessible to Google accounts logged in using your Kodi address).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Voting started on Tuesday 16th October 2021 and ended on Saturday 6th November 2021 using the Condorcet Internet Voting Service with a ranking scale, https://civs.cs.cornell.edu/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Individual e-mail addresses from Foundation members were entered into the CIVS ballot and mailed each Foundation member with a unique voting key url. This also served as the notice for the start of the voting period.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A second notice was given out outside of the CVIS system in order to reduce the chance of someone accidentally not receiving a voting notice. Voting notices can be sent out again, but voting keys are generated based on e-mail addresses and thus prevent double voting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following description was used for the ballot:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|Elections for the Kodi Foundation Board for 2021.&lt;br /&gt;
&lt;br /&gt;
We have 4 candidates for the 3 available seats, so please select your preference for who should take the seats.&lt;br /&gt;
&lt;br /&gt;
Voting is available to all Kodi Foundation members, and will end just before the team meeting on 6th November.&lt;br /&gt;
&lt;br /&gt;
The results will be announced during that meeting.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;Final list of confirmed nominees:&lt;br /&gt;
* da-anda&lt;br /&gt;
* yol&lt;br /&gt;
* ronie&lt;br /&gt;
* phunkyfish&lt;br /&gt;
&lt;br /&gt;
==Results==&lt;br /&gt;
24 Foundation members voted. The top three ranked become board members effective November 2021. Da-anda, Ronie and yol were elected as board members.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Results page:&#039;&#039;&#039; https://civs1.civs.us/cgi-bin/results.pl?id=E_3a8f50794fc75de6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;ronie&#039;&#039;&#039;  (Condorcet winner: wins contests with all other choices)&lt;br /&gt;
# &#039;&#039;&#039;yol&#039;&#039;&#039; &lt;br /&gt;
# &#039;&#039;&#039;da-anda&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Kodi_Foundation/Elections/2022&amp;diff=243084</id>
		<title>Kodi Foundation/Elections/2022</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Kodi_Foundation/Elections/2022&amp;diff=243084"/>
		<updated>2022-09-21T16:21:31Z</updated>

		<summary type="html">&lt;p&gt;Yol: Created page with &amp;quot;{{mininav| Kodi Foundation | Elections }}  ==Pre-election== yol was voting admin, as his seat was not up for re-election.  ==Nomination notic...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Kodi Foundation]] | [[Kodi Foundation/Elections|Elections]] }}&lt;br /&gt;
&lt;br /&gt;
==Pre-election==&lt;br /&gt;
yol was voting admin, as his seat was not up for re-election.&lt;br /&gt;
&lt;br /&gt;
==Nomination notice==&lt;br /&gt;
The following notice posted on the Team Kodi private forum, and linked to in an e-mail to all Foundation members, to give due notice about the election and to collect nominations. The Foundation bylaws state that at least ten days must be given for a notice about member decisions such as an election, which served as the nomination period.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Nominations for the Kodi Foundation Board Elections 2022&amp;quot;, as written by yol&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
It&#039;s time for the yearly [url=https://kodi.tv/about/foundation/]Kodi Foundation[/url] board elections again!&lt;br /&gt;
&lt;br /&gt;
This year board member seats up for election are: Keith and DarrenHill. Seats not up for election are da-anda, ronie and yol (me).&lt;br /&gt;
&lt;br /&gt;
The rules are pretty simple:&lt;br /&gt;
[list=1]&lt;br /&gt;
[*]Any team member can nominate, but the nominee must be a member of the Foundation*.&lt;br /&gt;
[*]You&#039;re allowed to nominate multiple people if you wish.&lt;br /&gt;
[*]The nominated member has the option to accept or decline their nomination.&lt;br /&gt;
[*]Only foundation members will be able to vote. *&lt;br /&gt;
[*]If a person has already been nominated, please don&#039;t nominate them again.&lt;br /&gt;
[/list]&lt;br /&gt;
Please make sure to keep your nominations simple and clear. Eg:&lt;br /&gt;
[quote]&lt;br /&gt;
Nominate: &amp;lt;member&amp;gt; Motivation: I would like to nominate &amp;lt;member&amp;gt; for the XBMC Foundation Board because &amp;lt;motivation&amp;gt;&lt;br /&gt;
[/quote]&lt;br /&gt;
In case you&#039;re nominated, please reply with something like..&lt;br /&gt;
[quote]&lt;br /&gt;
Thank you. I accept my nomination. &amp;lt;motivation&amp;gt;&lt;br /&gt;
[/quote]&lt;br /&gt;
 or&lt;br /&gt;
[quote]&lt;br /&gt;
No, thanks. I decline my nomination. &amp;lt;Optional motivation&amp;gt;&lt;br /&gt;
[/quote]&lt;br /&gt;
The second post in this thread will be updated with a list of members and the nomination status on a regular basis, so you don&#039;t have to crawl through all posts/pages to check.&lt;br /&gt;
&lt;br /&gt;
The nomination period is[b] 1 month starting today and will end on September 20th[/b].&lt;br /&gt;
Actual voting will begin after that and will be closed a couple of weeks later (if a vote is required).&lt;br /&gt;
Once the voting is over, the results will be announced in this thread as well as through a team email.&lt;br /&gt;
&lt;br /&gt;
The actual starting date for the new board seats will be in November, when we would like to have a joint online meeting with the old and new board members as a smooth hand-over and to welcome the new board members.&lt;br /&gt;
&lt;br /&gt;
* If you&#039;d like to vote in the election, you need to be accepted as a foundation member and affirm the by-laws of the foundation.&lt;br /&gt;
Details on applying to join the Foundation are at: [url=https://forum.kodi.tv/showthread.php?tid=335025]Click here to join the foundation[/url]&lt;br /&gt;
A list of all foundation members can be found here: [url]https://drive.google.com/open?id=1yy_gPbZPGeJUG5GDcZZScek7mEY-EdY0xY0UJaJRPHE[/url] (Foundation member list - only accessible to Google accounts logged in using your Kodi address).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
As two persons were nominated for two seats, voting was skipped.&lt;br /&gt;
&lt;br /&gt;
==Results==&lt;br /&gt;
DarrenHill and keith continue to serve on the board.&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Google_Summer_of_Code/2022&amp;diff=241558</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=241558"/>
		<updated>2022-02-13T16:59:08Z</updated>

		<summary type="html">&lt;p&gt;Yol: &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=317 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 1000 software developers have contributed to Kodi, and 300-plus translators have worked to expand its reach, making it available in more than 70 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=317 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;
* &#039;&#039;&#039;Workload:&#039;&#039;&#039; Either 175 or 350 hours.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Team-Kodi proposal ideas up for discussion ==&lt;br /&gt;
&lt;br /&gt;
=== Portal integration and Flatpak improvements in Kodi ===&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; Integrate libPortal https://github.com/flatpak/libportal into Kodi, to handle fileaccess and other sandbox relevant factors as far as possible. We could also improve some other sandbox features like handling of binary addons, automatic flatpak build checks and build improvements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; Integration of libPortal into Kodi and possibly other Flatpak improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; C++, libPortal&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; Risky/Exploratory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039; Linux/Kodi Core&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; xxx hours&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;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; xxx hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; xxx hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; xxx hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; xxx hours&lt;br /&gt;
--&amp;gt;&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;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; xxx hours&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;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; xxx hours&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;
&lt;br /&gt;
&#039;&#039;&#039;Workload:&#039;&#039;&#039; xxx hours&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 2022 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=317 Kodi GSoC forum]&#039;&#039;&#039;. They can be as big or as small as you feel you can comfortably accomplish in the defined time (175 or 350 hours). 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=317 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>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Google_Summer_of_Code/2022&amp;diff=241557</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=241557"/>
		<updated>2022-02-13T16:57:42Z</updated>

		<summary type="html">&lt;p&gt;Yol: &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=317 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 1000 software developers have contributed to Kodi, and 300-plus translators have worked to expand its reach, making it available in more than 70 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=317 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;
=== Portal integration and Flatpak improvements in Kodi ===&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; Integrate libPortal https://github.com/flatpak/libportal into Kodi, to handle fileaccess and other sandbox relevant factors as far as possible. We could also improve some other sandbox features like handling of binary addons, automatic flatpak build checks and build improvements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; Integration of libPortal into Kodi and possibly other Flatpak improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; C++, libPortal&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; Risky/Exploratory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type:&#039;&#039;&#039; Linux/Kodi Core&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;
&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 2022 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=317 Kodi GSoC forum]&#039;&#039;&#039;. They can be as big or as small as you feel you can comfortably accomplish in the defined time (175 or 350 hours). 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=317 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>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Google_Summer_of_Code/2022&amp;diff=241493</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=241493"/>
		<updated>2022-02-05T18:56:10Z</updated>

		<summary type="html">&lt;p&gt;Yol: &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;
===Achievements in RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: 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&#039;s RetroPlayer implemented using Kodi&#039;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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred&#039;&#039;&#039;: C++, python, possibly php&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentor&#039;&#039;&#039;: gusandrianos, NikosSiak&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;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;: 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.&lt;br /&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>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=HOW-TO:Submit_a_bug_report&amp;diff=225173</id>
		<title>HOW-TO:Submit a bug report</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=HOW-TO:Submit_a_bug_report&amp;diff=225173"/>
		<updated>2021-03-30T07:25:57Z</updated>

		<summary type="html">&lt;p&gt;Yol: update to Matrix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Development]] {{l2| [[Troubleshooting]] }} }}&lt;br /&gt;
{{see also|Log file|Bug tracker|Troubleshooting}}&lt;br /&gt;
So, you think you&#039;ve found a bug?  Great!  Thanks for being proactive enough to make it this far.  If you want to ensure that your report gets attention from the right people it is paramount that you answer the following questions.  Please read this document in its entirety before continuing on your adventure.&lt;br /&gt;
&lt;br /&gt;
== Has the bug been reported already? ==&lt;br /&gt;
&lt;br /&gt;
Duplicate bug reports only clutter the communications channels with the developers.  Keeping the discussion in one place not only makes the topic easy to follow but centralizes all details for easier review.  Before posting your bug report, it is important to ensure that you haven&#039;t been beat to it.  There are two places to look, the [http://forum.kodi.tv Kodi Forum] and [https://github.com/xbmc/xbmc/issues Github Tracker].  Both have a search button.  Please use it!  If you find a thread on the forum or issue on the bug tracker, please read through it and add any new information that you can provide.  &amp;quot;Me too&amp;quot; and &amp;quot;bump&amp;quot; posts don&#039;t really help the matter without additional details, so please refrain.&lt;br /&gt;
&lt;br /&gt;
{{divbox|red||&#039;&#039;&#039;Note:&#039;&#039;&#039; Do not use &#039;&#039;&#039;trac.kodi.tv&#039;&#039;&#039; for BUG reporting or Discussions on possible bugs anymore. [https://github.com/xbmc/xbmc/issues Github] is the new location for bug reporting.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Also, &#039;&#039;&#039;Github issues are supported for Kodi 19 Matrix and upwards&#039;&#039;&#039;. Lower versions (upto v18 Leia) are no longer officially supported. }}&lt;br /&gt;
&lt;br /&gt;
== Ok, so my bug is new.  Now what? ==&lt;br /&gt;
Now that you have made sure that your problem is unique, it is time to open a dialog with the community.  Where to do this is a question of your certainty that the problem is in fact a bug.  Keep in mind that reporting the bug puts some responsibility on you to answer any questions a developer may have.  You may want to consider &amp;quot;subscribing&amp;quot; to your forum thread (you&#039;ll be CC&#039;d updates automatically by the bug tracker) and ensure that your registered email is one that you keep track of!&lt;br /&gt;
&lt;br /&gt;
=== Yes! This must be a bug! ===&lt;br /&gt;
If you are sure that you&#039;re dealing with a bug, (crash, hang, failed playback, corruption, etc) please go straight to the [https://github.com/xbmc/xbmc/issues Github Tracker] and create a new issue.  Be sure to fill in as information as possible, use your best judgement.&lt;br /&gt;
&lt;br /&gt;
=== Hrm...I think this is a bug... ===&lt;br /&gt;
If the problem is more one of behaviour you didn&#039;t expect, please start in the [http://forum.kodi.tv forums] first.  Kodi has many features, with these features comes design decisions.  It is very possible that the behaviour you expect is not that which the developer envisioned.  There is also a possibility that the feature is very complicated at the code level and that the behavior you expect would be very difficult or impossible to create.  Regardless, bouncing your ideas off of forum users (most developers are forums users too!) to confirm and clarify before opening a issue on the [https://github.com/xbmc/xbmc/issues Github Tracker].  You may be opening a feature request instead! ;)&lt;br /&gt;
&lt;br /&gt;
== Right, so what information do you guys need? ==&lt;br /&gt;
Regardless of where you&#039;re posting your report, if you expect someone to take interest in it, they will expect details from you.  Don&#039;t forget, we&#039;re doing this stuff in our free time, too!  Post as much of this stuff as you can upfront.  We&#039;d rather spend our time fixing problems than digging for details.  If you need further help obtaining something, feel free to ask (then come back and update the wiki!).&lt;br /&gt;
&lt;br /&gt;
=== Debug log ===&lt;br /&gt;
{{main|Log file}}&lt;br /&gt;
A &#039;&#039;&#039;[[Log file|debug log]]&#039;&#039;&#039; is &#039;&#039;&#039;ESSENTIAL&#039;&#039;&#039; to any and all bug reports. Debug logs are disabled by default; first, you must simply [[Settings/System/Logging|enable debugging]]. Without it your report stands a good chance of being overlooked.  It provides nearly all of the information about what was going on and what you were doing in the application.  The log file also contains some of the details you&#039;ll need to fill out a new issue on the [https://github.com/xbmc/xbmc/issues Github Tracker].  So it might pay to glance through it yourself.&lt;br /&gt;
&lt;br /&gt;
{{divbox|yellow||&#039;&#039;&#039;Note:&#039;&#039;&#039; When submitting debug logs into Github or onto the forum, &#039;&#039;&#039;ALWAYS use a text paste site&#039;&#039;&#039; like https://paste.kodi.tv , https://pastebin.com or https://paste.ubuntu.com (supports larger files), rather than posting logs directly.}}&lt;br /&gt;
&lt;br /&gt;
=== Detailed instructions to reproduce ===&lt;br /&gt;
To actually solve your problem, we need to be able to reproduce it.  The more descriptive the instructions, the better chances are that they&#039;ll work for others screenshots go a long way in some cases use sites like [http://imgur.com imgur], [http://www.snag.gy snaggy] or [http://www.postimage.org/ postimage]. Sit down and reproduce the problem a few times, first, to make sure you understand it.  If the problem is &amp;quot;random,&amp;quot; [[Settings/System/Logging|enable debugging]] during normal use.  Restart the application often to keep the log file short.  The more time you spend isolating the problem, the quicker a developer will be able to reproduce and fix it. Please take your time with this step!&lt;br /&gt;
&lt;br /&gt;
=== Sample file ===&lt;br /&gt;
If your problem has to do with playback of video, audio or subtitles, or display of a picture a sample file will go far in getting it fixed.  The file should be as small as possible while still reproducing the issue.  There are several audio/video cutting applications available (just google it until someone makes a list here).  For posting/attaching bigger files, you&#039;ll have to use a file hosting site like [http://www.mediafire.com/ MediaFire] or [https://www.dropbox.com/ Dropbox]&lt;br /&gt;
&lt;br /&gt;
=== Crash report ===&lt;br /&gt;
If Kodi has crashed, there are good odds that a crash report is available.  How these are handled is platform dependent.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;iOS/ATV2&lt;br /&gt;
:iOS will always create a Crashreporter log if any application crashes. These are found in /var/mobile/Library/Logs/CrashReporter/*.plist &lt;br /&gt;
&lt;br /&gt;
;Linux&lt;br /&gt;
:The file will be in your user&#039;s home directory or the working directory if Kodi was launched from a terminal.  It will be named &amp;quot;kodi_crashlog-[DATE]-[TIME].log&amp;quot; and contain some system information at the top, followed by a stack trace and the contents of Kodi.log.  If you didn&#039;t have [[Settings/System/Logging|debugging]] enabled at the time, please enable it and recreate the problem.  This feature was added in SVN revision 22194 and relies on the gnu debugger GDB being installed to work.&lt;br /&gt;
&lt;br /&gt;
;Mac OS X&lt;br /&gt;
:OS X will always create a Crashreporter log if any application crashes. These are found in /Users/username/Library/Logs/CrashReporter/CrashReporter.log where &#039;username&#039; is the login username. For the Apple TV 1, the &#039;username&#039; is &#039;frontrow&#039;.&lt;br /&gt;
&lt;br /&gt;
;Windows&lt;br /&gt;
:The file will be in the same location as the [[Log file|debug log]] and named &amp;quot;Kodi_crashlog-[DATE]-[TIME].dmp&amp;quot;. The dmp files will need to be uploaded to a location for download, as it&#039;s not a readable file. Moreover, we also ALWAYS require the &#039;&#039;&#039;kodi.pdb&#039;&#039;&#039; file (which is located next to the kodi.exe file) for total debugging. The pdb files are only available for test builds and releases.&lt;br /&gt;
&lt;br /&gt;
== Where do I create a bug report? ==&lt;br /&gt;
&lt;br /&gt;
{{divbox|red||&#039;&#039;&#039;Note:&#039;&#039;&#039; You can no longer use the bug tracker at http://trac.kodi.tv .}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;As per Devcon 2018, Team Kodi has decided to switch to a [https://github.com/xbmc/xbmc/issues Github Tracker] for administrating bugs/issues/projects for the Kodi application&#039;&#039;&#039;, and to get the open issues more visible to outside developers. Currently almost no one follows what happens on trac.kodi.tv, and things tend to simply get buried over time. &lt;br /&gt;
&lt;br /&gt;
Moving it to a [https://github.com/xbmc/xbmc/issues Github Tracker] will get it all in one single place in order to better handle, and whatever we as Team Kodi feel are certain goals that might be interesting for outsiders to work on. Getting rid of &amp;quot;trac&amp;quot; will also save us from a big maintenance burden.&lt;br /&gt;
&lt;br /&gt;
{{updated|19}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Troubleshooting]]&lt;br /&gt;
[[Category:How-to]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Google_Summer_of_Code/2021&amp;diff=225134</id>
		<title>Google Summer of Code/2021</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Google_Summer_of_Code/2021&amp;diff=225134"/>
		<updated>2021-03-24T17:18:21Z</updated>

		<summary type="html">&lt;p&gt;Yol: &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. We are pleased to announce that we have been accepted as an official GSoC mentor organization this year.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&#039;&#039;&#039;This page is currently work in progress. Kodi has applied as mentoring organization for GSoC 2021. Accepted organizations will be announced on March 9.&#039;&#039;&#039;--&amp;gt;&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 2021 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;
&lt;br /&gt;
&lt;br /&gt;
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].&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 and 2020 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 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.&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;
{{Warning |1=&#039;&#039;&#039;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.&#039;&#039;&#039;|title= }} &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;
===Achievements in RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: 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&#039;s RetroPlayer implemented using Kodi&#039;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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred&#039;&#039;&#039;: C++, python, possibly php&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentor&#039;&#039;&#039;: gusandrianos, NikosSiak&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;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;: 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.&lt;br /&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;
&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>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Google_Summer_of_Code/2021&amp;diff=223854</id>
		<title>Google Summer of Code/2021</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Google_Summer_of_Code/2021&amp;diff=223854"/>
		<updated>2021-02-18T16:51:22Z</updated>

		<summary type="html">&lt;p&gt;Yol: &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. &amp;lt;!--We are pleased to announce that we have been accepted as an official [http://www.google-melange.com/gsoc/org/google/gsoc2016/Kodi GSoC mentor organization this year].--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This page is currently work in progress. Kodi has applied as mentoring organization for GSoC 2021. Accepted organizations will be announced on March 9.&#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 2021 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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- From the 29th March to the 13th of April, any interested students may apply at the [http://g.go/gsoc 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 and 2020 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 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.&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;
{{Warning |1=&#039;&#039;&#039;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.&#039;&#039;&#039;|title= }} &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;
&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;
&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) (possible mentors: gusandrianos)&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;
&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>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Google_Summer_of_Code/2021&amp;diff=223853</id>
		<title>Google Summer of Code/2021</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Google_Summer_of_Code/2021&amp;diff=223853"/>
		<updated>2021-02-18T16:12:34Z</updated>

		<summary type="html">&lt;p&gt;Yol: &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. &amp;lt;!--We are pleased to announce that we have been accepted as an official [http://www.google-melange.com/gsoc/org/google/gsoc2016/Kodi GSoC mentor organization this year].--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This page is currently work in progress. Kodi has applied as mentoring organization for GSoC 2021. Accepted organizations will be announced on March 9.&#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 2021 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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- From the 29th March to the 13th of April, any interested students may apply at the [http://g.go/gsoc 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 and 2020 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 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.&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;
{{Warning |1=&#039;&#039;&#039;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.&#039;&#039;&#039;|title= }} &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;
&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;
&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) (possible mentors: gusandrianos)&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;
&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 three areas, 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>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Google_Summer_of_Code/2021&amp;diff=223601</id>
		<title>Google Summer of Code/2021</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Google_Summer_of_Code/2021&amp;diff=223601"/>
		<updated>2021-01-30T13:07:42Z</updated>

		<summary type="html">&lt;p&gt;Yol: fix logo&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. &amp;lt;!--We are pleased to announce that we have been accepted as an official [http://www.google-melange.com/gsoc/org/google/gsoc2016/Kodi GSoC mentor organization this year].--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This page is currently work in progress.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- We encourage interested students of all ethnities 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=301 Kodi GSoC 2020 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;. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the 29th March to the 13th of April, any interested students may apply at the [http://g.go/gsoc 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].&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 and 2020 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 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.&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. Its better to finish a smaller project than to start a grand one.&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=293 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, velocity&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;
=== A new web interface ===&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; Kodi has a webinterface by the name of chorus2 (https://github.com/xbmc/chorus2) which is written in coffeescript and as it stands no team member is able to work on coffeescript. So the idea would be to implement a new interface, in a newer language. I would like to see Elm or Svelte, but others would be fine too, as long as we would be able to maintain it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; A new webinterface (can be redesigned) or a port of the old one.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; HTML, CSS, Javascript, Typescript, 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;
&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;
&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;
&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;
===Achievements in RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: 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&#039;s RetroPlayer implemented using Kodi&#039;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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred&#039;&#039;&#039;: C++, python, possibly php&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentor&#039;&#039;&#039;: garbear, velocity&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;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;: 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.&lt;br /&gt;
&lt;br /&gt;
===Saved game manager for RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: Kodi excels at managing large movie, music, and (with add-ons) game libraries. However, savestates and in-game saves are simply stored next to the ROM or in a hard-coded folder.&lt;br /&gt;
&lt;br /&gt;
This project would consist of designing a user interface for saved game management. Some database work will probably be required. As a stretch goal, automatic saved-game captioning can be performed using the &amp;quot;Rich Presence&amp;quot; feature of RetroAchievements.org.&lt;br /&gt;
&lt;br /&gt;
In 2016, Garbear created an experimental saved game manager - see https://github.com/xbmc/xbmc/pull/11034. It may be possible to re-use ideas and code from this PR. Here&#039;s what the saved game manager looked like at the time:&lt;br /&gt;
&lt;br /&gt;
[[File:Saved game manager.png|600px|Saved game manager from 2016]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Users should be able to manage their savestates and in-game saves in Kodi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred&#039;&#039;&#039;: C++, optional python&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentor&#039;&#039;&#039;: garbear, velocity&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;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Runahead for RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: This feature, pioneered by libretro (see [https://www.libretro.com/index.php/retroarch-1-7-2%E2%80%8A-%E2%80%8Aachieving-better-latency-than-original-hardware-through-new-runahead-method/ Achieving better latency than original hardware through new runahead method]) allows for input latency better than the original console!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Implemented runahead input&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 mentor&#039;&#039;&#039;: garbear, velocity&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;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Player Manager for RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: Currently, player assignment and controller selection is hard-coded. This project would allow the user to configure which controllers are connected to the virtual console, enabling multiplayer in games that are currently hard-coded to single player.&lt;br /&gt;
&lt;br /&gt;
A player management concept is outlined here: https://github.com/garbear/xbmc/issues/87. Ideas and code from the issue can possibly be re-used in this project.&lt;br /&gt;
&lt;br /&gt;
[[File:Player manager.png|600px|Player manager concept art]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Players can change virtual input devices and choose which player number they are&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 mentor&#039;&#039;&#039;: garbear, velocity&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;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;insert feature from RetroArch here&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: RetroArch is an amazing, full-featured emulator system. Many of these features would make good GSoC projects!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Feature from RetroArch is implemented&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred&#039;&#039;&#039;: C++, optional Python&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentor&#039;&#039;&#039;: garbear, velocity&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: various&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Game-theoretic engine for RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: Currently, Kodi&#039;s game engine (RetroPlayer) is based on VideoPlayer - games act as &amp;quot;codecs&amp;quot; that accept input and produce audio and video streams. While this rocks for performance (we&#039;ve even mirrored zero-copy support from VP), it makes many features, such as rewind, runahead, and netplay difficult to integrate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The project is to implement the emulation equation described by the Special Theory of Emulation introduced in [https://github.com/garbear/xbmc/issues/89 Reinforcement Learning Bots], where S is State and A is Action:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:S_0.gif|Initial value of S]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:A_0.gif|Initial value of A]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:State update 2.gif|State update]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Action update 3.gif|Action update]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The equation results in the time series:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(S&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;, A&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;, S&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, A&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, S&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, A&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, ...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The emulation equation describes all of emulation in a game-theoretic manner. With such an engine, powerful features become incredibly easy:&lt;br /&gt;
&lt;br /&gt;
* When emulation is a time series, rewind is just decrementing t&lt;br /&gt;
* Runahead is just replacing an A several t&#039;s ago&lt;br /&gt;
* Netplay is also possible - just run a consensus algorithm like RAFT over the State/Action pairs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Games play using the new engine. Rewind is now easy. Runahead is now easy. Netplay is still hard, but the emulation equation turns netplay from a networking problem into a consensus problem.&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 mentor&#039;&#039;&#039;: garbear, velocity&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: advanced&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Reinforcement learning bots for RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: Same as the above, but implement the emulation equation described by the General Theory of Emulation in [https://github.com/garbear/xbmc/issues/89 Reinforcement Learning Bots].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Super-human gaming bots take over the world&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 mentor&#039;&#039;&#039;: garbear, velocity&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: hell&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Retroverse===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: This project introduces the Retroverse: an infinitely-rewindable branching history of all gameplay.&lt;br /&gt;
&lt;br /&gt;
Braid creator Jonathan Blow gave a presentation titled [https://www.youtube.com/watch?v=8dinUbg2h70 The Implementation of Rewind in Braid]. In 2013, Themaister [https://github.com/garbear/xbmc-retroplayer/commit/97e52df8a2f82a36952c8bcbebc133b3efc1babe donated] braid-style rewind to Kodi. This became the basis of the [https://github.com/xbmc/xbmc/blob/master/xbmc/cores/RetroPlayer/streams/memory/IMemoryStream.h memory streaming API] in RetroPlayer.&lt;br /&gt;
&lt;br /&gt;
Recall how Blow describes his rewind feature: &amp;quot;Record full world state for every frame always; do not drop frames. Compress data somehow.&amp;quot; The challenge of this project is to figure out that &amp;quot;somehow&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Does recording hundreds of hours of gameplay sound impossible? Assume deterministic emulation. The State can be fully reconstructed from the Action of the previous timestep, so only the Action needs to be saved. The Atari 2600, released in 1977, has 5 buttons, needing 5 bits. With a 5 bit frame size, you can store around 850 years of continuous (or nonlinear) Atari 2600 gameplay on a 1TB drive. Still seem impossible?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Implement the &amp;lt;code&amp;gt;CNonlinearMemoryStream&amp;lt;/code&amp;gt; class referenced in &amp;lt;code&amp;gt;[https://github.com/xbmc/xbmc/blob/master/xbmc/cores/RetroPlayer/streams/memory/IMemoryStream.h IMemoryStream.h]&amp;lt;/code&amp;gt;. Enable LZ4 and/or RLE compression of savestate diffs. Enhance autosave by using interpolation to drop &amp;quot;base frames&amp;quot;. Store a tree instead of a buffer!&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 mentor&#039;&#039;&#039;: garbear, velocity&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: advanced&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Using fuzz testing to fuzz test Kodi===&lt;br /&gt;
&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;
===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;
&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;
*Visual Studio Code addon to validate/syntax highlight Kodi Addons (possible mentors: velocity)&lt;br /&gt;
*Using fruit or similar to use DI in Kodi and write tests&lt;br /&gt;
*High quality scalers for OpenGL(GLSL). Scale Y and UV plane separately (possible mentors: velocity)&lt;br /&gt;
*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.&lt;br /&gt;
*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&lt;br /&gt;
*Implementing a performance critical element of kodi in rust&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 three areas, 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=301 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;PROJECT START DATE&#039;&#039;&#039; and &#039;&#039;&#039;PROJECT END DATE&#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=301 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>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Google_Summer_of_Code/2021&amp;diff=223600</id>
		<title>Google Summer of Code/2021</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Google_Summer_of_Code/2021&amp;diff=223600"/>
		<updated>2021-01-30T13:05:15Z</updated>

		<summary type="html">&lt;p&gt;Yol: &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. &amp;lt;!--We are pleased to announce that we have been accepted as an official [http://www.google-melange.com/gsoc/org/google/gsoc2016/Kodi GSoC mentor organization this year].--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This page is currently work in progress.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- We encourage interested students of all ethnities 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=301 Kodi GSoC 2020 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;. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the 29th March to the 13th of April, any interested students may apply at the [http://g.go/gsoc 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].&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 and 2020 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 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.&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. Its better to finish a smaller project than to start a grand one.&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=293 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, velocity&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;
=== A new web interface ===&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; Kodi has a webinterface by the name of chorus2 (https://github.com/xbmc/chorus2) which is written in coffeescript and as it stands no team member is able to work on coffeescript. So the idea would be to implement a new interface, in a newer language. I would like to see Elm or Svelte, but others would be fine too, as long as we would be able to maintain it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; A new webinterface (can be redesigned) or a port of the old one.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; HTML, CSS, Javascript, Typescript, 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;
&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;
&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;
&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;
===Achievements in RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: 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&#039;s RetroPlayer implemented using Kodi&#039;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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred&#039;&#039;&#039;: C++, python, possibly php&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentor&#039;&#039;&#039;: garbear, velocity&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;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;: 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.&lt;br /&gt;
&lt;br /&gt;
===Saved game manager for RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: Kodi excels at managing large movie, music, and (with add-ons) game libraries. However, savestates and in-game saves are simply stored next to the ROM or in a hard-coded folder.&lt;br /&gt;
&lt;br /&gt;
This project would consist of designing a user interface for saved game management. Some database work will probably be required. As a stretch goal, automatic saved-game captioning can be performed using the &amp;quot;Rich Presence&amp;quot; feature of RetroAchievements.org.&lt;br /&gt;
&lt;br /&gt;
In 2016, Garbear created an experimental saved game manager - see https://github.com/xbmc/xbmc/pull/11034. It may be possible to re-use ideas and code from this PR. Here&#039;s what the saved game manager looked like at the time:&lt;br /&gt;
&lt;br /&gt;
[[File:Saved game manager.png|600px|Saved game manager from 2016]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Users should be able to manage their savestates and in-game saves in Kodi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred&#039;&#039;&#039;: C++, optional python&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentor&#039;&#039;&#039;: garbear, velocity&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;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Runahead for RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: This feature, pioneered by libretro (see [https://www.libretro.com/index.php/retroarch-1-7-2%E2%80%8A-%E2%80%8Aachieving-better-latency-than-original-hardware-through-new-runahead-method/ Achieving better latency than original hardware through new runahead method]) allows for input latency better than the original console!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Implemented runahead input&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 mentor&#039;&#039;&#039;: garbear, velocity&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;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Player Manager for RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: Currently, player assignment and controller selection is hard-coded. This project would allow the user to configure which controllers are connected to the virtual console, enabling multiplayer in games that are currently hard-coded to single player.&lt;br /&gt;
&lt;br /&gt;
A player management concept is outlined here: https://github.com/garbear/xbmc/issues/87. Ideas and code from the issue can possibly be re-used in this project.&lt;br /&gt;
&lt;br /&gt;
[[File:Player manager.png|600px|Player manager concept art]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Players can change virtual input devices and choose which player number they are&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 mentor&#039;&#039;&#039;: garbear, velocity&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;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;insert feature from RetroArch here&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: RetroArch is an amazing, full-featured emulator system. Many of these features would make good GSoC projects!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Feature from RetroArch is implemented&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred&#039;&#039;&#039;: C++, optional Python&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentor&#039;&#039;&#039;: garbear, velocity&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: various&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Game-theoretic engine for RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: Currently, Kodi&#039;s game engine (RetroPlayer) is based on VideoPlayer - games act as &amp;quot;codecs&amp;quot; that accept input and produce audio and video streams. While this rocks for performance (we&#039;ve even mirrored zero-copy support from VP), it makes many features, such as rewind, runahead, and netplay difficult to integrate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The project is to implement the emulation equation described by the Special Theory of Emulation introduced in [https://github.com/garbear/xbmc/issues/89 Reinforcement Learning Bots], where S is State and A is Action:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:S_0.gif|Initial value of S]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:A_0.gif|Initial value of A]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:State update 2.gif|State update]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Action update 3.gif|Action update]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The equation results in the time series:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(S&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;, A&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;, S&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, A&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, S&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, A&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, ...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The emulation equation describes all of emulation in a game-theoretic manner. With such an engine, powerful features become incredibly easy:&lt;br /&gt;
&lt;br /&gt;
* When emulation is a time series, rewind is just decrementing t&lt;br /&gt;
* Runahead is just replacing an A several t&#039;s ago&lt;br /&gt;
* Netplay is also possible - just run a consensus algorithm like RAFT over the State/Action pairs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Games play using the new engine. Rewind is now easy. Runahead is now easy. Netplay is still hard, but the emulation equation turns netplay from a networking problem into a consensus problem.&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 mentor&#039;&#039;&#039;: garbear, velocity&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: advanced&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Reinforcement learning bots for RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: Same as the above, but implement the emulation equation described by the General Theory of Emulation in [https://github.com/garbear/xbmc/issues/89 Reinforcement Learning Bots].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Super-human gaming bots take over the world&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 mentor&#039;&#039;&#039;: garbear, velocity&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: hell&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Retroverse===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: This project introduces the Retroverse: an infinitely-rewindable branching history of all gameplay.&lt;br /&gt;
&lt;br /&gt;
Braid creator Jonathan Blow gave a presentation titled [https://www.youtube.com/watch?v=8dinUbg2h70 The Implementation of Rewind in Braid]. In 2013, Themaister [https://github.com/garbear/xbmc-retroplayer/commit/97e52df8a2f82a36952c8bcbebc133b3efc1babe donated] braid-style rewind to Kodi. This became the basis of the [https://github.com/xbmc/xbmc/blob/master/xbmc/cores/RetroPlayer/streams/memory/IMemoryStream.h memory streaming API] in RetroPlayer.&lt;br /&gt;
&lt;br /&gt;
Recall how Blow describes his rewind feature: &amp;quot;Record full world state for every frame always; do not drop frames. Compress data somehow.&amp;quot; The challenge of this project is to figure out that &amp;quot;somehow&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Does recording hundreds of hours of gameplay sound impossible? Assume deterministic emulation. The State can be fully reconstructed from the Action of the previous timestep, so only the Action needs to be saved. The Atari 2600, released in 1977, has 5 buttons, needing 5 bits. With a 5 bit frame size, you can store around 850 years of continuous (or nonlinear) Atari 2600 gameplay on a 1TB drive. Still seem impossible?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Implement the &amp;lt;code&amp;gt;CNonlinearMemoryStream&amp;lt;/code&amp;gt; class referenced in &amp;lt;code&amp;gt;[https://github.com/xbmc/xbmc/blob/master/xbmc/cores/RetroPlayer/streams/memory/IMemoryStream.h IMemoryStream.h]&amp;lt;/code&amp;gt;. Enable LZ4 and/or RLE compression of savestate diffs. Enhance autosave by using interpolation to drop &amp;quot;base frames&amp;quot;. Store a tree instead of a buffer!&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 mentor&#039;&#039;&#039;: garbear, velocity&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: advanced&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Using fuzz testing to fuzz test Kodi===&lt;br /&gt;
&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;
===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;
&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;
*Visual Studio Code addon to validate/syntax highlight Kodi Addons (possible mentors: velocity)&lt;br /&gt;
*Using fruit or similar to use DI in Kodi and write tests&lt;br /&gt;
*High quality scalers for OpenGL(GLSL). Scale Y and UV plane separately (possible mentors: velocity)&lt;br /&gt;
*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.&lt;br /&gt;
*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&lt;br /&gt;
*Implementing a performance critical element of kodi in rust&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 three areas, 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=301 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;PROJECT START DATE&#039;&#039;&#039; and &#039;&#039;&#039;PROJECT END DATE&#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=301 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>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Google_Summer_of_Code/2021&amp;diff=223599</id>
		<title>Google Summer of Code/2021</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Google_Summer_of_Code/2021&amp;diff=223599"/>
		<updated>2021-01-30T12:58:50Z</updated>

		<summary type="html">&lt;p&gt;Yol: Copy of 2020&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. &amp;lt;!--We are pleased to announce that we have been accepted as an official [http://www.google-melange.com/gsoc/org/google/gsoc2016/Kodi GSOC mentor organization this year].--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We encourage interested students of all ethnities 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=301 Kodi GSoC 2020 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;
From the 25th March to the 9th of April, any interested students may apply at the [http://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 [http://developers.google.com/open-source/gsoc/timeline GSOC schedule].&lt;br /&gt;
{{-}}&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| align=left |&lt;br /&gt;
__TOC__&lt;br /&gt;
| align=right |&lt;br /&gt;
{{YouTube|kQq0mx-wshk}}&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 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 2020, 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;
C++ 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. Its better to finish a smaller project than to start a grand one.&lt;br /&gt;
&lt;br /&gt;
=== Where to submit proposals ===&lt;br /&gt;
In addition to submitting to the [https://summerofcode.withgoogle.com/ Google Summer of Code] website, you are highly encouraged to submit your idea/proposal to the [https://forum.kodi.tv/forumdisplay.php?fid=293 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, velocity&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;
=== A new web interface ===&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; Kodi has a webinterface by the name of chorus2 (https://github.com/xbmc/chorus2) which is written in coffeescript and as it stands no team member is able to work on coffeescript. So the idea would be to implement a new interface, in a newer language. I would like to see Elm or Svelte, but others would be fine too, as long as we would be able to maintain it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; A new webinterface (can be redesigned) or a port of the old one.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; HTML, CSS, Javascript, Typescript, 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;
&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;
&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;
&lt;br /&gt;
=== Integrate TUF (The Update Framework) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039; Kodi uses a self-built mechanism for installing and updating add-ons from add-on repositories. Unfortunately, it is not very secure. This project would be about replacing the add-on repository code with the usage of TUF (The Update Framework), a quite recent library that solves many common security problems for updaters. TUF does not currently have a C or C++ implementation. The reference implementation is in Python, which we do not want to integrate with C++ for this core piece of application code. Due to security concerns, we also do not want to implement TUF ourselves. That leaves using rust-tuf, an experimental Rust implementation. First step would be to write a C wrapper library so that we can use it from Kodi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected outcome:&#039;&#039;&#039; Add-on repository in Kodi using TUF that builds and works on all supported platforms (beware, there are quite a lot) and is integrated into the Kodi add-on infrastructure (i.e. there are also tools to generate valid repositories). It should support all core add-on functionality (be able to list, install, and update add-ons).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred:&#039;&#039;&#039; C++, Rust, Python (for creating the repository the TUF reference implementation could be used)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentors:&#039;&#039;&#039; yol&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; Risky/Exploratory (rust-tuf is unstable and there is also a lot of work to be done on the backend side)&lt;br /&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;
===Achievements in RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: 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&#039;s RetroPlayer implemented using Kodi&#039;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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred&#039;&#039;&#039;: C++, python, possibly php&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentor&#039;&#039;&#039;: garbear, velocity&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;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;: 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.&lt;br /&gt;
&lt;br /&gt;
===Saved game manager for RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: Kodi excels at managing large movie, music, and (with add-ons) game libraries. However, savestates and in-game saves are simply stored next to the ROM or in a hard-coded folder.&lt;br /&gt;
&lt;br /&gt;
This project would consist of designing a user interface for saved game management. Some database work will probably be required. As a stretch goal, automatic saved-game captioning can be performed using the &amp;quot;Rich Presence&amp;quot; feature of RetroAchievements.org.&lt;br /&gt;
&lt;br /&gt;
In 2016, Garbear created an experimental saved game manager - see https://github.com/xbmc/xbmc/pull/11034. It may be possible to re-use ideas and code from this PR. Here&#039;s what the saved game manager looked like at the time:&lt;br /&gt;
&lt;br /&gt;
[[File:Saved game manager.png|600px|Saved game manager from 2016]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Users should be able to manage their savestates and in-game saves in Kodi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred&#039;&#039;&#039;: C++, optional python&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentor&#039;&#039;&#039;: garbear, velocity&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;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Runahead for RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: This feature, pioneered by libretro (see [https://www.libretro.com/index.php/retroarch-1-7-2%E2%80%8A-%E2%80%8Aachieving-better-latency-than-original-hardware-through-new-runahead-method/ Achieving better latency than original hardware through new runahead method]) allows for input latency better than the original console!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Implemented runahead input&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 mentor&#039;&#039;&#039;: garbear, velocity&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;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Player Manager for RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: Currently, player assignment and controller selection is hard-coded. This project would allow the user to configure which controllers are connected to the virtual console, enabling multiplayer in games that are currently hard-coded to single player.&lt;br /&gt;
&lt;br /&gt;
A player management concept is outlined here: https://github.com/garbear/xbmc/issues/87. Ideas and code from the issue can possibly be re-used in this project.&lt;br /&gt;
&lt;br /&gt;
[[File:Player manager.png|600px|Player manager concept art]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Players can change virtual input devices and choose which player number they are&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 mentor&#039;&#039;&#039;: garbear, velocity&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;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;insert feature from RetroArch here&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: RetroArch is an amazing, full-featured emulator system. Many of these features would make good GSoC projects!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Feature from RetroArch is implemented&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Skills preferred&#039;&#039;&#039;: C++, optional Python&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible mentor&#039;&#039;&#039;: garbear, velocity&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: various&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Game-theoretic engine for RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: Currently, Kodi&#039;s game engine (RetroPlayer) is based on VideoPlayer - games act as &amp;quot;codecs&amp;quot; that accept input and produce audio and video streams. While this rocks for performance (we&#039;ve even mirrored zero-copy support from VP), it makes many features, such as rewind, runahead, and netplay difficult to integrate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The project is to implement the emulation equation described by the Special Theory of Emulation introduced in [https://github.com/garbear/xbmc/issues/89 Reinforcement Learning Bots], where S is State and A is Action:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:S_0.gif|Initial value of S]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:A_0.gif|Initial value of A]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:State update 2.gif|State update]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Action update 3.gif|Action update]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The equation results in the time series:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(S&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;, A&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;, S&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, A&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, S&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, A&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;, ...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The emulation equation describes all of emulation in a game-theoretic manner. With such an engine, powerful features become incredibly easy:&lt;br /&gt;
&lt;br /&gt;
* When emulation is a time series, rewind is just decrementing t&lt;br /&gt;
* Runahead is just replacing an A several t&#039;s ago&lt;br /&gt;
* Netplay is also possible - just run a consensus algorithm like RAFT over the State/Action pairs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Games play using the new engine. Rewind is now easy. Runahead is now easy. Netplay is still hard, but the emulation equation turns netplay from a networking problem into a consensus problem.&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 mentor&#039;&#039;&#039;: garbear, velocity&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: advanced&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Reinforcement learning bots for RetroPlayer===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: Same as the above, but implement the emulation equation described by the General Theory of Emulation in [https://github.com/garbear/xbmc/issues/89 Reinforcement Learning Bots].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Super-human gaming bots take over the world&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 mentor&#039;&#039;&#039;: garbear, velocity&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: hell&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Retroverse===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;: This project introduces the Retroverse: an infinitely-rewindable branching history of all gameplay.&lt;br /&gt;
&lt;br /&gt;
Braid creator Jonathan Blow gave a presentation titled [https://www.youtube.com/watch?v=8dinUbg2h70 The Implementation of Rewind in Braid]. In 2013, Themaister [https://github.com/garbear/xbmc-retroplayer/commit/97e52df8a2f82a36952c8bcbebc133b3efc1babe donated] braid-style rewind to Kodi. This became the basis of the [https://github.com/xbmc/xbmc/blob/master/xbmc/cores/RetroPlayer/streams/memory/IMemoryStream.h memory streaming API] in RetroPlayer.&lt;br /&gt;
&lt;br /&gt;
Recall how Blow describes his rewind feature: &amp;quot;Record full world state for every frame always; do not drop frames. Compress data somehow.&amp;quot; The challenge of this project is to figure out that &amp;quot;somehow&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Does recording hundreds of hours of gameplay sound impossible? Assume deterministic emulation. The State can be fully reconstructed from the Action of the previous timestep, so only the Action needs to be saved. The Atari 2600, released in 1977, has 5 buttons, needing 5 bits. With a 5 bit frame size, you can store around 850 years of continuous (or nonlinear) Atari 2600 gameplay on a 1TB drive. Still seem impossible?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Expected Outcome&#039;&#039;&#039;: Implement the &amp;lt;code&amp;gt;CNonlinearMemoryStream&amp;lt;/code&amp;gt; class referenced in &amp;lt;code&amp;gt;[https://github.com/xbmc/xbmc/blob/master/xbmc/cores/RetroPlayer/streams/memory/IMemoryStream.h IMemoryStream.h]&amp;lt;/code&amp;gt;. Enable LZ4 and/or RLE compression of savestate diffs. Enhance autosave by using interpolation to drop &amp;quot;base frames&amp;quot;. Store a tree instead of a buffer!&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 mentor&#039;&#039;&#039;: garbear, velocity&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Difficulty&#039;&#039;&#039;: advanced&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Type&#039;&#039;&#039;: Fun/Peripheral&lt;br /&gt;
&lt;br /&gt;
===Using fuzz testing to fuzz test Kodi===&lt;br /&gt;
&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;
===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;
&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;
*Visual Studio Code addon to validate/syntax highlight Kodi Addons (possible mentors: velocity)&lt;br /&gt;
*Using fruit or similar to use DI in Kodi and write tests&lt;br /&gt;
*High quality scalers for OpenGL(GLSL). Scale Y and UV plane separately (possible mentors: velocity)&lt;br /&gt;
*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.&lt;br /&gt;
*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&lt;br /&gt;
*Implementing a performance critical element of kodi in rust&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 three areas, 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=301 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;PROJECT START DATE&#039;&#039;&#039; and &#039;&#039;&#039;PROJECT END DATE&#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=301 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>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Mirrors&amp;diff=219585</id>
		<title>Mirrors</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Mirrors&amp;diff=219585"/>
		<updated>2020-08-24T11:14:33Z</updated>

		<summary type="html">&lt;p&gt;Yol: updated with current information, removed pre-2015 content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav}}&lt;br /&gt;
&lt;br /&gt;
This page contains information about our mirrors network setup.&lt;br /&gt;
&lt;br /&gt;
== Download mirrors ==&lt;br /&gt;
&lt;br /&gt;
To provide downloads we use a network of mirrors across the globe to provide the best possible location to download from. For actually distributing the downloads and making sure you will download from the best server available we have been using Mirrorbits, which has been operating since August 2015 and so far hasn&#039;t failed us yet. This is a great piece of software that constantly checks the status of the mirrors and dishes out files based on certain criteria, in an effort to ensure that downloads work as quickly and reliably as possible. Besides these builds it also hosts all the add-on which you can find in our official kodi.tv repository.&lt;br /&gt;
&lt;br /&gt;
== Information ==&lt;br /&gt;
&lt;br /&gt;
The actual mirror list is generated automatically and can be found by appending &amp;lt;code&amp;gt;?mirrorlist&amp;lt;/code&amp;gt; to the URL of any mirrored file on mirrors.kodi.tv.&lt;br /&gt;
We also provide a status report for each server if they are still in sync at https://mirrors.kodi.tv/mirmon.html&lt;br /&gt;
&lt;br /&gt;
So we would like to thank all these providers for helping us out on distributing Kodi throughout the world. If you are interested in being added to this list feel free to contact us. &#039;&#039;&#039;Do note that we will only accept offers from large institutions or companies to keep possible problems at a minimum.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Our main mirror address is: http://mirrors.kodi.tv&lt;br /&gt;
&lt;br /&gt;
== rsync setup ==&lt;br /&gt;
&lt;br /&gt;
We have two main rsync mirrors which are used by main Tier1 mirror hosts per continent.&lt;br /&gt;
All other hosts should use those hosts according to their location.&lt;br /&gt;
&lt;br /&gt;
=== main ===&lt;br /&gt;
&lt;br /&gt;
primary Tier1 USA server:&lt;br /&gt;
* Name: gatech.edu&lt;br /&gt;
* address: rsync://rsync.gtlib.gatech.edu/xbmc/&lt;br /&gt;
* Uses: rsync://rsync.kodi.tv/main/&lt;br /&gt;
** sync on half past the hour XX:30&lt;br /&gt;
* Notes:&lt;br /&gt;
** all other USA mirrors should sync from this host&lt;br /&gt;
** mirrors should sync at XX:00&lt;br /&gt;
&lt;br /&gt;
=== euro ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
primary Tier1 Europe server:&lt;br /&gt;
* Name: heanet.ie&lt;br /&gt;
* address: rsync://ftp.heanet.ie/mirrors/xbmc/&lt;br /&gt;
* Uses: rsync://rsync.kodi.tv/euro/&lt;br /&gt;
** sync on the hour XX:00&lt;br /&gt;
* Notes:&lt;br /&gt;
** all other non-USA mirrors pull from them&lt;br /&gt;
** mirrors should sync at XX:00&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* Space needed: ~100GB&lt;br /&gt;
* Mirrors pull at various times, the mirrorbits database contains notes about these times.&lt;br /&gt;
* Every couple of hours. Max is every 24h.&lt;br /&gt;
* If mirrors ever move to a new server, the dns entry for rsync.xbmc.org or rsync.kodi.tv can be changed and there should theoretically be no interruption. In reality, it makes sense to be sure that no one is pulling by IP or has white-listed the current IP for our constant mirror status checks.&lt;br /&gt;
* hosts need to provide this information to have proper setup&lt;br /&gt;
** http:// location (mandatory)&lt;br /&gt;
** ftp:// location (currently not used at all)&lt;br /&gt;
** rsync:// access to the mirrors for scanning available files(mandatory)&lt;br /&gt;
** Network bandwidth (gives indication of probability factor for traffic redirecting)&lt;br /&gt;
** Host webpage&lt;br /&gt;
** Host description&lt;br /&gt;
** Redirect options: AS network only / Continent only/ Country only / Global&lt;br /&gt;
** Admin name (will not be made public)&lt;br /&gt;
** Admin e-mail (will not be made public)&lt;br /&gt;
* rsync server is split up in two sections for providing data&lt;br /&gt;
** Please choose one of the TIER server rsync locations&lt;br /&gt;
&lt;br /&gt;
Extra information&lt;br /&gt;
* rsync data could range to ~400Mb a day (amount may vary up or down)&lt;br /&gt;
* We have no hard data on amount of data that we redirect. We try to expand our network to reduce the amount for each mirror. We can always reduce the redirection criteria to reduce traffic to your mirror. Please contact us if needed.&lt;br /&gt;
&lt;br /&gt;
[[Category:XBMC_Foundation]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Settings/Interface/Master_lock&amp;diff=195635</id>
		<title>Settings/Interface/Master lock</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Settings/Interface/Master_lock&amp;diff=195635"/>
		<updated>2020-02-10T21:50:19Z</updated>

		<summary type="html">&lt;p&gt;Yol: Add clarification about profiles as security feature&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Settings]] | [[Settings/Interface|Interface]] }}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
The Master Lock allows users to protect their content and settings by applying a PIN to various areas of Kodi. Three attempts are available to enter the correct PIN. If the third attempt fails, restart {{kodi}} to try again.&lt;br /&gt;
&lt;br /&gt;
{{note|This feature only protects the {{kodi}} interface from, say, curious children. It will not protect the content and settings files outside of {{kodi}} from being accessed via the operating system. Also, it may be bypassed via the web interface or other add-ons and advanced {{kodi}} features.}}&lt;br /&gt;
&lt;br /&gt;
[[File:Interface master.JPG|600px|left]]&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
=== Master lock code and settings ===&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=120px | {{nowrap|&#039;&#039;&#039;Settings level:&#039;&#039;&#039;}} &lt;br /&gt;
| Standard&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Description:&#039;&#039;&#039;&lt;br /&gt;
| Here you can enable or disable the master lock and define the PIN code used to unlock it. You can also specify which areas of the application will need a PIN to access them.&amp;lt;br&amp;gt;&lt;br /&gt;
See Lock Preferences below for a description of available settings.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; This setting is valid for the profile which was used to set the PIN only. To lock other Profiles, repeat these steps.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ask for master lock code on startup ===&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=120px | {{nowrap|&#039;&#039;&#039;Settings level:&#039;&#039;&#039;}} &lt;br /&gt;
| Standard&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Description:&#039;&#039;&#039;&lt;br /&gt;
| To access this setting, you must exit back to the main menu and then re-enter the Master Lock Settings Screen at which time you will be asked for the PIN. The setting will become active and can be &#039;&#039;Enabled&#039;&#039; if required.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; This setting will affect all Profiles regardless of which Profile is used for startup.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lock preferences ==&lt;br /&gt;
The following are the setting shown when selecting the &#039;&#039;Master lock code and settings&#039;&#039; option above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Master Lock ===&lt;br /&gt;
[[File:MasterLock.jpg|600px|left]]&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=120px | {{nowrap|&#039;&#039;&#039;Settings level:&#039;&#039;&#039;}} &lt;br /&gt;
| Standard&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Description:&#039;&#039;&#039;&lt;br /&gt;
| Set the type of PIN to be used as shown in the image.&lt;br /&gt;
|}&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lock preferences ===&lt;br /&gt;
[[File:MasterLock1.jpg|600px|left]]&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=120px | {{nowrap|&#039;&#039;&#039;Settings level:&#039;&#039;&#039;}} &lt;br /&gt;
| Standard&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Description:&#039;&#039;&#039;&lt;br /&gt;
| Choose which parts of {{kodi}} to protect by enabling the item. Available selection is displayed in the image.&amp;lt;br&amp;gt;&lt;br /&gt;
When accessing a locked menu item, the PIN will be requested. Three attempts are available to enter the correct pin. If there are three failed attempts, restart Kodi to try again.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Top}}&lt;br /&gt;
&lt;br /&gt;
{{updated|18}}&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:Index]]&lt;br /&gt;
[[Category:Guides]]&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Karellen]]&lt;br /&gt;
[[Category:First time user]]&lt;br /&gt;
[[Category:Advanced topics]]&lt;br /&gt;
[[Category:Quick Start Guide]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Profiles&amp;diff=195634</id>
		<title>Profiles</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Profiles&amp;diff=195634"/>
		<updated>2020-02-10T17:35:18Z</updated>

		<summary type="html">&lt;p&gt;Yol: Add clarification about profiles as security feature&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;section begin=intro /&amp;gt;Profiles allow users to save all of settings as a profile and change them at the touch of a button. It also allows you to grant access to specific folders and network shares based on the profile being used. This is ideal for systems that have multiple users. It works much the same as setting up individual users on your home computer.&amp;lt;section end=intro /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|While profiles do allow to share the same Kodi instance with multiple users, they are not a security feature. The web interface, for example, may still allow to change the active profile without entering a password.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These individual profiles allow you to customize the environment for multiple users, allowing for such functionality as:&lt;br /&gt;
* Customized view settings such as skins for each user&lt;br /&gt;
* The ability to lock folders, such as network shares on a per-user basis&lt;br /&gt;
* Separate media [[Databases|libraries]] for each user&lt;br /&gt;
* Unique RSS feeds for each user&lt;br /&gt;
* Unique [[Keymap|keymapping]] for each user&lt;br /&gt;
* Unique network settings&lt;br /&gt;
All options stored in the [[userdata folder]] can be customized per profile, allowing for an amazing amount of flexibility.&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== Adding a profile ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to add a profile, follow the steps below&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; widths=500px heights=283px&amp;gt;&lt;br /&gt;
File:Estuary_Profiles_Adding_Profile_1.jpg| &#039;&#039;&#039;Step 1:&#039;&#039;&#039; Select &amp;quot;Add profile&amp;quot;&lt;br /&gt;
File:Estuary_Profiles_Adding_Profile_2.jpg| &#039;&#039;&#039;Step 2:&#039;&#039;&#039; Enter a name for the profile&lt;br /&gt;
File:Estuary_Profiles_Adding_Profile_3.jpg| &#039;&#039;&#039;Step 3:&#039;&#039;&#039; Select a directory for your profile at which your personalized settings will be stored.&amp;lt;br /&amp;gt;&#039;&#039;&#039;OK&#039;&#039;&#039; will choose the &#039;default&#039; folder which will be stored under the [[Userdata|userdata]]-folder and will have the same name as the profile name. &amp;lt;br /&amp;gt;&#039;&#039;&#039;New folder&#039;&#039;&#039; will give you the option to specify a self-created folder for your profile which you need to select after a name for it was given. The folder for the profile will then be found under: userdata -&amp;gt; profiles -&amp;gt; &amp;lt;created folder name&amp;gt;&lt;br /&gt;
File:Estuary_Profiles_Adding_Profile_4.jpg| &#039;&#039;&#039;Step 4:&#039;&#039;&#039; Select specific profile settions which are explained below&lt;br /&gt;
File:Estuary_Profiles_Adding_Profile_5.jpg| &#039;&#039;&#039;Step 5:&#039;&#039;&#039; Choose to copy settings from the defaul user ot start with default settings&lt;br /&gt;
File:Estuary_Profiles_Adding_Profile_6.jpg| &#039;&#039;&#039;Step 6:&#039;&#039;&#039; Choose to copy media sources from the default user or start fresh.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Specific profile settings ===&lt;br /&gt;
&lt;br /&gt;
; Profile Name&lt;br /&gt;
: The name of the profile you entered above&lt;br /&gt;
&lt;br /&gt;
; Profile picture&lt;br /&gt;
: Browse to some icon you would like to select as a profile picture&lt;br /&gt;
&lt;br /&gt;
; Profile directory&lt;br /&gt;
: The path to the profile directory you might have created above&lt;br /&gt;
&lt;br /&gt;
; Lock prefences&lt;br /&gt;
: Allows you to lock many of your preferences. This is detailed below.&lt;br /&gt;
&lt;br /&gt;
; Media Info&lt;br /&gt;
:Allows you to have separate information saved for your media, i.e. IMdB, AllMusic, etc. The options are&lt;br /&gt;
::* &#039;&#039;&#039;Separate&#039;&#039;&#039; - Profiles have separate media info with full control&lt;br /&gt;
::* &#039;&#039;&#039;Shares with Default&#039;&#039;&#039; - Shares media info with the default user with full control&lt;br /&gt;
::* &#039;&#039;&#039;Shares with Default (Read Only)&#039;&#039;&#039; - Shares media info with the default user, and is locked by the master code&lt;br /&gt;
::* &#039;&#039;&#039;Separate (Locked)&#039;&#039;&#039; - Profile has separate media info, but you can only change it by enabling master mode.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
; Media sources&lt;br /&gt;
:Allows you to have separate media sources for the profiles. The options are&lt;br /&gt;
::* &#039;&#039;&#039;Separate&#039;&#039;&#039; - Profiles have separate media sources with full control&lt;br /&gt;
::* &#039;&#039;&#039;Shares with Default&#039;&#039;&#039; - Shares media sources with the default user with full control&lt;br /&gt;
::* &#039;&#039;&#039;Shares with Default (Read Only)&#039;&#039;&#039; - Shares media sources with the default user, and is locked by the master code&lt;br /&gt;
::* &#039;&#039;&#039;Separate (Locked)&#039;&#039;&#039; - Profiles have separate media sources, but you can only change them by enabling master mode.&lt;br /&gt;
{{-}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Deleting a profile ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to delete an unused profile, simply navigate to {{button|Settings}}-&amp;gt;{{button|Profile Settings}}-&amp;gt;{{button|Profiles}}, then navigate to the profile you want to delete and bring up the context menu using either {{button|guide}} on a remote or {{button|c}} on a normal keyboard. Then select {{button|Delete}} like shown in the screenshot below:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Profles-delete_profile-v17.jpg|500px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
== Switching profiles ==&lt;br /&gt;
&lt;br /&gt;
Switching profiles from a currently running Kodi instance can be done in different ways:&lt;br /&gt;
&lt;br /&gt;
You are able to switch a profile while navigating to the profiles-section, selecting the specific profile you want to use, bring up the context menu using either {{button|guide}} on a remote or {{button|c}} on a normal keyboard and select {{button|Load}} like shown in the screenshot below:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Profiles-load_profile-v17.jpg|500px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The other way is to log-off from the current Kodi session and log-in to another profile:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot; widths=500px heights=283px&amp;gt;&lt;br /&gt;
File:Profiles-switch_profile-v17.jpg| &#039;&#039;&#039;Step 1:&#039;&#039;&#039; Log off from the current profile&lt;br /&gt;
File:Profiles-switch_profile2-v17.jpg| &#039;&#039;&#039; Step 2:&#039;&#039;&#039; Log in to another profile&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another way of switching profiles is to bind &#039;&#039;load profile&#039;&#039; to a key in [[Keymaps|keymaps.xml]] by using the [[List_of_built-in_functions|built-in function]] LoadProfile. If you only have two profiles you can use the same key to switch back and forth. e.g. LoadProfile bound to {{keypress|y}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Switch from User1 to User2 (Users1&#039;s keymap.xml): &amp;lt;y&amp;gt;LoadProfile(User2)&amp;lt;y/&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Switch from User2 to User1 (Users2&#039;s keymap.xml): &amp;lt;y&amp;gt;LoadProfile(User1)&amp;lt;y/&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keymap.xml example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;keymap&amp;gt;&lt;br /&gt;
  &amp;lt;global&amp;gt;&lt;br /&gt;
    &amp;lt;keyboard&amp;gt;&lt;br /&gt;
      &amp;lt;y&amp;gt;LoadProfile(User2)&amp;lt;/y&amp;gt;&lt;br /&gt;
    &amp;lt;/keyboard&amp;gt;&lt;br /&gt;
  &amp;lt;/global&amp;gt;&lt;br /&gt;
&amp;lt;/keymap&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== profiles.xml and profiles folder ==&lt;br /&gt;
&lt;br /&gt;
It is important to mention that this section exists so that users have some documentation to refer to in the event of profile related issues occur like profile corruption. This &#039;&#039;&#039;does not&#039;&#039;&#039; constitute a invitation to novice users to start messing around with said files/folders and cause inadvertent problems that would not otherwise exist.&lt;br /&gt;
&lt;br /&gt;
{{notice|&#039;&#039;&#039;Do not edit the any of the xml files&#039;&#039;&#039; in question unless &#039;&#039;&#039;indicated by a Kodi developer&#039;&#039;&#039; or for &#039;&#039;&#039;backup&#039;&#039;&#039; purposes only|WARNING}}&lt;br /&gt;
&lt;br /&gt;
=== profiles.xml ===&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;profile.xml&#039;&#039; file exists after the very first installation of Kodi at its userdata-folder and unless you have created additional profiles it won&#039;t have any other information as for the &#039;&#039;&#039;Master user&#039;&#039;&#039; (Kodis default user). If you create other/additional profiles, that file will be populated with additional informations about the created profile.  &lt;br /&gt;
&lt;br /&gt;
The example below shows a profile.xml file containing the &#039;&#039;&#039;Master user&#039;&#039;&#039; and the user &#039;&#039;&#039;Test&#039;&#039;&#039; as an additional profile. In that case it will show that the &#039;&#039;&#039;Master user&#039;&#039;&#039; uses a lockcode which &#039;&#039;&#039;Test&#039;&#039;&#039; doesn&#039;t use. As you can see the given password is shown in plain text. So please be aware that a locked profile doesn&#039;t provide any kind of security if other users have access to the underlying file system. &lt;br /&gt;
&lt;br /&gt;
For the lock preferences and the Master lock, please visit: [[Settings/Interface/Master_lock|Settings -&amp;gt; Interface settings -&amp;gt; Master lock]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Example profiles.xml file&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;profiles&amp;gt;&lt;br /&gt;
&amp;lt;lastloaded&amp;gt;0&amp;lt;/lastloaded&amp;gt; &lt;br /&gt;
&amp;lt;useloginscreen&amp;gt;false&amp;lt;/useloginscreen&amp;gt; &lt;br /&gt;
&amp;lt;nextIdProfile&amp;gt;2&amp;lt;/nextIdProfile&amp;gt; &lt;br /&gt;
&amp;lt;profile&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt; &lt;br /&gt;
&amp;lt;name&amp;gt;Master user&amp;lt;/name&amp;gt; &lt;br /&gt;
&amp;lt;directory pathversion=&amp;quot;1&amp;quot;&amp;gt;special://masterprofile/&amp;lt;/directory&amp;gt; &lt;br /&gt;
&amp;lt;thumbnail pathversion=&amp;quot;1&amp;quot; /&amp;gt; &lt;br /&gt;
&amp;lt;hasdatabases&amp;gt;true&amp;lt;/hasdatabases&amp;gt; &lt;br /&gt;
&amp;lt;canwritedatabases&amp;gt;true&amp;lt;/canwritedatabases&amp;gt; &lt;br /&gt;
&amp;lt;hassources&amp;gt;true&amp;lt;/hassources&amp;gt; &lt;br /&gt;
&amp;lt;canwritesources&amp;gt;true&amp;lt;/canwritesources&amp;gt; &lt;br /&gt;
&amp;lt;lockaddonmanager&amp;gt;false&amp;lt;/lockaddonmanager&amp;gt; &lt;br /&gt;
&amp;lt;locksettings&amp;gt;false&amp;lt;/locksettings&amp;gt; &lt;br /&gt;
&amp;lt;lockfiles&amp;gt;false&amp;lt;/lockfiles&amp;gt; &lt;br /&gt;
&amp;lt;lockmusic&amp;gt;false&amp;lt;/lockmusic&amp;gt; &lt;br /&gt;
&amp;lt;lockvideo&amp;gt;false&amp;lt;/lockvideo&amp;gt; &lt;br /&gt;
&amp;lt;lockpictures&amp;gt;false&amp;lt;/lockpictures&amp;gt; &lt;br /&gt;
&amp;lt;lockprograms&amp;gt;false&amp;lt;/lockprograms&amp;gt; &lt;br /&gt;
&amp;lt;lockmode&amp;gt;1&amp;lt;/lockmode&amp;gt; &lt;br /&gt;
&amp;lt;lockcode&amp;gt;c4ca4238a0b923820dcc509a6f75849b&amp;lt;/lockcode&amp;gt; &lt;br /&gt;
&amp;lt;lastdate /&amp;gt; &lt;br /&gt;
&amp;lt;/profile&amp;gt;&lt;br /&gt;
&amp;lt;profile&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt; &lt;br /&gt;
&amp;lt;name&amp;gt;TEST&amp;lt;/name&amp;gt; &lt;br /&gt;
&amp;lt;directory pathversion=&amp;quot;1&amp;quot;&amp;gt;profiles/Test/&amp;lt;/directory&amp;gt; &lt;br /&gt;
&amp;lt;thumbnail pathversion=&amp;quot;1&amp;quot; /&amp;gt; &lt;br /&gt;
&amp;lt;hasdatabases&amp;gt;true&amp;lt;/hasdatabases&amp;gt; &lt;br /&gt;
&amp;lt;canwritedatabases&amp;gt;true&amp;lt;/canwritedatabases&amp;gt; &lt;br /&gt;
&amp;lt;hassources&amp;gt;true&amp;lt;/hassources&amp;gt; &lt;br /&gt;
&amp;lt;canwritesources&amp;gt;true&amp;lt;/canwritesources&amp;gt; &lt;br /&gt;
&amp;lt;lockaddonmanager&amp;gt;false&amp;lt;/lockaddonmanager&amp;gt; &lt;br /&gt;
&amp;lt;locksettings&amp;gt;false&amp;lt;/locksettings&amp;gt; &lt;br /&gt;
&amp;lt;lockfiles&amp;gt;false&amp;lt;/lockfiles&amp;gt; &lt;br /&gt;
&amp;lt;lockmusic&amp;gt;false&amp;lt;/lockmusic&amp;gt; &lt;br /&gt;
&amp;lt;lockvideo&amp;gt;false&amp;lt;/lockvideo&amp;gt; &lt;br /&gt;
&amp;lt;lockpictures&amp;gt;false&amp;lt;/lockpictures&amp;gt; &lt;br /&gt;
&amp;lt;lockprograms&amp;gt;false&amp;lt;/lockprograms&amp;gt; &lt;br /&gt;
&amp;lt;lockmode&amp;gt;0&amp;lt;/lockmode&amp;gt; &lt;br /&gt;
&amp;lt;lockcode&amp;gt;-&amp;lt;/lockcode&amp;gt; &lt;br /&gt;
&amp;lt;lastdate /&amp;gt; &lt;br /&gt;
&amp;lt;/profile&amp;gt;&lt;br /&gt;
&amp;lt;/profiles&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Profiles folder contents ===&lt;br /&gt;
&lt;br /&gt;
Any additional user(s) will have their own folder under &#039;&#039;&#039;userdata -&amp;gt; profiles -&amp;gt; &amp;lt;profile-name&amp;gt;&#039;&#039;&#039; which contains all informations about add-on data, databases, keymaps, thumbnails and such seperately from the &#039;&#039;Master user&#039;&#039;. If you have selected &amp;quot;Copy default&amp;quot; at the steps above, the settings or media sources will be copied from the default Kodi user. &lt;br /&gt;
&lt;br /&gt;
By default (no sources set neither on the master user nor on an additional profile) an additional profile folder contains similar folders as the userdata folder. For an explanation about the files and folders which are located under the &amp;lt;profile_name&amp;gt;-folder, please see: [[Userdata#UserData_folder_contents|Userdata folder contents]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Q: I installed skins and add-ons on the &#039;Master User&#039; but I can&#039;t install it on the additional profile. Why?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Already installed skins or add-ons are marked as &amp;quot;disabled&amp;quot; under: {{button|Add-ons -&amp;gt; My add-ons -&amp;gt; &amp;lt;specific add-on section&amp;gt;}} and don&#039;t need to be installed again. After you enabled a specific add-on or a skin, those add-ons are available again and skins could be used from the {{button|Settings -&amp;gt; Interface settins -&amp;gt; Skin}} menu. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q: After I created a profile, the Kodi screen stays black if I try to load it for the first time. Why?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: That was a bug and it&#039;s already fixed in Kodi 18 alpha versions. After you have restarted Kodi Krypton, Kodi should behave normal and should display the GUI as expected.&lt;br /&gt;
&lt;br /&gt;
=== Missing texts/different skins not loading while using profiles ===&lt;br /&gt;
&lt;br /&gt;
That&#039;s a known issue and there&#039;s a workaround for that:&lt;br /&gt;
&lt;br /&gt;
- create a [[Autoexec.py|autoexec.py]] file at your [[Userdata|userdata]] folder and under each {{button|&amp;lt;profile-name&amp;gt;}}-folder under {{button|userdata -&amp;gt; profiles -&amp;gt; &amp;lt;profile-name&amp;gt;}} (the path to that folder differs from the OS in use)&amp;lt;br /&amp;gt;&lt;br /&gt;
- fill each autoexec.py with the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=python&amp;gt;&lt;br /&gt;
import xbmc&lt;br /&gt;
xbmc.executebuiltin(&#039;ReloadSkin()&#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That will cause a skin reload at every profile switch. Depending on your hardware in use you mostly won&#039;t notice it and the texts will be visible again and/or different skins for different profiles will load fine. For some hardware, like the RPi, it will be noticeable and also might take a little while. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Settings/Interface/Master_lock]]&lt;br /&gt;
* [[Media sources#Locking]]&lt;br /&gt;
&lt;br /&gt;
{{Krypton updated}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Settings]]&lt;br /&gt;
[[Category:General topics]]&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=General_information_about_migration_to_Python_3&amp;diff=186033</id>
		<title>General information about migration to Python 3</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=General_information_about_migration_to_Python_3&amp;diff=186033"/>
		<updated>2019-10-27T15:41:21Z</updated>

		<summary type="html">&lt;p&gt;Yol: Update to final migration plan&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Python 3 was released 9 years ago and EOL for Python 2.7 is scheduled for 2020. Currently more and more Python project are switching to Python 3 or 2/3 compatible code. The issue of migrating Kodi’s built-in Python interpreter to Python 3.x was brought up on the Kodi forum several times. Now, thanks to a successful GSOC 2017 project, we have a working Python 3 interpreter for Kodi. That is why on Kodi DevCon 2017 Team Kodi decided that we will switch to Python 3 in the future Kodi release (v.19 preliminarily).&lt;br /&gt;
&lt;br /&gt;
Unfortunately, Python 3.x versions are not backward-compatible with Python 2.x, so we decided to urge addon developers to start porting their addons to Python 3 by making the addons compatible with both Python 2 and 3 and submitting them to the official repo. This way, when Kodi with Python 3 is released, we won’t have a situation when we have no working addons.&lt;br /&gt;
&lt;br /&gt;
== The Process ==&lt;br /&gt;
&lt;br /&gt;
* For Kodi 18 (Leia), only addons that are compatible with both Python 2 and 3 will be accepted to the official addon repository.&lt;br /&gt;
* We will provide Kodi 18 builds with Python 3 so that addon developers can tests if their addons are really compatible with Python 3.&lt;br /&gt;
* A thread will be created on the Kodi forum so that addon devs can get help with their migration process.&lt;br /&gt;
* Starting from Kodi 19 (Matrix), only Python 3 will be offered (and therefore only addons that are compatible with Python 3 will be accepted to the official addon repository).&lt;br /&gt;
&lt;br /&gt;
== Python 3 And 2 Differences ==&lt;br /&gt;
&lt;br /&gt;
Below is a brief overview of the main differences between Python 3 and 2.&lt;br /&gt;
&lt;br /&gt;
=== Unicode strings by default ===&lt;br /&gt;
&lt;br /&gt;
In Python 2 built-in &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt; type holds the sequence of bytes so it can be used to store both binary data and textual data in ASCII or any of 8-bit fixed-length encodings (there were plenty). Python 2 also has &amp;lt;code&amp;gt;unicode&amp;lt;/code&amp;gt; type that can store text in various writing systems. A minimal unit of a &amp;lt;code&amp;gt;unicode&amp;lt;/code&amp;gt; object is a Unicode codepoint (a Unicode character). Both &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;unicode&amp;lt;/code&amp;gt; objects can be mixed and matched together, for example, concatenated using &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; operator.&lt;br /&gt;
&lt;br /&gt;
In Python 3 &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt; type holds Unicode characters, and for binary data a new &amp;lt;code&amp;gt;bytes&amp;lt;/code&amp;gt; type was added. This type was also added to Python 2.7 to simplify porting to Python 3 but in Python 2.7 bytes is simply an alias for &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;bytes&amp;lt;/code&amp;gt; types are incompatible, and an attempt to use both together will result in &amp;lt;code&amp;gt;TypeError&amp;lt;/code&amp;gt; exception. A &amp;lt;code&amp;gt;bytes&amp;lt;/code&amp;gt; object can be converted to &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt; using .decode() method, and a &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt; is converted to &amp;lt;code&amp;gt;bytes&amp;lt;/code&amp;gt; using .encode() method.&lt;br /&gt;
&lt;br /&gt;
=== Absolute Import ===&lt;br /&gt;
Python 3 uses so called “absolute import” and you can no longer import neighbor modules from inside a package using only a module name. You need to either to use either a fully qualified name or a “dotted” notation.&lt;br /&gt;
&lt;br /&gt;
Let’s assume that you have a &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; package that contains &amp;lt;code&amp;gt;bar&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;spam&amp;lt;/code&amp;gt; modules:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foo/&lt;br /&gt;
  __init__.py&lt;br /&gt;
  bar.py&lt;br /&gt;
  spam.py    &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And you need to import &amp;lt;code&amp;gt;bar&amp;lt;/code&amp;gt; module from &amp;lt;code&amp;gt;spam&amp;lt;/code&amp;gt;. In Python 2 you can do:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import bar&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But in Python 3 you need to use either&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import foo.bar&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from . import bar&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Floating Point Division ===&lt;br /&gt;
&lt;br /&gt;
In Python 2 applying division operator to int numbers produces int result. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; 4 / 3&lt;br /&gt;
1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Python 3 division operator always gives you a float result.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; 4/3&lt;br /&gt;
1.3333333333333333&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get an int result you need to use integer division operator:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; 4 // 3&lt;br /&gt;
1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Print Function ===&lt;br /&gt;
&lt;br /&gt;
In Python 3 print statement has been replaced with print() function. This is not very relevant to Kodi because using print in Python addons is discouraged and xbmc.log() function should be used to write messages to the Kodi log.&lt;br /&gt;
&lt;br /&gt;
=== Default Iterators ===&lt;br /&gt;
&lt;br /&gt;
In Python 3 most function and methods that produce sequences return iterators instead of lists. For example, range() function and .items(), .keys(), .values() of dict type produce iterators instead of lists, and their Python 2 analogues — xrange() function and .iter* methods of dict type — have been removed.&lt;br /&gt;
&lt;br /&gt;
=== No long Integers ===&lt;br /&gt;
&lt;br /&gt;
In Python 3 long integer type has been removed and int type can now hold a number of arbitrary length.&lt;br /&gt;
&lt;br /&gt;
Those are only some of the differences between Python 2 and 3. For a more complete list see [https://docs.python.org/3.6/whatsnew/3.0.html official Python documentation].&lt;br /&gt;
&lt;br /&gt;
== Some Useful Information ==&lt;br /&gt;
&lt;br /&gt;
As it was said above, Python 3 includes a number of incompatible changes, so to avoid situation when after upgrading Kodi for Python 3 support most Python addons will be broken developers should start to port their addons to be compatible with both Python 2 and 3. This is not a trivial task but fortunately there are a number of tools and recommendations to simplify this process. Here I’ll give you some advice and information about tools that will simplify creating portable code that runs on both Python 2 and 3.&lt;br /&gt;
&lt;br /&gt;
=== Know Your Strings! ===&lt;br /&gt;
&lt;br /&gt;
This is the most problematic part of porting Python 2 code to Python 3 so I put it first. One of the most notable differences between Python 2 and 3 is clear separation between “textual” and “binary” strings, that is, between textual data and their binary representation. This difference is often difficult to understand, especially for novice developers (not only in Python), and the fact that in Python 2 you can mix together str (binary data) and unicode (textual data) adds to that difficulty.&lt;br /&gt;
&lt;br /&gt;
There are many explanations in the Internet, but here are the most basic things about strings that you need to know:&lt;br /&gt;
&lt;br /&gt;
“Textual” or Unicode strings (unicode in Python 2 and str in Python 3) hold text as a sequence of characters. A minimal unit in such strings is a Unicode character — an abstract entity that represent an alphabet symbol, a punctuation sign or other symbol included in the Unicode character table. Of course, such symbols have concrete internal binary representation (a computer is a binary machine after all), but this representation is not relevant to us. All you need to know is that “textual” strings contain text units without being tied to concrete binary representation.&lt;br /&gt;
&lt;br /&gt;
Unlike Unicode strings, binary strings (str in Python 2 and bytes in both Python 2 and 3) hold binary data, and a minimal unit of such strings is a byte or 8 bits. Historically, in Python 2 such strings are used for textual data encoded in ASCII or other 1-byte fixed-length encoding (e.g. Windows 1251 for Cyrillic alphabets). However, this approach has its limitation, that is why unicode type was introduced in Python 2, and in Python 3 it was renamed to str and made a default container for textual data.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, Python 2 allows to mix and match Unicode and binary strings in the same context and this creates big problems when porting Python 2 code to Python 3. So in order to successfully port your code to Python 3 you need to carefully consider how textual data are processed in your addon. The following recommendations will help you avoid problems when writing Python 2/3 compatible code.&lt;br /&gt;
&lt;br /&gt;
=== Avoid using binary strings for text ===&lt;br /&gt;
&lt;br /&gt;
Store all your text as Unicode strings. This means that all binary strings received from external sources (textual files, websites, various APIs) need to be decoded using appropriate encoding (UTF-8 in most cases). If you need to use strings literals (although using hardcoded strings for user-facing text in Kodi is strongly discouraged), they need to be defined as unicode strings as well. You can use either&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from __future__ import unicode_literals&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
at the beginning of your modules to enable unicode strings by default as in Python 3 or u-strings, e.g. &amp;lt;code&amp;gt;u&#039;foo&#039;&amp;lt;/code&amp;gt; (Python 3 understands them too) — it doesn&#039;t really matter as long as you are doing it consistently.&lt;br /&gt;
&lt;br /&gt;
=== Know the libraries you are using ===&lt;br /&gt;
Working with Python Standard Library and third-party libraries (including Kodi Python API) you should know that types their functions and methods expect and what types they return. For example, in popular requests library Response.text property returns a Unicode string and Response.content returns a binary string.&lt;br /&gt;
&lt;br /&gt;
If a function/method/property returns a binary string, you need to decode it to a Unicode string using .decode() method. Don’t use unicode class constructor because unicode type does not exist in Python 3.&lt;br /&gt;
&lt;br /&gt;
If you are reading textual files from disk, it is better to use io.open() instead of built-in open(). io.open() can decode file contents to Unicode using specified encoding and works identically both in Python 2 and 3. Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import io&lt;br /&gt;
&lt;br /&gt;
with io.open(&#039;foo.txt&#039;, &#039;r&#039;, encoding=&#039;utf-8&#039;) as fo:&lt;br /&gt;
   text = fo.read()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Potential pitfalls ===&lt;br /&gt;
&lt;br /&gt;
When writing Python 2/3-compatible code or converting existing Python 2 codebase to compatible code you should pay attention to the following Python language constructions where TypeError exceptions may happen because of incompatible string types if you don’t get your strings in order:&lt;br /&gt;
&lt;br /&gt;
* String concatenations with + operator (&amp;lt;code&amp;gt;&#039;foo&#039; + &#039;bar&#039;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* String formatting — both “old style” (&amp;lt;code&amp;gt;&#039;foo %s&#039; % &#039;bar&#039;&amp;lt;/code&amp;gt;) and “new style” (&amp;lt;code&amp;gt;&#039;foo {}&#039;.format(&#039;bar&#039;)&amp;lt;/code&amp;gt;).&lt;br /&gt;
* String joining (&amp;lt;code&amp;gt;&#039;, &#039;.join([&#039;foo&#039;, &#039;bar&#039;])&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
In all those cases always make sure that you work with Unicode strings only.&lt;br /&gt;
Another source of subtle bugs is functions and methods that accept and return binary strings (str type) in Python 2  but Unicode strings in Python 3 (again, str type but with different properties). You can use the following utility functions to “normalize” strings that are provided to such functions/methods and received from them:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
__all__ = [&#039;PY2&#039;, &#039;py2_encode&#039;, &#039;py2_decode&#039;]&lt;br /&gt;
&lt;br /&gt;
PY2 = sys.version_info[0] == 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def py2_encode(s, encoding=&#039;utf-8&#039;):&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   Encode Python 2 ``unicode`` to ``str``&lt;br /&gt;
&lt;br /&gt;
   In Python 3 the string is not changed.   &lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   if PY2 and isinstance(s, unicode):&lt;br /&gt;
       s = s.encode(encoding)&lt;br /&gt;
   return s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def py2_decode(s, encoding=&#039;utf-8&#039;):&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   Decode Python 2 ``str`` to ``unicode``&lt;br /&gt;
&lt;br /&gt;
   In Python 3 the string is not changed.&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   if PY2 and isinstance(s, str):&lt;br /&gt;
       s = s.decode(encoding)&lt;br /&gt;
   return s&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Those utility functions are included in Kodi Six library that is described in the following section.&lt;br /&gt;
&lt;br /&gt;
== Helper Libraries and Tools ==&lt;br /&gt;
&lt;br /&gt;
=== 2to3 ===&lt;br /&gt;
&lt;br /&gt;
[https://docs.python.org/2/library/2to3.html 2to3] script is created by Python developers to help converting existing Python 2 code to Python 3. On Windows it is included in Python distribution (Tools subfolder) but on other OSes you man need to install it separately. For example, on Ubuntu it is included in python-examples package. Note that this script is created for conversion from Python 2 to 3, not for writing portable code, so you need to treat its output with care.&lt;br /&gt;
&lt;br /&gt;
=== Modernize ===&lt;br /&gt;
&lt;br /&gt;
https://python-modernize.readthedocs.io/en/latest/ Modernize] script works on top of 2to3 and is supposed to help you to convert your existing Python 2 code to Python 2/3-compatible. However, in my experiments it did not work reliably even in simple cases so I cannot recommend it for usage.&lt;br /&gt;
&lt;br /&gt;
=== Six ===&lt;br /&gt;
&lt;br /&gt;
[https://pythonhosted.org/six/ Six] was the first library developed to simplify Python 2 to 3 migration. It provides a set of wrappers that hide differences between Python 2 and 3 behind its API. It is less intrusive than the following alternative because it does not monkey-patch built-in names, but in order to use Six library effectively you need to learn its API. Six can be used both for writing new Python 2/3-compatible addons and converting existing ones, but it requires good knowledge of Python 2/3 differences to pick necessary Six features that address specific differences.&lt;br /&gt;
&lt;br /&gt;
Six library is included in the Kodi addon repository as &#039;&#039;&#039;script.module.six&#039;&#039;&#039; addon.&lt;br /&gt;
&lt;br /&gt;
=== Future ===&lt;br /&gt;
&lt;br /&gt;
[http://python-future.org/ Future] library, like Six, was created to simplify porting existing Python 2 code to 3. But it uses a different approach than Six. Future monkey-patches built-in Python objects to make Python 2 behave like Python 3. The advantage of such approach is that code written using Future is close to idiomatic Python 3 and requires little re-work if you decide to drop Python 2 support in the future. However, such approach may cause problems in some rare edge-cases.&lt;br /&gt;
&lt;br /&gt;
Future library also includes &amp;lt;code&amp;gt;futurize&amp;lt;/code&amp;gt; command-line utility for converting existing Python 2 code to 2/3-compatible and in my experiments this utility showed good results.&lt;br /&gt;
Future library (without additional utilities) is included in the Kodi addon repository as script.module.future addon.&lt;br /&gt;
&lt;br /&gt;
=== Kodi Six ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/romanvm/kodi.six Kodi Six] library (available as &#039;&#039;&#039;script.module.kodi-six&#039;&#039;&#039; addon) is created to normalize string handling in Kodi Python API based on different Python versions by applying wrappers around Kodi API functions and classes. In Kodi API based on Python 2 Kodi Six wrappers have the following effects:&lt;br /&gt;
&lt;br /&gt;
* All functions and methods that expect string arguments can accept both UTF-8 encoded &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt; objects and &amp;lt;code&amp;gt;unicode&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
* All functions and methods that return string data return &amp;lt;code&amp;gt;unicode&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
In Kodi API based on Python 3 the wrappers have no effect because Python 3-based API works only with &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt; (Unicode) objects. This eliminates the need for ad hoc encoding and decoding string when working with Kodi API. To use the wrappers you need to import Kodi API &amp;lt;code&amp;gt;xbmc*&amp;lt;/code&amp;gt; modules from Kodi Six instead of importing them directly:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from kodi_six import xbmc, xbmcaddon, xbmcgui, xbmcplugin, xbmcvfs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PyCharm ===&lt;br /&gt;
&lt;br /&gt;
PyCharm, except for being a really good Python IDE, also provides code compatibility inspection that helps you write Python 2/3-portable code. Open &#039;&#039;&#039;Settings&#039;&#039;&#039; (Alt+F7) &amp;gt; &#039;&#039;&#039;Editor&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Inspections&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Python&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Code compatibility inspections&#039;&#039;&#039; and check Python version that you want to support.&lt;br /&gt;
&lt;br /&gt;
PyCharm Community Edition is free and provides all features you need for creating Python addons for Kodi.&lt;br /&gt;
&lt;br /&gt;
== Writing Portable Code ==&lt;br /&gt;
&lt;br /&gt;
Here I’ll give you some tips about how to write portable code:&lt;br /&gt;
&lt;br /&gt;
* Learn the differences between Python 2 and 3. You need to know at least the most important differences between the two major Python versions.&lt;br /&gt;
&lt;br /&gt;
* Use version control system — git or mercurial — to track changes in your code. If you are porting existing code, do it in a separate branch.&lt;br /&gt;
&lt;br /&gt;
* No matter if you are going to write a brand new addon or to port existing addon to Python 3, carefully choose your tools. It is totally possible to write portable code without any helper tools and libraries, but you need to know what you are doing. However, in most cases I’d recommend you to use Future library and its utilities. Carefully read Future documentation.&lt;br /&gt;
&lt;br /&gt;
* Put the following line at the beginning of all your modules:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from __future__ import absolute_import, division, unicode_literals&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This will enable respective Python 3 features in your code. You don’t need to import print_function (another Python 3 feature) because in Kodi addons you should to use xbmc.log() to write messages to the Kodi log file.&lt;br /&gt;
&lt;br /&gt;
=== Writing New Addons ===&lt;br /&gt;
&lt;br /&gt;
Check the [http://python-future.org/quickstart.html#if-you-are-writing-code-from-scratch Quick Start Guide] section of Future library documentation. You can also use Six library, but, as it was said previously, you need to learn its API to pick the necessary features to address specific Python version differences, while Future allows to write your code in (almost) idiomatic Python 3.&lt;br /&gt;
&lt;br /&gt;
A brief procedure for writing new Python 2/3-compatible addons with Future library:&lt;br /&gt;
&lt;br /&gt;
# Create a new virtual environment with Python 3 interpreter and activate it.&lt;br /&gt;
# Install Future library: &amp;lt;code&amp;gt;pip install future&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Point your IDE (Integrated Development Environment) to that environment. For example, in PyCharm: &#039;&#039;&#039;File&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Setting&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Project&#039;&#039;&#039; &amp;gt; &#039;&#039;&#039;Project Interpreter&#039;&#039;&#039;.&lt;br /&gt;
# Put the following line at the beginning of your Python code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from __future__ import absolute_import, division, unicode_literals&lt;br /&gt;
from future import standard_library&lt;br /&gt;
from future.builtins import *&lt;br /&gt;
standard_library.install_aliases()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Write your addon using Python 3 syntax and standard library names. However, you may still need to use wrappers from Future library for some specific cases (e.g. iterators over &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt; elements). Read Future docs for more info.&lt;br /&gt;
&lt;br /&gt;
=== Porting Existing Addons ===&lt;br /&gt;
&lt;br /&gt;
A brief procedure for porting existing code to Python 3-compatible with Future library:&lt;br /&gt;
&lt;br /&gt;
# Install Future library into your working Python 2 virtual environment: &amp;lt;code&amp;gt;pip install future&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Run &amp;lt;code&amp;gt;futurize&amp;lt;/code&amp;gt; utility to convert all your scripts and modules to portable code.&lt;br /&gt;
&lt;br /&gt;
Test your new or converted addon in Kodi with Python 2 interpreter and fix all found issues. After that test the addon in Kodi with Python 3 interpreter and again fix all found issues.&lt;br /&gt;
You can use [https://github.com/romanvm/kodi.web-pdb Web-PDB] debugger for troubleshooting issues in your code. It is compatible with both Python 2 and 3.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* Python 2 and 3 differences: https://docs.python.org/3.6/whatsnew/3.0.html&lt;br /&gt;
* Future library documentation: http://python-future.org/&lt;br /&gt;
* Six library documentation: https://pythonhosted.org/six/&lt;br /&gt;
* Kodi test builds with Python 3 for Windows: http://mirrors.xbmc.org/test-builds/windows/win32/&lt;br /&gt;
* Kodi test builds with Python 3 for Linux Ubuntu: https://launchpad.net/~wsnipex/+archive/ubuntu/kodi-python3/+packages&lt;br /&gt;
* “Python 3 migration” section on the Kodi official forum: https://forum.kodi.tv/forumdisplay.php?fid=281&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=MySQL/Setting_up_MySQL&amp;diff=155408</id>
		<title>MySQL/Setting up MySQL</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=MySQL/Setting_up_MySQL&amp;diff=155408"/>
		<updated>2019-01-21T08:34:23Z</updated>

		<summary type="html">&lt;p&gt;Yol: Remove outdated info, add message for recommended versions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:MySQL/Contents}}&lt;br /&gt;
{{mininav| [[MySQL]] }}&lt;br /&gt;
You&#039;ll need to choose which of your computers, Kodi devices, or [[NAS]] will be the MySQL server. The server needs to be on 24/7 or have wake-on-lan (preferably the former), and needs to have a local static IP. You will probably want the Kodi device that is hosting most or all of your videos and music to also be the MySQL server, but this is not required.&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
{{redv|&#039;&#039;&#039;Please Note:&#039;&#039;&#039;| Don&#039;t create the MySQL databases on your server&#039;&#039;&#039;. Simply set up the MySQL server itself, as Kodi will create the specific databases by itself.}}&lt;br /&gt;
{{redv|&#039;&#039;&#039;Also:&#039;&#039;&#039;| Some versions of MySQL set their passwords to expire by default, &#039;&#039;&#039;even the root password&#039;&#039;&#039;!  If the password expires, Kodi cannot access the database and the TV Series and Movies libraries will disappear.&amp;lt;br /&amp;gt;&lt;br /&gt;
To avoid this and/or fix it after it happens, make sure the account&#039;s password does not expire. (See: https://dev.mysql.com/doc/refman/5.7/en/password-expiration-policy.html )}}&lt;br /&gt;
&lt;br /&gt;
MySQL can be installed on just about every major OS:&lt;br /&gt;
&lt;br /&gt;
{{redv|&#039;&#039;&#039;Important:&#039;&#039;&#039;| Please use only supported versions of the MySQL or MariaDB server. As of January 2019, this is MySQL in at least version 5.6 or MariaDB in at least version 5.5.}}&lt;br /&gt;
&lt;br /&gt;
=Ubuntu Linux=&lt;br /&gt;
&#039;&#039;&#039;Ubuntu Linux:&#039;&#039;&#039;&lt;br /&gt;
#&amp;lt;code&amp;gt;$sudo apt-get install mysql-server&amp;lt;/code&amp;gt; &#039;&#039;(see also: https://help.ubuntu.com/18.04/serverguide/mysql.html )&#039;&#039;&lt;br /&gt;
#Create a password when asked&lt;br /&gt;
#To configure MySQL to listen for connections from network hosts, edit &#039;&#039;/etc/mysql/mysql.conf.d/mysqld.cnf&#039;&#039; and change the bind-address directive to the server&#039;s IP address:&lt;br /&gt;
##from: &amp;lt;code&amp;gt;bind-address = 127.0.0.1&amp;lt;/code&amp;gt; &lt;br /&gt;
##to: &amp;lt;code&amp;gt;bind-address = 192.168.0.5&amp;lt;/code&amp;gt;&lt;br /&gt;
#*Note: Replace 192.168.0.5 with the appropriate address.&lt;br /&gt;
#*Note: To allow both local and remote access (i.e. from both the MySQL host to itself and also from other clients), either comment out the bind-address using a hash (#) to disable it, or use &amp;lt;code&amp;gt;bind-address = 0.0.0.0&amp;lt;/code&amp;gt; to open it completely.&lt;br /&gt;
#Restart your MySQL server. &amp;lt;code&amp;gt;sudo service mysql restart&amp;lt;/code&amp;gt;&lt;br /&gt;
#Get into the MySQL command line utility: &amp;lt;code&amp;gt;mysql -u root -p&amp;lt;/code&amp;gt;&lt;br /&gt;
#Enter the following commands:&lt;br /&gt;
##Type in: &amp;lt;code&amp;gt;CREATE USER &#039;kodi&#039; IDENTIFIED BY &#039;kodi&#039;;&amp;lt;/code&amp;gt; and press return&lt;br /&gt;
##Type in: &amp;lt;code&amp;gt;GRANT ALL ON *.* TO &#039;kodi&#039;;&amp;lt;/code&amp;gt; and press return&lt;br /&gt;
##Type in: &amp;lt;code&amp;gt;flush privileges;&amp;lt;/code&amp;gt; and press return&lt;br /&gt;
#Close out the command line tool with &amp;lt;code&amp;gt;\q&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Arch Linux=&lt;br /&gt;
&#039;&#039;&#039;Arch Linux:&#039;&#039;&#039;&lt;br /&gt;
*Please note: Arch, along with many other distributions, has migrated to the faster and more open MariaDB. It is a drop in replacement to MySQL and, thus, Kodi will require no modifications to work with it.&lt;br /&gt;
#Install MariaDB: &amp;lt;code&amp;gt;$ sudo pacman -S mariadb&amp;lt;/code&amp;gt;&lt;br /&gt;
#Start the service: &amp;lt;code&amp;gt;$ sudo systemctl start mysqld&amp;lt;/code&amp;gt;&lt;br /&gt;
#To have it automatically launch at startup: &amp;lt;code&amp;gt;$ sudo systemctl enable mysqld&amp;lt;/code&amp;gt;&lt;br /&gt;
#Create a password: &amp;lt;code&amp;gt;$ /usr/bin/mysql_secure_installation&amp;lt;/code&amp;gt; &#039;&#039;This will also clean up the demo database.&#039;&#039;&lt;br /&gt;
#Get into the MariaDB command line utility: &amp;lt;code&amp;gt;$ mysql -u root -p&amp;lt;/code&amp;gt;&lt;br /&gt;
#Enter the following commands:&lt;br /&gt;
##Type in: &amp;lt;code&amp;gt;CREATE USER &#039;kodi&#039; IDENTIFIED BY &#039;kodi&#039;;&amp;lt;/code&amp;gt; and press return&lt;br /&gt;
##Type in: &amp;lt;code&amp;gt;GRANT ALL ON *.* TO &#039;kodi&#039;;&amp;lt;/code&amp;gt; and press return&lt;br /&gt;
##Type in: &amp;lt;code&amp;gt;flush privileges;&amp;lt;/code&amp;gt; and press return&lt;br /&gt;
#Close out the command line tool with &amp;lt;code&amp;gt;\q&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=RedHat based Linux=&lt;br /&gt;
&#039;&#039;&#039;RedHat based Linux (RHEL, CentOS, Fedora):&#039;&#039;&#039;&lt;br /&gt;
#&amp;lt;code&amp;gt;$sudo yum install mysql-server&amp;lt;/code&amp;gt;&lt;br /&gt;
#Create a password when asked&lt;br /&gt;
#To configure MySQL to listen for connections only from network hosts, edit &#039;&#039;/etc/mysql/my.cnf&#039;&#039; and add the bind-address directive to the server&#039;s IP address:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;bind-address = 192.168.0.5&amp;lt;/code&amp;gt;&lt;br /&gt;
#*Note: Replace 192.168.0.5 with the appropriate address.&lt;br /&gt;
#*Note: Alternatively you can leave this file as is to allow local and remote access.&lt;br /&gt;
#Restart your MySQL server. &amp;lt;code&amp;gt;$sudo /sbin/service mysqld restart&amp;lt;/code&amp;gt;&lt;br /&gt;
#*Recommended - Set your MySQL root password with &amp;lt;code&amp;gt;/usr/bin/mysqladmin -u root password &#039;new-password&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Get into the MySQL command line utility: &amp;lt;code&amp;gt;$mysql -u root -p&amp;lt;/code&amp;gt;&lt;br /&gt;
#*Enter your MySQL root password as set above, or just press enter if you didn&#039;t set one to log in with a blank password&lt;br /&gt;
#Enter the following commands:&lt;br /&gt;
##Type in: &amp;lt;code&amp;gt;CREATE USER &#039;kodi&#039; IDENTIFIED BY &#039;kodi&#039;;&amp;lt;/code&amp;gt; and press return&lt;br /&gt;
##Type in: &amp;lt;code&amp;gt;GRANT ALL ON *.* TO &#039;kodi&#039;;&amp;lt;/code&amp;gt; and press return&lt;br /&gt;
##Type in: &amp;lt;code&amp;gt;flush privileges;&amp;lt;/code&amp;gt; and press return&lt;br /&gt;
#Close out the command line tool with &amp;lt;code&amp;gt;\q&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=RaspberryPi Raspbian=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RaspberryPi Raspbian:&#039;&#039;&#039;&lt;br /&gt;
#&amp;lt;code&amp;gt;$sudo apt-get update &amp;amp;&amp;amp; sudo apt-get dist-upgrade&amp;lt;/code&amp;gt; to ensure that you have the very latest iteration of Raspbian. &#039;&#039;(September 2017 as of writing this)&#039;&#039;&lt;br /&gt;
#&amp;lt;code&amp;gt;$sudo apt-get install mysql-server&amp;lt;/code&amp;gt; to install &#039;&#039;MYSQL Server&#039;&#039;.&lt;br /&gt;
#To configure MySQL to listen for connections from network hosts, &amp;lt;code&amp;gt;$sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf&amp;lt;/code&amp;gt; and change the bind-address directive to the server&#039;s IP address:&lt;br /&gt;
##from: &amp;lt;code&amp;gt;bind-address = 127.0.0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
##to: &amp;lt;code&amp;gt;bind-address = 192.168.0.5&amp;lt;/code&amp;gt;&lt;br /&gt;
#*Note: Replace 192.168.0.5 with the appropriate address.&lt;br /&gt;
#*Note: To allow both local and remote access (i.e. from both the MySQL host to itself and also from other clients), either comment out the bind-address using a hash (#) to disable it, or use &amp;lt;code&amp;gt;bind-address = 0.0.0.0&amp;lt;/code&amp;gt; to open it completely.&lt;br /&gt;
#Restart your MySQL server: &amp;lt;code&amp;gt;sudo service mysql restart&amp;lt;/code&amp;gt;&lt;br /&gt;
#Get into the MySQL command line utility: &amp;lt;code&amp;gt;sudo mysql&amp;lt;/code&amp;gt;&lt;br /&gt;
#Enter the following commands:&lt;br /&gt;
##Type in: &amp;lt;code&amp;gt;CREATE USER &#039;kodi&#039; IDENTIFIED BY &#039;kodi&#039;;&amp;lt;/code&amp;gt; and press return&lt;br /&gt;
##Type in: &amp;lt;code&amp;gt;GRANT ALL ON *.* TO &#039;kodi&#039;;&amp;lt;/code&amp;gt; and press return&lt;br /&gt;
##Type in: &amp;lt;code&amp;gt;flush privileges;&amp;lt;/code&amp;gt; and press return&lt;br /&gt;
#Close out the command line tool with &amp;lt;code&amp;gt;\q&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Mac OS X=&lt;br /&gt;
&#039;&#039;&#039;Mac OS X:&#039;&#039;&#039;&lt;br /&gt;
#Download a copy of MySQL server from http://dev.mysql.com/downloads/mysql/&lt;br /&gt;
#In Mac OS X, go to System Preferences -&amp;gt; MySQL, and click on “Start MySQL Server”.  You’ll also want to tick to enable the “Automatically … on Startup” option.&lt;br /&gt;
#Now to set up the &amp;quot;kodi&amp;quot; user in MySQL and give it access. Launch Terminal.app on your Mac and issue the following commands, one line at a time:&lt;br /&gt;
##&amp;lt;code&amp;gt;sudo /usr/local/mysql/bin/mysql&amp;lt;/code&amp;gt;&lt;br /&gt;
##&amp;lt;code&amp;gt;CREATE USER &#039;kodi&#039; IDENTIFIED BY &#039;kodi&#039;;&amp;lt;/code&amp;gt;&lt;br /&gt;
##&amp;lt;code&amp;gt;GRANT ALL ON *.* TO &#039;kodi&#039;;&amp;lt;/code&amp;gt;&lt;br /&gt;
##&amp;lt;code&amp;gt;exit&amp;lt;/code&amp;gt;&lt;br /&gt;
#Remain in Terminal.app. Now you&#039;ll be giving other computers on your network access to MySQL. Enter the next set of commands, one line at a time:&lt;br /&gt;
##&amp;lt;code&amp;gt;cd /usr/local/mysql/support-files/&amp;lt;/code&amp;gt;&lt;br /&gt;
##&amp;lt;code&amp;gt;sudo cp my-huge.cnf /etc/my.cnf&amp;lt;/code&amp;gt;&lt;br /&gt;
##:&#039;&#039;The command line will ask for your Mac OS X user password. Enter it and press return. No text will show when you type your password in, this is normal.&lt;br /&gt;
##&amp;lt;code&amp;gt;cd /etc&amp;lt;/code&amp;gt;&lt;br /&gt;
##&amp;lt;code&amp;gt;sudo nano my.cnf&amp;lt;/code&amp;gt;&lt;br /&gt;
##:&#039;&#039;This opens a file in a command line text editor&#039;&#039;&lt;br /&gt;
##Scroll down to the [mysqld] section and add or edit the following line so that it appears as:&lt;br /&gt;
##:&amp;lt;code&amp;gt;bind-address = ***.***.***.***&amp;lt;/code&amp;gt;&lt;br /&gt;
##Save and exit from the command line text editor&lt;br /&gt;
#Reboot the Mac, or restart the MySQL service from the System Preferences pane you installed earlier&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Alternative guide for Mac OS X: http://forum.kodi.tv/showthread.php?tid=151631&lt;br /&gt;
&lt;br /&gt;
=Windows=&lt;br /&gt;
== Installing MySQL on Windows ==&lt;br /&gt;
If you have chocolatey installed run &#039;&#039;&#039;choco install mysql&#039;&#039;&#039; &lt;br /&gt;
:&#039;&#039;&#039;or&#039;&#039;&#039;&lt;br /&gt;
#Download a copy of MySQL server from http://dev.mysql.com/downloads/mysql/&lt;br /&gt;
#Select &#039;&#039;Server only&#039;&#039;&lt;br /&gt;
#Create a password when asked&lt;br /&gt;
#Select that you want the database to have network access when prompted during installation.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using a firewall such as the one that&#039;s built into Windows, you will need to follow the steps below for the version of windows you installed Kodi on.&lt;br /&gt;
=== Windows 7/8/8.1 Built-in Firewall ===&lt;br /&gt;
: Run the following command in powershell or execute all the steps below.&lt;br /&gt;
:::&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
New-NetFirewallRule -DisplayName &amp;quot;Allow inbound TCP Port 3306 for MySQL&amp;quot; -Direction inbound –LocalPort 3306 -Protocol TCP -Action Allow&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
:#Go to control panel and open Windows Firewall&lt;br /&gt;
:#Click on Advanced Settings&lt;br /&gt;
:#Click on Inbound Rules, then New Rule&lt;br /&gt;
:#For the Rule Type, choose &#039;&#039;&#039;&#039;&#039;Port&#039;&#039;&#039;&#039;&#039; and hit Next&lt;br /&gt;
:#For Protocol and Ports, select TCP protocol and type in &#039;&#039;&#039;&#039;&#039;3306&#039;&#039;&#039;&#039;&#039; for the &#039;&#039;&#039;&#039;&#039;Specific local ports&#039;&#039;&#039;&#039;&#039; and hit Next&lt;br /&gt;
:#For Action, leave it at default which is &#039;&#039;&#039;&#039;&#039;Allow the connection&#039;&#039;&#039;&#039;&#039; and hit Next&lt;br /&gt;
:#For Profile, you can leave it as default (everything checked by default) and hit Next&lt;br /&gt;
:#For Name, set it to &#039;&#039;&#039;&#039;&#039;MySQL&#039;&#039;&#039;&#039;&#039; or any name that you will know what it is and click Finished&lt;br /&gt;
&lt;br /&gt;
== Setup users in MySQL for Kodi clients ==&lt;br /&gt;
&lt;br /&gt;
#Open the &amp;quot;MySQL Command Line Client&amp;quot; from the MySQL start menu&lt;br /&gt;
#Enter the following commands:&lt;br /&gt;
##Type in: &amp;lt;code&amp;gt;CREATE USER &#039;kodi&#039; IDENTIFIED BY &#039;kodi&#039;;&amp;lt;/code&amp;gt; and press return&lt;br /&gt;
##Type in: &amp;lt;code&amp;gt;GRANT ALL ON *.* TO &#039;kodi&#039;;&amp;lt;/code&amp;gt; and press return&lt;br /&gt;
##Type in: &amp;lt;code&amp;gt;flush privileges;&amp;lt;/code&amp;gt; and press return &lt;br /&gt;
#Close out the command line tool&lt;br /&gt;
&lt;br /&gt;
{{Note|If Kodi is unable to connect to the MySQL server, returning an error code [1130]:}}&amp;lt;br/&amp;gt;&lt;br /&gt;
If this occurs to you, try amending Step 2 above to read &amp;lt;code&amp;gt;GRANT ALL ON *.* TO &#039;kodi&#039;@&#039;xxx.xxx.xxx.%&#039;;&amp;lt;/code&amp;gt; where xxx.xxx.xxx is the first three quadrants of your home network&#039;s IP address (192.168.1 for example) and % as the last quadrant to allow addresses on the same subnet to connect.&lt;br /&gt;
&lt;br /&gt;
=Other NAS=&lt;br /&gt;
MySQL can also be installed on some [[w:network-attached storage|network-attached storage (NAS)]] device devices. Here are some guides for various NAS devices that can have a MySQL server installed:&lt;br /&gt;
&lt;br /&gt;
*Devices running Arch Linux ARM (such as the PogoPlug, Dockstar, etc) can use the [[HOW-TO:Share libraries using MySQL/Setting up MySQL/ALARM|Arch Linux instructions]] on this page.&lt;br /&gt;
*[https://web.archive.org/web/20160329053954/http://quixventure.com/2011/12/configure-a-synology-nas-as-mysql-server-for-xbmc/ Synology NAS as MySQL server for XBMC] and http://youtu.be/3PmmDtK65ks&lt;br /&gt;
*http://www.robvanhamersveld.nl/2013/02/05/share-your-xbmc-12-0-library-on-a-synology-ds-or-other-nas/ Synology DS with MySQL guide based on Frodo&lt;br /&gt;
*http://forum.kodi.tv/showthread.php?tid=172548 - unRAID&lt;br /&gt;
&lt;br /&gt;
After setting up a database server on you NAS, you should create a Kodi user with full administrative privileges. The user should be able to log in from your Kodi devices, so make sure you give the user login access from external machines.&lt;br /&gt;
You do not need to create a database as Kodi will create the required databases itself.&lt;br /&gt;
&lt;br /&gt;
{{redv|&#039;&#039;&#039;Warning:&#039;&#039;&#039;| As you are giving the Kodi user full administrative privileges and external machine access it is recommended that you review your database security. It is highly recommenced that you block internet access to your database using an appropriate firewall. }}&lt;br /&gt;
&lt;br /&gt;
=FreeNAS and freeBSD=&lt;br /&gt;
&lt;br /&gt;
== About FreeNAS ==&lt;br /&gt;
&lt;br /&gt;
http://www.freenas.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FreeNAS is a FreeBSD based NAS system that can be run on almost any hardware - it uses ZFS for disk and file management. It is used at home and in enterprise businesses. 99% of tasks can be done via the web interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example below is based on FreeNAS 9.1.1 on 12/12/13, and assumes you have already configured your nas with drives, datasets etc&lt;br /&gt;
&lt;br /&gt;
== How to ==&lt;br /&gt;
&lt;br /&gt;
=== Make a jail ===&lt;br /&gt;
&lt;br /&gt;
create a Jail via the FreeNAS webui - if unsure see here http://doc.freenas.org/index.php/Adding_Jails&lt;br /&gt;
&lt;br /&gt;
make a note of the jail IP address shown - you will need this to put in the advancedsettings.xml file on the Kodi machine later&lt;br /&gt;
&lt;br /&gt;
=== Prepare the jail ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*ssh into FreeNAS&lt;br /&gt;
**If you have a windows PC use putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) &lt;br /&gt;
**(easiest) click the &amp;quot;shell&amp;quot; button in the left of the FreeNAS webui&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
type the following commands&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;jls&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Take note of the JID of the jail you created, use it in the command below and replace n with the number of the jail you just created&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;jexec n csh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install mysql ===&lt;br /&gt;
You are now inside your jail&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;pkg install mysql55-server&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;pkg install nano&amp;lt;/code&amp;gt;&lt;br /&gt;
**(nano is a text editor you will need shortly)&lt;br /&gt;
&lt;br /&gt;
We now need to enable mysql in rc.conf&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;nano /etc/rc.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
insert the line below into the rc.conf file&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;mysql_enable=&amp;quot;YES&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
save the file and exit (see bottom of nano edit page for keystrokes info)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;service mysql-server start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Optional step below - this is an automated script that will secure you mysql instance - it will prompt you for answers to questions. Its up to you if you do this.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;mysql_secure_installation&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure mysql ready for Kodi to use ===&lt;br /&gt;
&lt;br /&gt;
type in&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;mysql -u root -p&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You are now in mysql administration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CREATE USER &#039;kodi&#039; IDENTIFIED BY &#039;kodi&#039;;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;GRANT ALL ON *.* TO &#039;kodi&#039;;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;flush privileges;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;quit;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restricting MySQL access rights=&lt;br /&gt;
&#039;&#039;&#039;Optional:&#039;&#039;&#039; &#039;&#039;&#039;If you only use the MySQL server for Kodi and that server has non-critical data on it, then this probably not necessary.&#039;&#039;&#039;&lt;br /&gt;
For a more secure MySQL installation use these 2 commands to grant permission only to databases Kodi uses. This is useful if you plan on using your MySQL server for more than just Kodi, or if you&#039;re worried about your internal network being exposed and wanting to lock things down more, etc. &lt;br /&gt;
#&amp;lt;code&amp;gt;GRANT ALL ON `MyMusic%`.* TO &#039;kodi&#039;@&#039;%&#039; IDENTIFIED BY &#039;kodi&#039;;&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;GRANT ALL ON `MyVideos%`.* TO &#039;kodi&#039;@&#039;%&#039; IDENTIFIED BY &#039;kodi&#039;;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{redv|&#039;&#039;&#039;Careful&#039;&#039;&#039;|The limited grants on this page don&#039;t give the kodi user permissions to create required TRIGGERs during install or upgrade. &#039;&#039;&#039;Kodi requires these TRIGGERs to function properly.&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
Use the broader grant *.* statement that is explained on the previous tabs while creating or upgrading the tables. Only restrict rights afterwards, if you need to. &amp;lt;br&amp;gt;&lt;br /&gt;
Alternatively, figure out how to specifically give the account the right to create the require TRIGGERS - this varies between MySQL versions. }}&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Next|[[MySQL/Setting up Kodi|Setting up Kodi]]}}&lt;br /&gt;
&lt;br /&gt;
{{Isengard updated}}&lt;/div&gt;</summary>
		<author><name>Yol</name></author>
	</entry>
</feed>