SlideShare a Scribd company logo
1 of 18
Download to read offline
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 BriefingJohn Gasper
 
Serverless code components azure
Serverless code components azureServerless code components azure
Serverless code components azureShimon 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 meetupViktor 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 ThomasAtlassian
 
Your first patch to open stack
Your first patch to open stackYour first patch to open stack
Your first patch to open stackAkanksha 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 2014Damian 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.jsApigee | 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 Updatervagg
 
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-blockingMarcin 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 v2016Victor 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 CloudFlorian 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 SelfAll Things Open
 
Forcelandia Salesforce CI
Forcelandia Salesforce CIForcelandia Salesforce CI
Forcelandia Salesforce CIDaniel Hoechst
 
Igor Liska - Continuous Integration
Igor Liska - Continuous IntegrationIgor Liska - Continuous Integration
Igor Liska - Continuous IntegrationPatricia Romanikova
 
Cincom Smalltalk Roadmap ESUG 2013
Cincom Smalltalk Roadmap ESUG 2013Cincom Smalltalk Roadmap ESUG 2013
Cincom Smalltalk Roadmap ESUG 2013ESUG
 
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.pptxSeedCode
 
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 WayPayara
 
Python Pune October Meetup 2015
Python Pune October Meetup 2015Python Pune October Meetup 2015
Python Pune October Meetup 2015Abhijeet 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 RetreatTerry Reese
 
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 shootSung 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
 
Keynote derivatives daily report for 020512
Keynote derivatives daily report for 020512Keynote derivatives daily report for 020512
Keynote derivatives daily report for 020512Keynote 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_finalDonorVoice
 
635735583964692009
635735583964692009635735583964692009
635735583964692009Duc 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 Technologye-Patient Connections
 
Deja Las Lagrimas Rodar
Deja Las Lagrimas RodarDeja Las Lagrimas Rodar
Deja Las Lagrimas Rodarnimiaazucena
 

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 ManagementAdam Getchell
 
Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019Vincent Massol
 
7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer Day7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer DayKimihiko Kitase
 
Continuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 PlatformContinuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 PlatformTechsophy Inc.
 
XWiki Testing with TestContainers
XWiki Testing with TestContainersXWiki Testing with TestContainers
XWiki Testing with TestContainersVincent 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 projectsVincent Massol
 
Next Generation Architecture Showcase July 2019
Next Generation Architecture Showcase July 2019Next Generation Architecture Showcase July 2019
Next Generation Architecture Showcase July 2019Alan 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 processBert Pareyn
 
Tuenti Release Workflow
Tuenti Release WorkflowTuenti Release Workflow
Tuenti Release WorkflowTuenti
 
Efficient Parallel Testing with Docker
Efficient Parallel Testing with DockerEfficient Parallel Testing with Docker
Efficient Parallel Testing with DockerLaura 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 JumpstartOri 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 projectsVincent Massol
 
Ci jenkins maven svn
Ci jenkins maven svnCi jenkins maven svn
Ci jenkins maven svnAnkur Goyal
 
Containers, microservices and serverless for realists
Containers, microservices and serverless for realistsContainers, microservices and serverless for realists
Containers, microservices and serverless for realistsKarthik Gaekwad
 
Development Processes and Tooling
Development Processes and ToolingDevelopment Processes and Tooling
Development Processes and ToolingBora 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 @ LinkedinC4Media
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using JenkinsRogue 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 developersVincent Massol
 
Configuration Testing with Docker & TestContainers
Configuration Testing with Docker & TestContainersConfiguration Testing with Docker & TestContainers
Configuration Testing with Docker & TestContainersVincent 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.xVincent 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 DashboardVincent 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 SharepointVincent 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 DashboardVincent 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 KnifeVincent Massol
 
XWiki Status - July 2015
XWiki Status - July 2015XWiki Status - July 2015
XWiki Status - July 2015Vincent 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 2014Vincent Massol
 
Implementing Quality on a Java Project
Implementing Quality on a Java ProjectImplementing Quality on a Java Project
Implementing Quality on a Java ProjectVincent 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 projectsVincent Massol
 
Implementing Quality on Java projects
Implementing Quality on Java projectsImplementing Quality on Java projects
Implementing Quality on Java projectsVincent 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 interestsVincent Massol
 
Evolutions XWiki 2012/2013
Evolutions XWiki 2012/2013Evolutions XWiki 2012/2013
Evolutions XWiki 2012/2013Vincent Massol
 
XWiki: Developing simple apps quickly
XWiki: Developing simple apps quicklyXWiki: Developing simple apps quickly
XWiki: Developing simple apps quicklyVincent 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 siteVincent 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

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
🐬 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
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
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
 
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
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 

Recently uploaded (20)

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
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...
 
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...
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 

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