opensource.google.com

Menu

Docs

Releasing a Project

go/releasing

This is the process for releasing Google-owned code as an open source project. It’s appropriate for things like 20% side projects and new Google products that aren’t part of an already-established open source project (like Chromium or Android).

  • If you’re releasing a patch, go/patching is a faster and simpler process for that.
  • If you’re dealing with a personal project that you want to personally own the copyright to, the Invention Assignment Review Committee (go/iarc) will consider your request.

This whole process typically takes under a week from filing to final approval. If any individual item drags for more than three work days please email emailremoved@ and let us know!

Release checklist

  1. Stage your code on an internal git-on-borg repo:

    • Scrub the comments of any sensitive information.
    • Include a README file.
    • Include an Apache 2 LICENSE file and appropriate source file headers.
      • If you intend to publish your release under any license other than Apache 2, include the appropriate license file instead and explain why you are using a different license in the release description.
    • Include a CONTRIBUTING.md file which tells people to sign our CLA if they haven’t already.
      • If you are omitting a CONTRIBUTING.md file, explain the reason for choosing to do so in the release description.
    • Non-Google code must be in a third_party directory.
    • Include a disclaimer that “This is not an official Google product” unless it actually is.
    • Set your repository ACLs to ensure that reviewers and the automated Cross linter can access your code.
    • Run the Cross linter to check your repository, making changes where useful (Cross outputs warnings, not errors):

      /path/to/.../cross http://linkremoved/
      

      There is no need to copy and paste the output in your launch, Cross will automatically run and leave the results as a comment. If, after 90 minutes of the launch becoming current (i.e. leaving DRAFT), Cross hasn’t commented on your launch, you can run with the -ariane flag which will leave a comment for you (and then follow-up by filing an issue at go/cross-bug):

      /path/to/.../cross -ariane=LAUNCH_ID http://linkremoved/
      

      If you need to run against a subdirectory, you should check out your repository first, and then point Cross to the subdirectory:

      /path/to/.../cross /path/to/your/subdirectory
      
  2. Create an entry on the Open Source launch calendar in Ariane:

    • Add your director as an approver for the Eng bit
    • Include a link to your code in the description field.
      • E.g. http://linkremoved/
    • Ensure all reviewers have read access to your code.
    • Set the launch date at least two weeks in the future to allow for time to review.
    • WAIT until your launch is approved before continuing to the next step.
  3. Create the external repository.

    • If the project is going to be hosted on GitHub in a Google organization, create the repository for the GitHub URL in an Ariane launch at go/github/repo.
  4. If your project contains encryption code, follow go/releasing-crypto to notify the export compliance team on the day you make your release public. You don’t need to do this for just authentication or digital signatures.

Stuff you can do after you launch

Except as otherwise noted, the content of this page is licensed under CC-BY-4.0 license. Third-party product names and logos may be the trademarks of their respective owners.