Skip to content

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.

  1. Create a new repository named .github in your organization
  2. This repository should be public
  3. 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:

  1. LICENSING.md - The engineering-facing guide
  2. profile/README.md - Organization profile (use ORGANIZATION-PROFILE-README.md)
  3. CONTRIBUTING.md - Default contributing guide
  4. 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:

  1. Create a new repository named project-template-apache2
  2. Add these files:
  3. LICENSE (Apache 2.0)
  4. README.md (from README-template.md)
  5. CONTRIBUTING.md
  6. .gitignore
  7. Go to Settings → Check "Template repository"
  8. Repeat for MIT if needed: project-template-mit

Step 5: Update Organization Settings

  1. Go to your GitHub organization settings
  2. Under "Member privileges":
  3. Set default repository permission to "Read"
  4. Require 2FA for all members
  5. Under "Code security and analysis":
  6. Enable dependency graph
  7. 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:

  1. Review LICENSING.md guide
  2. Bookmark the .github repository
  3. Know where to ask license questions
  4. Understand the default (Apache 2.0)

Step 8: Communication Plan

  1. Week 1: Email announcement to all engineers
  2. Link to LICENSING.md
  3. Summary of changes
  4. Q&A session scheduled

  5. Week 2: Engineering meeting presentation

  6. Walk through decision tree
  7. Show examples
  8. Answer questions

  9. Week 3: Office hours for questions

  10. 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?

  1. Use decision tree in LICENSING.md (2 minutes)
  2. Copy appropriate LICENSE file
  3. Add license section to README
  4. 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"

  1. Choose license using decision tree
  2. Add LICENSE file
  3. Update README
  4. 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]