Development Process, the XWiki way

download Development Process, the XWiki way

If you can't read please download the document

Transcript of Development Process, the XWiki way

Development Process,
the XWiki way

Marius Florea, Eduard Moraru Ecaterina Moraru, Raluca Stavro

www.xwiki.org

What is XWiki ?

Developing collaborative application using wiki paradigm

5 top level projects

LGPL open source license

Mainly developed in JAVA

What is XWiki?

Fabio MancinelliFabio MancinelliGuillaume LerougeGuillaume LerougeMarius FloreaMarius FloreaRaluca StavroRaluca StavroJerome VelociterJerome VelociterVincent MassolVincent MassolThomas MortagneThomas MortagneJean-Vincent DreanJean-Vincent DreanEduard MoraruEduard MoraruFlorin Ciubotaru Florin Ciubotaru http://www.xwiki.org

Adding a new feature

Release Cycles

1 cycle per year (v4.x)

6 minor releases per cycle (v4.0-v4.5)2.5 months per minor release

1-3 Milestones (3 weeks each)

1-2 Release Candidates (2 weeks each)

Iterative development

Timeboxing vs Feature-driven

Early feedback

Roadmap

Discuss new feature ideas (mailing lists, IRC)

Roadmap meetingList of features to develop

List of tasks and Jira issuesjira.xwiki.org

Investigation phaseUI/UX mockup(s)

Design and implementation details page

Discuss investigation results and vote

Implementation

Source Management

Distributed Version Control (Git)

Clone remote sources to a local repositoryhttps://github.com/xwiki

Create local feature branch

Build Management

New Maven moduleProject Descriptor

Directory structure

Dependencies

Project hierarchy and inheritance

Build plugins

Local and remote repositories

Mention clirr and clover as build plugins

Developing Environment (IDE)

EclipseImport maven projects (m2e plugin)

Apply checkstyle rules (checkstyle plugin)

Format code (formatting rules)

Remote Java application debugging

Types of modules

Components (jar)Interface and multiple implementations

Inversion of control (dependency injection)

Registration

Unit testing (TDD)

XWiki applications (xar)Collection of wiki pages (XML files)

Structured data (objects)

Scripts (Velocity, Groovy, etc.)

JavaScript/CSS extensions

Mention how to install jars and xars for testing purposes.

Committing your code

Review your changes

1..* Local commits (local branch)

Push local branch to remote repository

Each commit triggers notification mailsCode review

Discussions

Send a mail with the status of your workAsk for feedback

What does push to remote branch mean and what`s the difference between a push and a commit (distributed)

Merging your code

Quality assurance phaseApply code review suggestions

Interface localizationl10n.xwiki.org

Merge your remote branch into masterA couple of days before the release

Solve any existing merge conflicts

Continuous Integration

Each commit triggers a build on Jenkinsci.xwiki.org

Runs tests (Unit and functional)

Build reports

Notification mails

Push Maven artifact snapshots to Nexusnexus.xwiki.org

Others can now depend on your code

Functional Tests

UI Tests (Selenium/WebDriver)Page Objects strategy

Validation (Web Standards)

Security (XSS)

AccessibilityWeb Content Accessibility Guidelines

Fix regressions and update tests

Documentation

Document the featureextensions.xwiki.org

User/Admin/Developer documentation

Link the Jira issue to the documentation

Update the release noteswww.xwiki.org/xwiki/bin/view/ReleaseNotes/

Backwards compatibility and migration notes

Close the Jira issue

Release

Release process

Make sure the build passes on CI

Release on Jira (review opened issues, create new versions)

Release on mavenRun automated release script

Publish release artifacts on Nexus

Announce the new releaseWrite release notes

Update xwiki.org, wikipedia, wikimatrix

Blog, Twitter, announcement mail

Release process

Maintenance

Maintenance and iterations

Receive bug or improvement reportsJira gardening upon received notification mails

Fix issues and write tests to avoid future regressions

Keep an eye on the triggered CI build

Close resolved Jira issues

Provide support on the public mailing list related to your feature

Component

FixFor

Fields...

Overview

Thank you!

Click to edit the title text format