xwiki's development process
TRANSCRIPT
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
Applications: Apache Velocity + JSR223: Python, Groovy, JavaScript, PHP, Ruby, etc.Internal (scripting) and external APIs for CRUD data operations.
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
MeritocracyGoverned 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 yearMinor 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
Open Development, not just open SourceFrequent releases = Early feedbackNo single Release Manager + documented process = low bus factor
Process: Community
Users, devs, contributors
Process: Mails
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 nabbleAlternative: forum- needs account, need to go on the forum to interact (even if notified by mail), etc.
Process: Chat
Synchronous discussionsIRC Bot (XWiki) Application on xwiki.org- wiki modifs and code commits live notifications- Jira link completion- chat archiveFreenode.org for OS projects and interractionsOpen, standard and well known protocol that already has (and is easy to add) many integrations even if maybe less sexy
Process: Issues
OSS license- Dashboards, filters, reports- Used in Roadmap tracking- more powerful than github issues- we started with Jira, hard to move awayContributors can assign and close issues- issues closed by PRs have proper assigneeCore + Contrib extsGitHub integrationWe do not close older issuesMandatory documentation and release notes fields checked by the release process
Process: Code
GitHub the place to be, social, etc.xwiki & xwiki-contrib organizationsPull RequestsMany code reviews for core, less picky for contrib extensionsCvs, svn, git (Hub)Alternative: Bitbucket- not interested in Mercurial or private reposWe store at least 3 branches for all supported versions
Process: Continuous Integration
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 metricsScreenshot of failing UI tests (even for older builds)See what commit breaks buildIncremental builds on commit, full builds on manual trigger
Process: Quality
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
Process: Builds
OSS LicenseProxy multiple repos+ maven.xwiki.org/releases /externals /snapshotsCore + Contrib extsAllows extensions to depend on each other and distributions to package extensionsUsed by maven builds of individual modules (without needing to rebuild everything)
Process: Product
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)
Process: Websites
Repo index + extension documentationAdmin, install, config, high-level doc on xwiki.org + blogdev.xwiki.org dev doc, best practices, etc.TranslationsEating 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)
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
IntelliJ: OSS licenses
Dev Principles
High focus on qualitydev.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 compatibilityDeprecation strategy
Legacy modules
Statistics (1/2)
19 active committers194 code contributors
60K commits950K lines of code (Java)
67K mails1K current subscribers
27.5K issues(13% open; 53% bugs)
Statistics (2/2)
305 product releases(1 release every 15 days)
2.3M downloads2200+ active instances
870+ extensions(200+ applications)
37 supported languages
9/12 years @ Google Summer of Code
Ways to Contribute
Pull Requestsgithub.com/xwiki
github.com/xwiki-contrib
Translationsl10n.xwiki.org
Documentationxwiki.org
New extensionsextensions.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
Open by defaultGoing open source is not an anti-pattern for a businessHaving a business contribute to a project helps the project overall
Questions?
Thank you!
Eduard Moraru
Enygma2002
Click to edit the title text format