SlideShare a Scribd company logo
1 of 23
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?
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 meeting
  List of features to develop
  List of tasks and Jira issues
     jira.xwiki.org
Investigation phase
  UI/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 repository
  https://github.com/xwiki
Create local feature branch
Build Management
               New Maven module
                   Project Descriptor
                   Directory structure
                   Dependencies
                   Project hierarchy and
                     inheritance
                   Build plugins
                   Local and remote
                     repositories
Developing Environment (IDE)
Eclipse
  Import 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
Committing your code
Review your changes
1..* Local commits (local branch)
Push local branch to remote repository
Each commit triggers notification mails
  Code review
  Discussions
Send a mail with the status of your work
  Ask for feedback
Merging your code
Quality assurance phase
  Apply code review suggestions
  Interface localization
     l10n.xwiki.org
Merge your remote branch into master
  A couple of days before the release
  Solve any existing merge conflicts
Continuous Integration
Each commit triggers a build on Jenkins
  ci.xwiki.org
Runs tests (Unit and functional)
Build reports
Notification mails
Push Maven artifact snapshots to Nexus
  nexus.xwiki.org
Others can now depend on your code
Functional Tests
UI Tests (Selenium/WebDriver)
  Page Objects strategy
Validation (Web Standards)
Security (XSS)
Accessibility
  Web Content Accessibility Guidelines
Fix regressions and update tests
Documentation
Document the feature
  extensions.xwiki.org
  User/Admin/Developer documentation
Link the Jira issue to the documentation
Update the release notes
  www.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 maven
  Run automated release script
  Publish release artifacts on Nexus
Announce the new release
  Write release notes
  Update xwiki.org, wikipedia, wikimatrix
  Blog, Twitter, announcement mail
Release process
Maintenance
Maintenance and iterations
Receive bug or improvement reports
  Jira 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
Overview
Thank you!

More Related Content

What's hot

Dealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetupDealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetupViktor Sadovnikov
 
