SlideShare a Scribd company logo
XWiki Development Practices
seen by XWiki SAS
Vincent Massol
CTO XWiki SAS
Committer on XWiki open source project
@vmassol
12 May 2016
Agenda
• Versioning & Cycles
• Roadmap Process
• Release Managers
• Developing a Feature
• Committing
• Backward
Compatibility
• XWiki Days
• Automated Checks
• Coding Best Practices
• Testing
• Servers Overview
• Contrib
Versioning and Cycles
• Yearly cycles: XWiki 7.x, XWiki 8.x
• 4 major releases per year: N.1 till N.4
• Bugfix releases possible (e.g. 7.4.3)
• A major release is split into 4 releases: M1, M2, RC1 and Final
• A major release spans 2.5 months (3w for M1 and M2, 2w for RC1 and Final)
• When RC1 is released only bugfixes are supposed to be allowed till the Final
• Roadmap decides what XWiki SAS employees work on for each release
• LTS = last version from the previous cycle
• Support of 3 branches on xwiki.org: dev, stable, LTS
• Time boxing!
Source: http://dev.xwiki.org/xwiki/bin/view/Community/VersioningAndReleasePractices
Roadmap Process
• After RC1 is released, internal meeting organized inside XWiki SAS, then proposed on devs list
• With one representative of each XWiki SAS domain
• Client Architects + Devs:Anca
• Client PMs: Nicolas
• XCS: Iustin
• Sales & Marketing: Guillaume + Benjamin
• Infra: Fabio
• Support & QA: Silvia + Oana
• Strategy: Ludovic
• Research: Caleb
• Product:Vincent
• Usability: Caty
• At the same time as other product roadmap: all products are developed by the XWiki SAS Product team
• VOTE on features + Important small JIRA issues
• Communications: roadmap@xwiki.com
Release Manager
• In charge of doing the release for a major version (from M1 to Final)
• In charge of making sure everyone converges on the date (time boxing!) + monitors that CI passes
• Rolling Release Managers across all XWiki SAS Product team members
• Defined at http://dev.xwiki.org/xwiki/bin/view/ReleasePlans/#HNextReleaseManagers
• Release Plan Application at http://dev.xwiki.org/xwiki/bin/view/ReleasePlans
Source: http://dev.xwiki.org/xwiki/bin/view/Community/DevelopmentPractices#HReleaseManagerRole
Developing a feature (1/2)
1. Meeting with Stakeholders to gather use cases & priorities
• Create full list of JIRA tasks (at least one JIRA per use case)
• Update http://www.xwiki.org/xwiki/bin/view/Roadmaps/
• Set fix versions for M1, M2, RC1
2. Develop use case by use case (JIRA issue per JIRA issue)
• With automated tests
• Commit as much as possible and at least once a use case is finished
• CI (Jenkins on ci.xwiki.org) executes and proves it doesn’t break anything
• Document: add to release notes + reference documentation
• Close JIRA issue
3. Repeat 2
Developing a feature (2/2)
1. If risk somewhere, send mail to roadmap@xwiki.com to warn/ask what to do
2. At cycle stabilization release time (*.3+), meeting with stakeholders to validate feature can
be considered “finished”
3. After each release, stakeholders should validate the implementation done and verify it
matches the needs
Committing
• Commit as frequently as possible
• Allows code reviews
• Allows integration (CI)
• But working code ofc, hence automated tests
• Lazy commit rule: allow to commit but be prepared to revert if someone asks
• For complex things, not sure of yourself, best is to allow make a proposal on the devs list
• For very important things:VOTE
• 72 hours
• +1, 0, -1
• Need no veto to pass
Backward Compatibility
• Extremely important: XWiki is a platform. Same as a programming language!
• Old extensions need to continue working
• We don’t remove anything much
• And certainly not scripting APIs
• Instead we deprecate and move to Legacy modules
• Use @Unstable annotations for Java APIs to signify a new API that can be modified
• @Unstable can only stay for 1 full cycle
Source: http://dev.xwiki.org/xwiki/bin/view/Community/DevelopmentPractices#HBackwardCompatibility
XWiki Days
• BFD = Bug Closing Day
• BFD Goals
• Have more bugs closed than created over 1600 days &
365 days
• Close issues, not especially fix them (duplicates, won’t fix,
etc)
• Take low hanging fruits
• 101 BFDs so far!
• Others done:
• Deprecation Fixing Day
• DocHour Day
• Pull Request Day
Source: http://dev.xwiki.org/xwiki/bin/view/Community/XWikiDays
Automated Checks (1/2)
• Part of the Build
• Style checks with Checkstyle
• Verify that components.txt contains all Components
• Verify that Unstable annotation don't stay too long
• Verify that Script Services are not located in the internal package
• Verify header licenses
• Backward compatibility checks with revapi
• Verify that all plugins have versions specified
• Verify that we don't use Commons Lang < 3
• Verify the correct JUnit artifact is used (junit-dep and not junit)
• Verify we don't use Commons Logging or Log4j (since we use SLF4J)
Source: http://dev.xwiki.org/xwiki/bin/view/Community/Building#HAutomaticChecks
Automated Checks (2/2)
• Part of the Build
• Verify that the Java version used to release XWiki is correct (e.g. Java 8 starting with XWiki 8.1,
Java 7 for XWiki 6.0 and Java 6 before)
• Verify that Javadoc exist (in the release profile, this is a Maven Central requirement)
• In Commons: Verify that Commons modules don't have a dependency on Rendering and Platform
modules
• In Rendering:Verify that Rendering modules don't have a dependency on Platform modules
• For XARs, verify format and content using the XAR Plugin
• Verify that Test Percentage Coverage don't go down
• More checks on Sonar but not enforced at this time
Coding Best Practices
• Some defined in Checkstyle
• Others defined on http://dev.xwiki.org/xwiki/bin/view/Community/CodeStyle & http://
dev.xwiki.org/xwiki/bin/view/Community/DevelopmentPractices
• Applications Best Practices at http://dev.xwiki.org/xwiki/bin/view/Community/
ApplicationDevelopmentBestPractices
• Work in progress
• For example: location of Data and Code pages in discussion ATM
• Validated by build for Checkstyle and manual code reviews
• Diff emails sent on commits
• Committers duty is to review commits, see http://dev.xwiki.org/xwiki/bin/view/
Community/Committership
• Anyone can propose new ways by sending proposal on devs mailing list
Testing
• Unit tests with JUnit
• Custom framework to easily test Components with @Rule
MockitoComponentMockingRule
• Some other JUnit Rules such as @Rule AllLogRule
• Unit tests must not output logs during test. Verification in build but need to be activated
more and more on modules
• JS testing with Jasmine
• Functional UI tests with Selenium2 + custom DSL/API
• Using Page Object strategy
• New: XAR Testing (ie XML page testing in a unit way), with PageTest
Source: http://dev.xwiki.org/xwiki/bin/view/Community/Testing
Servers Overview
Source: http://dev.xwiki.org/xwiki/bin/view/Community/DevelopmentPractices
Contrib Extension (1/2)
• Send a mail on devs list to request a repo
• You get GitHub repo, JIRA, Sonar, CI
• Use Maven to build your extension
• Proposal in progress: use same practices as XE dev practices
• Important: contrib is about developing code collaboratively.
• Not a place to do solo dev
• Release with Maven
• Import on e.x.o + write good documentation (screenshots,
screenshots, screenshots!)
Source: http://contrib.xwiki.org/xwiki/bin/view/Main/WebHome
Contrib Extension (2/2)
• Make sure to respect minimal XWiki version the extension
should work with.
• Defined in the README.md
• See http://contrib.xwiki.org/xwiki/bin/view/Main/
WebHome#HREADME.mdTemplate
• Send an [ANN] mail to users/devs list when releasing an
extension
Source: http://contrib.xwiki.org/xwiki/bin/view/Main/WebHome
XWiki SAS development practices

