Let The Internet Work For You

Session Audio

Excerpt

Creating a successful Open Source project isn’t intuitive, or easy. Converting a brilliant idea into a working code base, then publishing it to Github (with significant adoption) is hard enough, nevermind building an ideal development and release workflow.

Sometimes, getting your OSS code out to the community is the easy part -- then the real work ensues. Juggling between the roles of; creator, maintainer and contributor while managing the interests of the group effort (IRC, mailing lists etc) and issue trackers can quickly scale from simple and exciting, to a time consuming full time job.

I plan to take you on a ride, demonstrating how Open Source developers can leverage free service offerings (for open source) to make your life as a project maintainer easier and more rewarding; from development and QA automation through to continuous deployment.

Description

=Introduction=

Open source projects live off the fact that developers turn into contributors and invest their precious time into creating patches, bug fixes and or enhanced functionality for an Open Source code base.

As a maintainer of an Open Source project there’s significant effort involved in correctly handling these contributions. Reviewing patches from contributors, ensuring the patches completeness (coding style issues and test coverage) are equally as important as running the patched code against the test suite before it’s acceptance. Nobody wants to destabilize the usability of the code base or jeopardize the projects success or momentum, right?!

=Let The Internet Work For You!=

We all love Github for their free code hosting and streamlined collaboration experience. Let’s introduce two more players to the table to complete the stack:

Travis, the Continuous Integration Service
Sauce Labs, Selenium Cloud Service

Github hosts a lot of the Open Source code which is crucial to the productivity of a Web Developer, however there is a lot more than hosting needed (test execution, static analysis, linting etc) to ensure the hosted code’s quality. Travis CI is our friend. The guys at Travis provide a continuous integration service for the open source community free of charge to handle exactly this. In addition to the awesome integration with Github, it’ll check out the latest code and let us perform any given task we can think of, eg. kicking off a test runner for our unit tests or performing static analysis across the code base.

To keep up with outside contributions to one’s open source project — it’s quite helpful to have a continuous build not just for the stable trunk of the project but also for contributing pull requests. Travis and Github came up with a nice solution to this problem — they kick off builds in Travis-CI whenever a pull request was created and will make information about the build status available through the pull request management user interface.

Sauce Labs has a free service offering for Open Source developers, too. We’ll be using their Selenium Cloud to run QUnit Javascript browser test suites against various browser and platform combinations.

=Let’s Connect The Dots=

We’ll be using a Github hosted example project to illustrate end-to-end integrated test execution. In order to make all these free services work together we’ll need to write a thin layer of code to glue them all together. Enter node.js and grunt.js: Grunt.js is to node.js what GNU Make is to GCC. It’ll let you perform repetitive tasks in an elegant way, using a set of common and or hand-crafted build tasks.

I’ll show how we can leverage grunt.js tasks to make Travis-CI connect to Sauce Labs through an encrypted secure tunnel, launch a web server to serve the web pages that contain QUnit test suites and execute the javascript tests against a number of platform/browser combinations. Of course all the status information will be conveniently communicated across all the services.

Ever since javascript browser test execution has become such a common use case the sequence of steps required to accomplish aforementioned steps have already been implemented as a grunt.js task. I’ll show how to leverage this for any Github hosted project.

=How Does This Benefit Me As A Maintainer?=

I’ll show how Github, Travis-CI and Sauce Labs, can integrate build success / failure reporting into the collaboration workflow on Github to notify maintainers ahead of time about problems which may have gotten introduced with a code contribution.

The beauty of this end-to-end test integration is that it will not only run whenever new code was committed, but also branches that have been submitted for merge to master through a pull request. No need for the project maintainer to check out code to their local machines and run tests repeatedly. By the time maintainers review pull requests they will already able to see whether the branch submitted for merge, met style and syntax, and if there were any problems running the javascript browser test suite.

Speaking experience

Intermediate. Spoke at multiple workshop events in San Francisco (Girl Develop IT Workshop, Selenium for Beginner at OpenDNS, LXJS and JSConf EU), Berlin and Lisbon with audiences from 15-40 people. - Talk proposal is brand new and has not been given before.

Speaker

Biography

Born and raised at the foot of the Alps just outside of Munich in Germany, Sebastian spent his youth listening to David Hasselhoff songs. He wore Lederhosen and eagerly anticipated the day he could legally drink his first stein of beer.

When daddy put the first computer on his desk in the mid 90s, Sebastian quickly went on to figure out BASIC, Pascal and C/C++. Rainy afternoons were filled with building websites, countless iterations of Linux kernel makefile tweaks and compiler runs.

Before joining Sauce, Sebastian finished a degree in Software Development (in Munich), he spent almost a decade building customer information systems making transit information more accessible for people living in large metropolitan areas worldwide. His job commitment and passions for technology eventually made him move to San Francisco in 2009.

When Sebastian is not busy improving the Sauce experience he likes to take joyrides on his 1961 vespa. He’s a natural optimist in life and always sees the stein half full.

Sessions

Creating a successful Open Source project isn’t intuitive, or easy. Converting a brilliant idea into a working code base, then publishing it to Github (with significant adoption) is hard enough, nevermind building an ideal development and release workflow.

Sometimes, getting your OSS code out to the community is the easy part — then the real work ensues. Juggling between the roles of; creator, maintainer and contributor while managing the interests of the group effort (IRC, mailing lists etc) and issue trackers can quickly scale from simple and exciting, to a time consuming full time job.

I plan to take you on a ride, demonstrating how Open Source developers can leverage free service offerings (for open source) to make your life as a project maintainer easier and more rewarding; from development and QA automation through to continuous deployment.