JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

19
Using Java to Build Java Revealing the Power of Open Java Technologies Daniel Bryant, Tai-Dev Ltd (@taidevcouk) Steve Poole, IBM (@spoole167) London Java Community

description

Steve Poole and I presented this talk at JavaOne 2013, discussing and promoting recent work done by the London Java Community (LJC) on the "Betterrev" application which seeks to improve the process of contributing to the Java OpenJDK

Transcript of JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

Page 1: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

Using Java to Build JavaRevealing the Power of Open Java Technologies

Daniel Bryant, Tai-Dev Ltd (@taidevcouk)

Steve Poole, IBM (@spoole167)

London Java Community

Page 2: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

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: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

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: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

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: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

Test Coverage Report

http://sticky.uwcs.co.uk/ojdk/coveragereport/Courtesy of Dr John Oliver

Page 6: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

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: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

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: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

Not quite social coding…

http://docs.joomla.org/Dvcs

Page 9: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

Is it anti-social???

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

Page 10: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

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: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

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: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

Architecture – Grand Vision

Page 13: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

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: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

Opening page

Page 15: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

Pull Review details

Page 16: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

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: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

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: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

Please do get involved!

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

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

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

– https://twitter.com/OpenJDK

Contact Us:– Daniel Bryant, Tai-Dev Ltd (@taidevcouk)

– Steve Poole, IBM (@spoole167)

Page 19: JavaOne 2013 "Using Java to Build Java: Betterrev" BOF Session

A shout out to the LJC and IBM…

Thanks to the LJC for supporting this– Martijn Verburg

– Richard Warburton

– Mani Sarkar

– Kaushal Singh

– Edward Wong

Thanks also to IBM