Skip to content

Commit 0f2f79a

Browse files
committed
Add formal CLA
1 parent b43eb66 commit 0f2f79a

3 files changed

Lines changed: 217 additions & 0 deletions

File tree

CONTRIBUTING.md

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
# Contributing to MOLA
2+
3+
Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.
4+
5+
MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.
6+
7+
---
8+
9+
## Table of Contents
10+
11+
1. [Contributor License Agreement](#1-contributor-license-agreement)
12+
2. [Code of Conduct](#2-code-of-conduct)
13+
3. [Types of Contributions](#3-types-of-contributions)
14+
4. [Getting Started](#4-getting-started)
15+
5. [Development Workflow](#5-development-workflow)
16+
6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines)
17+
7. [Coding Standards](#7-coding-standards)
18+
8. [Testing Requirements](#8-testing-requirements)
19+
9. [Documentation](#9-documentation)
20+
10. [Review Process](#10-review-process)
21+
11. [Reporting Issues](#11-reporting-issues)
22+
23+
---
24+
25+
## 1. Contributor License Agreement
26+
27+
All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged.
28+
29+
MOLA is distributed under a dual licensing model:
30+
31+
- **Open source:** GNU General Public License v3 (GPL v3)
32+
- **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3
33+
34+
The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership — you retain full ownership of your work.
35+
36+
When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.
37+
38+
---
39+
40+
## 2. Code of Conduct
41+
42+
All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.
43+
44+
---
45+
46+
## 3. Types of Contributions
47+
48+
We welcome the following types of contributions:
49+
50+
- **Bug fixes** — corrections to incorrect or unexpected behavior
51+
- **Performance improvements** — optimizations with measurable, documented impact
52+
- **New modules or algorithms** — extensions to MOLA's modular architecture
53+
- **Documentation improvements** — corrections, clarifications, and additions to existing documentation
54+
- **Dataset integrations** — support for additional SLAM benchmark or real-world datasets
55+
- **ROS 2 integrations** — improvements to the ROS 2 interface, launch files, or message definitions
56+
- **Tests** — new or improved unit, integration, or regression tests
57+
58+
If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.
59+
60+
---
61+
62+
## 4. Getting Started
63+
64+
Full setup instructions, dependencies, and build guides are available in the official documentation:
65+
66+
**https://docs.mola-slam.org/**
67+
68+
Ensure your development environment is fully configured and that all existing tests pass before making any changes.
69+
70+
---
71+
72+
## 5. Development Workflow
73+
74+
1. **Fork** the repository and create a new branch from `main` (or the relevant base branch).
75+
2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`.
76+
3. Make your changes in focused, logically grouped commits.
77+
4. Ensure all tests pass locally before opening a Pull Request.
78+
5. Open a Pull Request against the `main` branch with a clear description of your changes.
79+
80+
Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.
81+
82+
---
83+
84+
## 6. Commit and Pull Request Guidelines
85+
86+
**Commits**
87+
88+
- Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`.
89+
- Keep the subject line under 72 characters.
90+
- Reference relevant issues in the commit body where applicable, e.g. `Closes #123`.
91+
92+
**Pull Requests**
93+
94+
- Provide a clear summary of the problem being solved and the approach taken.
95+
- Include references to any related issues, discussions, or prior art.
96+
- If the PR introduces a user-visible change, update the relevant documentation and changelog.
97+
- Mark the PR as a draft if it is not yet ready for review.
98+
99+
---
100+
101+
## 7. Coding Standards
102+
103+
All C++ code must conform to the project's established style guidelines, which follow the [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) with project-specific modifications documented in the repository. A `.clang-format` configuration file is provided at the root of the repository. All submissions must pass automated formatting checks.
104+
105+
Key requirements:
106+
107+
- C++17 or later
108+
- No use of deprecated ROS 2 APIs
109+
- Headers must be self-contained and include guards or `#pragma once`
110+
- Avoid unnecessary dependencies; additions to `CMakeLists.txt` must be justified in the PR description
111+
112+
---
113+
114+
## 8. Testing Requirements
115+
116+
All contributions that modify functional code must include appropriate tests. The project uses [Google Test (gtest)](https://github.com/google/googletest) for unit testing.
117+
118+
- New functionality must be accompanied by unit tests covering expected behavior and relevant edge cases.
119+
- Bug fixes must include a regression test that fails without the fix and passes with it.
120+
- Tests must pass on all supported platforms prior to merge.
121+
122+
CI checks are run automatically on all Pull Requests. PRs that fail CI will not be merged until all issues are resolved.
123+
124+
---
125+
126+
## 9. Documentation
127+
128+
Public APIs, new modules, and non-trivial algorithms must be documented. Documentation contributions are subject to the same review process as code. Where applicable:
129+
130+
- Use Doxygen-compatible docstrings for C++ API documentation.
131+
- Update or create Markdown documentation under the `docs/` directory for higher-level guides.
132+
- For algorithmic contributions, include a reference to the source paper or method in a comment or docstring.
133+
134+
---
135+
136+
## 10. Review Process
137+
138+
All Pull Requests are reviewed by at least one project maintainer. The review process evaluates correctness, code quality, test coverage, documentation, and alignment with the project's architecture and goals.
139+
140+
Reviewers may request changes before a PR is approved. Requested changes should be addressed promptly; PRs that remain inactive for an extended period may be closed at the maintainers' discretion and can be reopened when work resumes.
141+
142+
Approval and merge are at the sole discretion of the project maintainers.
143+
144+
---
145+
146+
## 11. Reporting Issues
147+
148+
To report a bug or request a feature, please open an issue on the GitHub repository. Before doing so, search existing issues to avoid duplicates.
149+
150+
A good bug report includes:
151+
152+
- A concise description of the problem
153+
- Steps to reproduce the issue
154+
- Expected vs. actual behavior
155+
- Relevant environment details (OS, compiler version, ROS 2 distribution, MOLA version)
156+
- Any relevant logs, stack traces, or screenshots
157+
158+
---
159+
160+
*For questions about the contribution process, open a discussion on the GitHub repository.*

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,5 @@ Copyright (C) 2018-2026 Jose Luis Blanco <jlblanco@ual.es>, University of Almeri
4444
This package is released under the GNU GPL v3 license as open source, with the main
4545
intention of being useful for research and evaluation purposes.
4646
Commercial licenses [available upon request](https://docs.mola-slam.org/latest/solutions.html).
47+
48+
Contributions require acceptance of the Contributor License Agreement (CLA).

cla/individual-cla.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# Contributor License Agreement (CLA) – MOLA
2+
3+
Thank you for your interest in contributing to MOLA.
4+
5+
In order to accept your contributions, we require you to agree to the following terms:
6+
7+
## 1. Grant of Rights
8+
9+
You hereby grant to the MOLA project maintainers a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license to:
10+
11+
- use, reproduce, modify, display, perform, sublicense, and distribute your contributions;
12+
- relicense your contributions under different terms, including proprietary/commercial licenses.
13+
14+
## 2. License Compatibility
15+
16+
You agree that your contributions may be distributed under:
17+
18+
- GNU GPL v3 (open source), and/or
19+
- alternative commercial licenses.
20+
21+
## 3. Patent Grant
22+
23+
You grant a perpetual, worldwide, royalty-free patent license for any patents necessarily infringed by your contributions.
24+
25+
## 4. Original Work and Non-Infringement
26+
27+
You represent that:
28+
29+
- you are the original author of the contribution, or you have the right to submit it under this agreement;
30+
- the contribution does not, to your knowledge, infringe any third-party intellectual property rights, including but not limited to patents, copyrights, trademarks, or trade secrets; and
31+
- you are not aware of any pending or threatened claims, litigation, or other proceedings with respect to the contribution that would affect the rights granted herein.
32+
33+
## 5. Moral Rights
34+
35+
To the extent permitted by applicable law, you waive and agree not to assert any moral rights or equivalent rights you may have in your contributions against the MOLA project maintainers or any downstream recipients. Where such rights cannot be waived by law, you agree not to exercise them in a manner that would restrict the exercise of the rights granted under this agreement.
36+
37+
## 6. Employer Consent
38+
39+
If your contribution is made in the course of employment, you confirm that your employer has authorized this contribution and waived any rights they may have in the contribution in favor of the MOLA project maintainers.
40+
41+
## 7. Governing Law and Jurisdiction
42+
43+
This agreement shall be governed by and construed in accordance with the laws of Italy, without regard to its conflict of law provisions. Any disputes arising under this agreement shall be subject to the exclusive jurisdiction of the courts of Italy.
44+
45+
## 8. Amendments
46+
47+
The MOLA project maintainers reserve the right to update or amend this CLA at any time. Contributions submitted after the date of any such amendment will be governed by the updated terms. Contributions already submitted under a prior version of this CLA remain governed by the terms in effect at the time of submission, unless the contributor explicitly agrees to the updated terms.
48+
49+
## 9. Acceptance
50+
51+
By submitting a contribution to the MOLA project, you confirm that you have read, understood, and agree to this CLA. For contributions submitted via GitHub pull request, acceptance is additionally confirmed by posting a comment on the pull request stating: `I have read and agree to the MOLA Contributor License Agreement.` The project may use an automated CLA assistant bot to facilitate and record this acceptance.
52+
53+
---
54+
55+
*This CLA is based on commonly accepted open source contribution practices. Contributors are encouraged to seek independent legal advice if they have questions about its terms.*

0 commit comments

Comments
 (0)