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

From Official Kodi Wiki
Jump to navigation Jump to search
>Gamester17
>Gamester17
Line 45: Line 45:


== Students Project Proposals ==
== Students Project Proposals ==
* Feel free to enter your proposal here if you are a college student that have been accepted by Google.
Feel free to enter a link to your proposal here if you are a college student that that will apply Google Summer of Code this year:
 
* [[GSoC Project - One common GUI front-end that can control multiple PVR/DVR/HTPC back-ends|One common GUI front-end that can control multiple PVR/DVR/HTPC back-ends]]
**Proposed by student: '''Alcoheca'''
**Proposed mentor: JMarshall


=== Overview ===
=== Overview ===

Revision as of 10:43, 11 March 2008

Template:Current event Google is sponsoring their forth annual Summer of Code (SoC) in the summer of 2008, this entail sponsoring students to work on assorted open source projects as well as sponsoring mentors in those same projects, everyone wins! Note that The XBMC Project has not yet been selected as one of the approved mentoring organizations howeever we do plan to apply this year. This page will be used to possible project ideas for the Google Summer of Code 2008 season, and also once track the status of each project and how well each student are doing.

The administrator for the XBMC Summer of Code is Andreas Setterlind (a.k.a. Gamester17)

NOTE! If you are a student who wishes to be involved with a XBMC GSoC project, one of the first and best steps you can take is to register an account on XBMC community forum, sooner rather than later, and indicate your interest. Also, make sure that you complete a qualification task as soon as possible to be eligible for a XBMC SoC project, (no qualification task = no project).

Introduction to XBMC

XBMC (formerly "XBox Media Center") is a free and open source (GPL) cross-platform media player and entertainment hub software. XBMC was originally established in 2002 and in the beginning developed as XBox Media Player (XBMP) for the first-generation Xbox game-console. XBMC has since been ported to also run natively under Linux, Mac OS X, and Microsoft Windows operating-system. XBMC has so far been translated to over 30 languages, won two SourceForge Community Choice Awards, (Best Multimedia Project and Best Game Project back in 2006), and today XBMC has a very broad international community of active developers, graphic artists, and devoted users.

About Developing XBMC

The XBMC code structure uses a fairly modular design (with libraries and DLLs) and is relatively easy to understand. XBMC's source code is made up of a mix of programming-languages (mostly C++ with some Assembly, and also some C libraries). XBMC uses Microsoft DirectX multimedia framework (Direct3D) on the Xbox (as the Xbox does not support OpenGL), and the SDL (Simple DirectMedia Layer) framework with OpenGL rendering for other operating-system platforms, (such as Linux, Mac OS X, and Microsoft Windows). XBMC main program (including the GUI) is mainly developed in Microsoft Visual Studio, (however there are KDevelop project files for Linux, and also Eclipse/Xcode project files for Mac OS X), for the Xbox a copy of the latest Microsoft Xbox SDK (a.k.a. XDK) is also required to compile, however the XDK is not used on XBMC any of the other platforms that XBMC supports. XBMC's code also contain four multimedia-player cores which has to be compiled separately, (however works seamlessly to the end-user), none of these player-cores require the XDK to be compiled, (they are instead compiled with [MinGW/MSYS]). One generic audio/video-player core based on MPlayer, another in-house developed (FFmpeg-based) dedicated video-player core (which also supports DVD-Video movies with menus), one in-house developed dedicated music-player core, and one in-house developed Tracker-Mod (audio-modules) player.

NOTE! For more detailed information on where to get started with XBMC development please see Appendix D (Development_Notes) in this wiki.
TIP! Microsoft DreamSpark student program is currently (and over the summer) giving access to their development software at no charge.

How To Apply as a Student

Before you can apply

Before you can apply make sure you are qualified enough to apply:

  • You have to know how to program in C++ (and know C) fairly well.
  • We would like you to first submit a small patch that fixes a bug or adds a feature to XBMC. By doing that we will know that you are qualified for the task or not. At the bottom of this page there will be a list of possible Qualification Tasks, specific ideas that could be performed to show your skill, however you are free to submit anything you feel might be of value to XBMC. The qualification task can be done after you have filed you application.
  • Submit a good application through the formal Google Summer of Code process during the application timeframe.
  • You have to have >35 hours per week to put into the project.
  • You ca not have another job at the same time as the SoC project.

Applying

If you are interested in participating in the Google Summer of Code you will need to register at the official SoC site linked above and file an official application. Traditionally, top applications are fairly detailed. Look at this application here for inspiration. The official guide from Google can be found here:

