SlideShare a Scribd company logo
XWiki's Development Process
Eduard Moraru
2016
About XWiki
●
Web platform on top of
the wiki paradigm
●
Structured data, scripting,
applications
●
Java platform, polyglot
applications (JSR223)
●
XWiki Enterprise – the
product
●
LGPL license, since 2004
●
www.xwiki.org
XWiki Features
● Modular and highly extensible
●
Version control, attachments, user and rights
management, subwiki and subpages,
comments, wiki syntax and WYSIWYG editor,
macros, notifications, skins, search,
import/export, apps, etc.
● Use cases:
● Knowledge sharing and collaboration
● Intranets, knowledge base, public websites,
groupware, education, etc.
XWiki Enterprise
Community
● Users, Contributors and Core committers
●
Core and Contrib
●
Meritocracy
●
Governed by committers
● New committers voted based on contribution
● Lazy consensus
●
Important changes go through voting
●
+1, +/-0, -1
● Core committers have veto (-1) rights
Roadmap and Releases
● Timeboxing vs Feature-driven
●
Open roadmap for each minor release
●
1 major release per year
●
Minor releases (2.5 months)
● Dev releases (1-3 weeks)
● Bugfix releases
●
Support 3 versions (Dev, Stable & LTS)
● Release Manager Roster (taking turns)
●
Release Process on xwiki.org
Process: Community
Process: Mails
Process: Chat
Process: Issues
Process: Code
Process: Continuous Integration
Process: Quality
Process: Builds
Process: Product
Process: Websites
Process – Recap
●
Communication: Mailing Lists + IRC
● Issue Tracking: Jira
● Source Code Management: GitHub
● Continuous Integration: Jenkins
●
Build Repository: Nexus
● Documentation: (*.)xwiki.org
● Localization: l10n.xwiki.org
●
Extensions Repo: extensions.xwiki.org
● Code Quality: SonarQube
Dev Tools
● Source Control: Git
●
IDE: Eclipse, IntelliJ
●
Build Management: Maven 3
● Quality Control:
● Code style: Checkstyle
● Testing: JUnit/Mockito, Jacoco, Selenium 2
● Backwards compatibility: Revapi
Dev Principles
● High focus on quality
● dev.xwiki.org dedicated to dev documentation and
best practices
●
Enforcing coding style and min. test coverage
●
XWiki special days (Bug Fixing Days, etc.)
●
High focus on backwards compatibility
● Deprecation strategy
● Legacy modules
Statistics (1/2)
● 19 active committers
● 194 code contributors
●
60K commits
●
950K lines of code (Java)
●
67K mails
● 1K current subscribers
●
27.5K issues
●
(13% open; 53% bugs)
Statistics (2/2)
● 305 product releases
● (1 release every 15 days)
●
2.3M downloads
●
2200+ active instances
●
870+ extensions
● (200+ applications)
●
37 supported languages
● 9/12 years @ Google Summer of Code
Ways to Contribute
●
Pull Requests
●
github.com/xwiki
●
github.com/xwiki-contrib
● Translations
●
l10n.xwiki.org
● Documentation
●
xwiki.org
● New extensions
●
extensions.xwiki.org
Earning a living
● Multiple companies build their businesses on
top of XWiki
● XWiki.com is the main company sponsoring the
development of the project (since 2004)
● Professional Support
●
Consulting & Training
● Custom Development & Solutions
●
Hosting
●
Sustainable alternative to proprietary
Questions?
Thank you!
Eduard Moraru
Enygma2002

More Related Content

What's hot

XWiki on GlassFish TV
XWiki on GlassFish TVXWiki on GlassFish TV
XWiki on GlassFish TV
Vincent Massol
 
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
 
BiQ: A New Revolution of SEO Suite
BiQ: A New Revolution of SEO SuiteBiQ: A New Revolution of SEO Suite
BiQ: A New Revolution of SEO Suite
BiQ
 
Drupal
DrupalDrupal
Lessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and BlinkLessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and Blink
Bruno Abinader
 
Knowit study group örnsköldsvik - introduction to qt & qt creator
Knowit   study group örnsköldsvik - introduction to qt & qt creatorKnowit   study group örnsköldsvik - introduction to qt & qt creator
Knowit study group örnsköldsvik - introduction to qt & qt creator
Mathias Westin
 
Restlet Framework NG
Restlet Framework NGRestlet Framework NG
Restlet Framework NG
Jerome Louvel
 

What's hot (8)

XWiki on GlassFish TV
XWiki on GlassFish TVXWiki on GlassFish TV
XWiki on GlassFish TV
 
Dealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetupDealing with large code bases. cd ams meetup
Dealing with large code bases. cd ams meetup
 
