How to Contribute to GStreamer



Similar documents
The OpenFOAM-extend project on SourceForge: current status. Bernhard Gschaider, ICE Strömungforschung GmbH

Organize Work Information. Resolve Workflow Problems

Git Branching for Continuous Delivery

Working with Versioning. SharePoint Services

State of the GStreamer Project. Jan Schmidt. Centricular Ltd

CONTINUOUS INTEGRATION. Introduction

Security Vulnerability Management. Mark J Cox

Version control. HEAD is the name of the latest revision in the repository. It can be used in subversion rather than the latest revision number.

Version Uncontrolled! : How to Manage Your Version Control

Quick Start Guide Joomla!: Guidelines for installation and setup. Why Joomla!

Dwebs IIS Log Archiver Installation and Configuration Guide for Helm 4

DATEX II User Support

Tuskar UI Documentation

MATLAB as a Collaboration Platform Marta Wilczkowiak Senior Applications Engineer MathWorks

Expresso Quick Install

Part II. Managing Issues

GitLab as an Alternative Development Platform for Github.com

User s Guide for OpenERP Microsoft Outlook Free Plug-in 1.0 By Axelor

A Roadmap for Securing IIS 5.0

Microsoft Office 365 Exchange Online Cloud

Version control. with git and GitHub. Karl Broman. Biostatistics & Medical Informatics, UW Madison

Dr. Marco Hugentobler, Sourcepole QGIS from a geodata viewer to a GIS platform

Adobe Summit 2015 Lab 718: Managing Mobile Apps: A PhoneGap Enterprise Introduction for Marketers

Developer Workshop Marc Dumontier McMaster/OSCAR-EMR

Introduction to Programming Tools. Anjana & Shankar September,2010

Two case studies of Open Source Software Development: Apache and Mozilla

Terrace Consulting Services

Using Git for Project Management with µvision

Self-Service Active Directory Group Management

Microsoft Exchange Server Backup Options

Vantage Report. Quick Start Guide

StriderCD Book. Release 1.4. Niall O Higgins

Tizen.org Web Infrastructure. Michael Shaver, Intel Daehyeon Jung, Samsung

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Management Utilities Configuration for UAC Environments

Software configuration management

Data Migration from Magento 1 to Magento 2 Including ParadoxLabs Authorize.Net CIM Plugin Last Updated Jan 4, 2016

Installing Booked scheduler on CentOS 6.5

MATLAB & Git Versioning: The Very Basics

ECE 4893: Internetwork Security Lab 12: Web Security

Jive Case Escalation for Salesforce

Version Control with Git. Dylan Nugent

Kevin Lee Technical Consultant As part of a normal software build and release process

Patch management with GFI LANguard and Microsoft WSUS

Part I. OpenCIT Server

2012 Relay For Life Community Event Templates

Introduction. Created by Richard Bell 10/29/2014

Colt Conferencing Frequently Asked Questions

DevShop. Drupal Infrastructure in a Box. Jon Pugh CEO, Founder ThinkDrop Consulting Brooklyn NY

[PRAKTISCHE ASPEKTE DER INFORMATIK WS 13/14]

Version Control Systems

Back Up Your Data! - Part 1

Introduction to Git. Markus Kötter Notes. Leinelab Workshop July 28, 2015

Yocto Project Eclipse plug-in and Developer Tools Hands-on Lab

Source code management systems

Content. Development Tools 2(63)

CS 2112 Lab: Version Control

OFBiz Addons goals, howto use, howto manage. Nicolas Malin, Nov. 2012

How will the transition to the new Adobe Forums be handled?

Network Assessment. Prepared For: Prospect Or Customer Prepared By: Your Company Name

OpenMind: Know Your Customer

EUCIP IT Administrator - Module 2 Operating Systems Syllabus Version 3.0

User Guide. Making EasyBlog Your Perfect Blogging Tool

How can I keep my account safe from hackers, scammers and spammers?

MarkLogic Server. Connector for SharePoint Administrator s Guide. MarkLogic 8 February, 2015