Wiki Refactoring as Mind Map Reshaping (CAiSE'12)
Wiki Refactoring as Mind Map Reshaping (CAiSE'12)Wiki Refactoring as Mind Map Reshaping (CAiSE'12)
Wiki Refactoring as Mind Map Reshaping (CAiSE'12)Gorka Puente
 
Learning Git and GitHub - BIT GDSC.pdf
Learning Git and GitHub - BIT GDSC.pdfLearning Git and GitHub - BIT GDSC.pdf
Learning Git and GitHub - BIT GDSC.pdfJayprakash677449
 
UC San Diego Campus LISA 2014 - Source Code Management
UC San Diego Campus LISA 2014 - Source Code ManagementUC San Diego Campus LISA 2014 - Source Code Management
UC San Diego Campus LISA 2014 - Source Code ManagementMatthew Critchlow
 
Lessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and BlinkLessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and BlinkBruno Abinader
 

What's hot (8)

XWiki on GlassFish TV
XWiki on GlassFish TVXWiki on GlassFish TV
XWiki on GlassFish TV
 
Dealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetupDealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetup
 
Wiki Refactoring as Mind Map Reshaping (CAiSE'12)
Wiki Refactoring as Mind Map Reshaping (CAiSE'12)Wiki Refactoring as Mind Map Reshaping (CAiSE'12)
Wiki Refactoring as Mind Map Reshaping (CAiSE'12)
 
Learning Git and GitHub - BIT GDSC.pdf
Learning Git and GitHub - BIT GDSC.pdfLearning Git and GitHub - BIT GDSC.pdf
Learning Git and GitHub - BIT GDSC.pdf
 
UC San Diego Campus LISA 2014 - Source Code Management
UC San Diego Campus LISA 2014 - Source Code ManagementUC San Diego Campus LISA 2014 - Source Code Management
UC San Diego Campus LISA 2014 - Source Code Management
 
Lessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and BlinkLessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and Blink
 
Enterprise Griffon
Enterprise GriffonEnterprise Griffon
Enterprise Griffon
 
Git version control
Git version controlGit version control
Git version control
 

Viewers also liked (10)

XWiki's Development Process
XWiki's Development ProcessXWiki's Development Process
XWiki's Development Process
 
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
Interconectarea Semantica A Datelor In Contextul Managementului Informatiilor...
 
Mashups
MashupsMashups
Mashups
 
XWiki Improvements Review (ver 2.4 - 5.1)
XWiki Improvements Review (ver 2.4 - 5.1)XWiki Improvements Review (ver 2.4 - 5.1)
XWiki Improvements Review (ver 2.4 - 5.1)
 
XWiki Usability Testing Sessions
XWiki Usability Testing SessionsXWiki Usability Testing Sessions
XWiki Usability Testing Sessions
 
Evolution of CSS
Evolution of CSSEvolution of CSS
Evolution of CSS
 
Software Testing
Software TestingSoftware Testing
Software Testing
 
Visual Communication through Infographics
Visual Communication through InfographicsVisual Communication through Infographics
Visual Communication through Infographics
 
Captcha
CaptchaCaptcha
Captcha
 
Visual Cryptography
Visual CryptographyVisual Cryptography
Visual Cryptography
 

Similar to Development Process, the XWiki way

Leading a Community-Driven Open Source Project
Leading a Community-Driven Open Source ProjectLeading a Community-Driven Open Source Project
Leading a Community-Driven Open Source ProjectVincent Massol
 
SMWCon Spring 2012 SMW+ Team Dev Update
SMWCon Spring 2012 SMW+ Team Dev UpdateSMWCon Spring 2012 SMW+ Team Dev Update
SMWCon Spring 2012 SMW+ Team Dev UpdateJesse Wang
 
XWiki SAS development practices
XWiki SAS development practicesXWiki SAS development practices
XWiki SAS development practicesVincent Massol
 
Enabling an Accessible Web 2.0
Enabling an Accessible Web 2.0Enabling an Accessible Web 2.0
Enabling an Accessible Web 2.0bgibson
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Dennys Hsieh
 
Jist tutorial semantic wikis and applications
Jist tutorial   semantic wikis and applicationsJist tutorial   semantic wikis and applications
Jist tutorial semantic wikis and applicationsJesse Wang
 
The site architecture you can edit
The site architecture you can editThe site architecture you can edit
The site architecture you can editOpen Stack
 
Lombardi Wikis - collaborative information development, with DITA XML in the mix
Lombardi Wikis - collaborative information development, with DITA XML in the mixLombardi Wikis - collaborative information development, with DITA XML in the mix
Lombardi Wikis - collaborative information development, with DITA XML in the mixguest47c1f1
 
Lombardi Wikis - a CenTex DITA UG panel presentation
Lombardi Wikis - a CenTex DITA UG panel presentationLombardi Wikis - a CenTex DITA UG panel presentation
Lombardi Wikis - a CenTex DITA UG panel presentationLisa Dyer
 
Sgmp Wiki - GenNxt Wiki Concepts
Sgmp Wiki - GenNxt Wiki ConceptsSgmp Wiki - GenNxt Wiki Concepts
Sgmp Wiki - GenNxt Wiki Conceptsprasadburra
 
What is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna NookellaWhat is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna Nookellamuralikrishnanookella
 
Gerência de Configuração com Maven
Gerência de Configuração com MavenGerência de Configuração com Maven
Gerência de Configuração com Mavenelliando dias
 
Writing Java EE microservices using WildFly Swarm
Writing Java EE microservices using WildFly SwarmWriting Java EE microservices using WildFly Swarm
Writing Java EE microservices using WildFly SwarmComsysto Reply GmbH
 
Semantic Tagging for the XWiki Platform with Zemanta and DBpedia
Semantic Tagging for the XWiki Platform with Zemanta and DBpediaSemantic Tagging for the XWiki Platform with Zemanta and DBpedia
Semantic Tagging for the XWiki Platform with Zemanta and DBpediaElena-Oana Tabaranu
 

Similar to Development Process, the XWiki way (20)

Leading a Community-Driven Open Source Project
Leading a Community-Driven Open Source ProjectLeading a Community-Driven Open Source Project
Leading a Community-Driven Open Source Project
 
Developing XWiki
Developing XWikiDeveloping XWiki
Developing XWiki
 
Comparisons Wiki vs CMS
Comparisons Wiki vs CMSComparisons Wiki vs CMS
Comparisons Wiki vs CMS
 
SMWCon Spring 2012 SMW+ Team Dev Update
SMWCon Spring 2012 SMW+ Team Dev UpdateSMWCon Spring 2012 SMW+ Team Dev Update
SMWCon Spring 2012 SMW+ Team Dev Update
 
XWiki SAS development practices
XWiki SAS development practicesXWiki SAS development practices
XWiki SAS development practices
 
Mla2011 final draft
Mla2011 final draftMla2011 final draft
Mla2011 final draft
 
Enabling an Accessible Web 2.0
Enabling an Accessible Web 2.0Enabling an Accessible Web 2.0
Enabling an Accessible Web 2.0
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)
 
Jist tutorial semantic wikis and applications
Jist tutorial   semantic wikis and applicationsJist tutorial   semantic wikis and applications
Jist tutorial semantic wikis and applications
 
The site architecture you can edit
The site architecture you can editThe site architecture you can edit
The site architecture you can edit
 
Building XWiki
Building XWikiBuilding XWiki
Building XWiki
 
Lombardi Wikis - collaborative information development, with DITA XML in the mix
Lombardi Wikis - collaborative information development, with DITA XML in the mixLombardi Wikis - collaborative information development, with DITA XML in the mix
Lombardi Wikis - collaborative information development, with DITA XML in the mix
 
Lombardi Wikis - a CenTex DITA UG panel presentation
Lombardi Wikis - a CenTex DITA UG panel presentationLombardi Wikis - a CenTex DITA UG panel presentation
Lombardi Wikis - a CenTex DITA UG panel presentation
 
Sgmp Wiki - GenNxt Wiki Concepts
Sgmp Wiki - GenNxt Wiki ConceptsSgmp Wiki - GenNxt Wiki Concepts
Sgmp Wiki - GenNxt Wiki Concepts
 
Ticer2005
Ticer2005Ticer2005
Ticer2005
 
What is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna NookellaWhat is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna Nookella
 
Gerência de Configuração com Maven
Gerência de Configuração com MavenGerência de Configuração com Maven
Gerência de Configuração com Maven
 
Writing Java EE microservices using WildFly Swarm
Writing Java EE microservices using WildFly SwarmWriting Java EE microservices using WildFly Swarm
Writing Java EE microservices using WildFly Swarm
 
Semantic Tagging for the XWiki Platform with Zemanta and DBpedia
Semantic Tagging for the XWiki Platform with Zemanta and DBpediaSemantic Tagging for the XWiki Platform with Zemanta and DBpedia
Semantic Tagging for the XWiki Platform with Zemanta and DBpedia
 
Subversion and bug tracking
Subversion and bug trackingSubversion and bug tracking
Subversion and bug tracking
 

Recently uploaded

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 

Recently uploaded (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 

Development Process, the XWiki way

  • 1. Development Process, the XWiki way Marius Florea, Eduard Moraru Ecaterina Moraru, Raluca Stavro www.xwiki.org
  • 2. What is XWiki ? Developing collaborative application using wiki paradigm 5 top level projects LGPL open source license Mainly developed in JAVA
  • 4. Adding a new feature
  • 5. 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
  • 6. Roadmap Discuss new feature ideas (mailing lists, IRC) Roadmap meeting List of features to develop List of tasks and Jira issues jira.xwiki.org Investigation phase UI/UX mockup(s) Design and implementation details page Discuss investigation results and vote
  • 8. Source Management Distributed Version Control (Git) Clone remote sources to a local repository https://github.com/xwiki Create 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 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
  • 12. Committing your code Review your changes 1..* Local commits (local branch) Push local branch to remote repository Each commit triggers notification mails Code review Discussions Send a mail with the status of your work Ask for feedback
  • 13. Merging your code Quality assurance phase Apply code review suggestions Interface localization l10n.xwiki.org Merge your remote branch into master A couple of days before the release Solve any existing merge conflicts
  • 14. Continuous Integration Each commit triggers a build on Jenkins ci.xwiki.org Runs tests (Unit and functional) Build reports Notification mails Push Maven artifact snapshots to Nexus nexus.xwiki.org Others can now depend on your code
  • 15. Functional Tests UI Tests (Selenium/WebDriver) Page Objects strategy Validation (Web Standards) Security (XSS) Accessibility Web Content Accessibility Guidelines Fix regressions and update tests
  • 16. Documentation Document the feature extensions.xwiki.org User/Admin/Developer documentation Link the Jira issue to the documentation Update the release notes www.xwiki.org/xwiki/bin/view/ReleaseNotes/ Backwards compatibility and migration notes Close the Jira issue
  • 18. Release process Make sure the build passes on CI Release on Jira (review opened issues, create new versions) Release on maven Run automated release script Publish release artifacts on Nexus Announce the new release Write release notes Update xwiki.org, wikipedia, wikimatrix Blog, Twitter, announcement mail
  • 21. Maintenance and iterations Receive bug or improvement reports Jira 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

Editor's Notes

  1. Mention clirr and clover as build plugins
  2. Mention how to install jars and xars for testing purposes.
  3. What does push to remote branch mean and what`s the difference between a push and a commit (distributed)
  4. Component FixFor Fields...