BiQ: A New Revolution of SEO Suite
BiQ: A New Revolution of SEO SuiteBiQ: A New Revolution of SEO Suite
BiQ: A New Revolution of SEO Suite
 
Drupal
DrupalDrupal
Drupal
 
Lessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and BlinkLessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and Blink
 
Git
GitGit
Git
 
Knowit study group örnsköldsvik - introduction to qt & qt creator
Knowit   study group örnsköldsvik - introduction to qt & qt creatorKnowit   study group örnsköldsvik - introduction to qt & qt creator
Knowit study group örnsköldsvik - introduction to qt & qt creator
 
Restlet Framework NG
Restlet Framework NGRestlet Framework NG
Restlet Framework NG
 

Similar to XWiki's Development Process

XWiki: Collaborative web applications the wiki way
XWiki: Collaborative web applications the wiki wayXWiki: Collaborative web applications the wiki way
XWiki: Collaborative web applications the wiki way
lucaa
 
Developing XWiki
Developing XWikiDeveloping XWiki
Developing XWiki
Vincent Massol
 
XWiki Enterprise 2.0 & Beyond
XWiki Enterprise 2.0 & BeyondXWiki Enterprise 2.0 & Beyond
XWiki Enterprise 2.0 & Beyond
Vincent Massol
 
XWiki Enterprise 2.0 & Beyond
XWiki Enterprise 2.0 & BeyondXWiki Enterprise 2.0 & Beyond
XWiki Enterprise 2.0 & Beyond
XWiki
 
XWiki SAS development practices
XWiki SAS development practicesXWiki SAS development practices
XWiki SAS development practices
Vincent Massol
 
Leading a Community-Driven Open Source Project
Leading a Community-Driven Open Source ProjectLeading a Community-Driven Open Source Project
Leading a Community-Driven Open Source Project
Vincent Massol
 
Join the Java Evolution GIDS Bangalore & Pune
Join the Java Evolution GIDS Bangalore & PuneJoin the Java Evolution GIDS Bangalore & Pune
Join the Java Evolution GIDS Bangalore & Pune
Heather VanCura
 
Crunching the numbers: Open Source Community Metrics at OSCON
Crunching the numbers: Open Source Community Metrics at OSCONCrunching the numbers: Open Source Community Metrics at OSCON
Crunching the numbers: Open Source Community Metrics at OSCON
Dawn Foster
 
Crunching the numbers: Open Source Community Metrics
Crunching the numbers: Open Source Community MetricsCrunching the numbers: Open Source Community Metrics
Crunching the numbers: Open Source Community Metrics
Dawn Foster
 
Red Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus IntroductionRed Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus Introduction
John Archer
 
XWiki Aquarium Paris
XWiki Aquarium ParisXWiki Aquarium Paris
XWiki Aquarium Paris
Alexis Moussine-Pouchkine
 
Java overview and architecture
Java overview and architectureJava overview and architecture
Java overview and architecture
Weei-Jye Chay
 
Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)
Giovanni Toraldo
 
Join the Java Evolution Baltimore/DC/Philly
Join the Java Evolution Baltimore/DC/PhillyJoin the Java Evolution Baltimore/DC/Philly
Join the Java Evolution Baltimore/DC/Philly
Heather VanCura
 
Open Chemistry: Input Preparation, Data Visualization & Analysis
Open Chemistry: Input Preparation, Data Visualization & AnalysisOpen Chemistry: Input Preparation, Data Visualization & Analysis
Open Chemistry: Input Preparation, Data Visualization & AnalysisMarcus Hanwell
 
Net Beans Jasig Jun2006
Net Beans Jasig Jun2006Net Beans Jasig Jun2006
Net Beans Jasig Jun2006
ardlian
 
Node js vs golang -which one is better ?
Node js vs golang -which one is better ?Node js vs golang -which one is better ?
Node js vs golang -which one is better ?
ForceBolt
 
Oslo Vancouver Onboarding
Oslo Vancouver OnboardingOslo Vancouver Onboarding
Oslo Vancouver Onboarding
Ben Nemec
 
JBoss @ CVUT FIT April 2013
JBoss @ CVUT FIT April 2013JBoss @ CVUT FIT April 2013
JBoss @ CVUT FIT April 2013Vaclav Tunka
 
CON6423: Scalable JavaScript applications with Project Nashorn
CON6423: Scalable JavaScript applications with Project NashornCON6423: Scalable JavaScript applications with Project Nashorn
CON6423: Scalable JavaScript applications with Project Nashorn
Michel Graciano
 

Similar to XWiki's Development Process (20)

XWiki: Collaborative web applications the wiki way
XWiki: Collaborative web applications the wiki wayXWiki: Collaborative web applications the wiki way
XWiki: Collaborative web applications the wiki way
 
