docs: Add comprehensive Plugin Licensing section to documentation

Added new "Plugin Licensing" section to plugin documentation that covers:

**SmoothSchedule Community Plugin License (SCPL):**
- Custom license for marketplace plugins
- Grants platform rights to use, execute, host, and distribute code
- Grants users rights to install, use, and modify for their business
- Requires attribution to original author
- Allows users to adapt code but not republish without permission
- Permits authors to unpublish anytime (existing installs continue)
- Authors retain copyright and can license elsewhere
- Similar to MIT License + Platform Service Rights

**Private vs. Marketplace Plugins:**
- Private plugins: Full ownership, any license (or none), private to business
- Marketplace plugins: Must use SCPL, visible to all users, author credited
- Both types: Platform can execute code to provide automation service

**Key Features:**
- Comparison table showing differences between private and marketplace plugins
- Code verification and security requirements documented
- Decision guide for when to publish vs. keep private
- Important notices about warranties, compliance, and data privacy
- Platform service rights clearly explained

**Legal Protections:**
- Platform has rights to execute user code for service delivery
- No warranty disclaimer (plugins "as-is")
- User compliance responsibility for laws and regulations
- Data privacy obligations (GDPR, CCPA compliance)

The SCPL is designed to be marketplace-friendly while protecting both
the platform and plugin authors, similar to how npm/PyPI handle packages
but with added platform service rights for SaaS execution.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
poduck
2025-11-28 21:05:31 -05:00
parent e9b3eb9e84
commit 79fde43a51

View File