Notification Pro V1.7. User s Manual

Source Code Control & Bugtracking

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

VOC Documentation. Release 0.1. Russell Keith-Magee

Source Control Systems

Set up Outlook for your new student e mail with IMAP/POP3 settings

Troubleshooting / FAQ

Com.X. Call Center Analyser. User Guide

Bing Ads for Realtors: Get $100 FREE

An Introduction to Mercurial Version Control Software

Keepit starter guide

Drupal + Formulize. A Step-by-Step Guide to Integrating Drupal with XOOPS/ImpressCMS, and installing and using the Formulize module

Achieving Continuous Integration with Drupal

CMS and e-commerce Solutions. version 1.0. Please, visit us at: or contact directly by

ManageEngine Desktop Central Training

Administration Guide. . All right reserved. For more information about Specops Deploy and other Specops products, visit

Putting It All Together. Vagrant Drush Version Control

TEST AUTOMATION FRAMEWORK

Four Reasons Your Technical Team Will Love Acquia Cloud Site Factory

Transcription:

How to Contribute to GStreamer Luis de Bethencourt luisbg@osg.samsung.com 1

About Me Originally from the Canary Islands. Currently in London. Joined GStreamer in 2010 b870ff15b50c76ef2bad9733493e97b60eca32de gaudieffects: Adds new plugin 'gaudieffects' Working for Samsung's Open Source Group 2

Agenda Motivation The GStreamer Community GStreamer development process Good practices Infrastructure 3

Motivation 4

Motivation GStreamer is a large and global collaborative software development project To handle this, maintainers have a very well optimized workflow Each project is different. There isn't a single way to submit a patch This talk aims to introduce the GStreamer Community And give you a running start to help you join and contribute Join us now and play with GStreamer. You'll be cool hacker, you'll be cool. 5

The GStreamer Community 6

Global Community 7

Growing Community 1,056 contributors (989 by my count) Data from openhub.net 8

Growing Community git log --reverse --format="%ai %an" sort -k 2 uniq -f 1 9

Active Community 88,547 commits Data from openhub.net 10

Codebase Growth 1,556,544 lines of code Data from openhub.net 11

Professional Commits by the day of the week 12

Easy to have impact 13.6% of contributors have more than 20 commits Top 5 contributors represent 42% of commits Commits by author 13

Release Cycle 0.0.1 [1999-06] 0.10 [2005-12] 1.0 [2012-09] 1.2 [2013-09] 1.4 [2014-07] 1.6 [2015-09] 14

1.6 Release Stats 6,558 commits 230 contributors 122 new contributors 15

Commercially Backed 1.6 Release contributions Centricular 44% Collabora 17% Samsung 15% Rest 24% (Mostly) based on email address domains 16

People stay, must be fun! 1.6 Release contributors 4% joined before 2006 17% joined before 2010 28% joined before 2012 17

Contribution steps 18

Contribution steps Early research Patch preparation Patch formatting and posting Waiting feedback Patches landed 19

Early research Experiment with gst-launch-1.0 Learn about elements with gst-inspect-1.0 Read GStreamer Application Development Manual Read GStreamer Plugin Writer's Guide http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/index.html http://gstreamer.freedesktop.org/data/doc/gstreamer/head/faq/html/index.html Read examples in codebase They can be found in the tests/examples folder of each GStreamer module For example: http://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/tests/examples GstPlayer (or any other application based on Gstreamer, except snappy) Read the codebase Ask questions in the mailing list or IRC 20

Contribution ladder GStreamer is a big Open Source project where you not only have to do technical work but also will have to interact with its big (and diverse) friendly community. For that reason, it's important to get started in a way that enables the newcomer to contribute patches but also to understand the community and related workflows Contribution ladder to get started: Bug triaging Bug reporting Code reviewing Bug fixing Enhancements or new features 21

