1 of 42

TYPO3 Contributor Onboarding

July 13th, 2017 - Malmö/SE

2 of 42

Overview & Topics

  • Introduction & Requirements
  • TYPO3 Universe & Teams
  • Tools & Communication
  • TYPO3 CMS Releases
  • Hands on!
  • Anything else...

3 of 42

Ways to contribute

  • report a bug & give feedback
  • make a donation
  • publish an extension
  • translate an extension
  • improve documentation
  • contribute source code
  • and much more ...

4 of 42

Scratch your own itch!

  • bugs will not be solved by themselves
  • only known bugs can be tackled
  • without feedback, motivation gets lost
  • community is about us - not they
  • you can learn a lot
  • … then, you can change a lot
  • … then, you can tell a lot to others

5 of 42

You should have...

  • development environment
    • e.g. PhpStorm, Eclipse, ...
  • local XAMP stack
    • Apache web-server
    • MySQL database (or MariaDB)
    • PHP interpreter (5.5+ / 7.x)
    • or Vagrant Box or Docker Container
  • Git installation

6 of 42

Universe & Teams

7 of 42

TYPO3 Universe

TYPO3 Association

Expert Advisory Board

Business Control Committee

Board

TYPO3 Inc

Community

Core Team

Marketing Team

Server Team

Event Team

[…] Team

Certification Team

Documentation Team

Agencies

Members

8 of 42

TYPO3 Teams

Content & Publications

  • Press Team
  • Editorial Team
  • Translation Team
  • Documentation Team

Organize & Visualization

  • Event Committee
  • Certification Team
  • Marketing Team
  • Design Team

TYPO3 CMS Development

  • Core Team
  • Security Team
  • Usability Team
  • Server Team

9 of 42

TYPO3 Events

International Conferences

T3CON

Developer Days

T3DD

Snowboard Tour

T3BOARD

Agency Meet-Up Days

T3AMD

Barcamps

T3C[xyz]

Code Sprints

T3SPRINT

User Experience Week�T3UXW

User Groups, and a lot of more events

10 of 42

Tools & Communication

11 of 42

12 of 42

typo3.org

  • central community hub
  • announcements & events
  • extensions & TYPO3 releases
  • management of TYPO3 accounts
  • register your account soon - you’ll need it

13 of 42

Slack

  • central communication platform
  • public & protected topic groups
    • #typo3-cms - general CMS support
    • #typo3-cms-coredev - join the core development
  • direct messages to whole community
  • get almost immediate feedback
  • register at https://forger.typo3.org/slack

14 of 42

Mailing Lists - lists.typo3.org

  • … from times prior to Slack
  • not used that frequent anymore
  • TYPO3-announce for important releases

15 of 42

Wiki Pages - wiki.typo3.org

  • for ad-hoc documentation & reference
  • for discussing blueprints (concepts)
    • provide a bigger picture to others
    • ask for feedback & additions
    • see https://wiki.typo3.org/Blueprints

16 of 42

Documentation - docs.typo3.org

  • based on ReST (re-structured text)
    • requires local Sphinx-Doc installation
  • official core documentation
    • TypoScript, TCA, system extensions ...
  • extension documentation
  • other documentation
    • e.g. “rst-ing with PhpStorm”
  • possibility to directly edit via GitHub

17 of 42

Translation - translation.typo3.org

  • based on Pootle
  • uses XLIFF standard
  • collaborative translation tool
  • for core & extensions

18 of 42

Forge - forge.typo3.org

  • based on Redmine
  • issue tracker for core & extensions
  • search for existing bugs & patches
  • provide feedback & further details
  • new bug reports & feature requests

19 of 42

Git Repositories - git.typo3.org

  • for core & some extensions
  • used to fetch data only
  • review process on a different system

20 of 42

Gerrit - review.typo3.org

  • web-based code review system
  • Git server & SSH server
  • written in Java, initially by Google
  • developed for Android development
  • relies on Git as version control system
  • gatekeeper for git.typo3.org repository

21 of 42

Gerrit - regular way & direct push

22 of 42

Gerrit - using the review system

23 of 42

Gerrit - why?

  • software is always incomplete
  • using feedback and skills of others
  • four-eye review - two additional reviewers
  • no merges without proper review
    • except real no-brainers
    • otherwise “you break it, you fix it”
  • code review & functional verification

24 of 42

Gerrit - functional verification

  • change really fixes described bug
  • change really meets feature requirements
  • robust & not breaking existing behavior
  • does not introduce side effects
  • ideally with automated test scenario
  • individually test in browser
  • think about the change & try to find flaws

