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

Ljc conf open jdk betterrev bof

Embed Size (px)

DESCRIPTION

An introduction to Betterrev at the LJC Unconference in London in 2013. Betterrev is a wrapper around the OpenJDK mercurial repos to enable a github like social coding experience.

Citation preview

Page 1: Ljc conf open jdk betterrev bof

Contributing to OpenJDK for the GitHub Generation

Daniel Bryant (@danielbryantuk)

Mani Sarkar (@theNeomatrix369)

Edward Yue Shong Wong (@arkangelofkaos)

London Java Community

Page 2: Ljc conf open jdk betterrev bof

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: Ljc conf open jdk betterrev bof

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: Ljc conf open jdk betterrev bof

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: Ljc conf open jdk betterrev bof

Test Coverage Report

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

Page 6: Ljc conf open jdk betterrev bof

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: Ljc conf open jdk betterrev bof

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: Ljc conf open jdk betterrev bof

Not quite social coding…

http://docs.joomla.org/Dvcs

Page 9: Ljc conf open jdk betterrev bof

Is it anti-social???

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

Page 10: Ljc conf open jdk betterrev bof

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: Ljc conf open jdk betterrev bof

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: Ljc conf open jdk betterrev bof

Architecture – Grand Vision

Page 13: Ljc conf open jdk betterrev bof

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: Ljc conf open jdk betterrev bof

Opening page

Page 15: Ljc conf open jdk betterrev bof

Pull Review details

Page 16: Ljc conf open jdk betterrev bof

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: Ljc conf open jdk betterrev bof

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: Ljc conf open jdk betterrev bof

Please do get involved!

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

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

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

∙ Contact Us:– Daniel Bryant (@danielbryantuk)

– Mani Sarkar (@theNeomatrix369)

– Edward Yue Shong Wong (@arkangelofkaos)

Page 19: Ljc conf open jdk betterrev bof

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