Onboarding a Module
This guide provides a detailed walkthrough of the module onboarding process, including all options and considerations.
Before You Begin
Eligibility Requirements
To onboard a module to CodeLibra, you must:
- Be at least 18 years old
- Have the legal right to license the code (you own the copyright or have appropriate agreements)
- Be able to complete identity verification for payouts
- Agree to the CodeLibra Account Terms
What You're Committing To
By onboarding a module, you represent and warrant that:
- Your organization owns all rights in the module or has proper authorization
- The module does not infringe any third-party intellectual property rights
- All information provided about the module is accurate and complete
- The module complies with applicable laws and CodeLibra's Acceptable Use Policy
The Onboarding Process
1. Starting the Process
From your dashboard or organization page, click Onboard Module to begin.
If you haven't created an organization yet, you'll be prompted to do so. Organizations are the entities that own modules and receive payments. Even individual developers need an organization (which can simply be named after yourself).
2. Connecting Your Repository
Supported Repository Hosts
Currently, CodeLibra supports:
- GitHub (public and private repositories)
Additional hosts are planned for the future.
Authorization
When you connect GitHub, you'll authorize CodeLibra to:
- Read repository metadata (name, description, visibility)
- Read repository contents (to verify license files)
- Read tags and releases
CodeLibra does not:
- Write to your repository
- Access other repositories without your permission
- Store your code (we only reference it)
Selecting a Repository
After authorization, you'll see a list of your repositories. Select the one you want to onboard.
If you don't see your repository:
- Check that you authorized access to the correct GitHub account
- For organization repositories, ensure CodeLibra has access to that organization
- Private repositories require explicit authorization
Module Name
Choose a display name for your module. This is how it will appear in the CodeLibra catalog and on license documents.
Tips:
- Use the same name as your repository/package for consistency
- Keep it concise but descriptive
- Avoid generic names that could confuse users
Slug
The slug is a URL-friendly identifier for your module (e.g., my-awesome-library). It must be:
- Lowercase letters, numbers, and hyphens only
- Unique across CodeLibra
- Between 3 and 50 characters
Description
Provide a brief description of what your module does. This appears in search results and the module page. Keep it clear and focused on the value proposition.
Module URL (Optional)
Link to your project's website, documentation, or landing page. This helps potential licensees learn more about your module.
4. Choosing Your Licensing Model
This is the most important decision in the onboarding process.
Option 1: Classic Dual Licensing
- Open-source license: A copyleft license (typically AGPL-3.0)
- Commercial license: The CodeLibra License (required for proprietary use)
This model means:
- Open-source users can use your module freely under AGPL
- Any company building proprietary software must purchase a CodeLibra License
- Strong incentive for commercial users to pay
Best for: Modules with clear commercial value where you want to ensure paid licensing for proprietary use.
Option 2: Voluntary Dual Licensing
- Open-source license: A permissive license (typically MIT)
- Commercial license: The CodeLibra License (optional)
This model means:
- Everyone can use your module freely under MIT for any purpose
- The CodeLibra License is available for users who want:
- Formal commercial licensing terms
- Support or service level agreements
- Clear liability protection
- To support your work
Best for: Modules where you want maximum adoption but offer optional paid licensing.
Selecting Your Open-Source License
Choose from the supported licenses:
- AGPL-3.0 (recommended for classic dual licensing)
- GPL-3.0
- LGPL-3.0
- MIT (recommended for voluntary dual licensing)
- Apache-2.0
- BSD-2-Clause
- BSD-3-Clause
Ensure your repository already uses this license or that you have the right to change licenses.
5. Creating Your First Release
A release represents a licensable version of your module.
Version Identifier
Use semantic versioning (e.g., 1.0.0, 2.3.1) for clarity. This version appears on license documents.
Selecting a Reference Point
Choose the git reference for this release:
- A tag (recommended)
- A specific commit
- A branch head (not recommended—branches change)
Release Notes (Optional)
Describe what's included in this release. These notes appear on the module page and help licensees understand what they're getting.
6. Identifying License Dependencies
What Are License Dependencies?
A license dependency exists when your module includes code from another CodeLibra module in a way that requires a license to that module for your module to function properly.
When to Add License Dependencies
Add a license dependency when:
- Your module contains/bundles code from another CodeLibra module
- Your module is a derivative work of another CodeLibra module
- Proper functioning requires the other module's code to be present
Do NOT add a license dependency when:
- Your module merely calls an API or service (no code inclusion)
- The dependency is available under a permissive license outside CodeLibra
- It's a runtime dependency that users obtain separately
How to Add Dependencies
- Search for the module by name in the CodeLibra catalog
- Select the appropriate module
- Confirm it should be added as a license dependency
Impact of License Dependencies
- Your licensees automatically receive licenses to all dependencies
- The total price includes your price plus all dependency prices
- Revenue is automatically distributed to all developers in the chain
- See License Dependencies for more details
7. Setting Your Price
What You're Pricing
Set the annual subscription price for your module only. Dependency prices are added automatically.
Price Guidelines
Consider:
- The value your module provides to commercial users
- Time saved vs. building the functionality from scratch
- Comparable pricing in your ecosystem
- Your module's maturity and reliability
You can always adjust pricing later—changes apply only to new subscribers and renewals.
Minimum and Maximum
- Minimum price: $1.00 per year
- Maximum price: No hard limit, but be realistic
8. Review and Publish
Before publishing, review:
- Module information (name, description, URL)
- Licensing model and open-source license choice
- Release details
- License dependencies
- Pricing
Once you click Publish, your module is live and available for licensing.
After Publishing
Making Changes
You can modify most settings after publishing:
- Description and metadata: Update anytime
- Pricing: Changes apply to new subscribers and renewals only
- License dependencies: Update with each new release
- Licensing model: Generally cannot be changed after first license is sold
Adding New Releases
As you develop your module:
- Go to your module's management page
- Click Create Release
- Select the new version/tag
- Update license dependencies if needed
- Publish the release
Existing subscribers automatically have access to new releases.
If You Add New License Dependencies
When a new release adds license dependencies that existing subscribers don't have:
- Existing subscribers receive licenses to the new dependencies at no additional charge
- You (the developer) pay for these licenses from your revenue or another payment method
- This payment is required when publishing the release and is non-refundable
This ensures existing subscribers aren't suddenly charged more, while upstream developers are still compensated.
Common Questions
Can I onboard multiple modules?
Yes, there's no limit on the number of modules you can onboard.
Can I onboard a module I contribute to but don't own?
Only if you have authorization from the copyright holders to license the code commercially.
What if my module is already available under a commercial license elsewhere?
That's fine, but ensure you're not granting conflicting rights. CodeLibra licensees receive rights under the CodeLibra License terms.
Can I remove my module from CodeLibra?
You can stop offering new licenses, but existing licenses remain valid according to their terms.
Next Steps