From b1724e0b11503cc0d6de8c7527ca0cd12c6b6396 Mon Sep 17 00:00:00 2001 From: Mike Solomon Date: Tue, 10 Dec 2024 09:52:40 -0800 Subject: [PATCH 1/3] Add new licensing docs --- docs/licensing/openrewrite-licensing.md | 50 +++++++++++++++++++++++ docs/licensing/repository-licensing.md | 54 +++++++++++++++++++++++++ sidebars.ts | 15 +++++++ 3 files changed, 119 insertions(+) create mode 100644 docs/licensing/openrewrite-licensing.md create mode 100644 docs/licensing/repository-licensing.md diff --git a/docs/licensing/openrewrite-licensing.md b/docs/licensing/openrewrite-licensing.md new file mode 100644 index 0000000000..7e2f8c5514 --- /dev/null +++ b/docs/licensing/openrewrite-licensing.md @@ -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. + +### 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. + +### 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/) diff --git a/docs/licensing/repository-licensing.md b/docs/licensing/repository-licensing.md new file mode 100644 index 0000000000..c1a9ee0027 --- /dev/null +++ b/docs/licensing/repository-licensing.md @@ -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-\ | 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 | \ No newline at end of file diff --git a/sidebars.ts b/sidebars.ts index e3b7489a19..80d1db2257 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -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', + ], + }, ], }; From 660db1ac71cbc07a555f8910b0ff519269692fc3 Mon Sep 17 00:00:00 2001 From: Mike Solomon Date: Tue, 10 Dec 2024 09:56:06 -0800 Subject: [PATCH 2/3] Fix spelling warnings --- .github/actions/spelling/expect.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt index 55f49449b3..c032dd6092 100644 --- a/.github/actions/spelling/expect.txt +++ b/.github/actions/spelling/expect.txt @@ -126,6 +126,7 @@ smallrye smushed snakeyaml Sonatype +sourced sourcespec springboot springframework From 327c8d225541ad97bbefae35b70dbb174a7ffacf Mon Sep 17 00:00:00 2001 From: Mike Solomon Date: Tue, 10 Dec 2024 10:03:38 -0800 Subject: [PATCH 3/3] Provide more license links --- docs/licensing/openrewrite-licensing.md | 2 +- docs/licensing/repository-licensing.md | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/licensing/openrewrite-licensing.md b/docs/licensing/openrewrite-licensing.md index 7e2f8c5514..98a94b7995 100644 --- a/docs/licensing/openrewrite-licensing.md +++ b/docs/licensing/openrewrite-licensing.md @@ -12,7 +12,7 @@ The OpenRewrite ecosystem is a marketplace of both free and proprietary recipes. ### 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. +Core OpenRewrite technology and language libraries in general are fully open sourced under the [Apache license](https://www.apache.org/licenses/LICENSE-2.0). 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. ### Moderne Source Available License diff --git a/docs/licensing/repository-licensing.md b/docs/licensing/repository-licensing.md index c1a9ee0027..8143b392cb 100644 --- a/docs/licensing/repository-licensing.md +++ b/docs/licensing/repository-licensing.md @@ -2,6 +2,12 @@ This table designates the licensing type for files in each OpenRewrite repository. +The three licenses in the table can be found here: + +* [Apache License Version 2.0](https://www.apache.org/licenses/LICENSE-2.0) +* [Moderne Source Available License](https://docs.moderne.io/administrator-documentation/licensing/moderne-source-available-license) +* [Moderne Proprietary License](https://docs.moderne.io/administrator-documentation/licensing/overview) + | Repository | License Type | |------------------------------|----------------------------| | rewrite | Apache License Version 2.0 |