Mastering GitHub EMU: Validation, Adoption, and Open Source Strategies

Illustration of data migration to GitHub EMU with security and validation checks
Illustration of data migration to GitHub EMU with security and validation checks

The Final Steps: Validating Your GitHub EMU Migration and Driving Adoption

Migrating to GitHub Enterprise Managed Users (EMU) is a significant undertaking that culminates in the critical phases of validation and user adoption. This guide, the sixth and final installment in our series, focuses on ensuring a successful transition, managing open source contributions, and establishing a robust post-migration environment. Effective software monitoring during and after this phase is crucial for operational stability.

Key Considerations for GHEC to GHEC-EMU Migration

Transitioning from standard GitHub Enterprise Cloud (GHEC) to EMU involves unique challenges:

  • New Enterprise Account Required: You cannot convert an existing GHEC enterprise to EMU. A new EMU enterprise must be created, necessitating a full migration.
  • The "Two Account" Problem: Developers contributing to open source will need a separate personal GitHub account alongside their managed work account. Clear guidelines and tools (like different browser profiles) are essential to prevent confusion.
  • GitHub Apps and Integrations: Many existing GitHub Apps may not function as expected with managed users. A thorough audit and vendor communication are vital to ensure compatibility or reconfigure internal tools.
  • Preserving Contribution History: To maintain contribution graphs, ensure IdP email addresses match Git commit emails, and utilize the mannequin reclaim process.
  • Pilot Group Testing: Avoid a big-bang approach. Start with a small, technical pilot group to test workflows, gather feedback, and iterate on your migration process.
  • Strategic Timing: Plan your migration to avoid peak business periods (e.g., end of quarter/year) and buffer estimates by at least 50% for unexpected issues.

Navigating Open Source Contributions with EMU

A fundamental restriction of EMU is the inability of managed users to interact with repositories outside their enterprise. This means no public repos, no external PRs, and no starring favorite libraries. Organizations with active open source participation need a deliberate strategy.

EMU Restrictions at a Glance:

  • Cannot create public repositories.
  • Cannot fork or interact with external repositories.
  • Are invisible to users outside your enterprise.

These are inherent to EMU's security model and cannot be configured away.

Strategies for Open Source Engagement:

  1. The Dual Account Approach: The most common solution involves maintaining separate work (EMU) and personal (GitHub.com) accounts. This requires careful configuration of Git identity and SSH keys. Developers should use different browser profiles to avoid accidental commits.

    # ~/.gitconfig
    [user]
        name = Your Name
        email = personal@email.com
    
    [includeIf "gitdir:~/work/"]
        path = ~/.gitconfig-work
    
    # ~/.gitconfig-work
    [user]
        email = your.name@company.com
    # ~/.ssh/config
    Host github.com
        HostName github.com
        User git
        IdentityFile ~/.ssh/id_personal
    
    Host github-work
        HostName github.com
        User git
        IdentityFile ~/.ssh/id_work
  2. Private Mirrors App (PMA): This GitHub App facilitates secure open source contributions from EMU enterprises. It creates private mirrors of upstream projects, allowing developers to work internally, get changes approved, and then push to a public fork for upstream PRs. PMA preserves commit history and integrates natively with GitHub workflows.
  3. Manual Innersource Model: A more manual approach involves forking externally with a service account, mirroring the fork internally, making changes, and then pushing upstream from the external fork.
  4. Dedicated OSS Team or Account: For companies with significant open source presence, creating a separate, non-EMU organization staffed with personal accounts can manage public projects and contributions, with automation syncing approved changes.

Communicating the Change:

Transparency is key. Acknowledge the friction, explain the security benefits, provide a clear playbook for dual accounts, offer support, and gather feedback from your teams.

Go-Live Validation Checklist

Post-migration, a thorough validation is crucial. This is where continuous software monitoring ensures the new environment is stable and performing as expected:

  • All users can authenticate via IdP.
  • SCIM provisioning for users and teams functions correctly.
  • Repository permissions are accurate.
  • GitHub Actions workflows are operational.
  • Integrations and webhooks are working.
  • Audit log streaming is configured.
  • Security policies are enforced.
  • Documentation is updated and support channels are established.

Decommissioning the Old Environment

Once validated, plan the decommissioning of the source environment. Set a sunset date, archive repos (don't delete immediately), revoke integrations, update internal links, and document lessons learned for future improvements.

Key Takeaways

Migrating to EMU is a transformation, not just an upgrade. It requires a new enterprise, relies heavily on your IdP as the source of truth, demands thorough testing with pilot groups, and necessitates early and frequent communication. Plan for the long tail of cleanup and optimization, and don't hesitate to seek expert guidance for complex migrations.

Illustration of a developer managing two GitHub accounts, one for work (EMU) and one for personal open source contributions
Illustration of a developer managing two GitHub accounts, one for work (EMU) and one for personal open source contributions

Track, Analyze and Optimize Your Software DeveEx!

Effortlessly implement gamification, pre-generated performance reviews and retrospective, work quality analytics, alerts on top of your code repository activity

 Install GitHub App to Start
devActivity Screenshot