SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
Dan Heidinga, J9 VM Interpreter Lead
Daniel_Heidinga@ca.ibm.com
@DanHeidinga
16 November 2016
Clone Clone Make:
A better way to build
Important disclaimers
 THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY.
 WHILST EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION
CONTAINED IN THIS PRESENTATION, IT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED.
 ALL PERFORMANCE DATA INCLUDED IN THIS PRESENTATION HAVE BEEN GATHERED IN A CONTROLLED
ENVIRONMENT. YOUR OWN TEST RESULTS MAY VARY BASED ON HARDWARE, SOFTWARE OR
INFRASTRUCTURE DIFFERENCES.
 ALL DATA INCLUDED IN THIS PRESENTATION ARE MEANT TO BE USED ONLY AS A GUIDE.
 IN ADDITION, THE INFORMATION CONTAINED IN THIS PRESENTATION IS BASED ON IBM’S CURRENT
PRODUCT PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM, WITHOUT NOTICE.
 IBM AND ITS AFFILIATED COMPANIES SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT
OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER DOCUMENTATION.
 NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE EFFECT OF:
– CREATING ANY WARRANT OR REPRESENTATION FROM IBM, ITS AFFILIATED COMPANIES OR ITS
OR THEIR SUPPLIERS AND/OR LICENSORS
2
Who am I?
 I've been involved with virtual machine development at IBM
since 2007 and am now the J9 Virtual Machine Team Lead.
J9 is IBM's independent implementation of the JVM.
 I've represented IBM on both the JSR 292 ('invokedynamic')
and JSR 335 ('lambda') expert groups and lead J9's
implementation of both JSRs.
 I’ve also maintain the bytecode verifier and deal with various
other parts of the runtime.
3
Overall question
How do you transform from the organization you have to the one you want?
– Conway’s law in action
– Understand the past allows you to know what and how to change
4
A bit (more) of my background
 I’ve worked on the J9 team for close to 10 years now
 In that time, we’ve gone through a number of build system migrations, some successfully,
some not so much
 Worked with many different source control systems from Envy/Smalltalk, CVS, RTC, & now
GIT
 This talk will look at the lessons we’ve learned about the importance of your build pipeline
and why it’s essential for transforming your organization.
 I’m going to caricature some of these issues so apologies to my team for any inaccuracies /
oversimplifications.
5
Conway’s law
organizations which design systems ...
are constrained to produce designs which are copies of the
communication structures of these organizations
— M. Conway
https://en.wikipedia.org/wiki/Conway%27s_law
6
Conway’s law in action
7
Hursley
Bengaluru
OttawaToronto
Timezones
8
Hursley
Ottawa & Toronto
Bengaluru
8:00 AM
2:30 AM
9:30 PM
1:30 PM
8:00 AM
3:00 AM
6:30 PM
1:00 PM
8:00 AM
10:30 PM
5:00 PM
12:00 PM
Conway’s law in action
9
Hursley
Bengaluru
OttawaToronto
Class libraries
VM / GCJIT
Project
management
Delivery pipeline
10
JIT
VM
GC
Class
libraries
Composition SDK
Delivery pipeline: reality
11
JIT
VM
GC
Class
libraries
Composition SDK
Architecture Operating System Bit width
X86 Windows 32
64 + CompressedRefs
Linux 32
64 + CompressedRefs
PPC BE Linux 32
64 + CompressedRefs
AIX 32
64 + CompressedRefs
S390 zOS 31
64 + CompressedRefs
zLinux 31
64 + CompressedRefs
12
13
Large milkweed bug (Oncopeltus fasciatus) adult and two juveniles. Photo by Greg Hume.
https://commons.wikimedia.org/wiki/File:Oncopeltusfasciatus.jpg
14
https://en.wikipedia.org/wiki/Jack_Russell_Terrier#/media/
File:JackRussellJump_wb.jpg
Minimum bar to submit code
Build silos
15
Integration
build
c build p build
c build p build
c build p build
VM
GC
SDK
c build p build
JIT
Integration
build
VM
GC
SDK
JIT
Delivery pipeline updated
16
JIT
Class
libraries
Composition SDK
Lesson: Foster a “1 team” approach
Teams should be invested in the product’s success, not just components
Local solutions (walls) hurt global cooperation.
Customers care about the product, not components.
17
Mounting problems
 Cross team squabbles
 Slow promotion rates
 Trouble making cross component dependent changes quickly
 Complexity
 We should have been more scared of this.
