# Starboard API Review Process

## Why do we need a process?
The Starboard API is the contract between Starboard applications and
implementors of the Starboard API. Changing existing APIs and adding new
required APIs breaks that contract and increases the cost of implementors
keeping their Starboard port up-to-date. Pushing a release to the Open Source
repository signals to Starboard implementors that any non-experimental APIs in
that version will not change for as long as that version of Starboard is
supported by the Starboard applications. We cannot change those newly frozen
APIs without causing a potentially significant disruption to any partners who
have already implemented them, or are in the process of implementing them.

While having a process may make it harder to add new things to Starboard, it is
much harder to remove or change things that are already there.

Thus we need to give special focus to changes to the Starboard API to ensure its
consistency with existing APIs design principles. Unnecessary churn on the
Starboard API creates more work for Starboard application developers and may
discourage porters from keeping Starboard applications up-to-date on their
platforms. This process is intended to save time and effort for both Starboard
application developers and Starboard implementors in the long run, and
illustrates the complexity of dealing with a wide variety of platforms
simultaneously.

## So you want to add a new API?
Historically, we have done API review as a part of the Code Review process using
Gerrit. This works well for small-ish changes. For larger changes, consider
writing a design document up front before defining the new API.

### Who does the review?
Send a message to the public cobalt-dev group to request a review.

### What is the process?
Developers are strongly encouraged to create the interface and upload that to
Gerrit for review before spending time on stubs and tests. Iteration on the
interface will necessarily result in changes to the stubs and tests, which can
result in more work for the implementer of a new API.

1. Upload a .h file with Module Overview and (optionally) initial function
   prototypes
    * New APIs should be declared in the experimental version, as described in the
      starboard versioning doc.
2. Discuss the new API with whoever is performing the review, and address
   comments.
3. Iterate.
    * As a part of the review process, the reviewer will work with you to ensure
      that the new API adheres to the starboard principles.
4. Finalize function declarations.
5. Implement tests and stubs.
    * Existing platforms on trunk should not break as a result of this change.
    * At this point, you may submit the interface, tests, and stubs with your
      reviewer’s +2.
6. Implement the interface for at least one platform.
7. Iterate
8. It may be that implementation of the API reveals things that were overlooked
   during the earlier stages of the review.

Ideally most major points of feedback will be caught early in the review process
before much time has been spent on implementation.
In the case that the platform in (6) is an internal platform, provide a
reference implementation for at least one external reference platform. This can
be in a follow-up CL, but must be implemented before the new API is frozen
(see [versioning.md](versioning.md)).

## How to design a new API
See [principles.md](principles.md) for a guide on how to design a good Starboard
API.
