# Advocacy Ambassador program

Node.js aims to support and encourage developers and developer
advocates to promote Node.js as a project and to help communicate
key messages to their constituencies.

The ambassador program does that by:

* Maintaining an up-to-date set of messages that the Node.js maintainers would like ambassadors
  to promote. These will be documented in the nodejs/ambassadors repository.
* Maintaining an up-to-date set of topics on which additional content
  would benefit the community. These will be documented in the
  nodejs/ambassadors repository.
* Providing a space for collaborators to share new topics/features they
  are working on when they would be happy for ambassadors to help share and get
  early feedback.
* Helping ambassadors promote content that aligns with the
  messages and topics defined.
* Advocating for ambassadors to be part of the OpenJS speakers bureau, even if the
  ambassador is not otherwise an active member of the project itself.

## Ambassadors nominations

Any member of the Node.js organization may nominate an ambassador.
The Technical Steering Committee (TSC) will review/approve ambassadors.

In the initial phase of the program:

* There will be a maximum of 4 ambassadors.
* The term will be for the calendar year. After a year, ambassadors automatically
  drop out of the ambassador list and must be re-nominated.
* Ambassadors will be documented on the nodejs/ambassadors `README.md`.

The TSC may remove an ambassador for any reason,
including promoting content misaligned with the project.

Members of the Node.js organization can nominate ambassadors by opening
a discussion issue with the nomination in
[nodejs/collaborators](https://github.com/nodejs/collaborators/)
titled `Nomination X to be an Ambassador`, where X is the name of the person
being nominated.
If there is no objection within 14 days, the nomination is approved.

## Onboarding

To onboard an ambassador, a member of the TSC will:

* \[] Add the ambassador to the nodejs/ambassadors team.
* \[] Add the ambassador to the nodejs/ambassadors `README.md`.
* \[] Add the ambassador to the OpenJS Slack channel.

## Reviewing content

Ambassadors are asked to share links to new content before asking
for the content to be promoted. The goal is to provide the opportunity
for collaborators to help improve content as opposed to a detailed
nitpick review.

This is done by opening an issue in the nodejs/ambassadors
repository, which limits access to members of the Node.js
organization. The issue may include the link to existing published
content or a draft of the content itself.

Interested members of the Node.js organization may comment
in the issue and the ambassadors are expected to
consider those suggestions and update the content when they feel it
is appropriate.

Explicit approval is not required in the issue (i.e. if there is no
input, that's OK), but review comments should be addressed before
requesting promotion.

## Expectations on Ambassadors

Ambassadors are expected to engage both within the project and externally
in a manner that is consistent with the project's
[Code of Conduct](https://github.com/nodejs/admin/blob/main/CODE_OF_CONDUCT.md)
as well as the additional expectations outlined in
[Member Expectations](https://github.com/nodejs/admin/blob/main/MemberExpectations.md).

## Promoting content

We trust ambassadors to only request promotion of content that lines
up with the messages and topics outlined, that this content does not overly
market their employer or product/business, and that they have followed the review
process. An ambassador can request promotion of content in the following ways:

* Requesting that a post be reposted by the Node.js account on a social media platform.
* @-mentioning the nodejs/ambassadors team to ask other ambassadors to repost.
* Posting a link to the content in the "what's new" issue in nodejs/ambassadors
  so that it goes out on the news feed.

Foundation staff will repost the social media post
without any need for validation based on the request coming from
an ambassador. These requests can be made through the existing social channel
in the OpenJS Slack. For that reason and for communication purposes and
collaboration opportunities, ambassadors should be members of the
[OpenJS Slack](https://slack-invite.openjsf.org/).
