Libav Summer Of Code 2012
How it works
Google's Summer of Code program is simple: you (the student) work on a task, full-time, during the whole summer, and you get assistance (advice, mentoring) from a seasoned FFmpeg/Libav developer who knows his way around the project and has considerable standing in the community. By doing so, you'll learn to operate in an opensource project, you'll get relevant coding experience, and you'll have a chance at earning money while doing fun stuff during the summer. So, you need a task, a mentor, do a qualification task (see below) so we can quickly assess how good a candidate we feel you'll be for the program, and then you can apply.
Selecting a tasks
Below, you'll find two lists of tasks:
- Tasks with a mentor
- Tasks without a mentor
If you choose a task with a mentor, talk to that mentor (see below) and select a suitable qualification task. Once completed, you're eligible for participating in our Summer of Code program. If you choose a task without a mentor, your first job is to find a mentor (see below). Then, once you've found a mentor, continue as before. If you don't like any of the tasks, you're free to define your own task and find a mentor as mentioned before (see below for caveats).
Once you've found a task (with or without mentor), start talking to the developers of the FFmpeg and Libav projects. We can often be found on IRC, and you can talk to us on mailinglists also. Hop on irc.freenode.net channels #ffmpeg or #libav, or talk to us on firstname.lastname@example.org or email@example.com. (At this point, you're probably wondering why there are 2 IRC channels and 2 mailinglists. Ask your mentor, it'll make for a good first conversation topic.) Here, you'll be able to ask around for mentors for projects without a mentor if you need to. If you're trying to define your own task, explain (with reasonable amount of detail) what you intend to achieve and why you think your task should be in our Summer of Code program. Once you've found a mentor, you're good to start your qualification task.
Note that the self-selected mentor needs to have considerable standing in the community to be eligible for mentoring.
Your qualification task
The goal of a qualification task is to see if the mentor and student feel that together, they will be able to finish the task of their choice. More specifically, the mentor will want to test whether he thinks that the student has the skills and work ethics to complete a large coding task in a limited amount of time. The student will want to make sure that the mentor provides (useful) assistance when necessary. Therefore, students should select a mentor and a Summer of Code task before starting their work on a qualification task. The qualification task is often (but not necessarily) related to the selected task. For example, if your task will be to reverse engineer a new video codec, the qualification task may be to write a partial bitstream parser for that codec. If your task is to write a muxer for a container format, the qualification task may be to write the code to write the stream header.
While you're working on your qualification task, apply at http://www.google-melange.com/. The degree (and detail) with which you've finished your qualification task will determine how likely your project is to be selected. Generally, students that completely finish their qualification task always get selected as Summer of Code students, but that may vary depending on the number of spots we get assigned by Google.
Videolan qualification tasks
A completed FFmpeg/Libav qualifications task is also accepted as a qualification task for the VLC organization (does NOT include x264).
1st Tier Project Proposals
1st tier project proposals are project ideas that are reasonably well defined AND have a mentor volunteered.
- HEVC is the next-generation video standard from the MPEG standards committee. Your job is to write a decoder that can playback HEVC files.
- It does not need to be SIMD-optimized, but preferably has relevant functions separated in DSP contexts so they're easy to optimize later on.
Mentor: Ronald S. Bultje