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

Ljc conf open jdk betterrev bof

Jun 14, 2015

Download

Software

Mani Sarkar

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.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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