Skip to content

Commit

Permalink
Add new licensing docs
Browse files Browse the repository at this point in the history
  • Loading branch information
mike-solomon committed Dec 10, 2024
1 parent d7a8245 commit b1724e0
Show file tree
Hide file tree
Showing 3 changed files with 119 additions and 0 deletions.
50 changes: 50 additions & 0 deletions docs/licensing/openrewrite-licensing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# OpenRewrite licensing

The core OpenRewrite framework is fully open and Apache licensed, and it will continue to be going forward. If open source software (OSS) authors want to provide software migrations to their users as pure OSS, they can.

OpenRewrite recipes that have significant contributions from Moderne and third-party contributors will be available with the [Moderne Source Available License](https://docs.moderne.io/administrator-documentation/licensing/moderne-source-available-license/). This license precludes others from deriving significant commercial value from OpenRewrite without contributing to the community. Individual organizations can consume and apply these recipes to their source code, but the recipes cannot be put into commercial products or be re-sold.

Moderne and others through partnerships with Moderne can offer commercial recipes.

## Licensing types

The OpenRewrite ecosystem is a marketplace of both free and proprietary recipes. The types of licensing can include:

### Apache License Version 2.0

Core OpenRewrite technology and language libraries in general are fully open sourced under the Apache license. This includes the entirety of [openrewrite/rewrite](https://github.com/openrewrite/rewrite), including rewrite-core and many of the original language bindings (Java, Groovy, Kotlin, XML, Properties, YAML, Terraform, etc.). It also includes the building-block core recipes like `ChangeMethodName`, `ChangeType`, etc. and recipe repositories that are primarily committed to by third parties. This means that framework/library authors can supply OSS migrations to their consumers.

Check failure

Code scanning / check-spelling

Unrecognized Spelling Error documentation

sourced is not a recognized word. (unrecognized-spelling)

### Moderne Source Available License

Beyond the fully open license, additional OpenRewrite software and recipes are available broadly for users under a [source available license](https://docs.moderne.io/administrator-documentation/licensing/moderne-source-available-license/). The Maven and Gradle plugins are also source available. Because this license allows the right to “use, copy, distribute, make available, and prepare derivative works of the software,” it is possible for individual companies to customize recipes for their needs, such as tailoring recipes to internal APIs or removing optional idiomatic changes.

**There are two primary limitations under this license:**

* The software may not be commercialized or provided to others as a managed service.
* No user may remove or obscure any licensing, copyright, or other notices.

### Moderne Proprietary License

There is a group of OpenRewrite recipes that are created by Moderne specifically for multi-repo code analysis and transformation on our platform, including those designed for large-scale impact analysis and security remediation, as well as those that leverage AI tool calling. These recipes are under the [Moderne Proprietary License](https://docs.moderne.io/administrator-documentation/licensing/overview).

## FAQ

### Is OpenRewrite open source software (OSS)?

**Yes!** OpenRewrite is OSS. Core OpenRewrite technology and language libraries in general are fully open sourced under the Apache license. This includes the entirety of openrewrite/rewrite, including rewrite-core and many of the original language bindings (Java, Groovy, Kotlin, XML, Properties, YAML, Terraform, etc.). In addition, building-block recipes, and those created by third parties are fully open sourced.

Check failure

Code scanning / check-spelling

Unrecognized Spelling Error documentation

sourced is not a recognized word. (unrecognized-spelling)

Check failure

Code scanning / check-spelling

Unrecognized Spelling Error documentation

sourced is not a recognized word. (unrecognized-spelling)

### Can end users and individual companies use source available recipes on private code?

Yes. Recipes are available to individual users and companies to consume and apply on their own code both under the Apache License Version 2.0 License and the [Moderne Source Available License](https://docs.moderne.io/administrator-documentation/licensing/moderne-source-available-license/).

The foundational purpose of OpenRewrite is to enable developers to more easily update, upgrade, and improve their code with the help of recipes developed by OSS maintainers and the community.

### How does this impact those companies that are selling OpenRewrite recipes as part of their solutions?

Source available recipes cannot be packaged for commercial sale. However, this opens the door to partnership negotiation, balancing the interests of both third parties and Moderne as the primary sponsor and contributor to the OpenRewrite project.

## References

* [OpenRewrite licensing by repository](./repository-licensing.md)
* [Moderne Proprietary License](https://docs.moderne.io/administrator-documentation/licensing/overview)
* [Moderne Source Available License](https://docs.moderne.io/administrator-documentation/licensing/moderne-source-available-license/)
54 changes: 54 additions & 0 deletions docs/licensing/repository-licensing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# OpenRewrite licensing by repository

This table designates the licensing type for files in each OpenRewrite repository.

| Repository | License Type |
|------------------------------|----------------------------|
| rewrite | Apache License Version 2.0 |
| rewrite-openapi | Apache License Version 2.0 |
| rewrite-micronaut | Apache License Version 2.0 |
| rewrite-gradle-tooling-model | Apache License Version 2.0 |
| rewrite-java-dependencies | Apache License Version 2.0 |
| rewrite-all | Apache License Version 2.0 |
| rewrite-build-gradle-plugin | Apache License Version 2.0 |
| rewrite-liberty | Apache License Version 2.0 |
| rewrite-quarkus | Apache License Version 2.0 |
| rewrite-analysis | Apache License Version 2.0 |
| rewrite-templating | Apache License Version 2.0 |
| rewrite-third-party | Apache License Version 2.0 |
| rewrite-kotlin | Apache License Version 2.0 |
| rewrite-gradle-plugin | Moderne Source Available |
| rewrite-maven-plugin | Moderne Source Available |
| rewrite-spring | Moderne Source Available |
| rewrite-logging-frameworks | Moderne Source Available |
| rewrite-migrate-java | Moderne Source Available |
| rewrite-static-analysis | Moderne Source Available |
| rewrite-struts | Moderne Source Available |
| rewrite-testing-frameworks | Moderne Source Available |
| rewrite-okhttp | Moderne Source Available |
| rewrite-jenkins | Moderne Source Available |
| rewrite-apache | Moderne Source Available |
| rewrite-micrometer | Moderne Source Available |
| rewrite-docker | Moderne Source Available |
| rewrite-hibernate | Moderne Source Available |
| rewrite-cucumber-jvm | Moderne Source Available |
| rewrite-feature-flags | Moderne Source Available |
| rewrite-gitlab | Moderne Source Available |
| rewrite-\<LANGUAGE\> | Moderne Proprietary |
| rewrite-codemods-ng | Moderne Proprietary |
| rewrite-sql | Moderne Proprietary |
| rewrite-circleci | Moderne Proprietary |
| rewrite-java-security | Moderne Proprietary |
| rewrite-nodejs | Moderne Proprietary |
| rewrite-ai-search | Moderne Proprietary |
| rewrite-github-actions | Moderne Proprietary |
| rewrite-polyglot | Moderne Proprietary |
| rewrite-terraform | Moderne Proprietary |
| rewrite-android | Moderne Proprietary |
| rewrite-concourse | Moderne Proprietary |
| rewrite-reactive-streams | Moderne Proprietary |
| rewrite-migrate-python | Moderne Proprietary |
| rewrite-kubernetes | Moderne Proprietary |
| rewrite-jackson | Moderne Proprietary |
| rewrite-codemods | Moderne Proprietary |
| rewrite-dotnet | Moderne Proprietary |
15 changes: 15 additions & 0 deletions sidebars.ts
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,21 @@ const sidebars: SidebarsConfig = {
},
],
},
{
type: 'category',
label: 'Licensing',
link: {
type: 'generated-index',
title: 'Licensing',
description: 'OpenRewrite licensing docs.',
slug: '/licensing',
keywords: ['license'],
},
items: [
'licensing/openrewrite-licensing',
'licensing/repository-licensing',
],
},
],
};

Expand Down

0 comments on commit b1724e0

Please sign in to comment.