More Related Content

What's hot

Unicon July 2015 IAM Briefing
Unicon July 2015 IAM BriefingUnicon July 2015 IAM Briefing
Unicon July 2015 IAM Briefing
John Gasper
 
Serverless code components azure
Serverless code components azureServerless code components azure
Serverless code components azure
Shimon Tolts
 
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
Viktor Sadovnikov
 
AtlasCamp 2010: Macro Migration Guide for Confluence 4.0 - Ryan Thomas
AtlasCamp 2010: Macro Migration Guide for Confluence 4.0 - Ryan ThomasAtlasCamp 2010: Macro Migration Guide for Confluence 4.0 - Ryan Thomas
AtlasCamp 2010: Macro Migration Guide for Confluence 4.0 - Ryan Thomas
Atlassian
 
Your first patch to open stack
Your first patch to open stackYour first patch to open stack
Your first patch to open stack
Akanksha Agrawal
 
AWS Community Day - Bob Lee - Beware the Sandbox!
AWS Community Day  - Bob Lee - Beware the Sandbox!AWS Community Day  - Bob Lee - Beware the Sandbox!
AWS Community Day - Bob Lee - Beware the Sandbox!
AWS Chicago
 
Node.js Dublin Meetup April 2014
Node.js Dublin Meetup April 2014Node.js Dublin Meetup April 2014
Node.js Dublin Meetup April 2014
Damian Beresford
 
Building Production-Ready APIs With Node.js
Building Production-Ready APIs With Node.jsBuilding Production-Ready APIs With Node.js
Building Production-Ready APIs With Node.js
Apigee | Google Cloud
 
Node Ninjas Sydney (rvagg) April 2016: Node Core Update
Node Ninjas Sydney (rvagg) April 2016: Node Core UpdateNode Ninjas Sydney (rvagg) April 2016: Node Core Update
Node Ninjas Sydney (rvagg) April 2016: Node Core Update
rvagg
 
There's more to Ratpack than non-blocking
There's more to Ratpack than non-blockingThere's more to Ratpack than non-blocking
There's more to Ratpack than non-blocking
Marcin Erdmann
 
DevOps, PowerShell y Windows Containers - NET Conf UY v2016
DevOps, PowerShell y Windows Containers  - NET Conf UY v2016DevOps, PowerShell y Windows Containers  - NET Conf UY v2016
DevOps, PowerShell y Windows Containers - NET Conf UY v2016
Victor Silva
 
