Google Summer of Code/2023: Difference between revisions

From Official Kodi Wiki
Jump to navigation Jump to search
(Added two initial Game ideas)
(Added more game ideas)
Line 90: Line 90:


'''Workload:''' 350 hours
'''Workload:''' 350 hours


=== Explore building binary addons in rust ===
=== Explore building binary addons in rust ===
Line 105: Line 106:


'''Workload:''' 350 hours
'''Workload:''' 350 hours


=== Finish the new web interface ===
=== Finish the new web interface ===
Line 120: Line 122:


'''Workload:''' 350 hours
'''Workload:''' 350 hours


== Game-specific ideas ==
== Game-specific ideas ==
Line 137: Line 140:


'''Workload:''' 350 hours
'''Workload:''' 350 hours
=== Leaderboards ===
'''Description:''' This project adds support for RetroAchievement leaderboards. This is similar to the Achievements Browser, and can even be a stretch goal for that project.
'''Expected outcome:''' Leaderboard can be viewed in Kodi, and the player can unlock achievements for a place on the leaderboard.
'''Skills preferred:''' C++
'''Possible mentors:''' garbear, NikosSiak
'''Difficulty:''' Medium
'''Type:''' Game development
'''Workload:''' 350 hours


=== Savestate Inspector ===
=== Savestate Inspector ===
Line 152: Line 172:


'''Workload:''' 350 hours
'''Workload:''' 350 hours
=== Saveplay / Unlimited Rewind ===
'''Description:''' Instead of saving a single frame in a savestate, compression and other tricks are used to store an entire playthrough of the game.
'''Expected outcome:''' Entire gameplay history can be saved and re-played in Kodi.
'''Skills preferred:''' C++
'''Possible mentors:''' garbear, NikosSiak
'''Difficulty:''' Hard
'''Type:''' Game development
'''Workload:''' 350 hours
=== Game library ===
'''Description:''' This project adds a much-needed Game Library to Kodi. There is a lot of various existing work, such as schemas posted in the forum and a branch of Kodi that integrates ODB, so there's lots of work to build on.
'''Expected outcome:''' Game metadata and artwork is shown when browsing games.
'''Skills preferred:''' C++
'''Possible mentors:''' garbear, NikosSiak
'''Difficulty:''' Hard
'''Type:''' Game development
'''Workload:''' 350 hours
=== Player Manager ===
'''Description:''' The Player Manager is a window needed to manage which player is connected to which controller. It can optionally also support player profiles, and per-player achievements. A long history of ideas can be found here: https://github.com/garbear/xbmc/issues/87
'''Expected outcome:''' Players can choose which controller port they are connected to, and optionally create a view their player profile.
'''Skills preferred:''' C++
'''Possible mentors:''' garbear, NikosSiak
'''Difficulty:''' Medium
'''Type:''' Game development
'''Workload:''' 350 hours
=== Disc Swapping ===
'''Description:''' Kodi needs a way to swap out disks for disk-based consoles like the PlayStation.
'''Expected outcome:''' Players can swap disks while playing the game.
'''Skills preferred:''' C++
'''Possible mentors:''' garbear, NikosSiak
'''Difficulty:''' Easy
'''Type:''' Game development
'''Workload:''' 150 hours
=== OpenGL / 3D Support ===
'''Description:''' Kodi needs OpenGL support for libretro cores so that 3D consoles like the Nintendo 64 can be emulated.
'''Expected outcome:''' N64 games can be played in Kodi.
'''Skills preferred:''' C++
'''Possible mentors:''' garbear, NikosSiak
'''Difficulty:''' Hard
'''Type:''' Game development
'''Workload:''' 350 hours


<!--
<!--

Revision as of 01:29, 6 February 2023

Google Summer of Code
- GSOC 2021
- GSOC 2022
- GSOC 2023
All GSOC Pages
Home icon grey.png   ▶ Google Summer of Code ▶ 2023
GSOC 2016 logo.png

Welcome to the Kodi Google Summer of Code ideas page.

This page is currently work in progress. Kodi has applied as mentoring organization for GSoC 2023. Accepted organizations will be announced on February 22.


About Us

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

Kodi (formerly known as XBMC) is an award-winning free and open source (GPL) software media player and entertainment hub for digital media, designed around the 10-foot interface (living room) environment. Created in 2003 by a group of like minded programmers, Kodi is a non-profit project run and developed by volunteers located around the world. More than 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 Kodi.


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

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

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

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.

Mentors

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

Prerequisites

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

Project Proposals

Overview

Qualifications for a good Summer of Code proposal:

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

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

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

To re-iterate:

  • Localized/isolated code projects = good
  • Global code refactoring = bad
  • A project should have a set of subgoals, so even if the end goal turns out to be too big some of the parts will be of benefit.
  • Not too big! This is an important problem when choosing a project, while it is fun to think about solving a grand project its not always realistic. It's better to finish a smaller project than to start a grand one.

Projects should have a workload of 12 weeks with a possible extension of up to 22 weeks.

Where to submit proposals

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

Outline for proposals

Team-Kodi proposal ideas up for discussion

