The new development process: How child workspaces will ... · Contributions to the OOo project The...

27
The new development process / How to contribute - Slide 1 OOoCon 2004 - Berlin The new development process: How child workspaces will improve the developer experience and the quality (aka How to Contribute)

Transcript of The new development process: How child workspaces will ... · Contributions to the OOo project The...

Page 1: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 1

OOoCon 2004 - Berlin

The new development process:

How child workspaces will

improve the developer

experience and the quality (aka

How to Contribute)

Page 2: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 2

Agenda

Speaker IntroductionContributions to the OOo projectThe JCA and other stuffA new/different development processChild workspaces in praticeQ & A

Page 3: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 3

Who I am

StarWriter 2.0 (1994)Program Manager OOo within SunProject Lead ToolsProject Lead PortingProject Lead External Member of Community Council

Page 4: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 4

Contributions to OOo

Use the productDownload, install and use OOo

http://download.openoffice.orgGive feedback via Survey

http://www.openoffice.org/welcome/regitsratrion-site.html

Donate money

http://www.openoffice.org/contributing/donate.html

Join a projectReview work, give feedback via mail, IssueZillaRequest for enhancements, input for specs.

ParticipateSubscribe to mailing listsAsk questions and give answers

Page 5: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 5

Contributions to OOo

Become a QA expertUse the bleeding edge (biweekly snapshots)Review and write issuestestplans

Core DevelopmentAdd new functionalityPorting

DevelopUse the APIComponentsCompile and review the code

LocalizeNew localizations

Page 6: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 6

The JCA and other stuff

Code contributionsSign the JCA for changes or additions to the code basis or localization

External componentsCode: LGPL, BSD style

Get documented within external projectOther artifacts

Licenses compliance

Page 7: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 7

External Components

Page 8: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 8

Software Development

PreparationWriting a SpecificationPlanning a change

VerificationQA with a testplanDoes the beast compile

ImplementationCoding Hacking

Page 9: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 9

OOo complexity

The PlatformsUnix (Linux, Solaris, MacOSX and other)

Different baselinesWindows

LocalizationUI-FreezeLayout

The Code sizeThe beast need hours to build (interface changes)It's a moving target (several hundred code changes per day)Architectural dependencies (layered arch.)

Page 10: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 10

The traditional model

Continous integration and buildDeveloper has to stay until their changes has been build and smoke tested (tinderbox builds)The build has to be fixed immediatly

Stableizing a ReleaseUntil it is ready/bug free

Release early and oftenEarly and often releases ensures quick bug findings

Page 11: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 11

The problems with it

Continous integration and buildToo many changes within a build cycle The problem of not having atomic commits

Stableizing a ReleaseCan be an unpredictable process

Release early and oftenA developer wants user to test codeA user wants already tested code and not extra burden writing bugs

Page 12: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 12

The OOo 2.0 numbers

>100 developers committed to the repository

Fixing > 4000 issuesReported by > 500 people

Committed > 100,000 times450 files per day

Page 13: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 13

The new process

Continious commitsQA after integration Having known problems in the master buildNot finished items in the tree

Scheduled commitsQA before integration into the codelineHave less problem on the master build A new feature only get integrated when it is readyPossibility to reschedule target milestone

Page 14: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 14

Child workspace

A child workspace is implemented as a CVS branch

Page 15: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 15

Cws resync

A cvs branch can be merged backed without conflicts only if now conflicted changes has been done in the meantime“Long” living cws will need a resync first before joined back

Page 16: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 16

Tools for cws

Create a new child workspace – cwscreateAdd a new module – cwsaddUpdate a child workspace – cwsresyncAnalyze a child workspace - cwsanlyzeRegister a new task – cwsaddtaskEnvironment Information System (EIS)

http://tools.openoffice.org/dev_docs/ooo-cws-tools-doc.sxwhttp://eis.services.openoffice.org

Page 17: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 17

EIS – cws data

Page 18: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 18

Child workspace creation

Create a new child workspaceRegister in database in EISWhat's the purpose ?

Provide a description

What level of QA is needed

UI relevant

Help relevant

-> Specification needed ?!

Timeframe

What are the impactsRegarding the user experience ?

To other developers ?

Page 19: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 19

cwscreate

Page 20: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 20

Cws lifetime

The quick thing (less than one day, some days)There's no impact, it just fix the damn thing

Trivial bug fixes

Build problems

The big thing (months or years)New functionality

Leads to new UI, translation is needed

Needs documented in Help, Documentation

Specification is needed

New architecture Other developer need to know about these changes

Page 21: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 21

Environment Information System

Page 22: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 22

EIS - releases

Page 23: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 23

EIS - integrated

Page 24: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 24

Cws stats

Page 25: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 25

A better solution

Continious integration and buildSimulate atomic commits of file setsGroup issues to logical entities

Stableizing a ReleaseMinimize the time needed for stableizing the productBe able to release a stable code base at any time

Release early and oftenRelease often already tested codeIt does not matter if a features gets in weeks earlier or later

Page 26: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 26

ToDo's and the vision

Get quick cws round trips for “need to have” thingsSpeed up the patch process

Patch Gatekeeper wanted

Get automated tinderbox builds for cwsQA wanted to test before integration

Enhance smoketest and automated test and integrate them into the build system

Page 27: The new development process: How child workspaces will ... · Contributions to the OOo project The JCA and other stuff A new/different development process Child workspaces in pratice

The new development process / How to contribute - Slide 27

Summary

Be everytime in a state to releaseQA before releaseGrant liberal commit access to the cvs repositoryThink twice before nomination for integration !Get assistance !