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.

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

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

Version Branch PHP Status
3.1 v3.1-main ^8.1 Current version
3.0 v3.0-main ^8.1 Bug fixes only
2.2 v2.2-main ^8.0 Bug fixes only
2.1 - ^8.0 Not supported
2.0 - ^8.0 Not supported
1.7 - ^7.4|^8.0 Not supported
1.6 - ^7.4|^8.0 Not supported
1.5 - ^7.4|^8.0 Not supported
1.4 - ^7.1 Not supported
1.3 - ^5.4|^7.0 Not supported
1.2 - - Not supported
1.1 - - Not supported
1.0 - - Not supported

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-check

Unit testing

Unit tests with PHPUnit, coverage with Coveralls

# Run unit tests
make test

# Create coverage
make coverage

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