Documentation / Contributing

Everyone is welcome to help out! But to keep this project sustainable, please ensure your contribution respects the requirements below.

Pull Request requirements

Requirements on pull requests;

  • All tests MUST pass.
  • Code coverage MUST remain at 100%.
  • Code MUST adhere to PSR-1 and PSR-12 code standards.
  • Staic analysis check MUST pass.

SemVer, versions, and target branches

This repo uses strict Semantic Versioning.

  • MAJOR version when introducing breaking changes
  • MINOR version when adding features
  • PATCH version when fixing bugs and equivalent changes

List of current versions.

Base your patch on corresponding version branch, and target that version branch in your pull request.

Policy

  • Library MUST provide core functionality, fully compatible with WebSocket standard.
  • Library MAY provide optional functionality of general use. Such functionality should preferably be offered as middleware, or possibly as configuration option.
  • Library must NOT make assumptions on how it will be used.
  • Library must NOT provide specific service implementations. Such implementations should be provided in separate repo, using this library as a dependency.

Dependency management

Install or update dependencies using Composer.

# Install dependencies
make install

# Update dependencies
make update

Code standard

This project uses PSR-1 and PSR-12 code standards.

# Check code standard adherence
make cs

Unit testing

Unit tests with PHPUnit, coverage with Coveralls

# Run unit tests
make test

# Create coverage
make coverage

Static analysis

This project uses PHPStan for static analysis.

# Run static analysis
make stan

Contributors

  • Sören Jensen (maintainer)
  • Fredrik Liljegren (orginator)
  • Armen Baghumian Sankbarani
  • Ruslan Bekenev
  • Joshua Thijssen
  • Simon Lipp
  • Quentin Bellus
  • Patrick McCarren
  • swmcdonnell
  • Ignas Bernotas
  • Mark Herhold
  • Andreas Palm
  • pmaasz
  • Alexey Stavrov
  • Michael Slezak
  • Pierre Seznec
  • rmeisler
  • Nickolay V
  • Shmyrev
  • Christoph Kempen
  • Marc Roberts
  • Antonio Mora
  • Simon Podlipsky
  • etrinh
  • zgrguric
  • axklim
  • Dejan Levec
  • Pieter Oliver
  • Sebastian Hagens
  • Adrian Mihai