Running a Docker based Backend in the Cloud
Running a Docker based Backend in the CloudRunning a Docker based Backend in the Cloud
Running a Docker based Backend in the Cloud
Florian Feigenbutz
 
Writing Commits for You, Your Friends, and Your Future Self
Writing Commits for You, Your Friends, and Your Future SelfWriting Commits for You, Your Friends, and Your Future Self
Writing Commits for You, Your Friends, and Your Future Self
All Things Open
 
Forcelandia Salesforce CI
Forcelandia Salesforce CIForcelandia Salesforce CI
Forcelandia Salesforce CI
Daniel Hoechst
 
Igor Liska - Continuous Integration
Igor Liska - Continuous IntegrationIgor Liska - Continuous Integration
Igor Liska - Continuous Integration
Patricia Romanikova
 
Cincom Smalltalk Roadmap ESUG 2013
Cincom Smalltalk Roadmap ESUG 2013Cincom Smalltalk Roadmap ESUG 2013
Cincom Smalltalk Roadmap ESUG 2013
ESUG
 
Tanner Ellen - Forcelandia 2016 - Dev Stack.pptx
Tanner Ellen - Forcelandia 2016 - Dev Stack.pptxTanner Ellen - Forcelandia 2016 - Dev Stack.pptx
Tanner Ellen - Forcelandia 2016 - Dev Stack.pptx
SeedCode
 
Solving the Workflow - Building MODX.today with Gitify (2015-05-21, Alkmaar)
Solving the Workflow - Building MODX.today with Gitify (2015-05-21, Alkmaar)Solving the Workflow - Building MODX.today with Gitify (2015-05-21, Alkmaar)
Solving the Workflow - Building MODX.today with Gitify (2015-05-21, Alkmaar)
Mark Hamstra
 
JavaEE Microservices -the Payara Way
JavaEE Microservices -the Payara WayJavaEE Microservices -the Payara Way
JavaEE Microservices -the Payara Way
Payara
 
Python Pune October Meetup 2015
Python Pune October Meetup 2015Python Pune October Meetup 2015
Python Pune October Meetup 2015
Abhijeet Kasurde
 

What's hot (20)

Unicon July 2015 IAM Briefing
Unicon July 2015 IAM BriefingUnicon July 2015 IAM Briefing
Unicon July 2015 IAM Briefing
 
Serverless code components azure
Serverless code components azureServerless code components azure
Serverless code components azure
 
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
 
AtlasCamp 2010: Macro Migration Guide for Confluence 4.0 - Ryan Thomas
AtlasCamp 2010: Macro Migration Guide for Confluence 4.0 - Ryan ThomasAtlasCamp 2010: Macro Migration Guide for Confluence 4.0 - Ryan Thomas
AtlasCamp 2010: Macro Migration Guide for Confluence 4.0 - Ryan Thomas
 
Your first patch to open stack
Your first patch to open stackYour first patch to open stack
Your first patch to open stack
 
AWS Community Day - Bob Lee - Beware the Sandbox!
AWS Community Day  - Bob Lee - Beware the Sandbox!AWS Community Day  - Bob Lee - Beware the Sandbox!
AWS Community Day - Bob Lee - Beware the Sandbox!
 
Node.js Dublin Meetup April 2014
Node.js Dublin Meetup April 2014Node.js Dublin Meetup April 2014
Node.js Dublin Meetup April 2014
 
Building Production-Ready APIs With Node.js
Building Production-Ready APIs With Node.jsBuilding Production-Ready APIs With Node.js
Building Production-Ready APIs With Node.js
 
Node Ninjas Sydney (rvagg) April 2016: Node Core Update
Node Ninjas Sydney (rvagg) April 2016: Node Core UpdateNode Ninjas Sydney (rvagg) April 2016: Node Core Update
Node Ninjas Sydney (rvagg) April 2016: Node Core Update
 
There's more to Ratpack than non-blocking
There's more to Ratpack than non-blockingThere's more to Ratpack than non-blocking
There's more to Ratpack than non-blocking
 
DevOps, PowerShell y Windows Containers - NET Conf UY v2016
DevOps, PowerShell y Windows Containers  - NET Conf UY v2016DevOps, PowerShell y Windows Containers  - NET Conf UY v2016
DevOps, PowerShell y Windows Containers - NET Conf UY v2016
 
Running a Docker based Backend in the Cloud
Running a Docker based Backend in the CloudRunning a Docker based Backend in the Cloud
Running a Docker based Backend in the Cloud
 
Writing Commits for You, Your Friends, and Your Future Self
Writing Commits for You, Your Friends, and Your Future SelfWriting Commits for You, Your Friends, and Your Future Self
Writing Commits for You, Your Friends, and Your Future Self
 
Forcelandia Salesforce CI
Forcelandia Salesforce CIForcelandia Salesforce CI
Forcelandia Salesforce CI
 
Igor Liska - Continuous Integration
Igor Liska - Continuous IntegrationIgor Liska - Continuous Integration
Igor Liska - Continuous Integration
 
