From e8d208499207ab8620d9c850f664cd6ddce4bb00 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Tue, 4 Jul 2017 15:34:34 +0300 Subject: [PATCH] Create CONTRIBUTING.md --- CONTRIBUTING.md | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..4fd79c0 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,52 @@ +# CONTRIBUTING + +Any contributions (code, documentation, ...) are welcome. This project uses [cmocka](http://cmocka.org) for testing, you may need to check their documentation + +# New Features +- This library may not accept all new features, it is better to create an issue and get approval before coding +- You must add test for every new feature +- The feature must be compiled in both UNIX/POSIX systems (e.g. macos, linux...) and Windows + +# Code Style +This library is written with C99, don't try to add C++ files (yes it can compiled into lib), +if you have enough reason to add C++ files than create an issue and get approval before coding, + +- Lines should be wrapped at 80 characters. +- Don't invent new style for existing ones +- Use C89 style comments (`/* comments */`) not C++ style comments (`// comments`) +- Don't use TABs instead use 2 spaces for TABs +- All indents must be 2 spaces, not 1 nor 4 space +- All functions in `include` folder must be exported by `DS_EXPORT` and wrapped by `extern "C" {` for C++ +- Crate new line for return type, attribs: + +```C +DS_EXPORT +uint32_t +ds_hashfn_djb2(void *key); +``` + +not acceptable: + +```C +DS_EXPORT uint32_t ds_hashfn_djb2(void *key); +``` +- Variables must be declared at the top of a scope before usage: +```C +int x; +int y; + +x = y = 0; +``` + +not acceptable: + +```C +int x; + +x = 0; +int y = 0; +``` + +- All files must retain same LICENSE statement +- Code with warnings will not be accepted, please suppress them (not by disabling them) +- Run code anaylysis before submitting pull requests, if you use Xcode you can enable Sanitizer in scheme, you can use valgrind in linux