Archive:Google Summer of Code/2015: Difference between revisions

From Official Kodi Wiki
Jump to navigation Jump to search
(fixed opening paragraph to point to 2015 instead of 2014 forum)
No edit summary
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{mininav| [[Google Summer of Code]] }}
{{mininav| [[Google Summer of Code]] }}
[[File:GSOC_2015_logo-blog.jpg‎|left|200px]]Welcome to the Kodi [http://www.google-melange.com/gsoc/homepage/google/gsoc2015 Google Summer of Code] ideas page. <!--We are pleased to announce that we have been accepted as an official [http://www.google-melange.com/gsoc/org/google/gsoc2015/Kodi GSOC mentor organization this year].-->
 
{{info|This page describes a previous year's event. For the most recent GSoC page please check '''[[:Category:Google Summer of Code]]'''.}}
 
[[File:GSOC_2015_logo-blog.jpg‎|left|200px]]Welcome to the Kodi [http://www.google-melange.com/gsoc/homepage/google/gsoc2015 Google Summer of Code] ideas page. We are pleased to announce that we have been accepted as an official [http://www.google-melange.com/gsoc/org/google/gsoc2015/Kodi GSOC mentor organization this year].


We encourage interested students to review some of the ideas on this page, and then feel free to provide input on any ideas you may have in the '''[http://forum.kodi.tv/forumdisplay.php?fid=220 Kodi GSoC subforum]''' and chat about any project you’d love to cover. To propose a project, see '''[[#Students project proposal ideas]]'''.
We encourage interested students to review some of the ideas on this page, and then feel free to provide input on any ideas you may have in the '''[http://forum.kodi.tv/forumdisplay.php?fid=220 Kodi GSoC subforum]''' and chat about any project you’d love to cover. To propose a project, see '''[[#Students project proposal ideas]]'''.
Line 78: Line 81:
*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 "send to" way and in a "download" way and it could also be combined with transcoding depending on the target device.
*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 "send to" way and in a "download" way and it could also be combined with transcoding depending on the target device.
*UPnP device profiles. there'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'll definitely need this
*UPnP device profiles. there'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'll definitely need this
====UPnP ContentDirectory implementation using OhNet====
[http://www.openhome.org/wiki/OhNet OhNet] is a cross-platform UPnP stack provided by the [http://www.openhome.org/wiki/Oh:Overview OpenHome] project and contains basic interfaces/implementations for all objects and resources defined in most of the UPnP specifications with an addition of OpenHome specific stuff which improves playlist handling and other things not properly covered by any UPnP specification.
Kodi relies on the [http://sourceforge.net/projects/platinum/ Platinum UPnP SDK] which has very limited possibilities to extend the existing functionality. Furthermore any extensions fixes need to be coded into code not maintained by Team Kodi. Therefore moving to a different UPnP implementation that provides a similar feature set but can be easily extended would have a high benefit for Kodi.
The main goal is to develop a [http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v4-Service-20101231.pdf UPnP ContentDirectory] implementation using the OhNet UPnP stack (see https://github.com/Montellese/xbmc/commit/a0596372c6398e1bbf7fb0534ad21d510604d2f8 for a start) either inside or separate of Kodi that supports most of the features specified in the UPnP ContentDirectory specification. An additional goal would be to make it easily extensible (think UPnP profiles and vendor-specific properties) without having to touch the actual implementation.


=== Better Profile Support ===
=== Better Profile Support ===

Revision as of 21:42, 7 February 2016

Home icon grey.png   ▶ Google Summer of Code ▶ 2015
Notice This page describes a previous year's event. For the most recent GSoC page please check Category:Google Summer of Code.
GSOC 2015 logo-blog.jpg

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

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

From 16 March to 27 March, any interested students may apply at the GSOC home page to work with Kodi. After that, we’ll notify applicants whether we get to work with each other according to the GSOC schedule.

About Us

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

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


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

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

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

If Kodi is selected as a mentoring organization for 2015, 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.

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. Its better to finish a smaller project than to start a grand one.


Outline for proposals

Team-Kodi proposal ideas up for discussion

Server Improvement

Transcoding

  • Transcoding is already supported in a number of other open source projects and FFMPEG. Additionally, limited audio transcoding is available in Kodi right now. However to fully support the wide range of devices out there, not to mention better support file transfers on low memory devices, Kodi needs to fully support audio and video transcoding.

UPnP Improvements including File Transfers

  • 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 "send to" way and in a "download" way and it could also be combined with transcoding depending on the target device.
  • UPnP device profiles. there'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'll definitely need this

UPnP ContentDirectory implementation using OhNet

OhNet is a cross-platform UPnP stack provided by the OpenHome project and contains basic interfaces/implementations for all objects and resources defined in most of the UPnP specifications with an addition of OpenHome specific stuff which improves playlist handling and other things not properly covered by any UPnP specification. Kodi relies on the Platinum UPnP SDK which has very limited possibilities to extend the existing functionality. Furthermore any extensions fixes need to be coded into code not maintained by Team Kodi. Therefore moving to a different UPnP implementation that provides a similar feature set but can be easily extended would have a high benefit for Kodi.

The main goal is to develop a UPnP ContentDirectory implementation using the OhNet UPnP stack (see https://github.com/Montellese/xbmc/commit/a0596372c6398e1bbf7fb0534ad21d510604d2f8 for a start) either inside or separate of Kodi that supports most of the features specified in the UPnP ContentDirectory specification. An additional goal would be to make it easily extensible (think UPnP profiles and vendor-specific properties) without having to touch the actual implementation.

Better Profile Support

Profile support inside Kodi remains extremely hacked together. Improving profile projects would likely be broken down into smaller chunks to make each chunk truly achieveable in a summer.

Web Browser in Kodi

Initial work on Web Browser implementation already exists, but much is left to do on this project, and many developers are excited to help act as a mentor for this particular project.

Gaming in Kodi

Retroplayer

  • Developer Garbear has broken down the Retroplayer project into manageable pieces including input, core, game addons, peripheral addons, netplay, a game library implementation, and shaders to do things like emulate a CRT monitor. Any one of these pieces could make an excellent summer project depending on your familiarity in the area.

NVIDIA Gamestream in Kodi

  • Limelight is a GPL licensed project that runs on a variety of platforms and is primarily written in java that should be relatively easily integrated into the Kodi file system, allowing for any device running Kodi with access to a controller or a keyboard and mouse to launch and play any game or application being served on a local PC with a relatively recent NVIDIA graphics card.

More

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.

Students project proposal ideas

Submit your own proposals on the Kodi GSOC 2015 forum. They can be as big or as small as you feel you can comfortably accomplish between 25 May and 21 August. 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.