Cincom Smalltalk Roadmap ESUG 2013
Cincom Smalltalk Roadmap ESUG 2013Cincom Smalltalk Roadmap ESUG 2013
Cincom Smalltalk Roadmap ESUG 2013
 
Tanner Ellen - Forcelandia 2016 - Dev Stack.pptx
Tanner Ellen - Forcelandia 2016 - Dev Stack.pptxTanner Ellen - Forcelandia 2016 - Dev Stack.pptx
Tanner Ellen - Forcelandia 2016 - Dev Stack.pptx
 
Solving the Workflow - Building MODX.today with Gitify (2015-05-21, Alkmaar)
Solving the Workflow - Building MODX.today with Gitify (2015-05-21, Alkmaar)Solving the Workflow - Building MODX.today with Gitify (2015-05-21, Alkmaar)
Solving the Workflow - Building MODX.today with Gitify (2015-05-21, Alkmaar)
 
JavaEE Microservices -the Payara Way
JavaEE Microservices -the Payara WayJavaEE Microservices -the Payara Way
JavaEE Microservices -the Payara Way
 
Python Pune October Meetup 2015
Python Pune October Meetup 2015Python Pune October Meetup 2015
Python Pune October Meetup 2015
 

Viewers also liked

Smart Mobility Policies with Evolutionary Algorithms: The Adapting Info Panel...
Smart Mobility Policies with Evolutionary Algorithms: The Adapting Info Panel...Smart Mobility Policies with Evolutionary Algorithms: The Adapting Info Panel...
Smart Mobility Policies with Evolutionary Algorithms: The Adapting Info Panel...
Daniel H. Stolfi
 
Make MarcEdit Work For You: OLC Technical Services Retreat
Make MarcEdit Work For You: OLC Technical Services RetreatMake MarcEdit Work For You: OLC Technical Services Retreat
Make MarcEdit Work For You: OLC Technical Services Retreat
Terry Reese
 
Awkward Originals
Awkward OriginalsAwkward Originals
09 13-15 photo and image, what to shoot
09 13-15 photo and image, what to shoot09 13-15 photo and image, what to shoot
09 13-15 photo and image, what to shoot
Sung Woo Yoo
 
Technology Targets Law: Who Will Survive and How?
Technology Targets Law: Who Will Survive and How? Technology Targets Law: Who Will Survive and How?
Technology Targets Law: Who Will Survive and How?
NextlawGlobalReferralNetwork
 
Kassandra palafox mendivil
Kassandra palafox mendivilKassandra palafox mendivil
Kassandra palafox mendivil
Kassandra Palafox Mendivil
 
2016 j
2016 j2016 j
Keynote derivatives daily report for 020512
Keynote derivatives daily report for 020512Keynote derivatives daily report for 020512
Keynote derivatives daily report for 020512
Keynote Capitals Ltd.
 
Donor voice pretest tool webinar deck_final
Donor voice pretest tool webinar deck_finalDonor voice pretest tool webinar deck_final
Donor voice pretest tool webinar deck_final
DonorVoice
 
294 2015 infortunio escavatore
294   2015  infortunio escavatore294   2015  infortunio escavatore
294 2015 infortunio escavatore
http://www.studioingvolpi.it
 
635735583964692009
635735583964692009635735583964692009
635735583964692009
Duc Nguyen
 
ePatCon11: Miron-Shatz - Inserting the Human Factor in Advanced Technology
ePatCon11: Miron-Shatz - Inserting the Human Factor in Advanced TechnologyePatCon11: Miron-Shatz - Inserting the Human Factor in Advanced Technology
ePatCon11: Miron-Shatz - Inserting the Human Factor in Advanced Technology
e-Patient Connections
 
Tecnologia salud
Tecnologia saludTecnologia salud
Tecnologia salud
Brayan Joao Perez Escobedo
 
Deja Las Lagrimas Rodar
Deja Las Lagrimas RodarDeja Las Lagrimas Rodar
Deja Las Lagrimas Rodar
nimiaazucena
 
Valuing Health at the End of Life
Valuing Health at the End of LifeValuing Health at the End of Life
Valuing Health at the End of Life
Office of Health Economics
 
Data-driven, Interactive Scientific Articles in a Collaborative Environment w...
Data-driven, Interactive Scientific Articles in a Collaborative Environment w...Data-driven, Interactive Scientific Articles in a Collaborative Environment w...
Data-driven, Interactive Scientific Articles in a Collaborative Environment w...
New York City College of Technology Computer Systems Technology Colloquium
 

Viewers also liked (16)

Smart Mobility Policies with Evolutionary Algorithms: The Adapting Info Panel...
Smart Mobility Policies with Evolutionary Algorithms: The Adapting Info Panel...Smart Mobility Policies with Evolutionary Algorithms: The Adapting Info Panel...
Smart Mobility Policies with Evolutionary Algorithms: The Adapting Info Panel...
 
Make MarcEdit Work For You: OLC Technical Services Retreat
Make MarcEdit Work For You: OLC Technical Services RetreatMake MarcEdit Work For You: OLC Technical Services Retreat
Make MarcEdit Work For You: OLC Technical Services Retreat
 
