LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"


Published on

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.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

LJCConf 2013 "Contributing to OpenJDK for the GitHub Generation"

  1. 1. Contributing to OpenJDK for the GitHub Generation Daniel Bryant (@taidevcouk) Mani Sarkar (@theNeomatrix369) Edward Yue Shong Wong (@arkangelofkaos) London Java Community
  2. 2. 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!
  3. 3. 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…
  4. 4. 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!)
  5. 5. Test Coverage Report http://sticky.uwcs.co.uk/ojdk/coveragereport/ Courtesy of John Oliver (@johno_oliver)
  6. 6. 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+!)
  7. 7. 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?
  8. 8. Not quite social coding… http://docs.joomla.org/Dvcs
  9. 9. Is it anti-social??? http://www.rottenecards.com/card/32253/im-not-anti-social-im-se
  10. 10. 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
  11. 11. 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
  12. 12. Architecture – Grand Vision
  13. 13. 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!
  14. 14. Opening page
  15. 15. Pull Review details
  16. 16. 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…
  17. 17. 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
  18. 18. Please do get involved! • Web Resources – http://openjdk.java.net/ – https://java.net/projects/adoptopenjdk/ – https://groups.google.com/forum/#!forum/adoptopenjdk • Contact Us: – Daniel Bryant (@taidevcouk) – Mani Sarkar (@theNeomatrix369) – Edward Yue Shong Wong (@arkangelofkaos)
  19. 19. 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