25 of 42

Gerrit - code review

  • change is correct & complete
  • change is well-coded (no side-effects)
  • change is documented (e.g. new feature)
  • change follows coding guidelines
  • review by reading the code
  • review by understanding the code

26 of 42

Gerrit - voting & merging

  • changes to TYPO3 CMS core require
    • at least one vote by a team member (+2)
    • at least one vote by a community member (+1)

verified

code review

Team Member

+2 ✓

+2 ✓

Anyone

+1

+1

27 of 42

GitHub - github.com/TYPO3

  • for some core components
    • additional semi-official core extensions
    • like deprecated previous core extensions
    • used as mirror for composer, Travis & others
  • for many third party extensions
    • instead of review.typo3.org?
    • fine & easier for few contributors
  • pull-requests as review workflow

28 of 42

Travis, AppVeyor & Bamboo

  • continuous integration pre-/post-merge
  • there are thousands of
    • ~9000 unit tests - small specific parts
    • ~800 functional tests - dependent processes
    • ~60 acceptance tests - browser UI (Codeception)
  • Travis CI - for Linux
  • AppVeyor - fow Windows
  • Bamboo - on own infrastructure

29 of 42

Forger - forger.typo3.org

  • simplified search functionality
  • aggregation & metrics for development
    • open issues
    • pending patches
    • “almost there” changes
    • historical measurements
  • useful for sprint boards & overviews
  • additional helper tools

30 of 42

Interaction Guidelines

  • use English first (messages & coding)
  • documentation helps others to understand
  • be friendly and helpful - code of conduct
  • give feedback & ask for feedback
  • it’s a network - stay connected

31 of 42

TYPO3 CMS Releases

32 of 42

Releases & Versioning

  • long term support versions (LTS)
    • three years maintenance in total
    • 1 year regular bug fixes
    • 2 years priority & security bug fixes
  • semantic versioning
    • 7.x.y → 8.0.0 - major (breaking compatibility)
    • 8.0.0 → 8.1.0 - minor (introducing new features)
    • 8.1.1 → 8.1.2 - patch (just bug fixes)

33 of 42

Releases & Versioning

34 of 42

Development Process

  • development of TYPO3 CMS 8
    • sprint releases & specific focus (~6 weeks each)
    • 8.0 → remove deprecated code
    • 8.1 → Doctrine DBAL prerequisites
    • 8.2 → Doctrine DBAL integration
    • 8.3 → Rich Text Editor
    • ...
    • code sprints prior to each minor release
    • development → stabilization → release

35 of 42

Development Guidelines

  • coding guidelines & PSR-2 coding style
    • code formatting & indentions
    • directory structure & naming scheme
    • PHPdoc comments for classes and methods
  • commit message format
    • [FEATURE] → introduce new behavior
    • [SECURITY] → fixing a security issue
    • [BUGFIX] → fixing a bug, non-breaking change
    • [TASK] → “undefined”, e.g. code clean-up

36 of 42

Development Guidelines

  • document important changes
    • new features
    • breaking changes
    • important changes
    • deprecation changes
    • see ChangeLog

37 of 42

Hands on!

38 of 42

Configure Git & Gerrit

  • registered at typo3.org already?
  • follow contribution workflow guide
    • creating SSH key-pair
    • register & configure review.typo3.org account
    • configure SSH, Git & Gerrit locally
    • install Gerrit commit message hook
  • test your settings

39 of 42

Review & test a change

  • open https://review.typo3.org/#/c/48977/
  • copy & use cherry-pick command
    • git fetch� ssh://review.typo3.org/Packages/TYPO3.CMS� refs/changes/77/48977/1� && git cherry-pick FETCH_HEAD
  • do code review & functional verification
  • apply your vote or comment on Gerrit

40 of 42

Modify & push a change

  • use previously cherry-picked change
  • do any modification
  • amend your changes
    • git commit -a --amend
  • push back your changes
    • git push origin HEAD:refs/publish/master

41 of 42

Create a new change

  • create, search, find an issue
  • think about it and create a patch for it
  • commit the change & add message
    • git commit -a
  • push your changes to Gerrit
    • git push origin HEAD:refs/publish/master

42 of 42

Thanks!

Oliver Hader & Anja Leichsenring

Slack: @olly & @maddy

Twitter: @ohader & @maddy2101

Mail: oliver.hader@typo3.org &� anja.leichsenring@typo3.org

These slides are thankfully inspired by

Michael Stucki & Xavier Perseguers

Nicole Cores & Helmut Hummel