Awkward Originals
Awkward OriginalsAwkward Originals
Awkward Originals
 
09 13-15 photo and image, what to shoot
09 13-15 photo and image, what to shoot09 13-15 photo and image, what to shoot
09 13-15 photo and image, what to shoot
 
Technology Targets Law: Who Will Survive and How?
Technology Targets Law: Who Will Survive and How? Technology Targets Law: Who Will Survive and How?
Technology Targets Law: Who Will Survive and How?
 
Kassandra palafox mendivil
Kassandra palafox mendivilKassandra palafox mendivil
Kassandra palafox mendivil
 
2016 j
2016 j2016 j
2016 j
 
Keynote derivatives daily report for 020512
Keynote derivatives daily report for 020512Keynote derivatives daily report for 020512
Keynote derivatives daily report for 020512
 
Donor voice pretest tool webinar deck_final
Donor voice pretest tool webinar deck_finalDonor voice pretest tool webinar deck_final
Donor voice pretest tool webinar deck_final
 
294 2015 infortunio escavatore
294   2015  infortunio escavatore294   2015  infortunio escavatore
294 2015 infortunio escavatore
 
635735583964692009
635735583964692009635735583964692009
635735583964692009
 
ePatCon11: Miron-Shatz - Inserting the Human Factor in Advanced Technology
ePatCon11: Miron-Shatz - Inserting the Human Factor in Advanced TechnologyePatCon11: Miron-Shatz - Inserting the Human Factor in Advanced Technology
ePatCon11: Miron-Shatz - Inserting the Human Factor in Advanced Technology
 
Tecnologia salud
Tecnologia saludTecnologia salud
Tecnologia salud
 
Deja Las Lagrimas Rodar
Deja Las Lagrimas RodarDeja Las Lagrimas Rodar
Deja Las Lagrimas Rodar
 
Valuing Health at the End of Life
Valuing Health at the End of LifeValuing Health at the End of Life
Valuing Health at the End of Life
 
Data-driven, Interactive Scientific Articles in a Collaborative Environment w...
Data-driven, Interactive Scientific Articles in a Collaborative Environment w...Data-driven, Interactive Scientific Articles in a Collaborative Environment w...
Data-driven, Interactive Scientific Articles in a Collaborative Environment w...
 

Similar to XWiki SAS development practices

Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development Management
Adam Getchell
 
Building XWiki
Building XWikiBuilding XWiki
Building XWiki
Vincent Massol
 
Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019
Vincent Massol
 
7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer Day7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer Day
Kimihiko Kitase
 
Continuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 PlatformContinuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 Platform
Techsophy Inc.
 
XWiki Testing with TestContainers
XWiki Testing with TestContainersXWiki Testing with TestContainers
XWiki Testing with TestContainers
Vincent Massol
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projects
Vincent Massol
 
Next Generation Architecture Showcase July 2019
Next Generation Architecture Showcase July 2019Next Generation Architecture Showcase July 2019
Next Generation Architecture Showcase July 2019
Alan Pearson Mathews
 
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
Lucas Sacramento
 
Apereo OAE development and release process
Apereo OAE development and release processApereo OAE development and release process
Apereo OAE development and release process
Bert Pareyn
 
Tuenti Release Workflow
Tuenti Release WorkflowTuenti Release Workflow
Tuenti Release Workflow
Tuenti
 
Efficient Parallel Testing with Docker
Efficient Parallel Testing with DockerEfficient Parallel Testing with Docker
Efficient Parallel Testing with Docker
Laura Frank Tacho
 
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
DevOps4Networks
 
SQL Server DevOps Jumpstart
SQL Server DevOps JumpstartSQL Server DevOps Jumpstart
SQL Server DevOps Jumpstart
Ori Donner
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projects
Vincent Massol
 
Ci jenkins maven svn
Ci jenkins maven svnCi jenkins maven svn
Ci jenkins maven svn
Ankur Goyal
 
Containers, microservices and serverless for realists
Containers, microservices and serverless for realistsContainers, microservices and serverless for realists
Containers, microservices and serverless for realists
Karthik Gaekwad
 
Development Processes and Tooling
Development Processes and ToolingDevelopment Processes and Tooling
Development Processes and Tooling
Bora Bilgin
 
The Evolution of Continuous Delivery at Scale @ Linkedin
The Evolution of Continuous Delivery at Scale @ LinkedinThe Evolution of Continuous Delivery at Scale @ Linkedin
The Evolution of Continuous Delivery at Scale @ Linkedin
C4Media
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
Rogue Wave Software
 

Similar to XWiki SAS development practices (20)

Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development Management
 
Building XWiki
Building XWikiBuilding XWiki
Building XWiki
 
Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019
 
7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer Day7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer Day
 
Continuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 PlatformContinuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 Platform
 
XWiki Testing with TestContainers
XWiki Testing with TestContainersXWiki Testing with TestContainers
XWiki Testing with TestContainers
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projects
 
Next Generation Architecture Showcase July 2019
Next Generation Architecture Showcase July 2019Next Generation Architecture Showcase July 2019
Next Generation Architecture Showcase July 2019
 
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
 
