Skip to content
Draft
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
196 changes: 196 additions & 0 deletions docs/project-charter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
# LoopBack Charter

_note: the purpose of a project charter is to provide a brief introduction_
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i assume the text in italic (i.e. note, directions, ex) will be removed eventually and it's there now just to help with the review?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, these would be removed before landing the PR. I've left them there to make it easier to review.

_to the project from a technical, community, or business perspective. The_
_document also connects a project's community leadership and governance with the_
_OpenJS Foundation's governance._

## Section 0: Guiding Principles (optional)

_directions: provide a concise, high-level statement about_
_the project's long-term principles, values, or mission._

ex. [Node.js TSC Charter](https://github.com/nodejs/TSC/blob/HEAD/TSC-Charter.md#section-1-guiding-principle)

LoopBack (herein "Project") is part of the OpenJS Foundation which operates
transparently, openly, collaboratively and ethically. Project proposals,
timelines, and statuses must be open and visible to outsiders.

## Section 1: Scope

_directions: Include a 3-4 sentence summary of what the project does,_
_and/or what problems it solves. Imagine trying to explain your work_
_to a colleague who is familiar with related technical concepts but unfamiliar_
_with the project. You may also want to describe the project's value to community_
_and/or business stakeholders._

ex. [K8s SIG Architecture Charter](https://github.com/kubernetes/community/blob/HEAD/sig-architecture/charter.md#scope)

The Project intends to create and maintain a collection of Node.js packages to
provide developers with the tools to create enterprise solutions which require
interaction between a diverse set of APIs. Notably, the Project emphasizes the
creation of extensible, open APIs to empower developers with flexibility and
modularity. This allows the packages easily adapted to a wide range of
use-cases and allows different subsets of the Project to be used as needed.

### 1.1: In-scope (optional)

_directions: list or bullet out problem spaces, use cases, repositories_
_or other projects which are included with the work but may not be readily_
_apparent. This may help differentiate the project from other solutions in the_
_space. If you are not using this section, please indicate your intent with the_
_phrase, 'Section Intentionally Left Blank'._

ex. [K8s SIG Architecture Charter](https://github.com/kubernetes/community/blob/HEAD/sig-architecture/charter.md#in-scope)

- Maintenance of existing Node.js packages
- Supporting latest versions of Node.js
- Managing deprecation
- Modernisation and extension of existing Node.js packages
- Creating new Node.js packages
- Documenting and standardising interfaces for common interactions

### 1.2: Out-of-Scope (optional)

_directions: list or bullet out areas that may be seen to be related but are_
_not included in the scope of this project. This may help clarify the kind of_
_features, contributions, issues or problems the project is looking for._
_If you are not using this section, please indicate your intent with the_
_phrase, 'Section Intentionally Left Blank'._

ex. [K8s SIG Architecture Charter](https://github.com/kubernetes/community/blob/HEAD/sig-architecture/charter.md#out-of-scope)

Section Intentionally Left Blank
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I also looked at the one from fastify. Might be good to use it as a reference: https://github.com/fastify/fastify/blob/main/PROJECT_CHARTER.md#12-out-of-scope.

particulary:

  • Support versions of Node.js at EOL (end of life) stage
  • Contributions that violates the Code of Conduct


## Section 2: Relationship with OpenJS Foundation CPC.

_directions: describe how the project intersects with the Cross Project_
_Council._

ex. [Node.js TSC Charter](https://github.com/nodejs/TSC/blob/HEAD/TSC-Charter.md#section-2-evolution-of-openjs-foundation-governance)

Technical leadership for the projects within the OpenJS Foundation is delegated
to the projects through their project charters by the OpenJS Foundation Cross
Project Council (CPC). In the case of LoopBack, it is delegated to the LoopBack
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Project Council (CPC). In the case of LoopBack, it is delegated to the LoopBack
Project Council ("CPC"). In the case of LoopBack, it is delegated to the LoopBack

Technical Steering Committee (“TSC”). OpenJS Foundation’s business leadership is
the Board of Directors (the “Board”).

This Technical Steering Committee Charter reflects a carefully constructed
balanced role for the TSC and the CPC in the governance of the OpenJS
Foundation. The charter amendment process is for the TSC to propose changes
using lazy consensus of the TSC, the proposed changes being subject to review
and approval by the CPC. The CPC may additionally make amendments to the TSC
charter at any time, though the CPC will not interfere with day-to-day
discussions, votes or meetings of the TSC.

### 2.1 Other Formal Project Relationships (optional)

_directions: describe any additional affiliations or groups that liaise with_
_the project in a formal way (such as a W3C Community Group, for example)._
_If you are not using this section, please indicate your intent with the_
_phrase, 'Section Intentionally Left Blank'._

Section Intentionally Left Blank

## Section 3: LoopBack TSC Governing Body

_directions: describe the structure of the group responsible for managing_
_the project and its respective organization and repositories. If there are_
_specific rules for membership or participation in the group, list them here or_
_by reference to a governance.md document._

ex. [Node.js TSC Charter](https://github.com/nodejs/TSC/blob/HEAD/TSC-Charter.md#section-3-establishment-of-the-tsc)

TSC memberships are not time-limited. There is no maximum size of the TSC. The
size is expected to vary in order to ensure adequate coverage of important areas
of expertise, balanced with the ability to make decisions efficiently. The TSC
must have at least four members. Although there are no hard requirements, the
composition of the TSC should aim for geographic and employer diversity in the
spirit of a distributed maintenance model.
Comment on lines +108 to +110
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we already meet the requirements, could we further restrict the TSC composition requirements to align with the OpenJS Foundation Growth Project requirements? Specifically, this part:

Governing body of >= 5 members of which no more than 1/3 is affiliated with the same employer.

Likewise, this means we need to document our employer affiliation - AFAIK, the governance structure from our project application form is still correct.

We'll also need to document the expectation that the TSC members keep this documentation up-to-date.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IIUC, the Growth project requirements are for the projects wanting to be "impact" stage. I wouldn't worry about it for now.


## Section 4: Roles & Responsibilities

_directions: describe the roles and responsibilities of the LoopBack Governing Body._

ex. [K8s SIG Architecture Charter](https://github.com/kubernetes/community/blob/HEAD/sig-architecture/charter.md#roles-and-organization-management)
ex. [Node.js TSC Charter](https://github.com/nodejs/TSC/blob/HEAD/TSC-Charter.md#section-4-responsibilities-of-the-tsc)

The LoopBack TSC is responsible for:

- Release dates
- Creating new releases
- Release quality standards
- Technical direction
- GitHub repository hosting
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd like to expand this to encompass alternate hosting (i.e. mirroring):

Suggested change
- GitHub repository hosting
- GitHub repository hosting
- Repository mirror hosting

- Infrastructure management
- License and security compliance
- Conduct guidelines and enforcement
- Maintaing the list of LoopBack Maintainers
- Mediating technical conflicts between Collaborators or Foundation projects
- Hosting and publishing the monthy LoopBack Maintainers Call
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Likewise, I think it's good to have a catch-all so that we don't have to amend this charter as frequently.

Also, typo.

Suggested change
- Hosting and publishing the monthy LoopBack Maintainers Call
- Hosting and publishing the monthly LoopBack Maintainers Call and other meetings


### Section 4.1 Project Operations & Management (optional)

_directions: use this section to describe any other specific tasks the_
_${PROJECT} Governing Body may be responsible for regarding process or project_
_operations and management. If you are not using this section, please indicate_
_your intent with the phrase, 'Section Intentionally Left Blank'._

ex. [K8s SIG Architecture Charter](https://github.com/kubernetes/community/blob/HEAD/sig-architecture/charter.md#roles-and-organization-management)
ex. [Node.js TSC Charter](https://github.com/nodejs/TSC/blob/HEAD/TSC-Charter.md#section-5-nodejs-project-operations)

The TSC and entire technical community will follow any processes as may be
specified by the OpenJS Foundation Board relating to the intake and license
compliance review of contributions, including the OpenJS Foundation IP Policy.

### Section 4.2: Decision-making, Voting, and/or Elections (optional)

_directions: describe any provisions the project makes for decision-making_
_or include the information by reference your governance.md document._
_If you are not using this section, please indicate your intent with the_
_phrase, 'Section Intentionally Left Blank'._

ex. [Node.js TSC Charter](https://github.com/nodejs/TSC/blob/HEAD/TSC-Charter.md#section-6-elections)

Unless stated otherwise, the LoopBack TSC adopts a lazy consensus voting system,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For voting, I wonder if we want to have at least another "for" vote (or half of TSC agree) and no objections, before going forward.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm open to getting at least one more explicit "for" vote. Getting half of the TSC to vote (3 votes) may be a bit difficult as we don't have any provisions to enforce participation of TSC members.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

make sense. "at least one for vote" works for me.

where consensus is assumed when there are no outstanding objections from the
other TSC members after a stipulated period of time of no less than 72 hours.

For more important matters such as the nomination of new TSC members, a lazy
consensus for a stipulated period of no less than 1 week is used instead.

These votes must be done through a process that's accessible to the general
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For voting to approve/reject a contributor to maintainer, the votes are not public in the current process.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should the TSC voting process be private as well?

We may also want to state the criteria of being TSC nominee, such as:

  • An existing LoopBack Maintainer for at least 1 year
  • Has actively contributed to the Project in the past 90 days
  • Is willing to actively partake in governance-related matters

We may also want to draft a standard "nomination form" and process similar to becoming a Maintainer.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should the TSC voting process be private as well?

sounds good as it falls under the category, IMHO.

public.

### Section 4.3: Other Project Roles (optional)

_directions: describe other roles within the project, such as chairperson,_
_tech lead, collaborator, contributor, maintainer, etc. and any responsibilities or_
_rights such role confers. You can also include this information by_
_reference to your governance.md document._
_If you are not using this section, please indicate your intent with the_
_phrase, 'Section Intentionally Left Blank'._

ex. [Node.js TSC Charter](https://github.com/nodejs/TSC/blob/HEAD/TSC-Charter.md#section-8-project-roles)

The role of a LoopBack Maintainer is given to those that the the LoopBack TSC
has confidence in their general understanding of the Project's codebase, and
trusts that they are capable for seeking feedback and consensus on non-trivial
contributions. This role provides permissions to merge pull requests in the
Project's Git Repositories, and dedicated communication channels with the
LoopBack TSC. Nomination for the role is done in accordance with
[maintainer-nomination.md](./maintainer-nomination.md).

## Section 5: Definitions (optional)

_directions: include any definitions that may help clarify terms or ideas found_
_in this charter document. If you are not using this section, please indicate_
_your intent with the phrase, 'Section Intentionally Left Blank'._

ex. [Node.js TSC Charter](https://github.com/nodejs/TSC/blob/HEAD/TSC-Charter.md#section-9-definitions)

- **Distributed Maintenance Model:** A working model where the composition of
those maintaining the project has geographic and employer diversity.
- **Project:** The LoopBack project
- **General public:** A group of people who do not have any roles or
responsibilities in the Project.