addressalign-toparrow-leftarrow-rightbackbellblockcalendarcameraccwchatcheckchevron-downchevron-leftchevron-rightchevron-small-downchevron-small-leftchevron-small-rightchevron-small-upchevron-upcircle-with-checkcircle-with-crosscircle-with-pluscrossdots-three-verticaleditemptyheartexporteye-with-lineeyefacebookfolderfullheartglobegmailgoogleimageimagesinstagramlinklocation-pinmagnifying-glassmailminusmoremuplabelShape 3 + Rectangle 1outlookpersonplusprice-ribbonImported LayersImported LayersImported Layersshieldstartickettrashtriangle-downtriangle-uptwitteruseryahoo

"Evolving code without breaking compatibility" by Kohsuke Kawaguchi

  • Apr 23, 2014 · 6:00 PM

1) Join the IRC channel - Ask questions, chat, discuss 

2) View the live stream on YouTube

This is a virtual Meetup so timezones are 6PM BST / 5PM UTC / 1PM EDT /10 AM PDT

Evolving code without breaking compatibility

As the software development gets larger in scale, modular applications are becoming more and more common, where individual modules and libraries are built and packaged separately, and where pieces are only brought together at runtime to form a functioning application. In such an environment, evolving code that doesn't break other modules that depend on you becomes more tricky.

In Jenkins project (, where the ecosystem revolves around 800+ community-developed plugins, this is a very important consideration.

In this presentation, I will go over techniques and tools I have developed over time to help me evolve Jenkins core code while retaining compatibility. The topics covered range from simple rules of thumbs for junior Java developers (e.g., prefer getter methods over exposing fields) to bytecode manipulation at compile-time and runtime, all the way up to invokedynamic!

Speaker: Kohsuke Kawaguchi

Kohsuke is a well-respected developer and popular speaker at industry and Jenkins community events. He's often asked to speak about his experience and approach in creating Jenkins; a CI platform that has become a widely adopted and successful community-driven open source project. The principles behind the Jenkins community - extensibility, inclusiveness, low barriers to participation - have been the keys to its success. Kohsuke's sensibilities in creating Jenkins and his deep understanding of how to translate its capabilities into usable software have also had a major impact on CloudBees' strategy as a company. Before joining CloudBees, Kohsuke was with Sun Microsystems and Oracle, where he worked on a variety of projects and initiated the open source work that led to Jenkins.

Join or login to comment.

  • Riccardo C.

    I will try to attend while commuting; I have a decent mobile plan, hope I don't miss too much :-)

    April 11, 2014

    • Riccardo C.

      Sweet! :-)

      April 11, 2014

    • Riccardo C.

      It worked ok, I missed some bits, but I will recover them with the replay :-)

      April 23, 2014

  • Riccardo C.

    Awesome advanced stuff! Never had the heart to delve into bytecode manipulation, but after this talk... who knows!

    April 23, 2014

  • Jez P.

    Really enjoyed it, great presentation touching on considerations I don't normally run into in my day job

    April 23, 2014

  • Arthur Bedder I.

    Good presentation.

    April 23, 2014

  • Vineet B.

    Real world practical techniques to evolve core API without using OSGI or other modularity frameworks. Thank you Kohsuke! Please post slides and blog posts.

    April 23, 2014

  • Marc S.

    Quite interesting. Enjoyed it quite a bit!

    April 23, 2014

  • Eudris C.

    Great presentation !!

    1 · April 23, 2014

  • Dave S.

    Is this a change to the start time (last meetup was at 4pm UTC, 5pm BST)?

    April 10, 2014

    • Simon M.

      Yes, this start time is one hour later

      April 10, 2014

  • Oliver W.

    Awesome, will be great to see Kohsuke again!

    March 21, 2014

Our Sponsors

  • ZeroTurnaround

    Revolutionary tools for developing quality software faster

People in this
Meetup are also in:

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy