diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a597621085..c73bdf857d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -43,6 +43,10 @@ If you want to start contributing to the project's code, please follow these gui Building the apps is relatively easy - please [see the build instructions](https://github.com/laurent22/joplin/blob/dev/BUILD.md) for more details. +## Signing the Individual Contributor License Agreement + +All contributors to the project must sign our [Individual Contributor License Agreement](https://github.com/laurent22/joplin/blob/dev/readme/cla.md). + ## Coding style Please see [readme/coding_style.md](readme/coding_style.md). diff --git a/LICENSE b/LICENSE index 57ac405d4e..499a2299b0 100644 --- a/LICENSE +++ b/LICENSE @@ -1,12 +1,13 @@ -All code in this repository is licensed under the MIT License **unless a -directory contains a LICENSE or LICENSE.md file**, in which case that file -applies to the code in that sub-directory. +All code in this repository is licensed under the AGPL-3.0-or-later License +**unless a directory contains a LICENSE or LICENSE.md file**, in which case that +file applies to the code in that sub-directory. For example, packages/server contains a LICENSE.md file, thus all code under the packages/server directory is licensed under that license. For example, packages/app-cli does NOT contain a LICENSE file, thus all code -under that directory is licensed under the default license, which is MIT. +under that directory is licensed under the default license, which is +AGPL-3.0-or-later. * * * @@ -23,23 +24,8 @@ icons please contact the author in order to get a permission. * * * -MIT License +AGPL-3.0-or-later License Copyright (c) 2016-2022 Laurent Cozic -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +https://spdx.org/licenses/AGPL-3.0-or-later.html diff --git a/packages/app-cli/package.json b/packages/app-cli/package.json index 5834b0e7e3..6e62bb4718 100644 --- a/packages/app-cli/package.json +++ b/packages/app-cli/package.json @@ -1,7 +1,7 @@ { "name": "joplin", "description": "Joplin CLI Client", - "license": "MIT", + "license": "AGPL-3.0-or-later", "author": "Laurent Cozic", "private": true, "scripts": { diff --git a/packages/app-clipper/package.json b/packages/app-clipper/package.json index a73ca64390..17bda5e4ad 100644 --- a/packages/app-clipper/package.json +++ b/packages/app-clipper/package.json @@ -8,5 +8,5 @@ "description": "Joplin Web Clipper", "main": "main.js", "author": "Laurent Cozic", - "license": "MIT" + "license": "AGPL-3.0-or-later" } diff --git a/packages/app-desktop/package.json b/packages/app-desktop/package.json index 9c88461a08..f59ce2b2c8 100644 --- a/packages/app-desktop/package.json +++ b/packages/app-desktop/package.json @@ -20,7 +20,7 @@ "url": "git+https://github.com/laurent22/joplin.git" }, "author": "Laurent Cozic", - "license": "MIT", + "license": "AGPL-3.0-or-later", "bugs": { "url": "https://github.com/laurent22/joplin/issues" }, diff --git a/packages/app-mobile/ios/Podfile.lock b/packages/app-mobile/ios/Podfile.lock index 03975addc6..01b1f9824f 100644 --- a/packages/app-mobile/ios/Podfile.lock +++ b/packages/app-mobile/ios/Podfile.lock @@ -514,8 +514,8 @@ SPEC CHECKSUMS: FBReactNativeSpec: c94002c1d93da3658f4d5119c6994d19961e3d52 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: 85ecdd10ee8d8ec362ef519a6a45ff9aa27b2e85 - JoplinCommonShareExtension: 270b4f8eb4e22828eeda433a04ed689fc1fd09b5 - JoplinRNShareExtension: 9cd07431e525b36344fcecfaeecff974efc78528 + JoplinCommonShareExtension: a8b60b02704d85a7305627912c0240e94af78db7 + JoplinRNShareExtension: 485f3e6dad83b7b77f1572eabc249f869ee55c02 RCT-Folly: 803a9cfd78114b2ec0f140cfa6fa2a6bafb2d685 RCTRequired: cd47794163052d2b8318c891a7a14fcfaccc75ab RCTTypeSafety: 393bb40b3e357b224cde53d3fec26813c52428b1 diff --git a/packages/app-mobile/ios/ShareExtension/JoplinCommonShareExtension.podspec b/packages/app-mobile/ios/ShareExtension/JoplinCommonShareExtension.podspec index 9b3ede8e6a..4d2fdb53d7 100644 --- a/packages/app-mobile/ios/ShareExtension/JoplinCommonShareExtension.podspec +++ b/packages/app-mobile/ios/ShareExtension/JoplinCommonShareExtension.podspec @@ -4,7 +4,7 @@ Pod::Spec.new do |spec| spec.summary = "Common Share Extension code for Joplin." spec.description = "Common Share Extension for Joplin" spec.homepage = "https://github.com/laurent22/joplin" - spec.license = { :type => "MIT" } + spec.license = { :type => "AGPL-3.0-or-later" } spec.author = { "Duncan Cunningham" => "duncanc4@gmail.com" } spec.platform = :ios, "9.0" spec.source = { :path => "." } diff --git a/packages/app-mobile/ios/ShareExtension/JoplinRNShareExtension.podspec b/packages/app-mobile/ios/ShareExtension/JoplinRNShareExtension.podspec index 040aa21163..43cadb78ae 100644 --- a/packages/app-mobile/ios/ShareExtension/JoplinRNShareExtension.podspec +++ b/packages/app-mobile/ios/ShareExtension/JoplinRNShareExtension.podspec @@ -4,7 +4,7 @@ Pod::Spec.new do |spec| spec.summary = "React Native module for Joplin to access the data from the share extension." spec.description = "React Native Share Extension module for Joplin" spec.homepage = "https://github.com/laurent22/joplin" - spec.license = { :type => "MIT" } + spec.license = { :type => "AGPL-3.0-or-later" } spec.author = { "Duncan Cunningham" => "duncanc4@gmail.com" } spec.platform = :ios, "9.0" spec.source = { :path => "." } diff --git a/packages/app-mobile/package.json b/packages/app-mobile/package.json index 2744cd3df8..05bfb1d2b0 100644 --- a/packages/app-mobile/package.json +++ b/packages/app-mobile/package.json @@ -1,7 +1,7 @@ { "name": "@joplin/app-mobile", "description": "Joplin for Mobile", - "license": "MIT", + "license": "AGPL-3.0-or-later", "version": "2.10.0", "private": true, "scripts": { diff --git a/packages/generator-joplin/package.json b/packages/generator-joplin/package.json index 19dc9f1acc..5b1b3abe5a 100644 --- a/packages/generator-joplin/package.json +++ b/packages/generator-joplin/package.json @@ -32,6 +32,6 @@ "jest": "29.3.1" }, "repository": "https://github.com/laurent22/generator-joplin", - "license": "MIT", + "license": "AGPL-3.0-or-later", "private": true } diff --git a/packages/lib/package.json b/packages/lib/package.json index c93f14417e..bb06afc0fa 100644 --- a/packages/lib/package.json +++ b/packages/lib/package.json @@ -4,7 +4,7 @@ "description": "Joplin Core library", "author": "Laurent Cozic", "homepage": "", - "license": "MIT", + "license": "AGPL-3.0-or-later", "publishConfig": { "access": "public" }, diff --git a/packages/pdf-viewer/package.json b/packages/pdf-viewer/package.json index 328bfe689a..069a2c1f12 100644 --- a/packages/pdf-viewer/package.json +++ b/packages/pdf-viewer/package.json @@ -17,7 +17,7 @@ "postinstall": "yarn build" }, "author": "Joplin", - "license": "MIT", + "license": "AGPL-3.0-or-later", "devDependencies": { "@types/jest": "29.2.4", "@types/pdfjs-dist": "2.10.378", diff --git a/packages/plugin-repo-cli/package.json b/packages/plugin-repo-cli/package.json index 5694cd00c0..bdd80b52ff 100644 --- a/packages/plugin-repo-cli/package.json +++ b/packages/plugin-repo-cli/package.json @@ -16,7 +16,7 @@ "dist": "webpack --config webpack.config.js" }, "author": "", - "license": "MIT", + "license": "AGPL-3.0-or-later", "dependencies": { "@joplin/lib": "~2.10", "@joplin/tools": "~2.10", diff --git a/packages/plugins/package.json b/packages/plugins/package.json index 1665dfcbd6..95901134bd 100644 --- a/packages/plugins/package.json +++ b/packages/plugins/package.json @@ -3,5 +3,5 @@ "version": "0.0.0", "description": "Sub-package to group official Joplin plugins", "private": true, - "license": "MIT" + "license": "AGPL-3.0-or-later" } diff --git a/packages/react-native-saf-x/package.json b/packages/react-native-saf-x/package.json index ec5c091a65..e9ea9f7c49 100644 --- a/packages/react-native-saf-x/package.json +++ b/packages/react-native-saf-x/package.json @@ -33,7 +33,7 @@ "storage-access-framework" ], "author": "Javad Mnjd (https://github.com/jd1378)", - "license": "MIT", + "license": "AGPL-3.0-or-later", "homepage": "", "publishConfig": { "access": "public" diff --git a/packages/renderer/package.json b/packages/renderer/package.json index 3193ea72e8..0263c88cb3 100644 --- a/packages/renderer/package.json +++ b/packages/renderer/package.json @@ -16,7 +16,7 @@ "test-ci": "yarn test" }, "author": "", - "license": "MIT", + "license": "AGPL-3.0-or-later", "devDependencies": { "@types/jest": "29.2.4", "@types/node": "18.11.17", diff --git a/packages/tools/package.json b/packages/tools/package.json index d14e78552f..7ca3193084 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -18,7 +18,7 @@ "type": "git", "url": "git+https://github.com/laurent22/joplin.git" }, - "license": "MIT", + "license": "AGPL-3.0-or-later", "dependencies": { "@joplin/lib": "~2.10", "@joplin/renderer": "~2.10", diff --git a/readme/cla.md b/readme/cla.md new file mode 100644 index 0000000000..a0b3253415 --- /dev/null +++ b/readme/cla.md @@ -0,0 +1,116 @@ +# Individual Contributor License Agreement + +Thank you for your interest in the Joplin applications, owned by JOPLIN, +registered in France, 3 Place Simone Veil, CS 20739 54064 Nancy (the "Company"). +In order to clarify the intellectual property license granted with Contributions +from any person or entity, the Company must have a Contributor License Agreement +("CLA") on file that has been signed by each Contributor, indicating agreement +to the license terms below. This license is for your protection as a Contributor +as well as the protection of the Company and its users; it does not change your +rights to use your own Contributions for any other purpose. + +Please complete and sign this Agreement, and then email a copy to +cla@joplinapp.org only (do not copy any other persons or lists). Read this +document carefully before signing and keep a copy for your records. + +- Full name: **FULL NAME** + +- Postal Address: **POSTAL ADDRESS** + +- Country: **COUNTRY** + +- E-Mail: **EMAIL** + +- GitHub username: **GITHUB USERNAME** + +You accept and agree to the following terms and conditions for Your present and +future Contributions submitted to the Company. In return, the Company shall not +use Your Contributions in a way that is contrary to the public benefit or +inconsistent with its bylaws in effect at the time of the Contribution. Except +for the license granted herein to the Company and recipients of software +distributed by the Company, You reserve all right, title, and interest in and to +Your Contributions. + +1. Definitions. + + * "You" (or "Your") + + "You" (or "Your") shall mean the copyright owner or legal entity authorized + by the copyright owner that is making this Agreement with the Company. For + legal entities, the entity making a Contribution and all other entities + that control, are controlled by, or are under common control with that + entity are considered to be a single Contributor. For the purposes of this + definition, "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or otherwise, + or (ii) ownership of fifty percent (50%) or more of the outstanding shares, + or (iii) beneficial ownership of such entity. + + * "Contribution" + + "Contribution" shall mean any original work of authorship, including any + modifications or additions to an existing work, that is intentionally + submitted by You to the Company for inclusion in, or documentation of, any + of the products owned or managed by the Company (the "Work"). For the + purposes of this definition, "submitted" means any form of electronic, + verbal, or written communication sent to the Company or its + representatives, including but not limited to communication on electronic + mailing lists, source code control systems, and issue tracking systems that + are managed by, or on behalf of, the Company for the purpose of discussing + and improving the Work, but excluding communication that is conspicuously + marked or otherwise designated in writing by You as "Not a Contribution." + +2. Grant of Copyright License. Subject to the terms and conditions of this + Agreement, You hereby grant to the Company and to recipients of software + distributed by the Company a perpetual, worldwide, non-exclusive, no-charge, + royalty-free, irrevocable copyright license to reproduce, prepare derivative + works of, publicly display, publicly perform, sublicense, and distribute Your + Contributions and such derivative works. + +3. Grant of Patent License. Subject to the terms and conditions of this + Agreement, You hereby grant to the Company and to recipients of software + distributed by the Company a perpetual, worldwide, non-exclusive, no-charge, + royalty-free, irrevocable (except as stated in this section) patent license + to make, have made, use, offer to sell, sell, import, and otherwise transfer + the Work, 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 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. + +4. You represent that you are legally entitled to grant the above license. If + your employer(s) has rights to intellectual property that you create that + includes your Contributions, you represent that you have received permission + to make Contributions on behalf of that employer, that your employer has + waived such rights for your Contributions to the Company, or that your + employer has executed a separate Corporate CLA with the Company. + +5. You represent that each of Your Contributions is Your original creation (see + section 7 for submissions on behalf of others). 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. + +6. You are not expected to provide support for Your Contributions, except to the + extent You desire to provide support. You may provide support for free, for a + fee, or not at all. Unless required by applicable law or agreed to in + writing, You provide Your Contributions on an "AS IS" BASIS, 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. + +7. Should You wish to submit work that is not Your original creation, You may + submit it to the Company separately from any Contribution, identifying the + complete details of its source and of any license or other restriction + (including, but not limited to, related patents, trademarks, and license + agreements) of which you are personally aware, and conspicuously marking the + work as "Submitted on behalf of a third-party: **NAME HERE**". + +8. You agree to notify the Company of any facts or circumstances of which you + become aware that would make these representations inaccurate in any respect. + +Please sign: **SIGNATURE** Date: **DATE** diff --git a/readme/news/20221221-agpl.md b/readme/news/20221221-agpl.md new file mode 100644 index 0000000000..1c7d1804d5 --- /dev/null +++ b/readme/news/20221221-agpl.md @@ -0,0 +1,35 @@ +--- +tweet: Joplin is switching to the GNU Affero General Public License v3 (AGPL-3.0) +--- + +# Joplin is switching to the GNU Affero General Public License v3 (AGPL-3.0) + +As was [discussed last year](https://discourse.joplinapp.org/t/rfc-switch-to-agpl-license-for-joplin-server/16529), Joplin is switching to the GNU Affero General Public License v3 (AGPL-3.0) for the desktop, mobile and CLI applications, as well as the web clipper. + +Any open source or commercial fork of Joplin will have to license any changes they make under AGPL, and share these changes back with the community. This is the main reason we switch to this license. It allows us to continue releasing the project as open source while ensuring that those who benefit commercially (or not) from it share back their changes. + +## What is the GPL license? + +The AGPL license is based on the GPL license. This is what tldr;Legal has to say about the GPL license: + +> You may copy, distribute and modify the software as long as you track changes/dates in source files. Any modifications to or software including (via compiler) GPL-licensed code must also be made available under the GPL along with build & install instructions. ([source](https://tldrlegal.com/license/gnu-general-public-license-v3-(gpl-3))) + +## What is the AGPL license? + +This is the license we'll use for Joplin from now on: + +> The AGPL license differs from the other GNU licenses in that it was built for network software. You can distribute modified versions if you keep track of the changes and the date you made them. As per usual with GNU licenses, you must license derivatives under AGPL. It provides the same restrictions and freedoms as the GPLv3 but with an additional clause which makes it so that source code must be distributed along with web publication. Since web sites and services are never distributed in the traditional sense, the AGPL is the GPL of the web. ([source](https://tldrlegal.com/license/gnu-affero-general-public-license-v3-(agpl-3.0))) + +## What does it change for users? + +There is no changes for users of Joplin - the apps remain open sources and you can still use them freely. + +## What does it change for developers? + +Any code you develop for Joplin will also remain open source. The only difference is that we'll ask to sign an Individual Contributor License Agreement (CLA) to ensure that the copyright of the entire codebase remains with the Joplin organisation. This is necessary so that if we ever want to change the license again we are able to do so without having to get the agreement of each individual contributor afterwards (which would be nearly impossible). + +This is a bit of an extra constraint but it is hard to avoid. Contributor License Agreements are very common for GPL or AGPL projects. For example Apache, Canonical or Python all require their contributors to sign a CLA. + +## Questions? + +If you have any questions please let us know. Overall we believe this is a positive improvements for Joplin as it means any work derives from it will also benefit the project.