Apereo OAE development and release process
Apereo OAE development and release processApereo OAE development and release process
Apereo OAE development and release process
 
Tuenti Release Workflow
Tuenti Release WorkflowTuenti Release Workflow
Tuenti Release Workflow
 
Efficient Parallel Testing with Docker
Efficient Parallel Testing with DockerEfficient Parallel Testing with Docker
Efficient Parallel Testing with Docker
 
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
 
SQL Server DevOps Jumpstart
SQL Server DevOps JumpstartSQL Server DevOps Jumpstart
SQL Server DevOps Jumpstart
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projects
 
Ci jenkins maven svn
Ci jenkins maven svnCi jenkins maven svn
Ci jenkins maven svn
 
Containers, microservices and serverless for realists
Containers, microservices and serverless for realistsContainers, microservices and serverless for realists
Containers, microservices and serverless for realists
 
Development Processes and Tooling
Development Processes and ToolingDevelopment Processes and Tooling
Development Processes and Tooling
 
The Evolution of Continuous Delivery at Scale @ Linkedin
The Evolution of Continuous Delivery at Scale @ LinkedinThe Evolution of Continuous Delivery at Scale @ Linkedin
The Evolution of Continuous Delivery at Scale @ Linkedin
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
 

More from Vincent Massol

XWiki: The best wiki for developers
XWiki: The best wiki for developersXWiki: The best wiki for developers
XWiki: The best wiki for developers
Vincent Massol
 
Configuration Testing with Docker & TestContainers
Configuration Testing with Docker & TestContainersConfiguration Testing with Docker & TestContainers
Configuration Testing with Docker & TestContainers
Vincent Massol
 
What's new in XWiki 9.x and 10.x
What's new in XWiki 9.x and 10.xWhat's new in XWiki 9.x and 10.x
What's new in XWiki 9.x and 10.x
Vincent Massol
 
QDashboard 1.2
QDashboard 1.2QDashboard 1.2
QDashboard 1.2
Vincent Massol
 
Advanced Java Testing
Advanced Java TestingAdvanced Java Testing
Advanced Java Testing
Vincent Massol
 
Creating your own project's Quality Dashboard
Creating your own project's Quality DashboardCreating your own project's Quality Dashboard
Creating your own project's Quality Dashboard
Vincent Massol
 
XWiki: wiki collaboration as an alternative to Confluence and Sharepoint
XWiki: wiki collaboration as an alternative to Confluence and SharepointXWiki: wiki collaboration as an alternative to Confluence and Sharepoint
XWiki: wiki collaboration as an alternative to Confluence and Sharepoint
Vincent Massol
 
Creating your own project's Quality Dashboard
Creating your own project's Quality DashboardCreating your own project's Quality Dashboard
Creating your own project's Quality Dashboard
Vincent Massol
 
XWiki: The web's Swiss Army Knife
XWiki: The web's Swiss Army KnifeXWiki: The web's Swiss Army Knife
XWiki: The web's Swiss Army Knife
Vincent Massol
 
XWiki Status - July 2015
XWiki Status - July 2015XWiki Status - July 2015
XWiki Status - July 2015
Vincent Massol
 
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
Vincent Massol
 
Implementing Quality on a Java Project
Implementing Quality on a Java ProjectImplementing Quality on a Java Project
Implementing Quality on a Java Project
Vincent Massol
 
Implementing Quality on Java projects (Short version)
Implementing Quality on Java projects (Short version)Implementing Quality on Java projects (Short version)
Implementing Quality on Java projects (Short version)
Vincent Massol
 
Implementing quality in Java projects
Implementing quality in Java projectsImplementing quality in Java projects
Implementing quality in Java projects
Vincent Massol
 
Implementing Quality on Java projects
Implementing Quality on Java projectsImplementing Quality on Java projects
Implementing Quality on Java projects
Vincent Massol
 
Combining open source ethics with private interests
Combining open source ethics with private interestsCombining open source ethics with private interests
Combining open source ethics with private interests
Vincent Massol
 
Evolutions XWiki 2012/2013
Evolutions XWiki 2012/2013Evolutions XWiki 2012/2013
Evolutions XWiki 2012/2013Vincent Massol
 
Developing XWiki
Developing XWikiDeveloping XWiki
Developing XWiki
Vincent Massol
 
XWiki: Developing simple apps quickly
XWiki: Developing simple apps quicklyXWiki: Developing simple apps quickly
XWiki: Developing simple apps quickly
Vincent Massol
 
XWiki: Building a dynamic Conference web site
XWiki: Building a dynamic Conference web siteXWiki: Building a dynamic Conference web site
XWiki: Building a dynamic Conference web site
Vincent Massol
 

More from Vincent Massol (20)

XWiki: The best wiki for developers
XWiki: The best wiki for developersXWiki: The best wiki for developers
XWiki: The best wiki for developers
 
Configuration Testing with Docker & TestContainers
Configuration Testing with Docker & TestContainersConfiguration Testing with Docker & TestContainers
Configuration Testing with Docker & TestContainers
 
What's new in XWiki 9.x and 10.x
What's new in XWiki 9.x and 10.xWhat's new in XWiki 9.x and 10.x
What's new in XWiki 9.x and 10.x
 
