Google Summer of Code

From Pitivi wiki
Jump to: navigation, search

We're looking for students interested in getting involved and making some serious contributions to Pitivi and GStreamer this summer. See this page to learn why contributing to Pitivi is the most awesome way to improve your skills. Also take a look at the Main Page of this wiki for various links to help you get started as a contributor.

The "Summer of Code" program is held by Google. Students are encouraged to post applications detailing the coding project you want to do for Pitivi on the mailing list, and then discuss it with the devs on IRC to strengthen and clarify the goals and implementation details.

What's your style?

Pitivi is a very modular video editor, whose architecture heavily depends on technologies like GES and GStreamer. Due to our "upstream first" approach, the scope of some GSoC projects will span multiple technologies and codebases:

  • Pitivi, which is the user interface written in Python that integrates everything below. For those who love design, animation, graphical user interaction and testing.
  • GES, the "core" logic/engine that powers Pitivi and other applications for editing. Written in C. For those who wish to bridge the worlds by providing an easy to use library for audio/video editing.
  • GStreamer, for low-level work (such as improving filters/effects, codecs, hardware decoding/encoding acceleration, analysis, etc.). Written in C. For those seeking a challenging audio and video experience where optimization is key.

To help you, for each project idea listed on this page, we provide an estimate of the involvement in each of those three areas. For example, a project that is heavily dependent on UI work and a little bit of backend work could look like this:

  • ◼◼◼◼◻ Pitivi
  • ◼◼◻◻◻ GES
  • ◼◻◻◻◻ GStreamer

We have also added a "Time estimate" indication with the amount of working days [optimistic, likely, pessimistic] we expect a GSoC student to be able to complete a task in.

To compose your proposal, we invite you to pick a combination of tasks which likely Time estimate sums up to 65 working days.

We also invite you to coordinate with other students on our irc channel so that proposals dont't overlap too much.

Some ideas

This section is here to give you a minimal set/starting point if you don't know what to work on or are looking for inspiration. Some items come from the Pitivi Love page, the bug tracker, the roadmap or from our overall vision for the project. You are welcome to ask around and bring your own ideas. Hurry up, deadlines for applying are approaching fast!

Publishing plugin

Add a plugin to easily publish content to the various web services (youtube, dailymotion, vimeo).

Time estimate for each web service: 5 / 10 / 12

◼◼◼◼◼ Pitivi
◻◻◻◻◻  GES
◻◻◻◻◻ GStreamer

More/configurable keyboard shortcuts

Keyboard shortcuts are really important for productivity, we need to make sure that Pitivi has all the needed keyboard shortcuts and allows you to be as effective as possible.

Time estimate: 15 / 20 /25

◼◼◼◼◼ Pitivi
◻◻◻◻◻  GES
◻◻◻◻◻ GStreamer

Face detection and silly hats

In some cases Pitivi user will need to easily know where people are inside a video, there are face detection plugins in GStreamer, we should make use of them to allow showing the information on the previewer and possibly apply operation thanks to it.

Time estimate: 20 / 25 / 30

◼◼◼◼◼ Pitivi
◻◻◻◻◻  GES
◼◻◻◻◻ GStreamer

Faceblur using dedicated plugin

In some cases, blurring the faces of people in the video is necessary (protests etc ..)

A plugin to do just that exists in gstreamer, see the faceblur plugin.

Your task will be to make a dedicated UI for this in pitivi.

Time estimate: 10 / 15 / 20

◼◼◼◼◼ Pitivi
◻◻◻◻◻  GES
◼◻◻◻◻ GStreamer

Color picker and chroma keying

Pitivi's viewer has recently been ported to be a Clutter Texture.

It should be fairly easy to know the exact color of pixels clicked in the viewer.

Your mission will probably be:

  • Improve the viewer to have the ability to report the color of the pixel (with and without effects applied on the pipeline) at the cursor position when clicked, probably by emitting a signal. This approach is probably the simplest we can think of to be future-proof (compatible with Wayland)
  • Create a custom effect configuration user interface for the "alpha" effect, with a color picker button to get the color directly from the viewer.

Time estimate: 20 / 25 / 30

◼◼◼◼◼ Pitivi
◻◻◻◻◻  GES
◼◻◻◻◻ GStreamer

