tree 0f045164fac8a1f91b368bb3835c95c3cb26e553
parent 15f6aa74e303362e686782b403a9c5462cab0c8c
author Tobias Bouschen <tobias.bouschen@googlemail.com> 1595448557 +0200
committer GitHub <noreply@github.com> 1595448557 +0200
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJfGJztCRBK7hj4Ov3rIwAAdHIIAH2k/Kn4h+zfj80PDEUQjYRQ
 WueSb3h7XdZYNuWYZRDihhqdNoHFb3ZgqD98Y7XR5McSYcp6ITjymZK1S4mvNBDM
 IiA0xfTYnTLzSEk6wK61h7BGL9RYxyWZ1M9ivvcI4au+Gk+7j6c/SZq3IsCx0bkQ
 NBLB7JQPIKt5cwt++exrO8V6HTmIdoP2KQ095soRd1Ia3CYgU6x/6HzQhkptF67C
 +DTRtNGiNyI/Ac8x9r7v90tGboIsbSxMW4rvykB58xi/OB46rW7VgGNLzdI2vqRT
 UPYdQ4EJWzRuNm+Y+joOA8IrCno1I+YxlhYt6rLFYo/HfDLZQ5QSjjctv6sjoLI=
 =Gnh+
 -----END PGP SIGNATURE-----
 

Update contribution guidelines (#7)

* Rework README

Restructures the readme to make it easier to read and find the necessary
information.

Drops the instructions on how to use git. If the potential contributor
does not know how to use it, this readme is not the place for them to
learn it.

Removes the entry on committing the generated site artifacts. This
should be done separately to keep the pull requests clean.

Adds links to GitHub resources explaining the basic GitHub workflow.

* Add CONTRIBUTING page

This page will be linked to whenever a new PR is created. It just points
the user to the README and the "Getting Involved" page on the website.

* Update "Get Involved" page

Restructures the sections to make information easier to find.

Adds more information on how to contribute using GitHub.

Adds a section about the need for the Apache Contributor License
Agreement.

Links back to the "Get Involved" page from the "Source Code" page.