Open-sourcing code is a legal release, not just a repository setting. Before a startup makes a codebase public, it should be able to answer four questions in writing: Does the company own the code? What exactly is being released? Under which license? How will future contributions be accepted? The practical file is usually small: an ownership audit, a release approval, a license, a contribution policy, and a record of excluded confidential material. The hard part is making those documents match the code that will actually leave the company. This guide is general information, not legal advice. Patent strategy, export controls, regulated data, third-party licensing conflicts, and disputes over ownership should be reviewed by qualified counsel before release.
The short answer
Before publishing a startup codebase, prepare and retain:
- A code-ownership and dependency audit confirming who wrote each material component and under what terms.
- Signed invention and IP assignments from founders, employees, and contractors whose work is included.
- A board or officer approval record identifying the repository, release scope, license, and authorized operator.
- The open-source license file that applies to the released code.
- A third-party notices file covering included dependencies, fonts, models, data, and other licensed materials.
- A contribution policy, usually with a Developer Certificate of Origin or a contributor license agreement.
- A confidentiality and trade-secret release checklist documenting what was deliberately excluded.
- Repository governance documents such as
CONTRIBUTING.md, a security policy, and maintainer permissions. These documents serve different jobs. The license tells the public what it may do. The ownership file shows the startup had the right to grant that permission. The release record shows the decision was authorized. The contribution process helps prevent the same ownership problem from rebuilding itself after launch.
1. Start with ownership, not the license picker
A license cannot grant rights the startup does not own or control. Before choosing MIT, Apache-2.0, GPL-3.0, or another license, map the code's provenance. For each material component, record:
- the author or source;
- whether the work was created as a founder, employee, contractor, vendor, or community contribution;
- the agreement that assigns or licenses the relevant rights;
- any third-party restrictions; and
- whether the component will be released, replaced, or kept private. Do not assume that paying a contractor automatically transfers copyright. The U.S. Copyright Office explains that “work made for hire” has defined statutory conditions; a written assignment is often the cleaner evidence for commissioned software. See the Copyright Office's Work Made for Hire circular. For founder and employee code, collect the signed proprietary-information and invention-assignment agreements that cover the relevant work. If a contributor wrote code before joining the company, use a specific assignment or contribution license rather than relying on a general employment clause to solve the gap. The output should be a short ownership schedule, not a vague statement that “the company owns everything.” List the repository, material modules, contributors, governing documents, and any unresolved exceptions.
2. Define the release boundary
Write down exactly what is becoming public. A repository may contain more than source code: deployment files, customer identifiers, model weights, data samples, internal prompts, credentials, vendor configurations, unpublished patent material, or operational documentation. A release checklist should identify:
- the repository and commit or tag being released;
- included and excluded directories;
- secret-scanning and credential-rotation results;
- customer, employee, and personal data checks;
- patent and export-control review status, when relevant;
- third-party materials that remain inside the release; and
- the person who signed off on the final package. This boundary also matters for trade secrets. Under the federal statutory definition, trade-secret protection depends in part on taking reasonable measures to keep information secret. A deliberate public release can destroy secrecy for the released material. The current statutory text is available in 18 U.S.C. § 1839. The company should therefore record both sides of the decision: what it intends to disclose and what remains confidential. That record is useful later when a customer, investor, acquirer, or contributor asks where the open-source boundary sits.
3. Approve the release internally
Open-sourcing a core asset can affect financing diligence, patent options, commercial licensing, security obligations, and the company's ability to treat related material as confidential. The decision should not live only in a maintainer's Slack message. Create a written consent, board minute, or officer approval that states:
- the codebase and release version;
- the selected license;
- the business purpose of the release;
- any code or rights excluded from the release;
- the owner of repository administration; and
- any conditions, such as completing a dependency audit before the repository becomes public. The correct approval body depends on the company's charter, bylaws, delegations, investor documents, and the importance of the asset. Counsel can help decide whether officer approval is enough or whether the board should act.
4. Choose a license that matches the business model
An open-source license is the public permission layer. Do not use a custom “open source” label for terms that fail the established definition. The Open Source Initiative's Open Source Definition describes the core distribution, source, modification, and nondiscrimination requirements. Common choices involve real tradeoffs:
- Permissive licenses generally allow broad reuse with limited conditions. The Apache License 2.0, for example, includes express patent-license terms and notice requirements.
- Copyleft licenses can require modified or combined works to be distributed under specified terms. The GNU General Public License v3 is a widely used example. The right choice depends on the startup's goal. A developer-tool company optimizing for adoption may choose differently from a company protecting a hosted commercial product or building a dual-licensing model. For the release package:
- place the exact license text in a root
LICENSEfile; - add copyright notices consistently;
- explain any separately licensed directories;
- identify trademark restrictions separately from copyright permissions; and
- avoid claiming the entire repository is under one license if third-party components carry different terms. Use a standardized license identifier in package metadata where the ecosystem supports it. The SPDX License List provides standardized identifiers and texts that make automated compliance checks easier.
5. Create the third-party notices file
Most startup codebases include dependencies with their own license conditions. Before release, produce a dependency inventory and resolve obvious conflicts. The inventory should cover more than package-manager dependencies. Include:
- copied snippets and templates;
- fonts, icons, images, and design systems;
- model weights and training or evaluation datasets;
- generated code with material third-party inputs;
- firmware, SDKs, and vendor libraries; and
- code previously obtained under a customer, employer, university, accelerator, or research agreement.
For each retained item, capture the version, source, license identifier, required notices, and any distribution conditions. Put required attribution and license texts into
NOTICE,THIRD_PARTY_NOTICES, or the format the applicable license requires. If a dependency's terms are unclear or incompatible with the intended release, replace it or obtain permission before launch. A scan result is evidence, not a legal conclusion; it still needs a human decision on material exceptions.
6. Decide how future contributions are accepted
Once the repository is public, ownership becomes an ongoing workflow. State who may merge code and what contributors represent when submitting it. Two common models are:
- Developer Certificate of Origin (DCO): contributors certify that they have the right to submit the contribution, commonly through a signed-off commit. The current certificate text is published at developercertificate.org.
- Contributor License Agreement (CLA): contributors grant specified rights to the project or company, sometimes including patent rights and relicensing permissions.
Neither model is automatically best. A DCO can be lighter for community adoption. A CLA can give the company more explicit rights but may add contributor friction. Choose once, document the reason, and automate the check where practical.
Your
CONTRIBUTING.mdshould also explain: - how to submit changes;
- the required sign-off or CLA process;
- coding, review, and testing expectations;
- whether the project accepts AI-generated contributions and under what evidence standard;
- security-reporting instructions; and
- the maintainer's right to reject or remove contributions.
7. Separate copyright, patents, trademarks, and product promises
These rights are related but not interchangeable.
- A copyright license governs the code and other expressive material.
- Patent terms may affect implementations of patented inventions.
- A trademark policy controls use of the company and project names or logos.
- A support policy states whether the company promises maintenance, uptime, fixes, or compatibility. Keep those documents separate enough that a user cannot reasonably read an open-source code license as permission to impersonate the company or as a promise of commercial support. If the startup may seek patents, involve patent counsel before public disclosure. If the open-source project sits beside a paid cloud product, make the boundary between community software and commercial service terms explicit.
8. Keep a permanent release record
Archive the approved release package with the company records:
- ownership schedule and signed assignments;
- dependency and notices report;
- approval consent or minutes;
- final
LICENSE,NOTICE, and contributor documents; - release checklist and secret-scan result;
- public repository URL and release tag; and
- later license or governance changes. The record should let a future investor, acquirer, employee, or maintainer reconstruct what the company released, under which terms, and why it had the right to do so.
A practical pre-release checklist
Before switching the repository to public, confirm:
- Every material contributor is mapped to a signed assignment or license.
- The release commit and excluded files are identified.
- Secrets, customer data, internal prompts, and private operational details have been removed.
- Patent, export-control, and regulated-data questions were escalated where relevant.
- The selected license matches the commercial strategy.
- Third-party licenses and required notices are complete.
- The board or authorized officer approved the release.
-
LICENSE,NOTICE,CONTRIBUTING.md, andSECURITY.mdare ready. - The DCO or CLA workflow is operational.
- Repository admin, merge, release, and incident-response owners are named.
- The final package and public URL will be retained in the corporate record.
Bottom line
A startup is ready to open-source code when it can prove three things: it owns or controls the rights it is granting, the public release excludes what must stay private, and future contributions enter through a documented process. The license file is necessary, but it is only one part of that proof. The defensible release package connects ownership, authorization, licensing, confidentiality, and repository governance before the first public commit.