GSoC - Smaller XBMC Development Tasks

This article lists GSoC Qualification Tasks as well other smaller development tasks that are not GSoC specific. Please note that this page was last updated in 2009. Some tasks on this page may have been completed by the XBMC-Team or other individuals.

= Google Summer of Code Qualification Tasks = Please add a note here if you choose to work on a qualification task to avoid duplicate work.

Many students will probably apply for the Google Summer of Code and wish to work on a sexy multimedia project such as XBMC. All students will probably also claim to be hard workers, but we need a real method of determining which students have a higher probability for success. Thus, we will use this qualification system (adopted from FFmpeg SoC 2007 season). A student must successfully first complete a qualification task in order to be considered for an XBMC SoC project. In doing so, a student demonstrates that they:
 * Are willing to commit some time during the Summer of Code application review period in order to prove that they can code C++ satisfactorily in a clean, well-documented style.
 * Can effectively navigate the XBMC codebase.
 * Can communicate well with the XBMC development-team and community via the forum and IRC.
 * Can accept feedback and revise code after review until it is suitable for inclusion in the main XBMC codebase.


 * TIP! Do not be shy, speak your mind, and get involved with the public community, post in the public forum for feedback!

Frequent Objection #1: "But I don't have time to do a qualification task!" Then how do we know you will have time to work on your task during the summer? The qualification tasks are selected to be fairly trivial by XBMC standards and should not be too difficult for a prospective XBMC contributor. If they are too difficult, maybe XBMC is not the project for you.


 * NOTE! Be encouraged by the fact that the application review period comes after the application submission deadline; i.e., you can work on a qualification task after you submit an application to XBMC through Google. But you will not be considered for an GSoC project slot unless you have satisfactorily completed a qualification task.

Process: If you are truly interested in applying for XBMC's Summer of Code and, by extension, interested in working on a qualification task, the first step is to register a XBMC Community Forum Account, a SourceForge.NET Account and a XBMC Wiki Account, and then publicly indicate that your interest and which project you plan to work on.

Platform independent
Note! If you have an idea for a other simple task for qualification, come and discuss it on the public development section of the XBMC Community Forums and our developers might approve it.


 * Position slider in OSD for movie/music playback mouse control (drag and drop style), allow mouse (and touchscreen) input for the on-screen-display slider seekbar.


 * Implement a slow-cache system for the infomanager for those items that do not need to be retrieved more than about once a second, such as the proposed "Library.HasContent" stuff which hits the db.


 * Add support to read/parse//import OPML (RSS feed 'playlist' files) as "Podcasts Channels" to XBMC's existing simple RSS reader that supports parsing text, video and pictures, (supporting multiple RSS feeds), and displaying this in the GUI. This should be simple enough, like the RSS readers on mobile devices, but suited for a TV display.


 * Rewrite the thumbnail caching system so that it can store multiple resolution thumbs.
 * Essentially the "CacheThumb" routine should cache the thumb, cache information about the thumb (info on date, source, aspectratio, packed as small as feasible) and store both full size and scaled versions of the thumbs. The meta info would be stored in a separate file for fast assigning of thumbs (this could be kept in memory based on the thumb hash in a lookup table, and the ListItem.Thumb infoimage could be extended to specify what size of thumb it needs (to limit memory usage for xbox/lowmem devices).


 * Rewrite XBMC's existing picture slideshow engine to be more like a normal player (see DVDPlayer, PAPlayer, and MODPlayer as examples).
 * Utilize GUILargeImage to handle the loading, and the animation engine for the effects (pan/zoom/rotate, etc.).


 * Port one of the existing visualizations or screensavers available in XBMC for Xbox from Direct3D (DirectX D3D) to OpenGL, (perhaps even doing so in a unified way that they can be compiled with the existing Direct3D/DirectX version too so that the same binary vis/xscr library will support both Direct3D/DirectX and OpenGL).


 * FFmpeg wrapper for Libnemesi (the RTSP/RTP client library) to use inside XBMC's in-house video-player (DVDPlayer)
 * -- I'm willing to try this out, see patch #4186 on trac - '''Alcoheca' - 27/2/2008


 * FFmpeg wrapper for Libnemesi (the RTSP/RTP client library) to use inside XBMC's in-house audio-player (PAPlayer)


 * Legacy Tasks - There is a growing back-log of 'interesting patches' and 'bug-reports' for XBMC on our patch-tracker and our bug-tracker which are both hosted on the XBMC SourceForge.net project site. Many of the patches have been abandoned by the original submitter, thus now requires volunteers to take the initiative to clean up each patch to the satisfaction of the project leaders and resubmit it for new review, so that it can be approved for SVN inclusion. As for the bugs, please try to fix enough bugs to show of your skill. See:
 * XBMC bug and patch-tracker: http://trac.xbmc.org/


 * XBMC Media Center audio/video playback is very dependent on FFmpeg, (the open source codec and audio/video handling library), so any improvements/enhancements or new features/functions made to FFmpeg source code will also be of benefit to XBMC Media Center. We at XBMC will therefor also accept performing a qualification task for the FFmpeg project as a XBMC qualification task, see here.


 * Fix enough bugs or submit good enough patches for smaller feature requests to show skill, see: http://trac.xbmc.org/

XBMC for Linux

 * Port an existing XBMC (for Xbox) DirectX/Direct3D/HLSL screensaver or visualization to OpenGL/GLSL


 * GLSL (GLSL (OpenGL Shading Language) shader for bicubic/triliniar/lanczos upscaling video post-processing
 * See XBMC's OpenGL-interface and rendering-pipeline for more information.


 * Fix enough bugs or submit good enough patches for smaller feature requests to show skill, see: http://trac.xbmc.org/

XBMC for Mac OS X

 * Port an existing XBMC (for Xbox) DirectX/Direct3D/HLSL screensaver or visualization to OpenGL/GLSL


 * GLSL (GLSL (OpenGL Shading Language) shader for bicubic/triliniar/lanczos upscaling video post-processing
 * See XBMC's OpenGL-interface and rendering-pipeline for more information.


 * 64-bit XBMC for Mac running on as an x86-64/AMD64 app under Mac OS X: Patches to enable XBMC for Mac to be able to run nativly as an 64-bit x86 architecture app. Should be easier now that XBMC for Linux is working on x86-64/AMD64 Linux. Please e-mail malloc AT xbmc DOT org with questions if you are interested in this qualification task.


 * Fix enough bugs or submit good enough patches for smaller feature requests to show skill, see: http://trac.xbmc.org/

XBMC for Windows

 * Port an existing XBMC (for Xbox) DirectX/Direct3D/HLSL screensaver or visualization to OpenGL/GLSL


 * GLSL (GLSL (OpenGL Shading Language) shader for bicubic/triliniar/lanczos upscaling video post-processing
 * See XBMC's OpenGL-interface and rendering-pipeline for more slow computer solutions information.


 * 64-bit XBMC for Windows running on as an x86-64/AMD64 application under Windows x64: Patches to enable XBMC for Windows to be able to run nativly as an 64-bit x86 architecture application. Should be easier now that XBMC for Linux is working on x86-64/AMD64 Linux. Please e-mail malloc AT xbmc DOT org with questions if you are interested in this qualification task.


 * Fix enough bugs or submit good enough patches for smaller feature requests to show skill, see: http://trac.xbmc.org/