Developing XWiki
Developing XWikiDeveloping XWiki
Developing XWiki
 
XWiki Enterprise 2.0 & Beyond
XWiki Enterprise 2.0 & BeyondXWiki Enterprise 2.0 & Beyond
XWiki Enterprise 2.0 & Beyond
 
XWiki Enterprise 2.0 & Beyond
XWiki Enterprise 2.0 & BeyondXWiki Enterprise 2.0 & Beyond
XWiki Enterprise 2.0 & Beyond
 
XWiki SAS development practices
XWiki SAS development practicesXWiki SAS development practices
XWiki SAS development practices
 
Leading a Community-Driven Open Source Project
Leading a Community-Driven Open Source ProjectLeading a Community-Driven Open Source Project
Leading a Community-Driven Open Source Project
 
Join the Java Evolution GIDS Bangalore & Pune
Join the Java Evolution GIDS Bangalore & PuneJoin the Java Evolution GIDS Bangalore & Pune
Join the Java Evolution GIDS Bangalore & Pune
 
Crunching the numbers: Open Source Community Metrics at OSCON
Crunching the numbers: Open Source Community Metrics at OSCONCrunching the numbers: Open Source Community Metrics at OSCON
Crunching the numbers: Open Source Community Metrics at OSCON
 
Crunching the numbers: Open Source Community Metrics
Crunching the numbers: Open Source Community MetricsCrunching the numbers: Open Source Community Metrics
Crunching the numbers: Open Source Community Metrics
 
Red Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus IntroductionRed Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus Introduction
 
XWiki Aquarium Paris
XWiki Aquarium ParisXWiki Aquarium Paris
XWiki Aquarium Paris
 
Java overview and architecture
Java overview and architectureJava overview and architecture
Java overview and architecture
 
Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)
 
Join the Java Evolution Baltimore/DC/Philly
Join the Java Evolution Baltimore/DC/PhillyJoin the Java Evolution Baltimore/DC/Philly
Join the Java Evolution Baltimore/DC/Philly
 
Open Chemistry: Input Preparation, Data Visualization & Analysis
Open Chemistry: Input Preparation, Data Visualization & AnalysisOpen Chemistry: Input Preparation, Data Visualization & Analysis
Open Chemistry: Input Preparation, Data Visualization & Analysis
 
Net Beans Jasig Jun2006
Net Beans Jasig Jun2006Net Beans Jasig Jun2006
Net Beans Jasig Jun2006
 
Node js vs golang -which one is better ?
Node js vs golang -which one is better ?Node js vs golang -which one is better ?
Node js vs golang -which one is better ?
 
Oslo Vancouver Onboarding
Oslo Vancouver OnboardingOslo Vancouver Onboarding
Oslo Vancouver Onboarding
 
JBoss @ CVUT FIT April 2013
JBoss @ CVUT FIT April 2013JBoss @ CVUT FIT April 2013
JBoss @ CVUT FIT April 2013
 
CON6423: Scalable JavaScript applications with Project Nashorn
CON6423: Scalable JavaScript applications with Project NashornCON6423: Scalable JavaScript applications with Project Nashorn
CON6423: Scalable JavaScript applications with Project Nashorn
 

Recently uploaded

Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Yara Milbes
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 

Recently uploaded (20)

Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 

