MBARI GitHub Licensing Implementation Guide
This guide walks through setting up the MBARI licensing policy and templates in your GitHub organization.
Overview
This implementation provides:
- 📋 License templates (Apache 2.0, MIT, BSD-3-Clause)
- 📖 Engineering documentation
- 🤖 GitHub repository templates
- 🌳 Decision tree for license selection
- 🏢 Organization profile README
Step 1: Create .github Repository
GitHub organizations can have a special .github repository that provides default templates.
- Create a new repository named
.githubin your organization - This repository should be public
- It will provide defaults for all repositories in the organization
Step 2: Set Up Directory Structure
Create the following structure in the .github repository:
.github/
├── profile/
│ └── README.md # Organization profile page
├── CONTRIBUTING.md # Default contributing guidelines
├── LICENSE-TEMPLATES/
│ ├── Apache-2.0
│ ├── MIT
│ └── BSD-3-Clause
├── LICENSING.md # Engineering licensing guide
└── ISSUE_TEMPLATE/
└── bug_report.md
Step 3: Upload Files
Copy the template files to your .github repository:
- LICENSING.md - The engineering-facing guide
- profile/README.md - Organization profile (use ORGANIZATION-PROFILE-README.md)
- CONTRIBUTING.md - Default contributing guide
- LICENSE-TEMPLATES/ - Copy all license templates
Step 4: Create Repository Templates
GitHub allows you to create template repositories that can be used as starting points:
- Create a new repository named
project-template-apache2 - Add these files:
- LICENSE (Apache 2.0)
- README.md (from README-template.md)
- CONTRIBUTING.md
- .gitignore
- Go to Settings → Check "Template repository"
- Repeat for MIT if needed:
project-template-mit
Step 5: Update Organization Settings
- Go to your GitHub organization settings
- Under "Member privileges":
- Set default repository permission to "Read"
- Require 2FA for all members
- Under "Code security and analysis":
- Enable dependency graph
- Enable Dependabot alerts
Step 6: Create License Selection Tool (Optional)
Add an issue template that helps developers choose a license:
Create .github/ISSUE_TEMPLATE/license-question.md:
---
name: License Question
about: Need help choosing a license for a new project?
title: '[LICENSE] '
labels: 'question, licensing'
assignees: '[your-name]'
---
## Project Description
Brief description of the project
## License Decision Tree
Please answer these questions:
- [ ] Contains ITAR/EAR restricted technology? (If yes → Private only)
- [ ] Has existing commercial license agreement? (If yes → Contact tech transfer)
- [ ] Collaborative project with external partners? (If yes → Match their license)
- [ ] Want to ensure derivatives stay open-source? (If yes → Consider GPL-3.0)
- [ ] Simple utility or small library? (If yes → Consider MIT)
- [ ] Everything else → Apache 2.0 (default)
## Additional Context
Any other relevant information
---
**Next Steps**: Engineering lead will review and provide guidance within 1 business day.
Step 7: Add to Onboarding
Update engineer onboarding to include:
- Review LICENSING.md guide
- Bookmark the .github repository
- Know where to ask license questions
- Understand the default (Apache 2.0)
Step 8: Communication Plan
- Week 1: Email announcement to all engineers
- Link to LICENSING.md
- Summary of changes
-
Q&A session scheduled
-
Week 2: Engineering meeting presentation
- Walk through decision tree
- Show examples
-
Answer questions
-
Week 3: Office hours for questions
-
Ongoing: Add to new engineer onboarding
Example Email Announcement
Subject: New MBARI Software Licensing Policy & Guidelines
Team,
We've established clear guidelines for software licensing across MBARI projects.
This makes it easier to share our work and collaborate with other institutions.
Key Points:
• Default license: Apache 2.0
• Simple decision tree for exceptions
• All templates ready to use on GitHub
• Full guide available at: [link to .github/LICENSING.md]
The guide includes:
✓ Quick decision tree (2 minutes or less)
✓ Common scenarios with examples
✓ Templates ready to copy
✓ Contact info for questions
Next Steps:
1. Review the guide: [link]
2. Use templates for new projects: [link]
3. Ask questions in #engineering Slack channel
4. Join Q&A session: [date/time]
This was developed based on research of peer institutions (WHOI, OOI, NOAA)
and aligns with NSF/NOAA expectations.
Questions? Contact [your name]
Step 9: Metrics & Review
Track adoption: - New repositories using standard licenses - Questions received - Edge cases identified
Review quarterly: - Are guidelines working? - Need adjustments? - New use cases?
Quick Start for Engineers
Starting a new project?
- Use decision tree in LICENSING.md (2 minutes)
- Copy appropriate LICENSE file
- Add license section to README
- Optional: Add license headers to source files
Template Repositories:
- Apache 2.0: mbari-org/project-template-apache2
- MIT: mbari-org/project-template-mit
Need help?
- Read: .github/LICENSING.md
- Ask: #engineering Slack
- Contact: [engineering lead]
Troubleshooting
"I have an existing project without a license"
- Choose license using decision tree
- Add LICENSE file
- Update README
- Note in next release notes
"I'm working with external collaborators"
- Discuss early in project
- Apache 2.0 is usually acceptable
- Document the decision
- Get approval if needed
"My project has special circumstances"
- Contact engineering lead
- Explain the situation
- We'll work it out together
- May need legal/tech transfer input
Resources
- MBARI Licensing Guide:
.github/LICENSING.md - Apache 2.0: https://www.apache.org/licenses/LICENSE-2.0
- MIT: https://opensource.org/licenses/MIT
- Choose a License: https://choosealicense.com/
- NOAA Policy: https://www.noaa.gov/administration/nao-201-118
Maintenance
This policy should be reviewed: - Annually - When significant changes to institutional policy occur - Based on community feedback - As best practices evolve
Policy Owner: [Engineering Lead Name]
Last Updated: January 2026
Next Review: January 2027
Questions about implementation? Contact [your name/email]