xwiki's development process

Download XWiki's Development Process

If you can't read please download the document

Upload: eduard-moraru

Post on 16-Apr-2017

364 views

Category:

Software


0 download

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