Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:guidelines [2019/05/16 13:13] – [Coding Style] gkazhoyadoc:guidelines [2019/07/11 13:24] (current) gkazhoya
Line 49: Line 49:
  
   * ROS packages' names are usually lowercase with underscores in between: ''my_awesome_ros_package''.   * ROS packages' names are usually lowercase with underscores in between: ''my_awesome_ros_package''.
 +
 +
 +==== 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 ''*.lisp'' files in CRAM.
 +
 +Here are some guidelines on how to deal with the copyright notice of your code:
 +  * When you create a new ''*.lisp'' or ''*.asd'' file or any other source code file, please add a copyright notice with your name and institution name.
 +  * If you simply copy pasted a file, please keep the original notice intact.
 +  * For non-sourcecode files such as a ''package.xml'' file, make sure to simply put your name in the correct tag (e.g. ''<author>'').
 +  * 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,
 +  * you made a major refactoring of the code and improved readability and maintainability greatly.
 +
 +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.
 +
 +This definition is, of course, not quantitative. If you are unsure, ask the current main maintainer of the software for an advice or look on the Internet for some inspiration, e.g., from the [[https://www.gnu.org/prep/maintain/html_node/Copyright-Notices.html#Copyright-Notices|GNU project]].
 +
 +
 +==== Unit Testing ====
 +
 +Testing your code is essential!
 +CRAM is a huge framework with a thousands of lines of code, so we have to make sure that whatever bricks we put in our CRAM skyscraper, they are robust. A couple of fragile bricks and our whole building will collapse.
 +
 +To aid with testing, consider adding unit tests to functions in your code that have math and to your main API functions.
 +Take a look at the [[http://cram-system.org/tutorials/beginner/testing|testing tutorial]] to get started on writing tests.