the new development process: how child workspaces will ... · contributions to the ooo project the...
TRANSCRIPT
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)
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
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
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
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
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
The new development process / How to contribute - Slide 7
External Components
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
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.)
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
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
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
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
The new development process / How to contribute - Slide 14
Child workspace
A child workspace is implemented as a CVS branch
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
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
The new development process / How to contribute - Slide 17
EIS – cws data
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 ?
The new development process / How to contribute - Slide 19
cwscreate
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
The new development process / How to contribute - Slide 21
Environment Information System
The new development process / How to contribute - Slide 22
EIS - releases
The new development process / How to contribute - Slide 23
EIS - integrated
The new development process / How to contribute - Slide 24
Cws stats
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
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
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 !