Color correction interface with color wheels

Great control over color is definitely a must-have feature for a professional-grade video editing application. Currently, it is possible for users to workaround our lack of proper interface for this, but they deserve better. We want to create the needed tools so that they can fine-tune the colorimetry of their movies.

Time estimate: 30 / 35 / 40

◼◼◼◼◼ Pitivi
◻◻◻◻◻  GES
◼◻◻◻◻ GStreamer

Ken Burns effect

The Ken Burns effect is a type of panning and zooming effect used in video production from still imagery. Some preliminary work has already been done to implement that effect in GStreamer, we should take over that work and bring it to production quality

Time estimate: 30 / 40 / 70

◼◼◼◼◼ Pitivi
◼◼◻◻◻  GES
◼◼◼◻◻ GStreamer

EDL Formatter

EDL is the simplest and most used project format, it's a standard that allows to communicate with other video edition and post production software. We need to implement its support right into the GStreamer Editing Services library.

Time estimate: 20 / 30 /40

◼◻◻◻◻ Pitivi
◼◼◼◼◼  GES
◻◻◻◻◻ GStreamer

Multi-image (stopmotion) asset manager

Stop motion is a great asset for a video editor. The backend multifilesrc element already exists and some work has been done to integrate it in GES. As such, it will not be a very difficult task, and well worth the time spent on it.

Time estimate: 15 / 20 / 30

◼◼◼◼◼ Pitivi
◼◼◼◻◻  GES
◻◻◻◻◻ GStreamer

Peakmeter/vumeter plugin

We are preparing a libpeas-based plugin infrastructure in Pitivi. Your project would be to use that infrastructure to write peakmeter widget that would provide a visual indication of the loudness of all the combined audio layers during live playback.

The most likely scenario is that you would borrow/translate the widget from Buzztrax (previously known as Buzztard), as explained in bug 590142.

See also:

Time estimate: 15 / 20 /25

◼◼◼◼◼ Pitivi
◻◻◻◻◻  GES
◼◻◻◻◻ GStreamer

Timeline annotations (markers and regions)

It would be nice to be able to add annotations and comments onto certain parts of the timeline, kind of like Post-it notes, to either remind yourself of something you want to tweak in a particular part of the timeline, or tell your editing colleagues that you're missing a particular part, etc.

Time estimate: 30 / 40 / 50

◼◼◼◼◼ Pitivi
◼◼◻◻◻  GES
◻◻◻◻◻ GStreamer

Presets for UI layout

The user interface of pitivi is already very modular and customizable. From one session to another, we keep track of the layout and reapply it. However, it would be great to be able to have different presets for different workflow, and associated keyboard shortcuts to quickly switch between them.

Time estimate: 15 / 20 / 25

◼◼◼◼◼ Pitivi
◻◻◻◻◻  GES
◻◻◻◻◻ GStreamer

Interfacing with a bpm detector

A lot of people doing video edition go through the tedious task of cutting on the beat manually. There exists multiple implementations of beat detection, providing the exact position of each beat, and we could automate the task of cutting / serializing clips using them. This is an original feature, available nowhere else to the extent of our knowledge, and it would help in giving pitivi an edge !

Time estimate: 30 / 50 / 70

◼◼◼◼◼ Pitivi
◼◼◼◻◻  GES
◻◻◻◻◻ GStreamer

A library to interface with Blender, for a new title editor

...and the corresponding UI to use it in Pitivi. OpenShot has a feature that calls Blender to do 3D animated titles, special effects (particles, lighting, animated world maps, etc.).

  • Currently, OpenShot achieves this simply by forking out a process that executes Blender with a python script and .blend file as arguments, parses the output (with regexes) from the terminal and imports the result.
  • The OpenShot developer has expressed interest in making this a separate library so that other applications can benefit from it, but needs help to do it: someone needs to step up, figure out how to do it "properly" with a library, and do it. He would then be happy to help with the effort.

Experience/familiarity with Blender is required.

Time estimate: 30 / 50 / 70

◼◼◼◼◼ Pitivi
◼◼◼◼◼ GES
◻◻◻◻◻ GStreamer
◼◼◼◼◼ Blender ⚠ — requires a joint mentorship with the Blender project

