Development Process, the XWiki way
-
Upload
eduard-moraru -
Category
Technology
-
view
13.033 -
download
3
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