LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

19
Contributing to OpenJDK for the GitHub Generation Daniel Bryant (@taidevcouk) Mani Sarkar (@theNeomatrix369) Edward Yue Shong Wong (@arkangelofkaos) London Java Community

description

With the rise of github and the recent move of the Eclipse foundation to a social coding model, more and more people are wondering why participation in OpenJDK (the open source reference implementation of Java SE) isn’t keeping up with the times. A small group of people from the LJC and Adopt OpenJDK are trying to solve this problem by building Betterrev. Betterrev is a platform that enables social participation in Openjdk, that works by hooking up repositories into Atlassian Bitbucket - ‘Github for mercurial’. Its goal is reduce barriers to entry and participation in OpenJDK. Down the line we’re hoping to tie into a build and test platform, so that community contributors can have their patches tested on any system from a macbook air, to an IBM mainframe.

Transcript of LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

Page 1: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

Contributing to OpenJDK for the GitHub Generation

Daniel Bryant (@taidevcouk)

Mani Sarkar (@theNeomatrix369)

Edward Yue Shong Wong (@arkangelofkaos)

London Java Community

Page 2: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

Tonight’s Agenda

OpenJDK – Java for the people!

Contributing to OpenJDK is easy… right?

The problem, and our planned solution

Progress so far…

Future work – we need your help!

This is a BOF session– We encourage questions and discussion!

Page 3: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

What is OpenJDK?

Is everyone familiar with the OpenJDK?– Free and open source implementation of Java SE

– Reference Implementation for JDK since Java 7

– Code split into various Mercurial repos (jdk, Hotspot, nashorn…)

Has anyone built it locally?– On MS Windows…

Page 4: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

Building OpenJDK

Java used extensively (and others… C++ etc)

Ensuring quality– We all Unit Test our code (…right?)

– Essential for a platform/SDK like Java

Jtreg - “Regression Test Harness”

– Think Unit (and Integration) Testing for the JDK

– TestNG / JUnit / Shell scripts

– Some good code coverage (some bad!)

Page 5: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

Test Coverage Report

http://sticky.uwcs.co.uk/ojdk/coveragereport/Courtesy of John Oliver (@johno_oliver)

Page 6: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

Contributing to OpenJDK is easy…

Sign OCA

Download the codebase

Find something interesting to work on– Bug database/tracker/Jira

– Write new tests

– Re-write old tests

– Get inspiration from the mailing lists (50+!)

Page 7: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

Contributing to OpenJDK is easy…right?

Find a sponsor

Submit a patch– Include comments, code changes and jtreg tests

– Generate a “webrev”

– Wait for feedback…

This is a slow (and perhaps unintuitive) process– Why can’t I just fork and pull?

Page 8: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

Not quite social coding…

http://docs.joomla.org/Dvcs

Page 9: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

Is it anti-social???

http://www.rottenecards.com/card/32253/im-not-anti-social-im-se

Page 10: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

The problems…

Doesn’t quite feel like “social coding” should…– You’re working on an island

– Modifications not visible to the world

– Discussions not close to code

Testing is difficult– Added complexity of working with a VM/SDK

– Does patch works across all platforms/permutations?

– Coding standards

Page 11: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

Our Goals

“To encourage contributions to OpenJDK"

Streamline the whole process– More social…

Ensure (and assist with) quality– Lack of test coverage, incorrect code style

– Easier to test across platforms/permutations

Provide visible feedback for community

Page 12: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

Architecture – Grand Vision

Page 13: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

Progress so far…

“Betterev” web app nearing completion– Built in Play 2 framework (not ideal…)

Event-driven architecture– Utilising Akka to build event-bus

Planning Test Farm implementation– Servers aren’t free!

Personal Challenges– Large scope needs large time commitments

– Communication and organisation are vital!

Page 14: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

Opening page

Page 15: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

Pull Review details

Page 16: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

Future Work

Deploy alpha release– Complete web app (what to do with Play??)

– Implement build farm (DevOps magic)

Start demonstrating this tool– Get some “buy in”…

LJC working hard to commit more time…

Page 17: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

Please do get involved!

We need passionate Java developers like you!– What’s better than helping to make contributing to

your favourite language easier?

Find us on Bitbucket– https://bitbucket.org/adoptopenjdk/betterrev

Join our Google Group:– https://groups.google.com/forum/#!forum/betterrev

Page 18: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

Please do get involved!

Web Resources– http://openjdk.java.net/

– https://java.net/projects/adoptopenjdk/

– https://groups.google.com/forum/#!forum/adopt-openjdk

Contact Us:– Daniel Bryant (@taidevcouk)

– Mani Sarkar (@theNeomatrix369)

– Edward Yue Shong Wong (@arkangelofkaos)

Page 19: LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

A shout out to the LJC and IBM…

Thanks to other LJC members for supporting this– Martijn Verburg

– Richard Warburton

Big thanks also to IBM

– Steve Poole