Who we are looking for

  • Creative and motivated developers interested in multimedia and video editing
  • Highly communicative people. Stuck on a problem? We need to know. Achieved a milestone or solved a really nasty problem? The entire world needs to know. (And if you're too busy hacking to publicly blog about your progress, nekohayo can help you with that).
  • Candidates interested in making Pitivi known as the video editor with the best user interface and legendary reliability.
  • Candidates willing to become part of our community
  • Required: interacting with us regularly on IRC. It is fun to hang around with other contributors, makes your project goals easier to accomplish through better mentorship and shared insights, and shows more willingness to get involved in our community in the long term. Email is not sufficient.
  • Knowledge of Git, GStreamer, Python, Cairo and related technologies is a plus
  • Knowledge of the C programming language is a plus (for projects that require changes in GES)
  • Familiarity with Test-Driven Development is a plus
  • While a GSoC with us is one of the most fun and rewarding experiences you can get, you need to consider it as professional work:
    • GSoC projects are on a "full-time" basis, not "part-time". What this means is that you should not apply if you have some strange schedule where, for example, you have school exams for many weeks between early May and late August. If you have school exams/obligations during the summer, you need to mention them and account for them in your schedule.
    • No excuses! We expect you to be a reliable, hard-working person. If your neighbors or roomates are noisy, if you don't have air conditioning, if your Internet connection at home is unreliable, the phone is ringing all the time... go to your school/city's public library! By doing so, you will find yourself in a quiet and productive environment to be able to accomplish your objectives.
    • We would like to strongly encourage you to come to GUADEC to meet and work with Pitivi contributors during the summer! If you can't make it, we need to know a phone number we can reach you at in case of emergency, as it is difficult to communicate with the outside world during that conference.

What we offer

  • A fantastic learning opportunity to play with technologies such as GStreamer, GTK+, Cairo, Python, etc.
  • A tight-knit community that will offer you guidance and feedback throughout your project
    • In addition to your "official" mentor, you may get help from other mentors and members of the project.
    • For all UI-related tasks, you will be able to receive additional help and mentorship (in terms of design, guidance and testing) from nekohayo.
  • Tangible and fun projects with the potential to improve the lives of thousands of users
  • The opportunity to meet us at GUADEC where you can have fun and present your accomplishments to others!
  • And dozens of other reasons for contributing

How to apply and get started


As part of the application process, we require patches to demonstrate that you have sufficient technical skills, motivation, and have some familiarity with the application and its source code. This also ensures that you get to know members of the community and have sufficient time and information to properly plan your project.

You don't have to be a veteran hacker/contributor, but experience tells us that it is important that you prove to us — and to yourself — that you know what you're getting into. See also:

Therefore, you should proceed like this:

  1. Get your development environment set-up and working (see also Building with GES). Explore the application, what works well and what doesn't, etc. Use and test the development version of Pitivi and see how it feels like — you can't code on software that you're not familiar with!
  2. Based on the experience you have acquired and the "needs" you have identified in the previous step, start making some contributions (fixing small bugs for example) to get a better idea of how comfortable you are with the code and community — see also Pitivi Love, Bug reporting, and the contributing page. The earlier you start contributing, the more likely you know what you're getting into and the more chances you have of being a good applicant for us to consider for a GSoC project. Don't start contributing in March/April: we highly encourage you to start getting involved in January/February!
  3. Discuss your ideas with us on IRC.
  4. Optional but recommended: request an account on this wiki (see the lockdown policy) and edit your own user page to write your proposal drafts in that page. For example, if your wiki username is "Kiddo", you can go to User:Kiddo and edit the contents. This page can contain a section where you tell us about yourself, and a section for your GSoC project proposal(s). Try to demonstrate the research you have done for the project(s) you have chosen to apply for, tell us about how you plan to do your implementation, try to give us a realistic roadmap/schedule estimate, etc. And then, add yourself to the people :)
  5. Apply to Google's Summer of Code Melange website under both the GNOME and GStreamer mentoring organizations. Mentoring organizations can easily exchange applications as long as they communicate. Don't forget to include your contact information: we need your IRC nickname, email address, and a phone number in case of emergency.

Past summers of code