mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-11-15 04:27:14 +01:00
88 lines
3.1 KiB
Markdown
88 lines
3.1 KiB
Markdown
Contributing to sabre projects
|
|
==============================
|
|
|
|
Want to contribute to sabre/dav? Here are some guidelines to ensure your patch
|
|
gets accepted.
|
|
|
|
|
|
Building a new feature? Contact us first
|
|
----------------------------------------
|
|
|
|
We may not want to accept every feature that comes our way. Sometimes
|
|
features are out of scope for our projects.
|
|
|
|
We don't want to waste your time, so by having a quick chat with us first,
|
|
you may find out quickly if the feature makes sense to us, and we can give
|
|
some tips on how to best build the feature.
|
|
|
|
If we don't accept the feature, it could be for a number of reasons. For
|
|
instance, we've rejected features in the past because we felt uncomfortable
|
|
assuming responsibility for maintaining the feature.
|
|
|
|
In those cases, it's often possible to keep the feature separate from the
|
|
sabre projects. sabre/dav for instance has a plugin system, and there's no
|
|
reason the feature can't live in a project you own.
|
|
|
|
In that case, definitely let us know about your plugin as well, so we can
|
|
feature it on [sabre.io][4].
|
|
|
|
We are often on [IRC][5], in the #sabredav channel on freenode. If there's
|
|
no one there, post a message on the [mailing list][6].
|
|
|
|
|
|
Coding standards
|
|
----------------
|
|
|
|
sabre projects follow:
|
|
|
|
1. [PSR-1][1]
|
|
2. [PSR-4][2]
|
|
|
|
sabre projects don't follow [PSR-2][3].
|
|
|
|
In addition to that, here's a list of basic rules:
|
|
|
|
1. PHP 5.4 array syntax must be used every where. This means you use `[` and
|
|
`]` instead of `array(` and `)`.
|
|
2. Use PHP namespaces everywhere.
|
|
3. Use 4 spaces for indentation.
|
|
4. Try to keep your lines under 80 characters. This is not a hard rule, as
|
|
there are many places in the source where it felt more sensibile to not
|
|
do so. In particular, function declarations are never split over multiple
|
|
lines.
|
|
5. Opening braces (`{`) are _always_ on the same line as the `class`, `if`,
|
|
`function`, etc. they belong to.
|
|
6. `public` must be omitted from method declarations. It must also be omitted
|
|
for static properties.
|
|
7. All files should use unix-line endings (`\n`).
|
|
8. Files must omit the closing php tag (`?>`).
|
|
9. `true`, `false` and `null` are always lower-case.
|
|
10. Constants are always upper-case.
|
|
11. Any of the rules stated before may be broken where this is the pragmatic
|
|
thing to do.
|
|
|
|
|
|
Unit test requirements
|
|
----------------------
|
|
|
|
Any new feature or change requires unittests. We use [PHPUnit][7] for all our
|
|
tests.
|
|
|
|
Adding unittests will greatly increase the likelyhood of us quickly accepting
|
|
your pull request. If unittests are not included though for whatever reason,
|
|
we'd still _love_ your pull request.
|
|
|
|
We may have to write the tests ourselves, which can increase the time it takes
|
|
to accept the patch, but we'd still really like your contribution!
|
|
|
|
To run the testsuite jump into the directory `cd tests` and trigger `phpunit`.
|
|
Make sure you did a `composer install` beforehand.
|
|
|
|
[1]: http://www.php-fig.org/psr/psr-1/
|
|
[2]: http://www.php-fig.org/psr/psr-4/
|
|
[3]: http://www.php-fig.org/psr/psr-2/
|
|
[4]: http://sabre.io/
|
|
[5]: irc://freenode.net/#sabredav
|
|
[6]: http://groups.google.com/group/sabredav-discuss
|
|
[7]: http://phpunit.de/
|