Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set up licensing #211

Merged
merged 10 commits into from
Mar 4, 2022
Merged

Set up licensing #211

merged 10 commits into from
Mar 4, 2022

Conversation

remcowesterhoud
Copy link
Contributor

@remcowesterhoud remcowesterhoud commented Feb 24, 2022

Description

This PR set ups the licensing for this project. None of this project is part of the core-business of Camunda. Therefore the project can be licensed under the regular Apache 2 license.

There are 3 exceptions. These are the modules that depend on the zeebe broker, which is part of the core-business. Because of this these modules have to follow the same license as the broker, which is the Zeebe Community License V1.1. These modules are:

  1. engine
  2. engine-agent
  3. extension

I've also set IntelliJ up to automatically add the correct copyright headers when a new class is created.

Related issues

closes #171

Definition of Done

Not all items need to be done depending on the issue and the pull request.

Code changes:

  • The changes are backwards compatibility with previous versions
  • If it fixes a bug then PRs are created to backport the fix

Testing:

  • There are unit/integration tests that verify all acceptance criterias of the issue
  • New tests are written to ensure backwards compatibility with further versions
  • The behavior is tested manually

Documentation:

  • Javadoc has been written
  • The documentation is updated

@github-actions
Copy link

github-actions bot commented Feb 24, 2022

Unit Test Results

128 files  128 suites   5m 55s ⏱️
325 tests 325 ✔️ 0 💤 0
788 runs  788 ✔️ 0 💤 0

Results for commit 363afff.

♻️ This comment has been updated with latest results.

This folder contains the licenses that are relevant for the different parts of this project. Apache will be used for almost everything, as this project is not part of the core business for Camunda.
However, exceptions exist. Some of the modules are depending on the Zeebe engine. This is part of the core business of Camunda. Because of this, these modules are licens under the Zeebe license.
Different parts of this project will fall under different licenses. Because of this we can no longer mention a single license in the root of the project, but instead need to rely on the licenses folder containing the different licenses.
In the README and CONTRIBUTING guide we should explain which parts of this project are licensed by which license.
The 3 exceptions are the modules that have dependencies on the Zeebe engine. Because the Zeebe engine is licensed under the Zeebe license, we cannot override this license here with the regular Apache license.
Add license plugin. This will automatically add the correct license headers to our java files. By default it will add the Apache 2 license. For the exceptions we will add the Zeebe license.
We should explicitly mention the license in our pom files. By default this will be the Apache 2 license. The exceptions will override this with the Zeebe license.
If new files are created that do not define the license header we will fail the workflow. These headers can then be added automatically by running mvn license:format
Only changes made by running mvn license:format
These IntelliJ settings will automatically add the copyright header when a new java file is created. By default this will be the apache header. For the modules engine, engine-agent and extension, this will be the zeebe header.
@remcowesterhoud
Copy link
Contributor Author

@pihme I recommend reviewing by commit, as copyright headers were added to every java file we have.

Copy link
Contributor

@pihme pihme left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Several questions. Most notably I wonder that the NOTICE file is referring to.

If you make changes in this PR, I would like to see it again.

If everything is sound, feel free to merge it right away.

@@ -0,0 +1,5 @@
Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH under
one or more contributor license agreements. See the NOTICE file distributed
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ What is the NOTICE file? Is this generated by Maven and shipped in the JAR or should this live in the repo?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good question. It seems like something I'd have to add to the repo. I'm not quite sure what this is supposed to contain though. The one in Zeebe says:

Camunda
Copyright 2017-2019 Camunda Services GmbH

Which seems a bit outdated 😅

engine-agent/pom.xml Show resolved Hide resolved
.idea/copyright/zeebe_copyright.xml Outdated Show resolved Hide resolved
<component name="CopyrightManager">
<copyright>
<option name="notice" value="Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH under&#10;one or more contributor license agreements. See the NOTICE file distributed&#10;with this work for additional information regarding copyright ownership.&#10;Licensed under the Zeebe Community License 1.1. You may not use this file&#10;except in compliance with the Zeebe Community License 1.1.&#10;" />
<option name="myName" value="zeebe-copyright" />
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔧 Maybe rename file and shorthand to Zeebe Community License which seems more precise

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If by shorthand you mean myName then unfortunately there is no option to change it. I can rename it manually, but IntelliJ will override it when any changes are made to the copyright settings.

@pihme
Copy link
Contributor

pihme commented Mar 4, 2022

One thing that I wonder is whether we should also have a clarification like this: https://github.com/camunda-cloud/zeebe#clarification-on-grpc-code-generation

This repo also defines a GRPC protocol. And if anybody wanted to use it with a different language, they could use the InMemory engine in the container and would need to write their own way to interact with the container. So in that context, I assume the same clarification would apply.

@remcowesterhoud
Copy link
Contributor Author

remcowesterhoud commented Mar 4, 2022

I think a big difference in our case is that our protocol is licensed with Apache 2, whereas the gateway-protocol is licensed with Zeebe Community 1.1.

The InMemoryEngine is also licensed with Apache 2, so anyone that wants to implement this to use it with a different language is free to do so. They won't need to do anything with the actual implementation of the InMemoryEngine.

Changed from zeebe_copyright to zeebe_community_license for clarity.
Add a NOTICE file as is required by the Apache license, and because of this als by the Zeebe Community License.

In this file we credit other authors for code that we have used. I thought about crediting EZE and Camunda Bpmn Assert in this file. However, this is a bit strange considering both these projects are also owned by Camunda Services GmbH.
@remcowesterhoud
Copy link
Contributor Author

@pihme I've added some minor changes. Please have another look 🙂

@remcowesterhoud remcowesterhoud requested a review from pihme March 4, 2022 14:29
Copy link
Contributor

@pihme pihme left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good to me

@remcowesterhoud remcowesterhoud merged commit f93d3d3 into main Mar 4, 2022
@remcowesterhoud remcowesterhoud deleted the 171-licensing branch March 4, 2022 14:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Set up licensing
2 participants