Your SlideShare is downloading. ×
Development Process, the XWiki way
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Development Process, the XWiki way


Published on

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

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

    • 1. Development Process, the XWiki way Marius Florea, Eduard Moraru Ecaterina Moraru, Raluca Stavro
    • 2. What is XWiki ? Developing collaborative application using wiki paradigm 5 top level projects LGPL open source license Mainly developed in JAVA
    • 3. What is XWiki?
    • 4. Adding a new feature
    • 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. 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. Implementation
    • 8. Source ManagementDistributed Version Control (Git)Clone remote sources to a local repository local feature branch
    • 9. Build Management New Maven module Project Descriptor Directory structure Dependencies Project hierarchy and inheritance Build plugins Local and remote repositories
    • 10. Developing Environment (IDE)Eclipse Import maven projects (m2e plugin) Apply checkstyle rules (checkstyle plugin) Format code (formatting rules) Remote Java application debugging
    • 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. 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. 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. 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. Functional TestsUI Tests (Selenium/WebDriver) Page Objects strategyValidation (Web Standards)Security (XSS)Accessibility Web Content Accessibility GuidelinesFix regressions and update tests
    • 16. DocumentationDocument the feature User/Admin/Developer documentationLink the Jira issue to the documentationUpdate the release notes Backwards compatibility and migration notesClose the Jira issue
    • 17. Release
    • 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, wikipedia, wikimatrix Blog, Twitter, announcement mail
    • 19. Release process
    • 20. Maintenance
    • 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. Overview
    • 23. Thank you!