= NNG Contributing Guidelines Legal stuff: For any submission you make to us, either by filing an issue, or submitting a defect, or sending us a message, you agree and certify that: ** You are the author or legal owner of the content submitted, or you have authorization to submit the content by the owner (such as your employer). ** Unless the submission is otherwise labeled, you or the owner are granting the NNG Project, its contributors, and licensees, a non-exclusive license to your use submission under the terms of MIT License (as documented in the <> file in this repository.) This grant shall include a right to use for any patents covering content in the submission. ** You are not aware of any legal encumbrances to the use of the submission (such as patents held by others) unless explicitly stated otherwise. ** You have read, and agree to abide by, our <>. ** You understand that participation in this project is voluntary, and at no point shall any of the project members or leadership be obligated to review, merge, or handle any submission. == Filing Issues We use github issues for NNG. We ask that you keep in mind the following when filing issues: * First look to see if your issue is already covered by an existing issue. * Synopsis should be brief, but descriptive. (We may alter the synopsis to correct its accuracy or improve its brevity.) * Include details about the platform (operating system, language). * Include CMake configuration used to build NNG. * Include expected results or behavior, and observed results or behavior. * If at all possible, a reproducible test case is helpful. We prefer test cases as the minimal amount of C code to demonstrate the defect. * Please file issues only when filing things that should be fixed by changes to the source or documentation in the repository (such as bugs or feature requests). For support questions and other discussion, please instead use the mailing list https://www.freelists.org/list/nanomsg or Gitter chat https://gitter.im/nanomsg/nanomsg . == Pull Requests * We use Github PRs * Please follow the existing coding style. ** See the `.clang-format` for whitespace rules. ** Return values should be enclosed in parenthesis. ** Conditional clauses are always enclosed in braces, and thus span multiple lines. TIP: The `.clang-format` file and `clang-format` may be helpful, but is not necessarily complete. Also you may need to use a recent version of `clang-format` as older versions can differ in their output. * If you submit a PR, we would appreciate it if you would respond to review feedback, rather than just leaving your baby on our doorstep. Abandoned PRs or issues may be closed without further action. * Commits should have comments formatted like this: ---- fixes # fixes # ---- * We have an "always release ready" policy for our tree, meaning we should be able to build a functional release at any commit boundary. This ensures that others taking the work can use git bisect and similar approaches when hunting down regressions, or when cherry-picking changes for their own forked copies. This has a few consequences: ** PRs should be functionally complete (that is, don't submit a PR with partial work in progress, unless you have reached a milestone that can stand on its own merit.) ** Each commit in a PR should also be "complete", so that a release could be cut in between your commits without leaving the tree in a broken or dysfunctional state. ** Usually this means its best to address only one issue in a PR, with just one commit (squashed). ** Please have already merged and tested your code against the latest changes in master. (If your code has merge conflicts, your PR will be rejected until you have fixed the conflicts.) * As a special exception, you may submit a PR for handling by our test infrastructure; in that case please clearly identify that the PR is submitted for that purpose, and should not considered for integration yet. When that testing is done, please close the PR, and submit a new one when you are ready for final review and integration. * Code submitted should contain updates to any copyright files to add your copyright to the license. We prefer you follow the existing style of copyright, `// Copyright ` NOTE: We only use the most recent year, and we do not use `\(C)` which has no legal value when the word "`Copyright`" is already present. We also do not use the old "`All rights reserved.`" statement, which is equally meaningless under current international copyright law. * When updating an existing file, any new Copyright notice should be added immediately below the pre-existing one, just before the license boilerplate. * All new files should use the MIT license and the same boilerplate from one of the other files. We do not normally approve submissions with different license or boilerplates -- please contact us if you have a compelling reason for wanting to do that.