Skip to content

Commit 58d7404

Browse files
AbanoubGhadbangithub-actions[bot]coderabbitai[bot]
authored
Fix licensing vulnerabilities and strengthen freemium model legal protections (#1823)
* Update licensing documents to clarify Pro features and license validation requirements - Enhanced the LICENSE.md to specify that Pro-licensed directories require a valid subscription and outline prohibitions against circumventing license validation. - Updated package.json to reflect a dual license of MIT and Proprietary. - Revised REACT-ON-RAILS-PRO-LICENSE.md to include new clauses regarding license validation and compliance. - Modified DIRECTORY_LICENSING.md to clarify the nature of Pro features in the repository. - Adjusted LICENSING_FAQ.md to accurately describe the licensing structure and requirements for Pro features. * Update LICENSE.md and package.json to clarify Pro licensing terms - Added a new section in LICENSE.md detailing the proprietary license, usage restrictions, and directories associated with Pro features. - Updated package.json to specify the proprietary license using the SPDX identifier format. * Refine LICENSE.md to streamline Pro licensing terms * Refactor licensing to clearly separate MIT and Pro scopes Implements cleaner license separation approach: - MIT License applies to lib/react_on_rails/** (except pro/) and node_package/src/** (except pro/) - Pro License applies exclusively to pro/ directories - Removes contradictory language about prohibiting MIT code modification - Clarifies that MIT code can be modified, but using it to access Pro features without a license is prohibited Changes: - LICENSE.md: Restructured to clearly define license scopes upfront - DIRECTORY_LICENSING.md: Added distinction between MIT modification rights and Pro usage restrictions - LICENSING_FAQ.md: Added FAQ explaining modification rights vs usage restrictions This resolves the legal contradiction where MIT-licensed code included anti-circumvention restrictions, which conflicts with MIT's grant of unrestricted modification rights. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Abanoub Ghadban <AbanoubGhadban@users.noreply.github.com> * Fix package.json license field and add license validation mechanism examples - Changed package.json license field to 'SEE LICENSE IN LICENSE.md' for better npm tooling compatibility - Added 'License Validation Mechanisms' section to LICENSE.md with: - Description of what license validation mechanisms are (runtime checks, authentication systems, etc.) - Specific examples of prohibited modifications (helper.rb, utils.rb, interface files) - Clear statement that MIT modifications are allowed but using them to access Pro features violates the Pro License Co-authored-by: Abanoub Ghadban <AbanoubGhadban@users.noreply.github.com> * Update LICENSE.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update LICENSE.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * linting * Remove examples of prohibited modifications from LICENSE.md to streamline the document and focus on the core licensing terms. --------- Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Abanoub Ghadban <AbanoubGhadban@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
1 parent 120bd43 commit 58d7404

File tree

5 files changed

+106
-17
lines changed

5 files changed

+106
-17
lines changed

LICENSE.md

Lines changed: 45 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,38 @@
11
# Licensing
22

3-
- **Core**: MIT (this file)
4-
- **Pro**: see [REACT-ON-RAILS-PRO-LICENSE.md](./REACT-ON-RAILS-PRO-LICENSE.md)
3+
This repository contains code under two different licenses:
54

6-
---
5+
- **Core**: MIT License (applies to most files)
6+
- **Pro**: React on Rails Pro License (applies to specific directories)
7+
8+
## License Scope
9+
10+
### MIT Licensed Code
11+
12+
The following directories and all their contents are licensed under the **MIT License** (see full text below):
13+
14+
- `lib/react_on_rails/` (excluding `lib/react_on_rails/pro/`)
15+
- `node_package/src/` (excluding `node_package/src/pro/`)
16+
- `node_package/lib/` (excluding `node_package/lib/pro/`)
17+
- All other directories in this repository not explicitly listed as Pro-licensed
718

8-
## MIT License for Core React on Rails
19+
### Pro Licensed Code
920

10-
This license applies to all files within this repository, with the exception of the code located in the following directories, which are licensed separately under the React on Rails Pro License:
21+
The following directories and all their contents are licensed under the **React on Rails Pro License**:
1122

1223
- `lib/react_on_rails/pro/`
1324
- `node_package/src/pro/`
25+
- `node_package/lib/pro/`
26+
27+
See [REACT-ON-RAILS-PRO-LICENSE.md](./REACT-ON-RAILS-PRO-LICENSE.md) for complete Pro license terms.
28+
29+
**Important:** Pro-licensed code is included in this package but requires a valid React on Rails Pro subscription to use. Using Pro features without a valid license violates the React on Rails Pro License.
30+
31+
---
32+
33+
## MIT License
34+
35+
This license applies to all MIT-licensed code as defined above.
1436

1537
Copyright (c) 2017, 2018 Justin Gordon and ShakaCode
1638
Copyright (c) 2015–2025 ShakaCode, LLC
@@ -41,7 +63,22 @@ SOFTWARE.
4163

4264
## React on Rails Pro License
4365

44-
The code in the directories listed above is part of the React on Rails Pro framework and is licensed under the React on Rails Pro License.
45-
46-
You can find the full text of the license agreement here:
66+
For Pro-licensed code (as defined in the "License Scope" section above), see:
4767
[REACT-ON-RAILS-PRO-LICENSE.md](./REACT-ON-RAILS-PRO-LICENSE.md)
68+
69+
**Key Points:**
70+
71+
- Pro features require a valid React on Rails Pro subscription for production use
72+
- Free use is permitted for educational, personal, and non-production purposes
73+
- Modifying MIT-licensed interface files is permitted under MIT terms
74+
- However, using those modifications to access Pro features without a valid license violates the Pro License
75+
76+
### License Validation Mechanisms
77+
78+
**License validation mechanisms** include but are not limited to:
79+
80+
- Runtime checks for valid Pro subscriptions
81+
- Authentication systems in `lib/react_on_rails/utils.rb` and Pro TypeScript modules
82+
- The `react_on_rails_pro?` method and `rorPro` field generation
83+
84+
While MIT-licensed code may be modified under MIT terms, using such modifications to access Pro features without a valid license violates the React on Rails Pro License.

REACT-ON-RAILS-PRO-LICENSE.md

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# ShakaCode React on Rails Pro – End User License Agreement (EULA)
22

3-
_Version 2.0 — 2025-09-06_
3+
_Version 2.1 — 2025-09-25_
44
© 2015–2025 ShakaCode, LLC. All rights reserved.
55

66
---
@@ -51,7 +51,11 @@ The Organization shall not:
5151

5252
1. redistribute or resell the Software or derivatives;
5353
2. remove, obfuscate, or disable required attribution;
54-
3. use the Software to build a directly competing product exposing substantially similar functionality.
54+
3. use the Software to build a directly competing product exposing substantially similar functionality;
55+
4. **circumvent, bypass, modify, disable, or tamper with any license validation mechanisms, license checks, or authentication systems;**
56+
5. **reverse engineer, decompile, or disassemble the Software for the purpose of circumventing license restrictions;**
57+
6. **create, use, or distribute any tools, scripts, patches, or modifications designed to enable unauthorized use of Pro features;**
58+
7. **attempt to access or use Pro features without a valid, active subscription.**
5559

5660
---
5761

@@ -85,6 +89,9 @@ While subscribed, the Organization receives software updates and reasonable supp
8589

8690
If ShakaCode reasonably suspects non-compliance, the Organization will cooperate in good faith to verify compliance, including enabling inspection for attribution presence and providing a usage statement. ShakaCode will use commercially reasonable efforts to minimize disruption.
8791

92+
**9.1 Detailed Audits**
93+
ShakaCode or a certified auditor acting on its behalf may, upon reasonable request and at ShakaCode’s expense, audit the Organization’s use of the Software to verify compliance with this Agreement. Audits may be conducted by mail, electronically, or by in-person visits during regular business hours and shall minimize disruption to the Organization’s business. If the audit reveals a material unauthorized use, the Organization shall reimburse ShakaCode for reasonable audit costs.
94+
8895
---
8996

9097
## 10. Feedback & Contributions
@@ -118,12 +125,43 @@ Direct damages are limited to amounts paid in the 12 months preceding the claim.
118125

119126
---
120127

121-
## 15. Governing Law; Venue
128+
## 15. Indemnification
129+
130+
The Organization agrees to defend, indemnify, and hold harmless ShakaCode and its affiliates from any claims, losses, damages, liabilities, costs, or expenses (including legal fees) arising out of the Organization’s use of the Software or breach of this Agreement.
131+
132+
---
133+
134+
## 16. Export Compliance
135+
136+
The Organization agrees to comply with all applicable export laws and regulations, including restrictions on export, re-export, or redistribution of the Software.
137+
138+
---
139+
140+
## 17. Attorneys’ Fees and Costs
141+
142+
In any enforcement or legal action arising under this Agreement, the prevailing party shall be entitled to recover reasonable attorneys’ fees and costs.
143+
144+
---
145+
146+
## 18. Governing Law; Venue
147+
148+
This Agreement is governed by the laws of the **State of Hawaii**, USA. Exclusive jurisdiction and venue lie in the courts located therein.
149+
150+
---
151+
152+
## 19. Miscellaneous
153+
154+
- **19.1 Severability**
155+
If any provision is held invalid or unenforceable, the remainder shall continue in full force.
156+
157+
- **19.2 Waiver**
158+
Failure to enforce any provision is not a waiver of rights.
122159

123-
Choose one: **State of Hawaii**, USA. Exclusive jurisdiction and venue lie in the courts located therein.
160+
- **19.3 Assignment**
161+
The Organization may not assign this Agreement without prior written consent.
124162

125163
---
126164

127-
## 16. Entire Agreement; Order of Precedence
165+
## 20. Entire Agreement; Order of Precedence
128166

129167
This EULA and any order (pricing/term) are the entire agreement. If there is a conflict, the order controls.

docs/DIRECTORY_LICENSING.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,20 @@ All directories in the `react_on_rails` repository are MIT licensed:
1212
react_on_rails/
1313
├── lib/react_on_rails/ # Core Ruby code (MIT)
1414
├── node_package/src/ # Core JS/TS code (MIT)
15-
│ └── pro/ # Pro features placeholder (MIT but references pro)
15+
│ └── pro/ # Pro features with license validation (Pro licensed)
1616
├── spec/ # Core tests (MIT)
1717
├── docs/ # Documentation (MIT)
1818
├── .github/ # GitHub workflows (MIT)
1919
└── [all other directories] # MIT
2020
```
2121

22-
**Exception:** The `node_package/src/pro/` directory contains placeholder code that references Pro features, but the actual Pro implementation is in the separate `react_on_rails_pro` repository.
22+
**Exception:** The `node_package/src/pro/` directory contains Pro implementation code licensed under the React on Rails Pro License. This code is included in the package but requires a valid Pro license to use.
23+
24+
**Important Distinction:**
25+
26+
- **MIT-licensed interface files** (outside `pro/` directories) can be freely modified under MIT terms
27+
- **Using those modifications to access Pro features** without a license violates the Pro License
28+
- **Pro-licensed files** (inside `pro/` directories) require a Pro license to use in any way
2329

2430
### react_on_rails_pro Repository - Pro Licensed
2531

docs/LICENSING_FAQ.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ react_on_rails/ (monorepo root)
9595

9696
**A:** We maintain two separate repositories:
9797

98-
- **react_on_rails** (MIT) - Core functionality, completely free except pro directories as stated in LICENSE.md
98+
- **react_on_rails** (MIT + Pro) - Core functionality is MIT-licensed and completely free. Pro features (in `pro/` directories) are Pro-licensed and require a subscription for production use
9999
- **react_on_rails_pro** (Pro License) - Advanced features, subscription required for production
100100

101101
### Q: What requires a Pro subscription?
@@ -110,6 +110,14 @@ react_on_rails/ (monorepo root)
110110

111111
See [REACT-ON-RAILS-PRO-LICENSE.md](../REACT-ON-RAILS-PRO-LICENSE.md) for complete Pro license terms.
112112

113+
### Q: Can I modify the MIT-licensed interface files?
114+
115+
**A:** Yes! Under the MIT license, you can freely modify any MIT-licensed files (those outside `pro/` directories). However:
116+
117+
- **Permitted:** Modifying MIT-licensed code for your own purposes
118+
- **Not Permitted:** Using those modifications to access Pro features without a valid license
119+
- **Distinction:** The MIT license grants you modification rights, but the Pro License restricts unauthorized use of Pro features
120+
113121
### Q: Can I try Pro features for free?
114122

115123
**A:** Yes! Pro license allows free use for:

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@
118118
"Rails"
119119
],
120120
"author": "justin.gordon@gmail.com",
121-
"license": "MIT",
121+
"license": "SEE LICENSE IN LICENSE.md",
122122
"bugs": {
123123
"url": "https://github.com/shakacode/react_on_rails/issues"
124124
},

0 commit comments

Comments
 (0)