SlideShare ist ein Scribd-Unternehmen logo
1 von 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!

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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
 

Andere mochten auch (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
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Kürzlich hochgeladen

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 

Kürzlich hochgeladen (20)

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 

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

Hinweis der Redaktion

  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...