Build GStreamer mkdir -p gst/uninstalled cd gst/uninstalled git clone git://anongit.freedesktop.org/gstreamer/gstreamer (and all interesting modules in http://cgit.freedesktop.org/gstreamer/) cd../.. cp gst/uninstalled/gstreamer/scripts/gst-uninstalled.. edit MYGST in gst-uninstalled /gst-uninstalled (now all paths lead to the uninstalled version) echo $PATH cd gstreamer /autogen.sh; make (congratulations! you have your own latest gstreamer core) which gst-launch-1.0 (gst-inspect-1.0 will only have coreelements) cd..; cp gstreamer/scripts/git-update.sh. /git-update.sh 22

First Steps with GStreamer Test failures: Test reported bugs in GStreamer's Bugzilla (bugzilla.gnome.org/browse.cgi? product=gstreamer) Report bugs: Check the continuous integration server (https://jenkins.arracacha.collabora.co.uk/) or you run 'make check'. Once you selected the tests, you check if it has been reported in Bugzilla. If it isn't, report it. You can try to find the root issue why they fail and work on a patch to fix it. Join the conversation with useful information! Fix bugs: you go to the GStreamer's Bugzilla and search for relevant bugs that you might help with and/or you might have an interest in working on. Enhancements or new features: open a new bug thread in Bugzilla with your idea and design. Confirm the feature is of interest and the design is approved before you start coding. Small steps: at the beginning, it's normally more useful to start with bug triaging, test failures, small fixes because it allows you know the workflow and community in an easier and faster way 23

Patch formatting and posting Gst-indent Run gst-indent on.c files. You can find it at: http://cgit.freedesktop.org/gstreamer/gstreamer/tree/tools/gst-indent Bugzilla Register an account in bugzilla.gnome.org Two possible ways to submit a patch: Create a new bug https://bugzilla.gnome.org/enter_bug.cgi?product=gstreamer If a bug already exist, attach your patch to it Add link to bugzilla as the last line of the commit message 24

The perfect commit message commit 41fdf21a60ca69bdc90bef367fbce41dcf4415ad Author: Tim-Philipp Müller <tim@centricular.com> Date: Sat May 30 14:27:05 2015 +0100 queue: avoid slice allocs/frees for each item Microoptimisation: Let GstQueueArray store our item struct. That way we don't have to alloc/free temporary QueueItem slices for every item we want to put into the queue. https://bugzilla.gnome.org/show_bug.cgi?id=750149 25

Patch formatting and posting Gst-indent Run gst-indent on.c files. You can find it at: http://cgit.freedesktop.org/gstreamer/gstreamer/tree/tools/gst-indent Bugzilla Register an account in bugzilla.gnome.org Two possible ways to submit a patch: Create a new bug https://bugzilla.gnome.org/enter_bug.cgi?product=gstreamer If a bug already exist, attach your patch to it Add link to bugzilla as the last line of the commit message 26

Waiting for feedback Review happens in bugzilla Give some time for reviewers to show up If no reviews in a week Ask people directly Who? Git log and git blame are your friends 27

Patches landed Once accepted. A maintainer will push the commit upstream. Set the patch state to 'Committed' in bugzilla. Set the bug milestone and status. Current milestone 1.7.1 Status: Resolved and Fixed \o/ 28

Be Social It is very important to communicate with the group. They are a lovely bunch. Mailing lists: http://gstreamer.freedesktop.org/lists/ gstreamer-announce for important announcements (moderated) gstreamer-devel general discussion (open for you to talk here) IRC: #gstreamer @ irc.freenode.net GStreamer Conference: every year around October GStreamer Hackfests: twice a year If you do this, you will normally be able to get engaged in GStreamer in a much easier way, which will help you to grow your knowledge and status in the community. 29

Finding Bugs Use GStreamer from the git (development version) Run gstreamer/tree/scripts/five-bugs-a-day.pl Search in https://bugzilla.gnome.org/browse.cgi?product=gstreamer 30

Finding Bugs That said, it is best to focus on an area of Gstreamer to develop expertise or even maintain a component. Then bugs will come to you. 31

Find Me If you ever struggle when joining or participating with the community luis@debethencourt.com luisbg@osg.samsung.com luisbg @ freenode @luisbg 32

Questions? 33

Thank You! 34