API Proposals (New APIs Start Here)

This page on Google intranet: go/new-chrome-api

So you want to make a new extension or app API?  That's great!

You should expect three distinct phases for your API's development: Proposal, Development, and Going Live.  You need to get LGTMs from miket@chromium.org/kalman@chromium.org and meacer@/jww@ in the apps-dev@chromium.org mailing list for your API twice: once before implementation (proposal), and once after implementation (final review before Chrome stable).


Need help?  Send an email to apps-dev@chromium.org.


Have feedback on this proposal process?  Send an email to saroop@chromium.org.


Proposal Phase

  1. Read the CRX API Security Checklist and make sure your API follows its suggestions.

  2. Fill out an API Proposal.

  3. Add your API to the Chrome API tracking master document with status "1:proposal."  Make sure to paste a link to your proposal in the appropriate column.  

  4. Email apps-dev@chromium.org, cc'ing security-enamel@chromium.org, to say that you have a new API you'd like reviewed, and include a link to your proposal in the email. Suggestion: identify any additional parties or individuals and cc them as well.

  5. You’ll get feedback on the apps-dev mailing list. If things are looking good, Mike Tsao (miket@chromium.org) or Ben Kalman (kalman@chromium.org) will give an LGTM for the API, and meacer@ or jww@ will give an LGTM for any security implications, on the apps-dev mailing list. If there’s a need to meet in person to resolve issues, Mike or Ben will sign you up for a formal review meeting for your API and will help you get your API through the meeting.


Development Phase

  1. In the Chrome API tracking master document, change the status of your API to "2:coding."

  2. Code your extension/app API according to the implementation guidelines.  Your implementation must be kept behind its own feature flag until it works and is secure.  See chrome/common/extensions/feature_switch.h.

  3. Write documentation for your API.

    1. After your docs are uploaded to codereview, you can preview how it looks at http://developer.chrome.com/_patch/<your CL number>/<your api>, for example http://developer.chrome.com/_patch/14990011/extensions/storage.html.

    2. After your docs CL lands, make sure it appears on the dev channel's API page for extensions and/or apps (depending on what your API is targeted for).

  4. After your implementation both works and is secure, you should enable your API on the dev channel as described in the implementation guidelines.

  5. Encourage usage of the API in the dev channel; the more adoption during dev, the easier your final approval will be.

  6. Remain restricted to the dev channel for a full release cycle (in most cases).

  7. After receiving and addressing feedback from a few major extensions or apps, proceed to the going live phase.


Going Live Phase

  1. Make sure that your API is properly represented in the Chrome API tracking master document.

  2. Email apps-dev@chromium.org, cc'ing security-enamel@chromium.org, to say that you'd like a final review for enabling your stable, well-tested API on all channels.

  3. If things are looking good, Mike Tsao (miket@chromium.org) or Ben Kalman (kalman@chromium.org) will give an LGTM for the API, and meacer@ or jww@ will give an LGTM for any security implications, on the apps-dev mailing list. If there’s a need to meet in person to resolve issues, Mike or Ben will sign you up for a formal review meeting for your API and will help you get your API through the meeting.

  4. Have your PM file a Type-Launch bug.  Your PM should usher the API through all of the launch reviews, including privacy and security.

  5. Update all sample extensions/apps for your API.

  6. Land a CL to enable the API for all channels, and change the Status of your item in the Chrome API tracking master document to "3: complete."

  7. Publicize the new API.  Write a post for the Chromium blog about the API.  Send an email to chromium-extensions@chromium.org or chromium-apps@chromium.org.  Talk to Joe Marini (joemarini@chromium.org) for advice.



Subpages (40): View All
Comments