First of all, thanks for making this project better. Without your help, pilight wouldn't have come to what it is now!
BUT, be aware that contributing to a big project shouldn't be considered a playground. It also isn't meant for you to learn git
.
So if you don't know what you are doing then don't do it. Instead open a forum topic, point to your code and ask for help.
When you contribute to pilight make sure to follow this checklist:
- Is your pull request directed at the development branch? pilight doesn't accept contributions to the master branch because this branch reflects the latest stable code.
- Did you read the development pages of pilight? Even if you think you know all, please check and double check. There are always small syntax changes. Also check similar already existing modules for syntax.
- Keep the coding style in sync with that of pilight (see below).
- First merge with the latest development code.
- Make a different branch for each new feature you want to commit.
- Test how pull-requests work on your own test repositories.
- Make sure your pull-request contains one single commit.
- Open a pull-request when you indeed want to contribute and follow-up on our comments. If you don't want to implement our requested changes after reviewing your pull-request, don't bother opening one.
- Re-read this file before every pull-request, because it will be updated regularly.
- Don't forget to enjoy the appreciation of the end user!
- No unnecessary spaces
if ( 1 == 1 )
{
...
}
should become:
if(1 == 1) {
...
}
- Don't inline variables:
int x = 0;
int long_variable_name = 0;
int a = 0;
but use
int x = 0;
int long_variable_name = 0;
int a = 0;
but preferable use for around max 50 characters:
int x = 0, long_variable_name = 0, a = 0;
- Variable defining order.
First start with
struct
, then specials types (*_t
), thenchar
, thendouble
/float
and end withint
.
struct protocol_threads_t *node = (struct protocol_threads_t *)param;
struct JsonNode *json = (struct JsonNode *)node->param;
struct JsonNode *jid = NULL;
struct JsonNode *jchild = NULL;
time_t time;
char *tmp = NULL;
double itmp = 0.0;
int id = 0, state = 0, nstate = 0;
- Initialize your variables.
char *a = NULL;
char a[10];
memset(&a, 0, 10);
double a = 0.0;
int a = 0;
- User the
static
keyword for all variables and function only use in the single C file your module consists of. - Always use tabs instead of spaces for inline markup.