TIP! The Drupal project has also prepared a couple of good guidelines that might be usefull, see:

Google SoC Development Process

Each accepted project will be developed in its own sandbox (SVN branch), separate from the main XBMC codebase. Naturally, the end goal of each of the accepted XBMC projects ought to be to have that code in shape for acceptance into the production codebase. This page will track the status of each project and how well each student are doing.

Current Status

  • To Come.

Students Project Proposals

Feel free to enter a link to your proposal here if you are a college student that that will apply Google Summer of Code this year:

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 XBMC.

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

Team-XBMC proposal ideas up for discussion

Most of these proposal in this list are just some project ideas that we have been kicking around, (which, by no means, limits any prospective proposals). So you are more than welcome to come up with a new unique idea that you think falls into the scope of XBMC and the Google Summer of Code spirit. Noted should also be that since XBMC is a cross-platform software most of these ideas are platform-independent, meaning that if you implement the feature/function on one operating-system platform then someone else will be able to port that feature/function to a other operating-system platform that XBMC runs on.

NOTE! THIS LIST IS NOT THE FINAL PROPOSALS THAT WILL BE SUBMITTed! THESE ARE ONLY IDEAS OR CONCEPTS THAT IDEAS COULD BE BASED UPON, IN THE END YOU AS THE STUDENT WILL BE PRESENTING THE IDEA AS YOUR OWN, SO IT IS NOT ONLY THE IDEA BUT HOW YOU PRESENT IT, SO BE CREATIVE!

Projects with Mentors (official approved projects)

  • To come.

Qualification tasks

Please add a note here if you choose to work on a Qualification task to avoid duplicate work, (to do that you first need to register an account on this wiki and request 'ninja status' from a Team-XBMC member for that account).

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:

  • Were willing to commit some time during the Summer of Code application review period in order to prove themselves can code C++ satisfactorily and with the same general clean style, and well-documented code expected of the XBMC codebase.
  • Can wrap their head around the XBMC codebase.
  • Can interact with the XBMC development-team via the forum and IRC, as good open communication is very important.
  • Can accept feedback and revise the code after a 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!

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. Also, 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. But you will not be considered for an SoC 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 (plus apply to get 'ninja status' for the Wiki by contacting a Team-XBMC member), and then publicly indicate that your interest and which project you plan to work on.

Platform independent

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 patched 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, resubmit it for new review, so that it can finally be approved for SVN inclusion. As for the bugs, please try to fix enough bugs to show of your skill. See:

XBMC for Linux

XBMC for Mac OS X

  • Port an existing XBMC (for Xbox) DirectX/HLSL screensaver or visualisation to OpenGL/GLSL
  • Mac OS X 64-bit x86 running: Patches to make XBMC for Mac OS X closer to running on 64-bit x86 architecture. Should be easier now that it's working on AMD64 Linux. E-mail [email protected] with questions.
  • Port an existing XBMC (for Xbox) DirectX/HLSL screensaver or visualisation to OpenGL/GLSL

XBMC for Windows

  • Port an existing XBMC (for Xbox) DirectX/HLSL screensaver or visualisation to OpenGL/GLSL
  • XBMC for Windows (Win32) compiling:
    • Patches to make XBMC for Windows (SDL/OpenGL-based from the linuxport branch) closer to fully work a Windows XP (32-bit x86) architecture.
  • Port an existing XBMC (for Xbox) DirectX/HLSL screensaver or visualisation to OpenGL/GLSL

XBMC for Xbox

Mentors and Contact methods

Mentors are developers from Team-XBMC and members of The XBMC Project that have volunteered to assist and mentor non-official XBMC developers in any non-trivial way they can, helping you by checking, commenting and committing your code patches to our SVN source code tree. These mentors have chosen an area they prefer to specialize in, usually this is an area in which they feel they have most interest, knowledge, and expertise in.

  • JMarshall: Anything GUI related, Music Library, Video Library, PAPlayer, etc.
  • Spiff: Anything other than DllLoader/MPlayer/DVDPlayer internals.
  • Yuvalt: Everything Linux
  • D4rk: OpenGL, other Linux stuff
  • malloc: Everything Linux
NOTE! All GSoC students should feel comfortable to not only approach your assigned mentors but also to approach ANY mentor and ANY Team-XBMC member with your questions and problems, Team-XBMC is not only a team by name but we do our best to work as a team as well.

Contact methods

These are developers forums for XBMC development, (programmers/coders only!).
Respect, these are not for posting feature-requests or end-user support requests!