18
http://www.joelonsoftware.com/articles/fog0000000043.html
19
Enter the delayed release
 You discover the product about to ship is broken:
How long to turn around a fix?
 Our complex build system fails the Joel Test
– Long turn around cycles
– Many steps
20
Development Transformation
 Enter feature teams
– Each major feature gets it’s own branch of each component
– Minor bug fixes are their own feature branch
 Enter release trains
– Feature streams merge into a validation stream periodically
– Validation stream closes to run SVT
21
Dev Transformation: Feature streams + release train
22
SVT
Feature A
Feature B
Feature C
Dev Transformation: Feature streams + release train
23
SVT
BetaAlpha
Different components, different models
High communication overhead
Long period between merges
Lessons from failure
If teams are not fully committed to the same model, it’s doomed to fail
The developer’s using the system need to be the ones to define it
Complexity kills. In both software design and build systems, the complex
one will fail first
Optimize for the right thing: speed of innovation
24
Pace of innovation in our industry is increasing
 Technology landscape is changing.
 Whoever innovates faster will win
 Innovation requires simplicity.
– Aggressively remove complexity from system, processes, products
25
Recap
 Quality bars and local silos
– Teams should be invested in the product’s success, not just their
components
– Local solutions (walls) hurt global cooperation.
– Customers care about the product, not components.
 Feature streams and release trains
– If teams are not fully bought the same process, it’s doomed to fail
– The developer’s using the system need to be the ones to define it
– Complexity kills. In both software design and build systems, the
complex one will fail faster
– Optimize for the right thing: speed of innovation
26
27
Simple motto increases alignment
 Motto provides focus to the team and directs decision making
– Agile refrain: highly aligned, loosely coupled teams
– Goal needs to be important to both the business and developers
 Agile succeeds when the goal your team cares about is front and center
– If the goal is "agile transformation“, you lose
 This needs to be something everyone on the team understands
 Easy to guide decision making when you can tie it back to the vision
28
External dependencies
29
JIT
VM
GC
Class
libraries
Composition SDK
OpenJDK
Patches on upstream are technical debt
 If you patch / modify a component, get that team (internal or external) to
accept your changes as fast as possible.
 If the upstream changes, your patches need to be modified to track it
 Every patch is technical debt, even the ones that add value!
– If you have a “valuable” patch, exploit for a time and then upstream it
– Eventually someone will add equivalent functionality. Easier if you just
get yours accepted.
30
External dependencies
31
JIT
VM
GC
Class
libraries
Composition SDK
OpenJDK
OMR
Build an open reusable language runtime foundation for cloud
platforms
– To accelerate advancement and innovation
– In full cooperation with existing language communities
– Engaging a diverse community of people interested in language
runtimes
• Professional developers
• Researchers
• Students
• Hobbyists
Eclipse OMR Mission
http://www.eclipse.org/omr
https://github.com/eclipse/omr
https://developer.ibm.com/open/omr/
Dual License:
Eclipse Public License V1.0
Apache 2.0
Users and contributors very welcome
https://github.com/eclipse/omr/blob/master/CONTRIBUTING.md
Eclipse OMR
Created March 2016
Working in the open
 Refactoring Eclipse OMR out of J9 required a massive change to how we work
– Working in the open. No hiding behind component boundaries.
– External communication on issues / mailing lists over internal communication
 Easier to onboard remote team members: anyone can modify anything
 Pull request contribution model
– Anyone can open a pull request to any of the code in OMR
– If it passes the tests and the committers review, it gets merged
 Using the same processes internally as externally.
