From Eclipse to Jazz

download From Eclipse to Jazz

of 46

Transcript of From Eclipse to Jazz

  • 8/14/2019 From Eclipse to Jazz

    1/46

    2008/2009 IBM Corporation

    Erich GammaIBM distinguished engineer

    IBM rational zurich research lab

    how (8 years of) eclipse changed my views on softwaredevelopment

  • 8/14/2019 From Eclipse to Jazz

    2/46

    Eclipse Lessons

    Outline

    Closed Development Open Development

    2003200320002000 20012001 20022002

    JuneMarch JuneJune

    20042004

    June

    20052005 20062006

    NovemberFall June

    3.12.1 3.02.0 3.21.0ProjectStarts

    TechPreview

    OpenSource

    OpenOpen

    SourceSource

    20072007

    June

    3.3

    Built to LastExtensibility

    API

    CommunityTransparency

    Development ProcessAgility

    TeamTools

    20082008

    June

    3.4

  • 8/14/2019 From Eclipse to Jazz

    3/46

    2005 IBM Corporation

    how buildings last

    Site

    Stewart Brand: how buildings learn what happens after they're built

    stuff: furniture

    services: electrical, plumbing (7-15y)

    structure: foundation, load bearing walls (30-300y)

    site: geographical setting (forever)

    layers:

    evolve at different rates during the life of a building

    shear against each other as they change at different rates

    an adaptive building must allow slippage

    a building that lasts is adaptive and can change over time

    lasts for generations without total rebuilding

  • 8/14/2019 From Eclipse to Jazz

    4/46 2005 IBM Corporation

    structure foundation

    the eclipse plug-in architecture

    everything is a plug-in simple and consistent

  • 8/14/2019 From Eclipse to Jazz

    5/46 2005 IBM Corporation

    eclipse plug-in architecture plug-in == component

    set of contributions

    smallest unit of Eclipse function

    details spelled out in plug-in manifest

    extension point named entity for collectingcontributions

    extension a contribution

    Example: a specific spam filter tool

    runtime controls and manages contributions

    plug-in

    platform

    plug-in

    Extension

    Extension point

    runtime

  • 8/14/2019 From Eclipse to Jazz

    6/46 2005 IBM Corporation

    services plumbing: APIs

    Plug-in dependencies through APIs

    define APIs for stability binary compatibility is highest priority

  • 8/14/2019 From Eclipse to Jazz

    7/46 2005 IBM Corporation

    APIs first

    APIs dont just happen; we need to design them

    specifications with precisely defined behavior

    what you can assume (and what you cannot)

    it works API compliant

    documented classes API

    must have at least one client involved, preferably more

  • 8/14/2019 From Eclipse to Jazz

    8/46 2005 IBM Corporation

    practical extensibility

    extensible in ways that are known useful

    needed by us, requested by others

    we don't provide hypothetical generality - we want to be extensible in ways thatmatter

    don't over generalize

  • 8/14/2019 From Eclipse to Jazz

    9/46

    2005 IBM Corporation

    stuff, furniture - UI

    eclipse extension architecture is contribution based extensions contribute to the workbench

    the workbench manages and presents the contributions

    enables UI evolution

    3.0 new look

  • 8/14/2019 From Eclipse to Jazz

    10/4610 2008 IBM Corporation

    Key Lessons Modularity matters

    Everything is a plug-in

    no exceptions

    APIs are a huge commitment

    we would rather provide less API than desired (and augment)

    than provide the wrong (or unnecessary) API and need tosupport it indefinitely

    the tyranny of stable APIs

    API layers

    the challenge of product developers

    which API level does our product require and support

    n1, n-2

  • 8/14/2019 From Eclipse to Jazz

    11/4611 2008 IBM Corporation

    Eclipse 3.4 API Tools

    Support to define an API baseline

    e.g. Eclipse 3.3 when working on3.4

    Check access restrictions API javadoc tags:

    @noimplement, @noinstantiate,

    @noextend Detect binary compatibility

    violations Detect version problems

    @since

    Problems are reported duringbuilds

  • 8/14/2019 From Eclipse to Jazz

    12/4612 2008 IBM Corporation

    stable API evolution patterns

    compatibility layer

    I*2 extensions interfaces

    extension interface: IAdaptable

    restart in a new package

  • 8/14/2019 From Eclipse to Jazz

    13/46

    13 2008 IBM Corporation

    extension interfaces: IAdaptable

    supports adding interfaces to existing types

    Interface negotiation

    IPersistable p= (IPersistable ) o.getAdapter(IPersistable.class);p.saveState();

  • 8/14/2019 From Eclipse to Jazz

    14/46

    14 2008 IBM Corporation

    Outline

    Closed Development Open Development

    2003200320002000 20012001 20022002

    JuneMarch JuneJune

    20042004

    June

    20052005 20062006

    NovemberFall June

    3.12.1 3.02.0 3.21.0ProjectStarts

    TechPreview

    OpenSource

    OpenOpen

    SourceSource

    20072007

    June

    3.3

    Built to LastExtensibility

    API

    CommunityTransparency

    Development ProcessAgility

    TeamTools

    20082008

    June

    3.4

  • 8/14/2019 From Eclipse to Jazz

    15/46

    How w e St ar t ed : Closeddeve lopmentHow w e St ar t ed : Closeddeve lopment

    The Swiss Bank approach

    to software development If it hasn't shipped

    it doesnt exist

    Strong firewall betweendevelopers and customers

    The Swiss Bank approach

    to software development If it hasn't shipped

    it doesnt exist

    Strong firewall betweendevelopers and customers

  • 8/14/2019 From Eclipse to Jazz

    16/46

    Shipping Mat t ersShipping Mat t ers

    our ob jec t i ve is t o sh ip so ft w are

    anything that contributes to this goal is good

    anything that does not is bad

    t eam m ember rec ogni t i on i s based on t he ab i l i t y t o

    sh ip quality software

    on time

    t he cu l t u re : " If you ship, then you may speak."

    t he quest ion : "Did they ever ship anything?"

    t he insul t : "They never ship anything!"

    our ob jec t i ve is t o sh ip so ft w are

    anything that contributes to this goal is good

    anything that does not is bad

    t eam m ember rec ogn i t i on i s based on the ab i li t y t o

    sh ip quality software

    on time

    t he cu l t u re : " If you ship, then you may speak."

    t he quest ion: "Did they ever ship anything?"

    t he insul t : "They never ship anything!"

    J ul2005

    Ecl ipse3.0.3

    Mar

    2005

    Ecl ipse

    3.0.2

    Sept2004

    Ecl ipse3.0.1

    June2004

    Ecl ipse3.0

    Feb2004

    Ecl ipse2.1.3

    Oc t2003

    Ecl ipse2.1.2

    June2003

    Ecl ipse2.1.1

    Mar2003

    Ecl ipse2.1

    Mar2003

    Ecl ipse2.0.3

    Nov2002

    Ecl ipse2.0.2

    Sept2002

    Ecl ipse2.0.1

    June2002Ecl ipse2.0

    Nov2001

    Ecl ipse1.0

  • 8/14/2019 From Eclipse to Jazz

    17/46

    Novem ber 2001: Open Sourc eReaction from the development teamNovem ber 2001: Open Sourc eReaction from the development team

    You want usto do what?

    Code in public?

    Have technicaldiscussions in public?

    Answer all thosedumb questions?

    Why are we doing thisagain?

  • 8/14/2019 From Eclipse to Jazz

    18/46

    K ey LessonsK ey Lessons

    Transparency helps existingdevelopment

    Better understanding of currentstatus

    Responding to feedback takes time,but pays off

    Use same communication channelsinside as outside

    Not limited to Open Source projects Open Commercial Development

    Transparency helps existingdevelopment

    Better understanding of currentstatus

    Responding to feedback takes time,but pays off

    Use same communication channelsinside as outside

    Not limited to Open Source projects

    Open Commercial Development CommunityCommunityCommunityCommunity

    Transparency

    Feedbackand Support

    DevelopersDevelopers

  • 8/14/2019 From Eclipse to Jazz

    19/46

    Open Com m erc ia l Developm entOpen Com m erc ia l Developm ent

    Open Commercial Development is more than publishing thesource code

    Open, transparent process, from feature requests andplanning through delivery

    What can the community members do:

    Download milestones, try them, and provide feedback onbetas and incubators, including source code

    Access, Create, and update defects

    Access milestone and component iteration plans

    Access the development wiki

    Participate in discussions on the development communitynewsgroups

    Example: www.jazz.net

    Open Commercial Development is more than publishing thesource code

    Open, transparent process, from feature requests andplanning through delivery

    What can the community members do:

    Download milestones, try them, and provide feedback onbetas and incubators, including source code

    Access, Create, and update defects

    Access milestone and component iteration plans

    Access the development wiki

    Participate in discussions on the development communitynewsgroups

    Example: www.jazz.net

  • 8/14/2019 From Eclipse to Jazz

    20/46

    Out l ineOut l ine

    Closed Development Open Development

    2003200320002000 20012001 20022002

    JuneMarch JuneJune

    20042004

    June

    20052005 20062006

    NovemberFall June

    3.12.1 3.02.0 3.21.0ProjectStarts

    TechPreview

    OpenSource

    OpenOpen

    SourceSource

    20072007

    June

    3.3

    Built to LastExtensibility

    API

    CommunityTransparency

    Development ProcessAgility

    TeamTools

    20082008

    June

    3.4

  • 8/14/2019 From Eclipse to Jazz

    21/46

    Eclipse Lessons

    The Eclipse Way Practices

    milestones

    first

    APIfirst

    endgame

    retrospectives

    always havea client

    continuousintegration

    communityinvolvement

    new &noteworthy

    adaptiveplanning

    continuoustesting

    consume yourown output

    componentcentric

    drive withopen eyes

    validate

    reduce stress

    learn

    enable

    attract

    to latest

    transparency

    validateupdate

    dynamicteams

    show progress

    enable

    explore

    validate

    livebetasfeedback

    signoff

    common agile practices

    common Open Source practices

    scaling-up practices

  • 8/14/2019 From Eclipse to Jazz

    22/46

    Eclipse Lessons

    Our Expanded Practices Today

    milestones

    first

    APIfirst

    endgame

    retrospectives

    always havea client

    continuousintegration

    communityinvolvement

    new &noteworthy

    adaptiveplanning

    continuoustesting

    consume yourown output

    componentcentric

    drive withopen eyes

    validate

    reduce stress

    learn

    enable

    attract

    to latest

    transparency

    validateupdate

    dynamicteams

    show progress

    enable

    explore

    validate

    livebetasfeedback

    signoff

    End of iteration

    demos/reviewsProduct Backlog

    Burndown Stories

    Daily Standup Adoptions

    Expectations PMCBuddy Review

  • 8/14/2019 From Eclipse to Jazz

    23/46

    Eclipse Lessons

    What is behind the Eclipse Way

    Practices underpinned with values

    ship quality on time

    Used, developed and improved over time

    A mix of practices that worked for us

    Another mix of practices works for others

    Practices are from all kinds of sources XP, Scrum, Crystal Clear, RUP,

    Patterns - Organizational Patterns of Agile Software Development Coplien

    It is not low ceremony Approvals, verifications, reviews

    It is agile: incremental, iterative, collaborative, transparent, customizable

    And it scales up

  • 8/14/2019 From Eclipse to Jazz

    24/46

    Eclipse Lessons

    In the Past

    Time

    Effort/Pain

    Level

    Look at calendar.

    All the time in the world

    Heads down

    Say goodbye to your loved ones

    Exhaustion

  • 8/14/2019 From Eclipse to Jazz

    25/46

    Eclipse Lessons

    Iterative No hanging rope

    fitness

    no hanging rope

    stress reduction3.1

    t3.2In the

    past

  • 8/14/2019 From Eclipse to Jazz

    26/46

    Eclipse Lessons

    Iterative Time-boxed

    endgame

    release 3.2

    fitness

    M1

    plan

    develop

    stabilize

    6 weeks

    warm-up

    retrosp

    ective

    initialreleaseplan

    decompression

    3.1

    M2

    plan

    develop

    stabilize

    plan

    develop

    stabilize

    sign-offsign-off sign-off

    6 weeks 6 weeks

    fix

    -spit&polish

    tes

    t

    fix tes

    t

  • 8/14/2019 From Eclipse to Jazz

    27/46

    Eclipse Lessons

    Continuous

    It is all about being continuous

    Continuous iterative and adaptive planning

    Continuous design/refactoring Continuous integration/testing

    Continuous delivering/demos

    Continuous feedback

    Continuous learning

    Many effective teams work like this

  • 8/14/2019 From Eclipse to Jazz

    28/46

    Eclipse Lessons

    Key Lessons

    Agility can scale up to globally distributed teams

    but it would be nice to have better tool support

  • 8/14/2019 From Eclipse to Jazz

    29/46

    Eclipse Lessons

    Outline

    Closed Development Open Development

    2003200320002000 20012001 20022002

    JuneMarch JuneJune

    20042004

    June

    20052005 20062006

    NovemberFall June

    3.12.1 3.02.0 3.21.0ProjectStarts TechPreview

    OpenSource

    OpenOpen

    SourceSource

    20072007

    June

    3.3

    Built to LastExtensibility

    API

    CommunityTransparency

    Development ProcessAgility

    TeamTools

    20082008

    June

    3.4

  • 8/14/2019 From Eclipse to Jazz

    30/46

    Eclipse Lessons

    Reflections from an Eclipse PMC Lead

    Many Eclipse observers do not realize theamount of work/stress/human factor involved in

    shipping on time every time.

    It reminds me of the duck quietly advancing onthe pond, but no one realizes that he is paddlinglike crazy underwater.

    Philippe Mulet former Eclipse PMC Lead

  • 8/14/2019 From Eclipse to Jazz

    31/46

    Eclipse Lessons

    But there are Pain Points

    joining a team

    get my environment configured to be productive

    what is happening in my team

    collecting progress status

    following the teams process

    ad hoc collaboration/sharing of changes

    starting an ad hoc team

    is the fix in the build?

    what will be in the next build? tracking a broken build

    Avoid breaking a build/personal build

    why is this change in the build?

    reconstructing a context for a bug/build failure

    creating, tracking iteration plans

    interrupting development due to a high priority bug fix

    working on multiple releases concurrently

    tracking the code review of a fix

    referencing team artifacts in discussions

    how healthy is a component? collecting project data/metrics?

    Boring and painful

    Collaboration

    Development

    ProjectManagement

  • 8/14/2019 From Eclipse to Jazz

    32/46

    Eclipse Lessons

    Why are we doing Jazz?

    Late 90s: Focus on Point ToolsLate 90s: Focus on Point ToolsWho can build the best Java IDE, the best C IDE, the best Web Tool,

    When we built Eclipse: Focus on One DeveloperWhen we built Eclipse: Focus on One DeveloperSeamless integration across a set of tools to improve the productivity of one developer

    Today, we must focus on the Team and its CollaborationToday, we must focus on the Team and its Collaboration Geographically Distributed

    Accelerated Delivery Demands

    Agility with Predictability

    Innovation and Repeatability

    Increased Need for Transparency

    Seamless integration across

    all the Phases of the Software Lifecycleto improvethe Productivity of the Entire Team.

    Seamless integration acrossall the Phases of the Software Lifecycleto improvethe Productivity of the Entire Team.

  • 8/14/2019 From Eclipse to Jazz

    33/46

    Eclipse Lessons

    Jazz and Team Concert

  • 8/14/2019 From Eclipse to Jazz

    34/46

  • 8/14/2019 From Eclipse to Jazz

    35/46

    Eclipse Lessons

    Collaboration in Context

  • 8/14/2019 From Eclipse to Jazz

    36/46

    Eclipse Lessons

    Collaboration with Context

  • 8/14/2019 From Eclipse to Jazz

    37/46

    Eclipse Lessons

    Scoped builds

    Personal builds

    Continuous team builds Scheduled integration builds

    Collaborate in context on build failures

    Collaboration: Builds

  • 8/14/2019 From Eclipse to Jazz

    38/46

    Eclipse Lessons

    Rules/Process

    All collaborations have underlyingcontext specific rules

    Each project follows aprocess

    Teams own their process

  • 8/14/2019 From Eclipse to Jazz

    39/46

    Eclipse Lessons

    Process manifested through:

    artifact types and their states

    role-specific preconditionsand actions on operationsmanipulating artifacts

    role-specific and permissions

    Eclipse Way

    Scrum

    OpenUP

    Process

  • 8/14/2019 From Eclipse to Jazz

    40/46

    Eclipse Lessons

    Transparency/Visibility: Dashboards

    Viewlets At a glance view on team artifacts

    Three dashboard types:

    project team

    individual user

  • 8/14/2019 From Eclipse to Jazz

    41/46

    Eclipse Lessons

    A Personal Dashboard

  • 8/14/2019 From Eclipse to Jazz

    42/46

    Eclipse Lessons

    A Team Dashboard

  • 8/14/2019 From Eclipse to Jazz

    43/46

    Eclipse Lessons

    Team of Teams Dashboard

  • 8/14/2019 From Eclipse to Jazz

    44/46

    Eclipse Lessons

    Team of Teams Dashboard

  • 8/14/2019 From Eclipse to Jazz

    45/46

    Eclipse Lessons

    Jazz Project Self-Hosting since Oct 2006

    Beaverton

    BuildProcess

    Ottawa

    Source Control

    ReportingCommunity Site

    Zurich

    Work ItemsAgile Planning

    Code Coverage

    Bangalore

    VS Client

    Lexington

    Source ControlRequirementsInterop

    Raleigh

    RepositoryWeb UI

    Toronto

    JazzDevelopment

    Server

  • 8/14/2019 From Eclipse to Jazz

    46/46

    Eclipse Lessons

    Summary: Our JourneyEclipse Way

    Try it yourself on www.jazz.net