@@ -203,6 +203,7 @@ const navSections: NavSection[] = [
{ titleKey: 'Resource Limits', id: 'limits' },
],
},
{ titleKey: 'Plugin Licensing', id: 'licensing' },
];
const Sidebar: React.FC<{
@@ -1623,6 +1624,192 @@ exec('print("hi")') # Error!`}
</ApiExample>
</ApiSection>
{/* Plugin Licensing */}
<ApiSection id="licensing">
<ApiContent>
<h2 className="text-2xl font-bold text-gray-900 dark:text-white mt-0">
Plugin Licensing
</h2>
<p className="text-gray-600 dark:text-gray-300">
Understand the licensing terms for plugins you create and share on SmoothSchedule.
</p>
<h3 className="text-lg font-semibold text-gray-900 dark:text-white">
Private Plugins
</h3>
<p className="text-gray-600 dark:text-gray-300 text-sm">
Plugins you create for personal use remain <strong>private</strong>. You retain full ownership and control:
</p>
<ul className="text-gray-600 dark:text-gray-300 text-sm">
<li>Only accessible within your business account</li>
<li>Not visible in the public marketplace</li>
<li>You choose any license you want (or none)</li>
<li>Platform can execute your code to provide the service</li>
</ul>
<h3 className="text-lg font-semibold text-gray-900 dark:text-white">
Marketplace Plugins (Public Sharing)
</h3>
<p className="text-gray-600 dark:text-gray-300 text-sm">
When you <strong>publish a plugin to the marketplace</strong>, you agree to the{' '}
<span className="font-semibold">SmoothSchedule Community Plugin License</span>:
</p>
<div className="bg-purple-50 dark:bg-purple-900/20 border-2 border-purple-200 dark:border-purple-800 rounded-lg p-4 my-4">
<h4 className="font-semibold text-purple-900 dark:text-purple-100 mb-2">
SmoothSchedule Community Plugin License (SCPL)
</h4>
<div className="text-sm text-purple-800 dark:text-purple-200 space-y-2">
<p>
<strong>You grant the following rights:</strong>
</p>
<ol className="ml-4 space-y-1">
<li>
<strong>Platform Rights:</strong> SmoothSchedule may use, execute, host, and distribute your plugin code
to provide the marketplace service
</li>
<li>
<strong>User Rights:</strong> Other SmoothSchedule users may install, use, and modify your plugin
for their own business purposes
</li>
<li>
<strong>Attribution:</strong> Your authorship will be credited in the marketplace listing
</li>
<li>
<strong>Modifications:</strong> Users may adapt your code to their needs, but cannot republish
modified versions to the marketplace without your permission
</li>
<li>
<strong>Revocation:</strong> You may unpublish your plugin at any time. Existing installations
will continue to function, but new installs will be disabled
</li>
</ol>
<p className="mt-3">
<strong>You retain:</strong> Copyright ownership, ability to license elsewhere, right to unpublish
</p>
<p className="mt-2 text-xs italic">
Similar to: MIT License + Platform Service Rights
</p>
</div>
</div>
<h3 className="text-lg font-semibold text-gray-900 dark:text-white">
Code Verification & Security
</h3>
<p className="text-gray-600 dark:text-gray-300 text-sm">
When you upload a plugin (private or marketplace):
</p>
<ul className="text-gray-600 dark:text-gray-300 text-sm">
<li>Original code is stored for security verification</li>
<li>Changing code after URL whitelisting will fail upload</li>
<li>Platform may review code for security compliance</li>
<li>Malicious code will result in account suspension</li>
</ul>
</ApiContent>
<ApiExample>
<div className="space-y-4">
{/* Comparison Table */}
<div className="bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 overflow-hidden">
<div className="p-4 bg-gray-50 dark:bg-gray-900 border-b border-gray-200 dark:border-gray-700">
<h3 className="font-semibold text-gray-900 dark:text-white">
Private vs. Marketplace Plugins
</h3>
</div>
<div className="divide-y divide-gray-200 dark:divide-gray-700">
<div className="grid grid-cols-3 gap-4 p-3 text-xs">
<div className="font-semibold text-gray-700 dark:text-gray-300">Feature</div>
<div className="font-semibold text-gray-700 dark:text-gray-300">Private</div>
<div className="font-semibold text-gray-700 dark:text-gray-300">Marketplace</div>
</div>
<div className="grid grid-cols-3 gap-4 p-3 text-xs">
<div className="text-gray-600 dark:text-gray-400">Visibility</div>
<div className="text-gray-900 dark:text-white">Your business only</div>
<div className="text-gray-900 dark:text-white">All users</div>
</div>
<div className="grid grid-cols-3 gap-4 p-3 text-xs">
<div className="text-gray-600 dark:text-gray-400">License</div>
<div className="text-gray-900 dark:text-white">Any (or none)</div>
<div className="text-gray-900 dark:text-white">SCPL (required)</div>
</div>
<div className="grid grid-cols-3 gap-4 p-3 text-xs">
<div className="text-gray-600 dark:text-gray-400">Ownership</div>
<div className="text-green-600 dark:text-green-400"> You retain all rights</div>
<div className="text-green-600 dark:text-green-400"> You retain copyright</div>
</div>
<div className="grid grid-cols-3 gap-4 p-3 text-xs">
<div className="text-gray-600 dark:text-gray-400">Attribution</div>
<div className="text-gray-900 dark:text-white">N/A</div>
<div className="text-green-600 dark:text-green-400"> Required</div>
</div>
<div className="grid grid-cols-3 gap-4 p-3 text-xs">
<div className="text-gray-600 dark:text-gray-400">Can Unpublish</div>
<div className="text-green-600 dark:text-green-400"> Delete anytime</div>
<div className="text-green-600 dark:text-green-400"> Hide from marketplace</div>
</div>
<div className="grid grid-cols-3 gap-4 p-3 text-xs">
<div className="text-gray-600 dark:text-gray-400">Platform Use</div>
<div className="text-green-600 dark:text-green-400"> Execute only</div>
<div className="text-green-600 dark:text-green-400"> Execute + Distribute</div>
</div>
</div>
</div>
{/* Important Notice */}
<div className="bg-blue-50 dark:bg-blue-900/20 border-2 border-blue-200 dark:border-blue-800 rounded-lg p-4">
<h3 className="flex items-center gap-2 font-semibold text-blue-900 dark:text-blue-100 mb-2">
<AlertCircle size={18} />
Important to Know
</h3>
<ul className="text-sm text-blue-800 dark:text-blue-200 space-y-2">
<li>
<strong>Platform Service Rights:</strong> By uploading any plugin, you grant SmoothSchedule
the right to execute your code to provide the automation service
</li>
<li>
<strong>No Warranty:</strong> Plugins are provided "as-is" without warranty. Test thoroughly
before deploying to production
</li>
<li>
<strong>Compliance:</strong> You are responsible for ensuring your plugin complies with all
applicable laws and regulations
</li>
<li>
<strong>Data Privacy:</strong> Handle customer data responsibly and in compliance with GDPR,
CCPA, and other privacy laws
</li>
</ul>
</div>
{/* Quick Decision Guide */}
<div className="bg-gray-50 dark:bg-gray-900 rounded-lg border border-gray-200 dark:border-gray-700 p-4">
<h3 className="font-semibold text-gray-900 dark:text-white mb-3 text-sm">
Should I Publish to Marketplace?
</h3>
<div className="space-y-3 text-xs">
<div>
<div className="font-semibold text-green-700 dark:text-green-400 mb-1"> Publish if:</div>
<ul className="ml-4 space-y-1 text-gray-600 dark:text-gray-400">
<li>You want to help the community</li>
<li>Your plugin solves a common problem</li>
<li>You're comfortable with the SCPL terms</li>
<li>You want recognition as the author</li>
</ul>
</div>
<div>
<div className="font-semibold text-red-700 dark:text-red-400 mb-1">✗ Keep Private if:</div>
<ul className="ml-4 space-y-1 text-gray-600 dark:text-gray-400">
<li>Contains business-specific logic</li>
<li>Uses proprietary algorithms</li>
<li>Integrates with private internal systems</li>
<li>You want to restrict access</li>
</ul>
</div>
</div>
</div>
</div>
</ApiExample>
</ApiSection>
{/* Resource Limits */}
<ApiSection id="limits">
<ApiContent>