Add some style guidelines for contributors

This commit is contained in:
Eugen Wissner 2017-07-16 18:56:48 +02:00
parent 42146c5e8a
commit 9ef5986288
2 changed files with 51 additions and 9 deletions

View File

@ -15,18 +15,21 @@ can work on.
writing new ones, or providing usage examples. writing new ones, or providing usage examples.
* **Testing**: Test coverage is important for a library. Writing tests is not only helpful, but is also a great way * **Testing**: Test coverage is important for a library. Writing tests is not only helpful, but is also a great way
to get a feel for how tanya works. to get a feel for how tanya works.
* **Adding new features**: Tanya is a growing library. If you think some feature is missing, you can suggest
and implement this.
## Opening an issue ## Opening an issue
If you have found a bug, an error, have some question, or suggestion, open in issue. Tanya uses an external If you have found a bug, an error, have some question, or suggestion, open in issue. I'll try to answer as soon
as I can. Tanya uses an external
[bug tracker](https://issues.caraus.io/projects/tanya/issues). You should [bug tracker](https://issues.caraus.io/projects/tanya/issues). You should
[register](https://issues.caraus.io/account/register) before you can report your issue. There is also a list [register](https://issues.caraus.io/account/register) before you can report your issue. There is also a list
of open issues that mirror the current development process and progress. If you're looking for a challenge, just of open issues that mirror the current development process and progress. If you're looking for a challenge, just
pick an issue you are interested in and start working on it. Fill free to comment on the issue to get more pick an issue you are interested in and start working on it. Fill free to comment on the issue to get more
information. information.
Some issues have a category assigned to it. Such issues belongs mostly to a larger part of the library that is Some issues have a category assigned to them. Such issues belong mostly to a larger part of the library that is
currently in development. The category specifies then the git branch development happens on. The remaining issues currently in development. The category specifies then the git branch development happens on. The remaining issues
can be fixed directly in master. can be fixed directly in master.
@ -35,9 +38,11 @@ to be fixed till a specific release. Version numbers refer to the versions in th
[git repository](https://github.com/caraus-ecms/tanya/releases). [git repository](https://github.com/caraus-ecms/tanya/releases).
## Creating a pull request ## Contribution process
I accept GitHub pull requests. Creating a pull request is like sending a patch with a suggested change. ### Creating a pull request
I accept GitHub pull requests. Creating a pull request is like sending a patch with the suggested change.
First you have to [fork](https://guides.github.com/activities/forking/) the repository. Clone your fork locally First you have to [fork](https://guides.github.com/activities/forking/) the repository. Clone your fork locally
with `git clone` and create a new branch where you want to work, for example: with `git clone` and create a new branch where you want to work, for example:
@ -47,16 +52,39 @@ git checkout -b bugfix-x
Commit your changes to your fork: Commit your changes to your fork:
```shell ```shell
git commit -m "Fix Bug X" git commit -m "Fix X"
git push -u origin bugfix-x git push -u origin bugfix-x
``` ```
After that if you visit your fork on GitHub, GitHub will suggest to create pull request. Just follow the steps After that if you visit your fork on GitHub, GitHub will suggest to create pull request. Just follow the steps
described on GitHub to finish the process. described on GitHub to finish the process. See
[Using Pull Requests](https://help.github.com/articles/about-pull-requests/) for more information.
Please ensure that you fork is even with the upstream (original) repository. If not, you have to rebase your branch Please ensure that you fork is even with the upstream (original) repository. If not, you have to rebase your branch
on upstream master before submitting a pull request. See https://help.github.com/articles/syncing-a-fork/ for a on upstream/master before submitting a pull request. See https://help.github.com/articles/syncing-a-fork/ for a
step-by-step guide. step-by-step guide.
### Fixing a bug
Add a unittest that demonstrates the bug along with a short description:
```d
// Issue ###: https://issues.caraus.io/issues/###.
private unittest
{
}
```
### Adding new features
* Use Ddoc to document the feature.
* Add some unittests that demonstrate how the feature is supposed to work and prevent new bugs.
### Style guide
Make sure your changes follow [The D Style](https://dlang.org/dstyle.html) (including
[Additional Requirements for Phobos](https://dlang.org/dstyle.html#phobos).
## Questions and suggestions ## Questions and suggestions

View File

@ -19,9 +19,10 @@ data structures and utilities that depend on the Garbage Collector in Phobos.
* [Documentation](https://docs.caraus.io/tanya) * [Documentation](https://docs.caraus.io/tanya)
* [Contribution guidelines](CONTRIBUTING.md) * [Contribution guidelines](CONTRIBUTING.md)
## Overview ## Overview
Tanya consists of the following packages: Tanya consists of the following packages and (top-level) modules:
* `async`: Event loop (epoll, kqueue and IOCP). * `async`: Event loop (epoll, kqueue and IOCP).
* `container`: Queue, Array, Singly and doubly linked lists, Buffers, UTF-8 * `container`: Queue, Array, Singly and doubly linked lists, Buffers, UTF-8
@ -29,8 +30,14 @@ string, Hash set.
* `format`: Formatting and conversion functions. * `format`: Formatting and conversion functions.
* `math`: Arbitrary precision integer and a set of functions. * `math`: Arbitrary precision integer and a set of functions.
* `memory`: Tools for manual memory management (allocators, smart pointers). * `memory`: Tools for manual memory management (allocators, smart pointers).
* `net`: URL-Parsing, sockets, utilities. * `net`: URL-Parsing, network programming.
* `network`: Socket implementation. `network` is currently under rework.
After finishing the new socket implementation will land in the `net` package and
`network` will be deprecated.
* `os`: Platform-independent interfaces to operating system functionality. * `os`: Platform-independent interfaces to operating system functionality.
* `typecons`: Templates that allow to build new types based on the available
ones.
## Basic usage ## Basic usage
@ -125,6 +132,7 @@ int i = arr[7]; // Access 7th element.
There are more containers in the `tanya.container` package. There are more containers in the `tanya.container` package.
## Development ## Development
### Supported compilers ### Supported compilers
@ -160,3 +168,9 @@ Deprecated features are removed after one release (in approximately 6 weeks afte
is being tested on Windows and FreeBSD as well. is being tested on Windows and FreeBSD as well.
* The library isn't thread-safe yet. * The library isn't thread-safe yet.
## Feedback
Any feedback about your experience with tanya would be greatly appreciated. Feel free to
[contact me](mailto:info@caraus.de).