QDashboard 1.2
QDashboard 1.2QDashboard 1.2
QDashboard 1.2
 
Advanced Java Testing
Advanced Java TestingAdvanced Java Testing
Advanced Java Testing
 
Creating your own project's Quality Dashboard
Creating your own project's Quality DashboardCreating your own project's Quality Dashboard
Creating your own project's Quality Dashboard
 
XWiki: wiki collaboration as an alternative to Confluence and Sharepoint
XWiki: wiki collaboration as an alternative to Confluence and SharepointXWiki: wiki collaboration as an alternative to Confluence and Sharepoint
XWiki: wiki collaboration as an alternative to Confluence and Sharepoint
 
Creating your own project's Quality Dashboard
Creating your own project's Quality DashboardCreating your own project's Quality Dashboard
Creating your own project's Quality Dashboard
 
XWiki: The web's Swiss Army Knife
XWiki: The web's Swiss Army KnifeXWiki: The web's Swiss Army Knife
XWiki: The web's Swiss Army Knife
 
XWiki Status - July 2015
XWiki Status - July 2015XWiki Status - July 2015
XWiki Status - July 2015
 
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
 
Implementing Quality on a Java Project
Implementing Quality on a Java ProjectImplementing Quality on a Java Project
Implementing Quality on a Java Project
 
Implementing Quality on Java projects (Short version)
Implementing Quality on Java projects (Short version)Implementing Quality on Java projects (Short version)
Implementing Quality on Java projects (Short version)
 
Implementing quality in Java projects
Implementing quality in Java projectsImplementing quality in Java projects
Implementing quality in Java projects
 
Implementing Quality on Java projects
Implementing Quality on Java projectsImplementing Quality on Java projects
Implementing Quality on Java projects
 
Combining open source ethics with private interests
Combining open source ethics with private interestsCombining open source ethics with private interests
Combining open source ethics with private interests
 
Evolutions XWiki 2012/2013
Evolutions XWiki 2012/2013Evolutions XWiki 2012/2013
Evolutions XWiki 2012/2013
 
Developing XWiki
Developing XWikiDeveloping XWiki
Developing XWiki
 
XWiki: Developing simple apps quickly
XWiki: Developing simple apps quicklyXWiki: Developing simple apps quickly
XWiki: Developing simple apps quickly
 
XWiki: Building a dynamic Conference web site
XWiki: Building a dynamic Conference web siteXWiki: Building a dynamic Conference web site
XWiki: Building a dynamic Conference web site
 

Recently uploaded

GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 

Recently uploaded (20)

GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 