Portal integration and Flatpak improvements in Kodi

Description: 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.

Expected outcome: Integration of libPortal into Kodi and possibly other Flatpak improvements

Skills preferred: C++, libPortal

Possible mentors:

Difficulty: Risky/Exploratory

Type: Linux/Kodi Core

Workload: 350 hours


Explore building binary addons in rust

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

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

Skills preferred: C++, Rust, C

Possible mentors:

Difficulty: Hard

Type: Binary addon development

Workload: 350 hours


Finish the new web interface

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

Expected outcome: Finished shipable version of the webinterface

Skills preferred: HTML, CSS, Elm

Possible mentors:

Difficulty: Medium

Type: Webinterface development

Workload: 350 hours


Game-specific ideas

Achievement Browser

Description: A new window in Kodi to show and browse achievements from the RetroAchievements project. This builds on GSoC 2021, which added preliminary achievement unlocking support.

Expected outcome: Achievements can be viewed and browsed in Kodi, and the user can see which achievements they've unlocked.

Skills preferred: C++

Possible mentors: garbear, NikosSiak

Difficulty: Medium

Type: Game development

Workload: 350 hours


Leaderboards

Description: This project adds support for RetroAchievement leaderboards. This is similar to the Achievements Browser, and can even be a stretch goal for that project.

Expected outcome: Leaderboard can be viewed in Kodi, and the player can unlock achievements for a place on the leaderboard.

Skills preferred: C++

Possible mentors: garbear, NikosSiak

Difficulty: Medium

Type: Game development

Workload: 350 hours


Savestate Inspector

Description: A new dialog to view metadata parsed from the game's RAM stored in the savestate. For example, if the RAM address for Link's hearts is 0x200, then in the dialog you can show "Link has {value of 0x200} hearts".

Expected outcome: Metadata from game RAM is parsed and shown in Kodi.

Skills preferred: C++

Possible mentors: garbear, NikosSiak

Difficulty: Medium

Type: Game development

Workload: 350 hours


Saveplay / Unlimited Rewind

Description: Instead of saving a single frame in a savestate, compression and other tricks are used to store an entire playthrough of the game.

Expected outcome: Entire gameplay history can be saved and re-played in Kodi.

Skills preferred: C++

Possible mentors: garbear, NikosSiak

Difficulty: Hard

Type: Game development

Workload: 350 hours


Game library

Description: This project adds a much-needed Game Library to Kodi. There is a lot of various existing work, such as schemas posted in the forum and a branch of Kodi that integrates ODB, so there's lots of work to build on.

Expected outcome: Game metadata and artwork is shown when browsing games.

Skills preferred: C++

Possible mentors: garbear, NikosSiak

Difficulty: Hard

Type: Game development

Workload: 350 hours


Player Manager

Description: The Player Manager is a window needed to manage which player is connected to which controller. It can optionally also support player profiles, and per-player achievements. A long history of ideas can be found here: https://github.com/garbear/xbmc/issues/87

Expected outcome: Players can choose which controller port they are connected to, and optionally create a view their player profile.

Skills preferred: C++

Possible mentors: garbear, NikosSiak

Difficulty: Medium

Type: Game development

Workload: 350 hours


Disc Swapping

Description: Kodi needs a way to swap out disks for disk-based consoles like the PlayStation.

Expected outcome: Players can swap disks while playing the game.

Skills preferred: C++

Possible mentors: garbear, NikosSiak

Difficulty: Easy

Type: Game development

Workload: 150 hours


OpenGL / 3D Support

Description: Kodi needs OpenGL support for libretro cores so that 3D consoles like the Nintendo 64 can be emulated.

Expected outcome: N64 games can be played in Kodi.

Skills preferred: C++

Possible mentors: garbear, NikosSiak

Difficulty: Hard

Type: Game development

Workload: 350 hours




Other ideas

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

  • Finish Retroplayer Shaders feature from GSoC 2017 & 2019. This feature was developed to a state that still needs work to be considered shippable. It will require us to find a way to ship the shaders without putting them in the binary and also require some OpenGL work for Linux and Mac OS and possibly GLES (depending on the time we have/person taking the project). The bulk of the work for OpenGL is done, there are some bugs to iron out but it works. Please post on the forum if you're interested in the GSoC section. (possible mentors: gusandrianos)
  • Improvements to Retroplayer (retro gaming integrated in Kodi core)
  • Visual Studio Code addon to validate/syntax highlight Kodi Addons
  • High quality scalers for OpenGL(GLSL). Scale Y and UV plane separately (possible mentors: velocity)
  • Implementing a performance critical element of Kodi in Rust
  • Add multiroom audio support where each Kodi instance can act as client or server. Maybe Snapcast could be used somehow.
  • Implement IWYU into existing CI (Jenkins). Of note would be the requirement to create IWYU mappings for the Kodi codebase.

More

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

Students project proposal ideas

Submit your own proposals on the Kodi GSoC forum. They can be as big or as small as you feel you can comfortably accomplish in the defined time (175 or 350 hours). In the end, it's better to have a smaller, completed project, rather than a larger, incomplete project.

To submit a proposal idea:

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