Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
133 changes: 133 additions & 0 deletions CLA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
# Contributor License Agreement (CLA)

## dbzero Contributor License Agreement

This Contributor License Agreement ("Agreement") is entered into by the party signing below ("You" or "Contributor"), and conveys certain license rights to the dbzero project maintainers ("We," "Us," or "Project") for Your contributions to dbzero.

### 1. Definitions

**"We," "Us," "Our"** means DBZero Software sp. z o.o. and its successors or assigns

**"Contribution"** means any original work of authorship, including any modifications or additions to an existing work, that You intentionally submit to Us for inclusion in the dbzero project, in any form (source code, documentation, configuration files, etc.).

**"Submit"** means any form of electronic, verbal, or written communication sent to Us or our representatives, including but not limited to communication on electronic mailing lists, source code control systems, issue tracking systems, and pull requests.

**"dbzero"** means the dbzero Community Edition software project and all associated repositories, documentation, and materials.

### 2. Grant of Rights

#### 2.1 Copyright License
You hereby grant to Us and to recipients of software distributed by Us a perpetual, worldwide, non-exclusive, royalty-free, irrevocable copyright license to:
- Reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Your Contributions and such derivative works in source code or object code form
- Sublicense the above rights to third parties under any license terms, including proprietary or commercial licenses

#### 2.2 Patent License
You hereby grant to Us and to recipients of software distributed by Us a perpetual, worldwide, non-exclusive, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer Your Contributions, where such license applies only to those patent claims licensable by You that are necessarily infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the work to which such Contribution(s) was submitted.

If any entity institutes patent litigation against You, Us, or any other entity (including a cross-claim or counterclaim in a lawsuit) alleging that Your Contribution, or the work to which You have contributed, constitutes direct or contributory patent infringement, then any patent licenses granted to that entity under this Agreement for that Contribution or work shall terminate as of the date such litigation is filed.

#### 2.3 Outbound License
Based on the grants of rights in Sections 2.1 and 2.2, if We include Your Contribution in the dbzero project:
- Your Contribution will be licensed to the public under the GNU Affero General Public License v3.0 (AGPL-3.0) as part of the dbzero project
- We reserve the right to also license Your Contribution under alternative licenses without any additional compensation to You, including proprietary licenses for commercial or other purposes

#### 2.4 Moral Rights
To the fullest extent permitted under applicable law, You waive and agree not to assert any moral rights You may have in Your Contributions. In jurisdictions where moral rights cannot be waived, You agree not to assert such rights in a manner that would interfere with Our exercise of the licensed rights.

### 3. Representations and Warranties

You represent and warrant that:

#### 3.1 Authority
You are legally entitled to grant the above licenses. If You are an individual and Your employer(s) has rights to intellectual property that You create that includes Your Contributions, You represent that:
- You have received permission from Your employer to make Contributions on behalf of that employer, OR
- Your employer has waived such rights for Your Contributions to the dbzero project, OR
- Your Contributions were created entirely on Your own time using Your own equipment and do not relate to Your employer's business

#### 3.2 Originality
Each of Your Contributions is Your original creation. You represent that Your Contribution submissions include complete details of any third-party license or other restriction (including, but not limited to, related patents and trademarks) of which You are personally aware and which are associated with any part of Your Contributions.

#### 3.3 No Conflicts
To Your knowledge, Your Contribution does not violate any third party's copyrights, trademarks, patents, or other intellectual property rights.

### 4. No Obligation to Use

You understand and agree that:
- The Project has no obligation to accept, include, or use any Contribution
- The decision to include any Contribution in any Project release is entirely at the discretion of the Project maintainers
- Your Contribution may be modified, replaced, or removed from the Project codebase at any time for any reason as a result of future changes or technical decisions
- If We do not include Your Contribution, all rights granted under Section 2 revert to You, except for any derivatives that were created during review

### 5. Disclaimer of Warranty

Your Contributions are provided "as is," without warranties or conditions of any kind, either express or implied, including, without limitation, any warranties or conditions of title, non-infringement, merchantability, or fitness for a particular purpose.

### 6. Copyright Ownership and Reuse

You retain ownership of the copyright in Your Contributions. Nothing in this Agreement transfers copyright ownership to the Project. You are free to use Your Contributions for any purpose, including in projects outside of dbzero.

### 7. Notification and Remediation

**7.1 Duty to Notify**
You agree to notify Us promptly in writing if:
- You become aware that any representation in Section 3 was inaccurate when made, OR
- A third party makes a claim against Your Contribution

Such notification should include credible evidence supporting the claim.

**7.2 Consequences of Inaccuracy**
If the Project determines that a representation in Section 3 was materially inaccurate:
- The licenses granted in Section 2 for affected Contributions may be revoked prospectively upon written notice
- The Project will remove affected Contributions from future releases
- You agree to cooperate in remediation, including potentially re-licensing corrected Contributions
- This does not affect licenses already granted for past releases that included the Contribution in good faith
- You remain responsible for any damages caused by breach of Your warranties

