0
Development Process,   the XWiki way    Marius Florea, Eduard Moraru   Ecaterina Moraru, Raluca Stavro           www.xwiki...
What is XWiki ?                  Developing                   collaborative                   application using wiki      ...
What is XWiki?http://www.xwiki.org
Adding a new feature
Release Cycles1 cycle per year (v4.x)6 minor releases per cycle (v4.0-v4.5)  2.5 months per minor release  1-3 Milestones ...
RoadmapDiscuss new feature ideas (mailing lists, IRC)Roadmap meeting  List of features to develop  List of tasks and Jira ...
Implementation
Source ManagementDistributed Version Control (Git)Clone remote sources to a local repository  https://github.com/xwikiCrea...
Build Management               New Maven module                   Project Descriptor                   Directory structure...
Developing Environment (IDE)Eclipse  Import maven projects (m2e plugin)  Apply checkstyle rules (checkstyle plugin)  Forma...
Types of modulesComponents (jar)  Interface and multiple implementations  Inversion of control (dependency injection)  Reg...
Committing your codeReview your changes1..* Local commits (local branch)Push local branch to remote repositoryEach commit ...
Merging your codeQuality assurance phase  Apply code review suggestions  Interface localization     l10n.xwiki.orgMerge yo...
Continuous IntegrationEach commit triggers a build on Jenkins  ci.xwiki.orgRuns tests (Unit and functional)Build reportsNo...
Functional TestsUI Tests (Selenium/WebDriver)  Page Objects strategyValidation (Web Standards)Security (XSS)Accessibility ...
DocumentationDocument the feature  extensions.xwiki.org  User/Admin/Developer documentationLink the Jira issue to the docu...
Release
Release processMake sure the build passes on CIRelease on Jira (review opened issues, create new versions)Release on maven...
Release process
Maintenance
Maintenance and iterationsReceive bug or improvement reports  Jira gardening upon received notification mailsFix issues an...
Overview
Thank you!
Upcoming SlideShare
Loading in...5
×

Development Process, the XWiki way

12,298

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
12,298
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Mention clirr and clover as build plugins
  • Mention how to install jars and xars for testing purposes.
  • What does push to remote branch mean and what`s the difference between a push and a commit (distributed)
  • Component FixFor Fields...
  • Transcript of "Development Process, the XWiki way"

    1. 1. Development Process, the XWiki way Marius Florea, Eduard Moraru Ecaterina Moraru, Raluca Stavro www.xwiki.org
    2. 2. What is XWiki ? Developing collaborative application using wiki paradigm 5 top level projects LGPL open source license Mainly developed in JAVA
    3. 3. What is XWiki?http://www.xwiki.org
    4. 4. Adding a new feature
    5. 5. Release Cycles1 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 developmentTimeboxing vs Feature-drivenEarly feedback
    6. 6. RoadmapDiscuss new feature ideas (mailing lists, IRC)Roadmap meeting List of features to develop List of tasks and Jira issues jira.xwiki.orgInvestigation phase UI/UX mockup(s) Design and implementation details pageDiscuss investigation results and vote
    7. 7. Implementation
    8. 8. Source ManagementDistributed Version Control (Git)Clone remote sources to a local repository https://github.com/xwikiCreate local feature branch
    9. 9. Build Management New Maven module Project Descriptor Directory structure Dependencies Project hierarchy and inheritance Build plugins Local and remote repositories
    10. 10. Developing Environment (IDE)Eclipse Import maven projects (m2e plugin) Apply checkstyle rules (checkstyle plugin) Format code (formatting rules) Remote Java application debugging
    11. 11. Types of modulesComponents (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
    12. 12. Committing your codeReview your changes1..* Local commits (local branch)Push local branch to remote repositoryEach commit triggers notification mails Code review DiscussionsSend a mail with the status of your work Ask for feedback
    13. 13. Merging your codeQuality assurance phase Apply code review suggestions Interface localization l10n.xwiki.orgMerge your remote branch into master A couple of days before the release Solve any existing merge conflicts
    14. 14. Continuous IntegrationEach commit triggers a build on Jenkins ci.xwiki.orgRuns tests (Unit and functional)Build reportsNotification mailsPush Maven artifact snapshots to Nexus nexus.xwiki.orgOthers can now depend on your code
    15. 15. Functional TestsUI Tests (Selenium/WebDriver) Page Objects strategyValidation (Web Standards)Security (XSS)Accessibility Web Content Accessibility GuidelinesFix regressions and update tests
    16. 16. DocumentationDocument the feature extensions.xwiki.org User/Admin/Developer documentationLink the Jira issue to the documentationUpdate the release notes www.xwiki.org/xwiki/bin/view/ReleaseNotes/ Backwards compatibility and migration notesClose the Jira issue
    17. 17. Release
    18. 18. Release processMake sure the build passes on CIRelease on Jira (review opened issues, create new versions)Release on maven Run automated release script Publish release artifacts on NexusAnnounce the new release Write release notes Update xwiki.org, wikipedia, wikimatrix Blog, Twitter, announcement mail
    19. 19. Release process
    20. 20. Maintenance
    21. 21. Maintenance and iterationsReceive bug or improvement reports Jira gardening upon received notification mailsFix issues and write tests to avoid future regressionsKeep an eye on the triggered CI buildClose resolved Jira issuesProvide support on the public mailing list related to your feature
    22. 22. Overview
    23. 23. Thank you!
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×