– Already driving changes by increasing the openness of our teams
– Doesn’t matter which geography you’re in, or even if a member of our team
34
Take the Best from Open Source
> git checkout -b <feature branch>
> make all
> make test (Initial quality bar)
> git add <files>
> git commit –m “commit message”
> git push
 Pull request opened from my fork to upstream
 Continuous integration build validates merged pull request (quality bar)
 Committers review & merge if build passes
35
Source changes & internal tools
 Look at your tool chain
– How many dependencies / required tools can be installed easily?
– Are they available to everyone?
– How many different ways of doing essentially the same thing?
 make, ant, perl, python, shell scripts, configure, makefile generators
 Example: Rewrite the core of the interpreter from generated ASM to C++
– High barrier to change:
 custom tools
 only buildable on Windows
– Even if it comes at a cost
36
Co-dependent components aren’t components
37
VM
GC
JIT
Class
libraries
Composition SDK
OpenJDK
OMR
Elephants are too big to eat at once
 Trying to replace everything at once is too much
– Pick one platform and make the process work end to end there
– Simplicity is key again: fewer dependencies makes this easier
 But pick the right ones…. Those that are supported across all
required platforms
 Different MVPs are possible
– OS / architecture / distro combos
 Incremental steps: how fast can you turn the crank?
38
Start using the new system as soon as possible
Get the new system in people’s hands, even if it's not 100% functional
– building the new system while developing the old is hard
– the sooner you make the switch, the better
 Know the difference between simple and simplistic
– Do you need to mix in binaries from other sources?
– Other internal requirements?
39
“But I’ve always done it this way”
 Social as much as technical change
 Step by step to get to the new system
– Will be complaints along the way
– But better than replacing the entire world at once (elephant)
 Be aware of potential cost to morale
40
Clone, Clone, Make for Java in Action
> git clone <ibm gitlab repo>
> cd openjdk
> sh ./get_source.sh --with-j9
> sh configure --with-boot-jdk=<…> --with-j9
> make all
> ./java -showversion HelloWorld
openjdk version "9-internal“
OpenJDK Runtime Environment (build 9-internal..jdk9)
IBM J9 VM (build 2.9, JRE 1.9.0 Linux amd64-64 Compressed References)
J9VM - R29_20160528_0102_B305707 (Pure C)
JIT - tr.open_20160527_118242_8ba92ef8.green
OMR - d47907ca)
Hello World41
Clone clone make drives simplification
Clone clone make vision drives simplification into the
 Build pipeline
 Organization structure
 Breaks down component walls
42
Our end goal: OMR + OpenJ9
Open
JDK
HotSpot
Eclipse OMR
Open
JDK
Open J9
OMR
Open
JDK
Open J9
OMR
Proven adaptable technology in the
open for rapid innovation and
collaboration across multiple
language communities
Open JDK IBM SDK for Java
Java community open innovation
and collaboration, deep platform
exploitation for X86 & IBM
hardware platforms
(OpenPOWER, Linux ONE)
Ruby?
OMR
Communities Beyond Java: Eclipse OMR
COBOL PL/IEmulator
Python?
OMR
SOM?
OMR
Invent
Your Own
Language
!
Long term support, quick
response for problems, and
other forms of IBM customer
specific engagement
+
IBM
isms
GC
JITDiag
Port
43
44
Legal Notice
IBM and the IBM logo are trademarks or registered trademarks of IBM Corporation, in the United States, other
countries or both.
Java and all Java-based marks, among others, are trademarks or registered trademarks of Oracle in the United
States, other countries or both.
Other company, product and service names may be trademarks or service marks of others.
THE INFORMATION DISCUSSED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL
PURPOSES ONLY. WHILE EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND
ACCURACY OF THE INFORMATION, IT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, AND IBM SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT
OF THE USE OF, OR OTHERWISE RELATED TO, SUCH INFORMATION. ANY INFORMATION
CONCERNING IBM'S PRODUCT PLANS OR STRATEGY IS SUBJECT TO CHANGE BY IBM WITHOUT
NOTICE.
• IBM is open sourcing its J9 JVM technology
– Includes Testarossa Just in Time (JIT) compiler
• Eclipse OMR project is leading edge: github.com/eclipse/omr
– Project created March 7, 2016 : ~300KLOC
– Compiler contributed September 16, 2016 : ~500KLOC
• Open J9 project is also coming
– We’re working on it at same time as Java 9 development
Open source

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Eclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimesEclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimes
 
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
 
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
 