### 8. Scope of Agreement

This Agreement applies to all Contributions You submit to the dbzero project on or after the date You accept this Agreement. Each Contribution You submit is subject to the terms of this Agreement.

### 9. Effective Date and Duration

This Agreement becomes effective on the date You accept it. You may stop making Contributions at any time. However, the licenses granted in Section 2 for Contributions You have already made are irrevocable and will remain in effect even if You stop contributing.

### 10. Limitation of Liability

To the maximum extent permitted by applicable law:

**For Contributors:**
In no event shall You be liable for any indirect, incidental, special, consequential, or punitive damages arising from this Agreement, except for:
- Willful misconduct or gross negligence
- Fraudulent misrepresentation in Section 3
- Breach of confidentiality obligations (if any)

**For the Project:**
In no event shall the Project be liable to You or other parties for any damages arising from acceptance, rejection, modification, or removal of Your Contributions.

This does not limit liability that cannot be excluded or limited under applicable law.

### 11. Severability

If any provision of this Agreement is held to be invalid or unenforceable, the remaining provisions shall remain in full force and effect, and the invalid provision shall be modified to the minimum extent necessary to make it valid and enforceable.

---

## How to Accept This Agreement

This CLA is accepted when you click "I Agree" through CLA Assistant on your first pull request.

By accepting this Agreement, you acknowledge that you have read, understood, and agree to be bound by its terms and conditions for all your current and future Contributions to dbzero.

---

## Contact

**Questions?** If you have questions about this CLA, please open an issue on GitHub before contributing.

**Corporate CLA:** If you need a Corporate Contributor License Agreement, please contact the project maintainers.

---