XWiki SAS development practices

  • 1. XWiki Development Practices seen by XWiki SAS Vincent Massol CTO XWiki SAS Committer on XWiki open source project @vmassol 12 May 2016
  • 2. Agenda • Versioning & Cycles • Roadmap Process • Release Managers • Developing a Feature • Committing • Backward Compatibility • XWiki Days • Automated Checks • Coding Best Practices • Testing • Servers Overview • Contrib
  • 3. Versioning and Cycles • Yearly cycles: XWiki 7.x, XWiki 8.x • 4 major releases per year: N.1 till N.4 • Bugfix releases possible (e.g. 7.4.3) • A major release is split into 4 releases: M1, M2, RC1 and Final • A major release spans 2.5 months (3w for M1 and M2, 2w for RC1 and Final) • When RC1 is released only bugfixes are supposed to be allowed till the Final • Roadmap decides what XWiki SAS employees work on for each release • LTS = last version from the previous cycle • Support of 3 branches on xwiki.org: dev, stable, LTS • Time boxing! Source: http://dev.xwiki.org/xwiki/bin/view/Community/VersioningAndReleasePractices
  • 4. Roadmap Process • After RC1 is released, internal meeting organized inside XWiki SAS, then proposed on devs list • With one representative of each XWiki SAS domain • Client Architects + Devs:Anca • Client PMs: Nicolas • XCS: Iustin • Sales & Marketing: Guillaume + Benjamin • Infra: Fabio • Support & QA: Silvia + Oana • Strategy: Ludovic • Research: Caleb • Product:Vincent • Usability: Caty • At the same time as other product roadmap: all products are developed by the XWiki SAS Product team • VOTE on features + Important small JIRA issues • Communications: roadmap@xwiki.com
  • 5. Release Manager • In charge of doing the release for a major version (from M1 to Final) • In charge of making sure everyone converges on the date (time boxing!) + monitors that CI passes • Rolling Release Managers across all XWiki SAS Product team members • Defined at http://dev.xwiki.org/xwiki/bin/view/ReleasePlans/#HNextReleaseManagers • Release Plan Application at http://dev.xwiki.org/xwiki/bin/view/ReleasePlans Source: http://dev.xwiki.org/xwiki/bin/view/Community/DevelopmentPractices#HReleaseManagerRole
  • 6. Developing a feature (1/2) 1. Meeting with Stakeholders to gather use cases & priorities • Create full list of JIRA tasks (at least one JIRA per use case) • Update http://www.xwiki.org/xwiki/bin/view/Roadmaps/ • Set fix versions for M1, M2, RC1 2. Develop use case by use case (JIRA issue per JIRA issue) • With automated tests • Commit as much as possible and at least once a use case is finished • CI (Jenkins on ci.xwiki.org) executes and proves it doesn’t break anything • Document: add to release notes + reference documentation • Close JIRA issue 3. Repeat 2
  • 7. Developing a feature (2/2) 1. If risk somewhere, send mail to roadmap@xwiki.com to warn/ask what to do 2. At cycle stabilization release time (*.3+), meeting with stakeholders to validate feature can be considered “finished” 3. After each release, stakeholders should validate the implementation done and verify it matches the needs
  • 8. Committing • Commit as frequently as possible • Allows code reviews • Allows integration (CI) • But working code ofc, hence automated tests • Lazy commit rule: allow to commit but be prepared to revert if someone asks • For complex things, not sure of yourself, best is to allow make a proposal on the devs list • For very important things:VOTE • 72 hours • +1, 0, -1 • Need no veto to pass
  • 9. Backward Compatibility • Extremely important: XWiki is a platform. Same as a programming language! • Old extensions need to continue working • We don’t remove anything much • And certainly not scripting APIs • Instead we deprecate and move to Legacy modules • Use @Unstable annotations for Java APIs to signify a new API that can be modified • @Unstable can only stay for 1 full cycle Source: http://dev.xwiki.org/xwiki/bin/view/Community/DevelopmentPractices#HBackwardCompatibility
  • 10. XWiki Days • BFD = Bug Closing Day • BFD Goals • Have more bugs closed than created over 1600 days & 365 days • Close issues, not especially fix them (duplicates, won’t fix, etc) • Take low hanging fruits • 101 BFDs so far! • Others done: • Deprecation Fixing Day • DocHour Day • Pull Request Day Source: http://dev.xwiki.org/xwiki/bin/view/Community/XWikiDays
  • 11. Automated Checks (1/2) • Part of the Build • Style checks with Checkstyle • Verify that components.txt contains all Components • Verify that Unstable annotation don't stay too long • Verify that Script Services are not located in the internal package • Verify header licenses • Backward compatibility checks with revapi • Verify that all plugins have versions specified • Verify that we don't use Commons Lang < 3 • Verify the correct JUnit artifact is used (junit-dep and not junit) • Verify we don't use Commons Logging or Log4j (since we use SLF4J) Source: http://dev.xwiki.org/xwiki/bin/view/Community/Building#HAutomaticChecks
  • 12. Automated Checks (2/2) • Part of the Build • Verify that the Java version used to release XWiki is correct (e.g. Java 8 starting with XWiki 8.1, Java 7 for XWiki 6.0 and Java 6 before) • Verify that Javadoc exist (in the release profile, this is a Maven Central requirement) • In Commons: Verify that Commons modules don't have a dependency on Rendering and Platform modules • In Rendering:Verify that Rendering modules don't have a dependency on Platform modules • For XARs, verify format and content using the XAR Plugin • Verify that Test Percentage Coverage don't go down • More checks on Sonar but not enforced at this time
  • 13. Coding Best Practices • Some defined in Checkstyle • Others defined on http://dev.xwiki.org/xwiki/bin/view/Community/CodeStyle & http:// dev.xwiki.org/xwiki/bin/view/Community/DevelopmentPractices • Applications Best Practices at http://dev.xwiki.org/xwiki/bin/view/Community/ ApplicationDevelopmentBestPractices • Work in progress • For example: location of Data and Code pages in discussion ATM • Validated by build for Checkstyle and manual code reviews • Diff emails sent on commits • Committers duty is to review commits, see http://dev.xwiki.org/xwiki/bin/view/ Community/Committership • Anyone can propose new ways by sending proposal on devs mailing list
  • 14. Testing • Unit tests with JUnit • Custom framework to easily test Components with @Rule MockitoComponentMockingRule • Some other JUnit Rules such as @Rule AllLogRule • Unit tests must not output logs during test. Verification in build but need to be activated more and more on modules • JS testing with Jasmine • Functional UI tests with Selenium2 + custom DSL/API • Using Page Object strategy • New: XAR Testing (ie XML page testing in a unit way), with PageTest Source: http://dev.xwiki.org/xwiki/bin/view/Community/Testing
  • 16. Contrib Extension (1/2) • Send a mail on devs list to request a repo • You get GitHub repo, JIRA, Sonar, CI • Use Maven to build your extension • Proposal in progress: use same practices as XE dev practices • Important: contrib is about developing code collaboratively. • Not a place to do solo dev • Release with Maven • Import on e.x.o + write good documentation (screenshots, screenshots, screenshots!) Source: http://contrib.xwiki.org/xwiki/bin/view/Main/WebHome
  • 17. Contrib Extension (2/2) • Make sure to respect minimal XWiki version the extension should work with. • Defined in the README.md • See http://contrib.xwiki.org/xwiki/bin/view/Main/ WebHome#HREADME.mdTemplate • Send an [ANN] mail to users/devs list when releasing an extension Source: http://contrib.xwiki.org/xwiki/bin/view/Main/WebHome