XWiki's Development Process

  • 2. About XWiki ● Web platform on top of the wiki paradigm ● Structured data, scripting, applications ● Java platform, polyglot applications (JSR223) ● XWiki Enterprise – the product ● LGPL license, since 2004 ● www.xwiki.org
  • 3. XWiki Features ● Modular and highly extensible ● Version control, attachments, user and rights management, subwiki and subpages, comments, wiki syntax and WYSIWYG editor, macros, notifications, skins, search, import/export, apps, etc. ● Use cases: ● Knowledge sharing and collaboration ● Intranets, knowledge base, public websites, groupware, education, etc.
  • 5. Community ● Users, Contributors and Core committers ● Core and Contrib ● Meritocracy ● Governed by committers ● New committers voted based on contribution ● Lazy consensus ● Important changes go through voting ● +1, +/-0, -1 ● Core committers have veto (-1) rights
  • 6. Roadmap and Releases ● Timeboxing vs Feature-driven ● Open roadmap for each minor release ● 1 major release per year ● Minor releases (2.5 months) ● Dev releases (1-3 weeks) ● Bugfix releases ● Support 3 versions (Dev, Stable & LTS) ● Release Manager Roster (taking turns) ● Release Process on xwiki.org
  • 17. Process – Recap ● Communication: Mailing Lists + IRC ● Issue Tracking: Jira ● Source Code Management: GitHub ● Continuous Integration: Jenkins ● Build Repository: Nexus ● Documentation: (*.)xwiki.org ● Localization: l10n.xwiki.org ● Extensions Repo: extensions.xwiki.org ● Code Quality: SonarQube
  • 18. Dev Tools ● Source Control: Git ● IDE: Eclipse, IntelliJ ● Build Management: Maven 3 ● Quality Control: ● Code style: Checkstyle ● Testing: JUnit/Mockito, Jacoco, Selenium 2 ● Backwards compatibility: Revapi
  • 19. Dev Principles ● High focus on quality ● dev.xwiki.org dedicated to dev documentation and best practices ● Enforcing coding style and min. test coverage ● XWiki special days (Bug Fixing Days, etc.) ● High focus on backwards compatibility ● Deprecation strategy ● Legacy modules
  • 20. Statistics (1/2) ● 19 active committers ● 194 code contributors ● 60K commits ● 950K lines of code (Java) ● 67K mails ● 1K current subscribers ● 27.5K issues ● (13% open; 53% bugs)
  • 21. Statistics (2/2) ● 305 product releases ● (1 release every 15 days) ● 2.3M downloads ● 2200+ active instances ● 870+ extensions ● (200+ applications) ● 37 supported languages ● 9/12 years @ Google Summer of Code
  • 22. Ways to Contribute ● Pull Requests ● github.com/xwiki ● github.com/xwiki-contrib ● Translations ● l10n.xwiki.org ● Documentation ● xwiki.org ● New extensions ● extensions.xwiki.org
  • 23. Earning a living ● Multiple companies build their businesses on top of XWiki ● XWiki.com is the main company sponsoring the development of the project (since 2004) ● Professional Support ● Consulting & Training ● Custom Development & Solutions ● Hosting ● Sustainable alternative to proprietary

Editor's Notes

  1. Applications: Apache Velocity + JSR223: Python, Groovy, JavaScript, PHP, Ruby, etc. Internal (scripting) and external APIs for CRUD data operations.
  2. Open Development, not just open Source Frequent releases = Early feedback No single Release Manager + documented process = low bus factor
  3. Users, devs, contributors
  4. Users, Devs, Notifications (central) - roadmap discussions - ask for help - votes, proposals, announcements - BFDs - asynchronous - publicly indexed by (3+) services and searchable by google - also has a forum-like view with nabble Alternative: forum - needs account, need to go on the forum to interact (even if notified by mail), etc.
  5. Synchronous discussions IRC Bot (XWiki) Application on xwiki.org - wiki modifs and code commits live notifications - Jira link completion - chat archive Freenode.org for OS projects and interractions Open, standard and well known protocol that already has (and is easy to add) many integrations even if maybe less sexy
  6. OSS license - Dashboards, filters, reports - Used in Roadmap tracking - more powerful than github issues - we started with Jira, hard to move away Contributors can assign and close issues - issues closed by PRs have proper assignee Core + Contrib exts GitHub integration We do not close older issues Mandatory documentation and release notes fields checked by the release process
  7. GitHub – the place to be, social, etc. xwiki & xwiki-contrib organizations Pull Requests Many code reviews for core, less picky for contrib extensions Cvs, svn, git (Hub) Alternative: Bitbucket - not interested in Mercurial or private repos We store at least 3 branches for all supported versions
  8. 3 set of builds, 1 for each supported vers. Full integration, snapshots, up to distrib - unit tests, integration/functional tests for each module (minimal test instance) - security, web/accessibiltity standards - performance - quality (fails build if coverage not me + reports) - sonar metrics Screenshot of failing UI tests (even for older builds) See what commit breaks build Incremental builds on commit, full builds on manual trigger
  9. Quality level analysis - coverage, metrics, best practices, severity levels, architecture/design issues, etc. - technical debt - gives you a place to start when you want to improve something
  10. OSS License Proxy multiple repos + maven.xwiki.org/releases /externals /snapshots Core + Contrib exts Allows extensions to depend on each other and distributions to package extensions Used by maven builds of individual modules (without needing to rebuild everything)
  11. Product even if the result, is still connected to the project's infrastructure, even after it's installed and running (through EM/DW) Updates and new extensions from e.x.o (repository/index) - actually downloaded from either e.x.o or nexus.xwiki.org (if in core or contrib)
  12. Repo index + extension documentation Admin, install, config, high-level doc on xwiki.org + blog dev.xwiki.org – dev doc, best practices, etc. Translations Eating our own dogfood, various use cases of Xwiki (KB, App store, translation tool, etc.) Free to edit, monitored on IRC live and on mail (digests/watchlist)
  13. IntelliJ: OSS licenses
  14. Open by default Going open source is not an anti-pattern for a business Having a business contribute to a project helps the project overall