**Version:** 1.0
**Last Updated:** December 9, 2025
**Maintained by:** DBZero Software sp. z o.o.
146 changes: 48 additions & 98 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ Thank you for your interest in contributing to dbzero! We welcome contributions
- [Reporting Bugs](#reporting-bugs)
- [Suggesting Enhancements](#suggesting-enhancements)
- [Documentation](#documentation)
- [Community](#community)
- [Contributor License Agreement](#contributor-license-agreement)
- [License](#license)

## Code of Conduct

Expand All @@ -38,11 +39,11 @@ This project adheres to a code of conduct that all contributors are expected to

### Prerequisites

- C++ compiler (GCC 9+ or Microsoft C/C++ Optimizing Compiler 19.41+)
- Meson 0.55 or higher
- C++ compiler (GCC 13+ or Microsoft C/C++ Optimizing Compiler 19.41+)
- Meson
- Ninja build system
- Git
- Python 3.8 or higher (for Python components and tooling)
- Python 3.9 or higher (for Python components and tooling)
- A virtual environment tool (venv, virtualenv, or conda) for Python dependencies

### Setting Up Your Environment
Expand Down Expand Up @@ -76,7 +77,7 @@ This project adheres to a code of conduct that all contributors are expected to

3. **Install Python dependencies**:
```bash
pip install -e ".[dev]" # Install in editable mode with dev dependencies
pip install -r requirements.txt # Install dependencies
```

4. **Verify the installation**:
Expand Down Expand Up @@ -129,7 +130,7 @@ We welcome various types of contributions:

Since the project is predominantly C++ (85%), these are our primary coding standards:

- Follow **Modern C++ (C++17/20)** best practices
- Follow **Modern C++** best practices
- Use **meaningful variable and function names** with clear intent
- Follow **RAII principles** for resource management
- Prefer **smart pointers** over raw pointers
Expand All @@ -141,7 +142,7 @@ Since the project is predominantly C++ (85%), these are our primary coding stand

- **Naming Conventions**:
- Classes/Structs: `PascalCase`
- Functions/Methods: `camelCase` or `snake_case` (be consistent within modules)
- Functions/Methods: `camelCase`
- Variables: `snake_case`
- Constants: `UPPER_SNAKE_CASE`
- Namespaces: `lowercase`
Expand All @@ -155,23 +156,10 @@ Since the project is predominantly C++ (85%), these are our primary coding stand
*/
```

- **Error Handling**: Use exceptions for exceptional cases, return codes for expected errors
- **Error Handling**: Use exceptions for exceptional cases, return values for expected errors
- **Comments**: Write clear comments for complex logic, algorithms, and non-obvious decisions
- **DRY Principle**: Extract common code into reusable functions and templates

#### C++ Formatting Tools

```bash
# Format C++ code
clang-format -i $(find . -name '*.cpp' -o -name '*.h')

# Static analysis
clang-tidy src/*.cpp -- -std=c++17

# Check for common issues
cppcheck --enable=all --suppress=missingInclude .
```

### Python Style Guide (Additional)

For the Python components (~15% of the project):
Expand All @@ -184,26 +172,10 @@ For the Python components (~15% of the project):
#### Python Code Quality

- **Type hints**: Use type annotations where appropriate
- **Docstrings**: Document all public modules, functions, classes, and methods using Google or NumPy style
- **Docstrings**: Document all public modules, functions, classes, and methods using NumPy style
- **Comments**: Write clear comments for complex logic
- **DRY principle**: Extract common code into reusable functions

#### Python Formatting Tools

```bash
# Format Python code
black .

# Sort imports
isort .

# Lint code
flake8 .

# Type checking
mypy .
```

## Testing Guidelines

### Writing Tests
Expand Down Expand Up @@ -233,48 +205,8 @@ TEST(TestSuiteName, TestName) {

## Commit Message Guidelines

Write clear and meaningful commit messages following these conventions:

### Format

```
<type>(<scope>): <subject>

<body>

<footer>
```

### Types

- **feat**: A new feature
- **fix**: A bug fix
- **docs**: Documentation changes
- **style**: Code style changes (formatting, missing semicolons, etc.)
- **refactor**: Code refactoring without changing functionality
- **perf**: Performance improvements
- **test**: Adding or updating tests
- **chore**: Maintenance tasks, dependency updates

### Examples

```
feat(transactions): add support for nested transactions

Implement nested transaction handling with proper rollback
support for inner transactions.

Closes #123
```

```
fix(cache): prevent memory leak in object cache

The cache was not properly releasing references to deleted
objects, causing memory growth over time.

Fixes #456
```
Write clear and meaningful commit messages explaining scope and purpose of changes you are making.
If your contributions are related to a submitted issue on the github repository, please include issue number(s) at the beginning of the commit message.

## Pull Request Process

Expand Down Expand Up @@ -308,7 +240,7 @@ Fixes #456

2. **Open a Pull Request** on GitHub with:
- Clear title describing the change
- Detailed description of what and why
- Description of what and why
- Reference to related issues (e.g., "Closes #123")
- Screenshots or examples if applicable

Expand Down Expand Up @@ -342,8 +274,7 @@ When reporting bugs, please include:
- **Expected Behavior**: What you expected to happen
- **Actual Behavior**: What actually happened
- **Environment**:
- C++ compiler and version (e.g., GCC 11.2)
- CMake version
- C++ compiler and version (e.g., GCC 13.3.0)
- dbzero version
- Operating system
- Python version (if relevant)
Expand Down Expand Up @@ -388,30 +319,49 @@ Good documentation is crucial. When contributing:
- Explain both the "how" and the "why"
- Keep formatting consistent

## Community
## Contributor License Agreement

**Important**: Before your start contributing please make sure you read and agree to our Contributor License Agreement (CLA): [CLA.md](./CLA.md)

### Why We Have a CLA

dbzero is primarily licensed under AGPL-3.0, but we want to reserve the right to offer the software under alternative licenses to support different use cases and our business model.

To enable this flexible licensing approach while maintaining our commitment to open source, we need contributors to grant us additional rights to use their contributions.

### What You're Agreeing To

### Getting Help
By contributing to dbzero, you agree that:

- Open an issue for bugs or questions
- Check existing documentation and issues first
- Be specific and provide context
1. **Your contribution will be licensed under AGPL-3.0** in the open-source dbzero Community Edition
2. **You grant the dbzero project maintainers** a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license to:
- Use, modify, and distribute your contributions in any form
- Include your contributions in the open-source project and any alternative licensing options we may offer
- Sublicense your contributions under different license terms, including proprietary licenses
- Create derivative works based on your contributions
3. **You retain full copyright** to your contributions and can use them in your own projects
4. **You confirm** that:
- You have the legal right to grant this license
- Your contribution is your original work (or properly attributed if based on others' work)
- Your contribution doesn't violate any third-party intellectual property rights

### Staying Updated
### How It Works

- Watch the repository for updates
- Follow project announcements
- Participate in discussions
When you submit your first pull request:
1. Our CLA Assistant bot will prompt you to review and accept the CLA
2. Your acceptance is recorded (this is a one-time process)
3. Your PR will be marked as ready for review
4. All future contributions will be covered under the same agreement

### Recognition
### Questions About the CLA?

Contributors are recognized in:
- The project's contributors list
- Release notes for significant contributions
- Special mentions for exceptional contributions
If you have questions or concerns about the CLA, please open an issue to discuss before contributing. We're happy to clarify any points.

## License

By contributing to dbzero, you agree that your contributions will be licensed under the same license as the project (AGPL v3).
By contributing to dbzero, you agree that your contributions will be:
- Licensed under the **GNU Affero General Public License v3.0** (AGPL-3.0) for the open-source dbzero Community Edition
- Subject to the additional rights grant specified in our Contributor License Agreement: [CLA.md](./CLA.md)

---

Expand Down
13 changes: 0 additions & 13 deletions COPYING

This file was deleted.

1 change: 0 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
FROM gcc:13
# Install dependencies and clean up
RUN apt-get update && apt-get install -y \
cmake \
psmisc \
python3.11 \
python3-pip \
Expand Down
Loading
Loading