Table of Contents

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:

If you want to introduce major interface changes through you code, make an announcement on the cram-developers mailing list

Development of Roslisp Packages

package.xml

Relevant documentation: Package.xml Ref

my-package-name.asd files

Coding Style

Lisp

Ros-related

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:

A contribution is considered substantial if:

A contribution is considered not substantial if:

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 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 testing tutorial to get started on writing tests.

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…