Ordina Accelerator program 2019 - DevOps CI-CD
Ordina Accelerator program 2019 - DevOps CI-CDOrdina Accelerator program 2019 - DevOps CI-CD
Ordina Accelerator program 2019 - DevOps CI-CD
 
CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...
CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...
CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...
 
#JavaOne What's in an object?
#JavaOne What's in an object?#JavaOne What's in an object?
#JavaOne What's in an object?
 
Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...
Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...
Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...
 
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesJfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
 
Ordina Accelerator program 2019 - Jenkins blue ocean pipelines
Ordina Accelerator program 2019 - Jenkins blue ocean pipelinesOrdina Accelerator program 2019 - Jenkins blue ocean pipelines
Ordina Accelerator program 2019 - Jenkins blue ocean pipelines
 
invokedynamic for Mere Mortals [Code One 2019]
invokedynamic for Mere Mortals [Code One 2019]invokedynamic for Mere Mortals [Code One 2019]
invokedynamic for Mere Mortals [Code One 2019]
 
Haj 4344-java se 9 and the application server-1
Haj 4344-java se 9 and the application server-1Haj 4344-java se 9 and the application server-1
Haj 4344-java se 9 and the application server-1
 
Modernisation of legacy php to Symfony 2
Modernisation of legacy php to Symfony 2Modernisation of legacy php to Symfony 2
Modernisation of legacy php to Symfony 2
 
03 - Continuous Integration
03 - Continuous Integration03 - Continuous Integration
03 - Continuous Integration
 
Scaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel DevelopmentScaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel Development
 
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
 
Google ART (Android RunTime)
Google ART (Android RunTime)Google ART (Android RunTime)
Google ART (Android RunTime)
 
Sys ml helperprofile-rhapsody813-obtainandinstall-v1
Sys ml helperprofile-rhapsody813-obtainandinstall-v1Sys ml helperprofile-rhapsody813-obtainandinstall-v1
Sys ml helperprofile-rhapsody813-obtainandinstall-v1
 
