no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
Previous revisionNext revision | |||
— | doc:guidelines [2019/05/16 13:34] – Added a bit of info on copyright notices. gkazhoya | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ===== CRAM Programming Guidelines ===== | ||
+ | |||
+ | ==== Collaborative Development ==== | ||
+ | |||
+ | If you're working on a package that other people are working on / are using, please try to stick to the following guidelines: | ||
+ | |||
+ | * Always use the GIT version control system when developing | ||
+ | * One commit per feature with a meaningful commit message | ||
+ | * Use square brackets to annotate for which package the commit is. E.g.: ''" | ||
+ | * Send a //pull request// through GitHub, when: | ||
+ | * you want somebody to review your code | ||
+ | * you want your code to be tested on a different machine than yours | ||
+ | * When sending pull requests always try to include a person who you'd like to review it in the comment to the request | ||
+ | |||
+ | If you want to introduce major interface changes through you code, make an announcement on the [[https:// | ||
+ | |||
+ | ==== Development of Roslisp Packages ==== | ||
+ | |||
+ | **package.xml** | ||
+ | |||
+ | Relevant documentation: | ||
+ | |||
+ | * As a ''< | ||
+ | * Use ''< | ||
+ | * The license for all CRAM code should be BSD / Public Domain | ||
+ | * Put links to github into the ''< | ||
+ | |||
+ | **my-package-name.asd files** | ||
+ | * Put it into the root of your source directory, no need for symbolic links and asdf directories | ||
+ | * Always explicitly specify dependencies on //all// the Lisp packages, symbols of which you use in your code (even if the dependency is transitive and is automatically added by other packages that you depend on). | ||
+ | |||
+ | |||
+ | ==== Coding Style ==== | ||
+ | |||
+ | **Lisp** | ||
+ | |||
+ | * Pay attention to the indentation!!! | ||
+ | * Try not to exceed 80 symbols in width in your code | ||
+ | * Lisp names (variables, classes, methods, packages) are all lowercase with dashes in between: '' | ||
+ | * Do you usually get that feeling that something is underdocumented? | ||
+ | * Try not to '' | ||
+ | * Don't use '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | **Ros-related** | ||
+ | |||
+ | * ROS packages' | ||
+ | |||
+ | |||
+ | ==== Copyright notices ==== | ||
+ | CRAM is open source software licensed under the BSD licence. | ||
+ | This means the code can be used by any third party without having to contribute anything back and having to mention the original authors. | ||
+ | Our copyright notice is there to allow others to use our software without being afraid of being sued. | ||
+ | |||
+ | An example copyright notice can be found in the header of most '' | ||
+ | |||
+ | Here are some guidelines on how to deal with the copyright notice of your code: | ||
+ | * When you create a new '' | ||
+ | * If you simply copy pasted a file, please keep the original notice intact. | ||
+ | * For non-sourcecode files such as a '' | ||
+ | * When editing an existing file, you can add your name into the header if you made a substantial contribution to the code. | ||
+ | |||
+ | A contribution is considered substantial if: | ||
+ | * you added a new feature, | ||
+ | * you fixed a major bug and thereby edited many lines of code in the file. | ||
+ | |||
+ | A contribution is considered not substantial if: | ||
+ | * you fixed a typo, | ||
+ | * fixed indentation, | ||
+ | * slightly improved a documentation string, | ||
+ | * other minor contributions such as minor refactoring and nicification, | ||
+ | * minor bug fixes, | ||
+ | * copy paste of existing code with minor tweaks. | ||
+ | |||
+ | |||
+ | ==== Lisp Programming ==== | ||
+ | Todo: Some Lisp patterns and stuff would be nice, like tail recursive functions and optimization flags, making sure the functions have no side effects, etcetc... | ||