IBM Rational Rhapsody 8.4 install guide (including Cygwin and obtaining an ev...
IBM Rational Rhapsody 8.4 install guide (including Cygwin and obtaining an ev...IBM Rational Rhapsody 8.4 install guide (including Cygwin and obtaining an ev...
IBM Rational Rhapsody 8.4 install guide (including Cygwin and obtaining an ev...
 
Streaming in grails
Streaming in grailsStreaming in grails
Streaming in grails
 
Don't screw it up: how to build durable web apis
Don't screw it up: how to build durable web apisDon't screw it up: how to build durable web apis
Don't screw it up: how to build durable web apis
 

Destaque

Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled Presentation
nachoespi1
 
Types of Technology
Types of TechnologyTypes of Technology
Types of Technology
Krice92
 
Nguy cơ tai biến tăng cao vào mùa đông
Nguy cơ tai biến tăng cao vào mùa đôngNguy cơ tai biến tăng cao vào mùa đông
Nguy cơ tai biến tăng cao vào mùa đông
erin432
 
Familipreneurship_Extended Abstrct
Familipreneurship_Extended AbstrctFamilipreneurship_Extended Abstrct
Familipreneurship_Extended Abstrct
Mijan Rahman
 
Controlling Poly(3-butylthiophene) Assembly in Solution Manuscript
Controlling Poly(3-butylthiophene) Assembly in Solution ManuscriptControlling Poly(3-butylthiophene) Assembly in Solution Manuscript
Controlling Poly(3-butylthiophene) Assembly in Solution Manuscript
Davis Hu
 

Destaque (14)

Registries rolv skjaerven
Registries rolv skjaervenRegistries rolv skjaerven
Registries rolv skjaerven
 
Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled Presentation
 
Sap shootsnew
Sap shootsnewSap shootsnew
Sap shootsnew
 
Basic integrations
Basic integrations Basic integrations
Basic integrations
 
Bond Investing Strategy (Part 1)
Bond Investing Strategy (Part 1)Bond Investing Strategy (Part 1)
Bond Investing Strategy (Part 1)
 
Why 4Segments
Why 4SegmentsWhy 4Segments
Why 4Segments
 
Pompano Beach Branch
Pompano Beach BranchPompano Beach Branch
Pompano Beach Branch
 
Types of Technology
Types of TechnologyTypes of Technology
Types of Technology
 
Measuring the Investment Tax Drag
Measuring the Investment Tax DragMeasuring the Investment Tax Drag
Measuring the Investment Tax Drag
 
Nguy cơ tai biến tăng cao vào mùa đông
Nguy cơ tai biến tăng cao vào mùa đôngNguy cơ tai biến tăng cao vào mùa đông
Nguy cơ tai biến tăng cao vào mùa đông
 
Familipreneurship_Extended Abstrct
Familipreneurship_Extended AbstrctFamilipreneurship_Extended Abstrct
Familipreneurship_Extended Abstrct
 
Controlling Poly(3-butylthiophene) Assembly in Solution Manuscript
Controlling Poly(3-butylthiophene) Assembly in Solution ManuscriptControlling Poly(3-butylthiophene) Assembly in Solution Manuscript
Controlling Poly(3-butylthiophene) Assembly in Solution Manuscript
 
MASHLM 2nd year thesis workshop
MASHLM  2nd year thesis workshopMASHLM  2nd year thesis workshop
MASHLM 2nd year thesis workshop
 
THE GLORIA
THE GLORIATHE GLORIA
THE GLORIA
 

Semelhante a Clone Clone Make: a better way to build

Journey from Monolith to a Modularized Application - Approach and Key Learnin...
Journey from Monolith to a Modularized Application - Approach and Key Learnin...Journey from Monolith to a Modularized Application - Approach and Key Learnin...
Journey from Monolith to a Modularized Application - Approach and Key Learnin...
mfrancis
 

Semelhante a Clone Clone Make: a better way to build (20)

DevOps explained
DevOps explainedDevOps explained
DevOps explained
 
Ci tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepinsCi tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepins
 
Journey from Monolith to a Modularized Application - Approach and Key Learnin...
Journey from Monolith to a Modularized Application - Approach and Key Learnin...Journey from Monolith to a Modularized Application - Approach and Key Learnin...
Journey from Monolith to a Modularized Application - Approach and Key Learnin...
 
Do modernizing the Mainframe for DevOps.
Do modernizing the Mainframe for DevOps.Do modernizing the Mainframe for DevOps.
Do modernizing the Mainframe for DevOps.
 
Agile and continuous delivery – How IBM Watson Workspace is built
Agile and continuous delivery – How IBM Watson Workspace is builtAgile and continuous delivery – How IBM Watson Workspace is built
Agile and continuous delivery – How IBM Watson Workspace is built
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build Automation
 
Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...
Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...
Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...
 
How dvcs can reduce your development costs and enhance productivity final
How dvcs can reduce your development costs and enhance productivity finalHow dvcs can reduce your development costs and enhance productivity final
How dvcs can reduce your development costs and enhance productivity final
 
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...
 
DevOps and SF.pdf
DevOps and SF.pdfDevOps and SF.pdf
DevOps and SF.pdf
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
 
Winning People to DevOps
Winning People to DevOpsWinning People to DevOps
Winning People to DevOps
 
Our Journey To Continuous Delivery
Our Journey To Continuous DeliveryOur Journey To Continuous Delivery
Our Journey To Continuous Delivery
 
Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates
 
Technologies for startup
Technologies for startupTechnologies for startup
Technologies for startup
 
Anypoint Tools and MuleSoft Automation (DRAFT).pptx
Anypoint Tools and MuleSoft Automation (DRAFT).pptxAnypoint Tools and MuleSoft Automation (DRAFT).pptx
Anypoint Tools and MuleSoft Automation (DRAFT).pptx
 
MuleSoft Meetup #9 - Anypoint Tools and MuleSoft Automation (FINAL).pptx
MuleSoft Meetup #9 - Anypoint Tools and MuleSoft Automation (FINAL).pptxMuleSoft Meetup #9 - Anypoint Tools and MuleSoft Automation (FINAL).pptx
MuleSoft Meetup #9 - Anypoint Tools and MuleSoft Automation (FINAL).pptx
 
Maintaining and Releasing Open Source Software
Maintaining and Releasing Open Source SoftwareMaintaining and Releasing Open Source Software
Maintaining and Releasing Open Source Software
 
OOP 2014 - Lifecycle By Design
OOP 2014 - Lifecycle By DesignOOP 2014 - Lifecycle By Design
OOP 2014 - Lifecycle By Design
 
Dublin Unity User Group Meetup Sept 2015
Dublin Unity User Group Meetup Sept 2015Dublin Unity User Group Meetup Sept 2015
Dublin Unity User Group Meetup Sept 2015
 

Último

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

Clone Clone Make: a better way to build

  • 1. Dan Heidinga, J9 VM Interpreter Lead Daniel_Heidinga@ca.ibm.com @DanHeidinga 16 November 2016 Clone Clone Make: A better way to build
  • 2. Important disclaimers  THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY.  WHILST EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION CONTAINED IN THIS PRESENTATION, IT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.  ALL PERFORMANCE DATA INCLUDED IN THIS PRESENTATION HAVE BEEN GATHERED IN A CONTROLLED ENVIRONMENT. YOUR OWN TEST RESULTS MAY VARY BASED ON HARDWARE, SOFTWARE OR INFRASTRUCTURE DIFFERENCES.  ALL DATA INCLUDED IN THIS PRESENTATION ARE MEANT TO BE USED ONLY AS A GUIDE.  IN ADDITION, THE INFORMATION CONTAINED IN THIS PRESENTATION IS BASED ON IBM’S CURRENT PRODUCT PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM, WITHOUT NOTICE.  IBM AND ITS AFFILIATED COMPANIES SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER DOCUMENTATION.  NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE EFFECT OF: – CREATING ANY WARRANT OR REPRESENTATION FROM IBM, ITS AFFILIATED COMPANIES OR ITS OR THEIR SUPPLIERS AND/OR LICENSORS 2
  • 3. Who am I?  I've been involved with virtual machine development at IBM since 2007 and am now the J9 Virtual Machine Team Lead. J9 is IBM's independent implementation of the JVM.  I've represented IBM on both the JSR 292 ('invokedynamic') and JSR 335 ('lambda') expert groups and lead J9's implementation of both JSRs.  I’ve also maintain the bytecode verifier and deal with various other parts of the runtime. 3
  • 4. Overall question How do you transform from the organization you have to the one you want? – Conway’s law in action – Understand the past allows you to know what and how to change 4
  • 5. A bit (more) of my background  I’ve worked on the J9 team for close to 10 years now  In that time, we’ve gone through a number of build system migrations, some successfully, some not so much  Worked with many different source control systems from Envy/Smalltalk, CVS, RTC, & now GIT  This talk will look at the lessons we’ve learned about the importance of your build pipeline and why it’s essential for transforming your organization.  I’m going to caricature some of these issues so apologies to my team for any inaccuracies / oversimplifications. 5
  • 6. Conway’s law organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations — M. Conway https://en.wikipedia.org/wiki/Conway%27s_law 6
  • 7. Conway’s law in action 7 Hursley Bengaluru OttawaToronto
  • 8. Timezones 8 Hursley Ottawa & Toronto Bengaluru 8:00 AM 2:30 AM 9:30 PM 1:30 PM 8:00 AM 3:00 AM 6:30 PM 1:00 PM 8:00 AM 10:30 PM 5:00 PM 12:00 PM
  • 9. Conway’s law in action 9 Hursley Bengaluru OttawaToronto Class libraries VM / GCJIT Project management
  • 12. Architecture Operating System Bit width X86 Windows 32 64 + CompressedRefs Linux 32 64 + CompressedRefs PPC BE Linux 32 64 + CompressedRefs AIX 32 64 + CompressedRefs S390 zOS 31 64 + CompressedRefs zLinux 31 64 + CompressedRefs 12
  • 13. 13 Large milkweed bug (Oncopeltus fasciatus) adult and two juveniles. Photo by Greg Hume. https://commons.wikimedia.org/wiki/File:Oncopeltusfasciatus.jpg
  • 15. Build silos 15 Integration build c build p build c build p build c build p build VM GC SDK c build p build JIT
  • 17. Lesson: Foster a “1 team” approach Teams should be invested in the product’s success, not just components Local solutions (walls) hurt global cooperation. Customers care about the product, not components. 17
  • 18. Mounting problems  Cross team squabbles  Slow promotion rates  Trouble making cross component dependent changes quickly  Complexity  We should have been more scared of this. 18
  • 20. Enter the delayed release  You discover the product about to ship is broken: How long to turn around a fix?  Our complex build system fails the Joel Test – Long turn around cycles – Many steps 20
  • 21. Development Transformation  Enter feature teams – Each major feature gets it’s own branch of each component – Minor bug fixes are their own feature branch  Enter release trains – Feature streams merge into a validation stream periodically – Validation stream closes to run SVT 21
  • 22. Dev Transformation: Feature streams + release train 22 SVT Feature A Feature B Feature C
  • 23. Dev Transformation: Feature streams + release train 23 SVT BetaAlpha Different components, different models High communication overhead Long period between merges
  • 24. Lessons from failure If teams are not fully committed to the same model, it’s doomed to fail The developer’s using the system need to be the ones to define it Complexity kills. In both software design and build systems, the complex one will fail first Optimize for the right thing: speed of innovation 24
  • 25. Pace of innovation in our industry is increasing  Technology landscape is changing.  Whoever innovates faster will win  Innovation requires simplicity. – Aggressively remove complexity from system, processes, products 25
  • 26. Recap  Quality bars and local silos – Teams should be invested in the product’s success, not just their components – Local solutions (walls) hurt global cooperation. – Customers care about the product, not components.  Feature streams and release trains – If teams are not fully bought the same process, it’s doomed to fail – The developer’s using the system need to be the ones to define it – Complexity kills. In both software design and build systems, the complex one will fail faster – Optimize for the right thing: speed of innovation 26
  • 27. 27
  • 28. Simple motto increases alignment  Motto provides focus to the team and directs decision making – Agile refrain: highly aligned, loosely coupled teams – Goal needs to be important to both the business and developers  Agile succeeds when the goal your team cares about is front and center – If the goal is "agile transformation“, you lose  This needs to be something everyone on the team understands  Easy to guide decision making when you can tie it back to the vision 28
  • 30. Patches on upstream are technical debt  If you patch / modify a component, get that team (internal or external) to accept your changes as fast as possible.  If the upstream changes, your patches need to be modified to track it  Every patch is technical debt, even the ones that add value! – If you have a “valuable” patch, exploit for a time and then upstream it – Eventually someone will add equivalent functionality. Easier if you just get yours accepted. 30
  • 32. Build an open reusable language runtime foundation for cloud platforms – To accelerate advancement and innovation – In full cooperation with existing language communities – Engaging a diverse community of people interested in language runtimes • Professional developers • Researchers • Students • Hobbyists Eclipse OMR Mission
  • 33. http://www.eclipse.org/omr https://github.com/eclipse/omr https://developer.ibm.com/open/omr/ Dual License: Eclipse Public License V1.0 Apache 2.0 Users and contributors very welcome https://github.com/eclipse/omr/blob/master/CONTRIBUTING.md Eclipse OMR Created March 2016
  • 34. Working in the open  Refactoring Eclipse OMR out of J9 required a massive change to how we work – Working in the open. No hiding behind component boundaries. – External communication on issues / mailing lists over internal communication  Easier to onboard remote team members: anyone can modify anything  Pull request contribution model – Anyone can open a pull request to any of the code in OMR – If it passes the tests and the committers review, it gets merged  Using the same processes internally as externally. – Already driving changes by increasing the openness of our teams – Doesn’t matter which geography you’re in, or even if a member of our team 34
  • 35. Take the Best from Open Source > git checkout -b <feature branch> > make all > make test (Initial quality bar) > git add <files> > git commit –m “commit message” > git push  Pull request opened from my fork to upstream  Continuous integration build validates merged pull request (quality bar)  Committers review & merge if build passes 35
  • 36. Source changes & internal tools  Look at your tool chain – How many dependencies / required tools can be installed easily? – Are they available to everyone? – How many different ways of doing essentially the same thing?  make, ant, perl, python, shell scripts, configure, makefile generators  Example: Rewrite the core of the interpreter from generated ASM to C++ – High barrier to change:  custom tools  only buildable on Windows – Even if it comes at a cost 36
  • 37. Co-dependent components aren’t components 37 VM GC JIT Class libraries Composition SDK OpenJDK OMR
  • 38. Elephants are too big to eat at once  Trying to replace everything at once is too much – Pick one platform and make the process work end to end there – Simplicity is key again: fewer dependencies makes this easier  But pick the right ones…. Those that are supported across all required platforms  Different MVPs are possible – OS / architecture / distro combos  Incremental steps: how fast can you turn the crank? 38
  • 39. Start using the new system as soon as possible Get the new system in people’s hands, even if it's not 100% functional – building the new system while developing the old is hard – the sooner you make the switch, the better  Know the difference between simple and simplistic – Do you need to mix in binaries from other sources? – Other internal requirements? 39
  • 40. “But I’ve always done it this way”  Social as much as technical change  Step by step to get to the new system – Will be complaints along the way – But better than replacing the entire world at once (elephant)  Be aware of potential cost to morale 40
  • 41. Clone, Clone, Make for Java in Action > git clone <ibm gitlab repo> > cd openjdk > sh ./get_source.sh --with-j9 > sh configure --with-boot-jdk=<…> --with-j9 > make all > ./java -showversion HelloWorld openjdk version "9-internal“ OpenJDK Runtime Environment (build 9-internal..jdk9) IBM J9 VM (build 2.9, JRE 1.9.0 Linux amd64-64 Compressed References) J9VM - R29_20160528_0102_B305707 (Pure C) JIT - tr.open_20160527_118242_8ba92ef8.green OMR - d47907ca) Hello World41
  • 42. Clone clone make drives simplification Clone clone make vision drives simplification into the  Build pipeline  Organization structure  Breaks down component walls 42
  • 43. Our end goal: OMR + OpenJ9 Open JDK HotSpot Eclipse OMR Open JDK Open J9 OMR Open JDK Open J9 OMR Proven adaptable technology in the open for rapid innovation and collaboration across multiple language communities Open JDK IBM SDK for Java Java community open innovation and collaboration, deep platform exploitation for X86 & IBM hardware platforms (OpenPOWER, Linux ONE) Ruby? OMR Communities Beyond Java: Eclipse OMR COBOL PL/IEmulator Python? OMR SOM? OMR Invent Your Own Language ! Long term support, quick response for problems, and other forms of IBM customer specific engagement + IBM isms GC JITDiag Port 43
  • 44. 44 Legal Notice IBM and the IBM logo are trademarks or registered trademarks of IBM Corporation, in the United States, other countries or both. Java and all Java-based marks, among others, are trademarks or registered trademarks of Oracle in the United States, other countries or both. Other company, product and service names may be trademarks or service marks of others. THE INFORMATION DISCUSSED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY. WHILE EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION, IT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, AND IBM SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, SUCH INFORMATION. ANY INFORMATION CONCERNING IBM'S PRODUCT PLANS OR STRATEGY IS SUBJECT TO CHANGE BY IBM WITHOUT NOTICE.
  • 45. • IBM is open sourcing its J9 JVM technology – Includes Testarossa Just in Time (JIT) compiler • Eclipse OMR project is leading edge: github.com/eclipse/omr – Project created March 7, 2016 : ~300KLOC – Compiler contributed September 16, 2016 : ~500KLOC • Open J9 project is also coming – We’re working on it at same time as Java 9 development Open source