Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: init charter #1

Open
wants to merge 28 commits into
base: main
Choose a base branch
from
Open
Changes from 26 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
6e08553
feat: init charter
evenstensberg Oct 16, 2024
25eee9a
chore: add new section
evenstensberg Oct 17, 2024
4489967
chore(docs): Update CHARTER.md
evenstensberg Nov 3, 2024
fcd9ca9
chore(docs): Update CHARTER.md
evenstensberg Nov 3, 2024
42eed66
chore(docs): Update CHARTER.md
evenstensberg Nov 3, 2024
004108d
chore(docs): Update CHARTER.md
evenstensberg Nov 3, 2024
8c1a6d3
chore(docs): Update CHARTER.md
evenstensberg Nov 3, 2024
b32d843
chore(docs): Update CHARTER.md
evenstensberg Nov 3, 2024
e1cd348
chore(readme.md): improve charter
evenstensberg Nov 17, 2024
abbe962
chore(charter): fix wording
evenstensberg Nov 18, 2024
323435f
chore(charter): fix wording
evenstensberg Nov 18, 2024
ea6f2a4
chore(charter): remove redundant section
evenstensberg Nov 18, 2024
15207e7
chore(charter): revise
evenstensberg Nov 20, 2024
a906aba
chore(charter): more changes
evenstensberg Nov 20, 2024
499e679
chore(charter): more changes
evenstensberg Nov 20, 2024
c8d1f11
chore(charter): more changes
evenstensberg Nov 20, 2024
5c6d82a
chore(charter): more changes
evenstensberg Nov 20, 2024
ed2d347
chore(charter): more changes
evenstensberg Nov 20, 2024
05e9fb1
chore(charter): more changes
evenstensberg Nov 20, 2024
ab1f45d
chore(charter): more changes
evenstensberg Nov 20, 2024
d90d9f1
chore(docs): reword
evenstensberg Dec 3, 2024
24e2b9d
chore(charter): adds a new section
evenstensberg Dec 5, 2024
a46b239
chore(charter): removes unneeded section
evenstensberg Dec 5, 2024
ab3fd33
chore(charter): pr review
evenstensberg Dec 5, 2024
564f70d
chore(charter): adds consensus fix
evenstensberg Dec 5, 2024
28cd01a
chore: remove elections to the governance
ovflowd Dec 5, 2024
c2d1cec
Apply suggestions from code review
ovflowd Dec 6, 2024
5e0e2ea
chore: remove unused term
ovflowd Dec 6, 2024
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
137 changes: 137 additions & 0 deletions CHARTER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
# webpack TSC Charter

## Section 0. Guiding Principle

The webpack project is part of the OpenJS Foundation. The project operates transparently, openly, collaboratively,
and ethically. Project proposals, timelines, and status must not merely be open, but also easily visible to outsiders.

## Section 1. Scope

The webpack project is a highly flexible and efficient module bundler for modern JavaScript applications. Its primary
purpose is to transform and bundle various modules (JavaScript, CSS, images, etc.) into a format suitable for web
applications. Webpack focuses on enhancing the developer experience, providing optimizations for production environments,
and enabling configurations to support a wide range of use cases and edge cases for specific projects.

With this, webpack not only simplifies the process of managing application dependencies, but it also offers tools to
optimize performance, maintainability, and scalability. The webpack community contributes solutions to common challenges
in modern web development, helping developers streamline their workflows and build robust applications.

### 1.1: In-scope

- Bundling JavaScript files and their dependencies into a single output (or multiple outputs) for browser environments
- Handling of asset files such as CSS, images, fonts, and other static resources
- Optimization of assets for production, including minification, compression, and tree shaking (removal of unused code)
- Enabling hot module replacement (HMR) for faster development feedback loops
- Configuration and extensibility through plugins and loaders
- Support for code splitting and lazy loading to enhance performance
- Integrating with modern JavaScript frameworks (e.g., React, Vue, Angular)
- Providing detailed build reports and debugging tools for development and production
- Supporting multiple output formats (e.g., AMD, CommonJS, ES Modules) for compatibility with various environments
- Community-driven tools and best practices provided through
[plugins](https://webpack.js.org/plugins/) and [guides](https://webpack.js.org/guides/)
- Technical help and discussions via community platforms such as
[GitHub Discussions](https://github.com/webpack/webpack/discussions)

In addition to the main repository, `webpack` (bundler), the organization maintains and manages several other core
projects that are integral to the ecosystem such as `webpack-dev-server`, `webpack-cli`, and `webpack-contrib` projects.

These repositories, along with others housed within the `github.com/webpack` and `github.com/webpack-contrib are owned by the webpack project.`.

### 1.2: Out-of-Scope

- Testing frameworks (e.g., unit, integration, or end-to-end testing tools).
- APIs and tools that uses webpack in any way and are not in the webpack organization.
- Server-side rendering directly (although it can integrate with SSR frameworks).
- `webpack`-related frameworks and libraries that operate in their own capacity.

## Section 2. Relationship with OpenJS Foundation CPC.

Most large, complex open source communities have both a business and a technical governance model. Technical leadership
for the projects within the OpenJS Foundation is delegated to the projects through their project charters by the OpenJS
Cross Project Council (CPC). In the case of the webpack project, it is delegated to the webpack Technical Steering
Committee ("TSC"). OpenJS Foundation's business leadership is the Board of Directors (the "Board").

This charter can only be amended with the approval of the CPC.

## Section 3. Establishment of the TSC

TSC members can be either _regular_ members or _voting_ members. Regular members can attend meetings and participate in
TSC discussions, but do not vote. Voting members can do everything regular members can do, and also have the ability to
cast votes when consensus is not reached on an issue.

TSC memberships are not time-limited. There is no maximum size of the TSC. The TSC must have at least four voting
members.

The TSC may add additional voting members to the TSC through meeting consensus. The consensus requires at least five TSC members to be present to approve a new voting member. A TSC member can be removed from the TSC by voluntary
resignation or by consensus with at least five voting members to be present. A vote in a TSC meeting can be used to change a regular TSC member to a voting
TSC member, or to change a voting TSC member to a regular TSC member.

No more than one-fourth of the TSC voting members may be affiliated with the same employer. If a change in TSC voting
membership or a change of employment by a TSC voting member creates a situation where more than one-fourth of the TSC
voting membership shares an employer, then the situation must be immediately remedied by the removal of voting member
status from one or more TSC voting members affiliated with the over-represented employer(s).

The TSC shall meet regularly using tools that enable participation by the community (e.g. weekly on a Google Hangout On
Air, or through any other appropriate means selected by the TSC). The meeting shall be directed by the TSC Chairperson.
Responsibility for directing individual meetings may be delegated by the TSC Chairperson to any other TSC voting member.
Minutes or an appropriate recording shall be taken and made available to the community through accessible public
postings.

TSC voting members are expected to regularly participate in TSC meetings and issue triaging. Meeting notes will be released such that absent members of the TSC can provide feedback in any way.
ovflowd marked this conversation as resolved.
Show resolved Hide resolved

A TSC voting member is automatically converted to a TSC regular member if they do not participate in three consecutive
TSC votes.

## Section 4. Roles & Responsibilities of the TSC

Subject to such policies as may be set by the CPC, the TSC voting members are responsible for all technical development
within the webpack project, including:

* Setting release dates.
* Release quality standards.
* Technical direction.
* Project governance and process.
* GitHub repository management.
* Conduct and maintain guidelines defined by the OpenJS Foundation Cross Project Council.
* Maintaining the list of additional collaborators.
* Development process and any coding standards.
* Mediating technical conflicts between collaborators or `webpack` projects.

The TSC voting members will define webpack project's release vehicles.

### Section 4.1. webpack Project Operations

The TSC voting members will establish and maintain a development process for the webpack project. The development
process will establish guidelines for how the developers and community will operate. It will, for example, establish
appropriate timelines for TSC review (e.g. agenda items must be published at least a certain number of hours in advance
of a TSC meeting).

Note that project operations remain subject to any relevant policy or process specified by the OpenJS Foundation board or Cross Project Council.

### Section 4.2. Decision-making, Voting, and/or Elections

#### Section 4.2.1. Elections

These processes are described in webpack's [GOVERNANCE](GOVERNANCE.md) document.
Copy link

Choose a reason for hiding this comment

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

It seems that the election process is actually described in section 3 above, no?

Maybe move it here?

Copy link
Member

Choose a reason for hiding this comment

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

I don't see anything related to elections on section 3 🤔

Copy link

Choose a reason for hiding this comment

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

Well, this is where you describe how TSC members are chosen, so that’s the closest you have to elections.

Copy link
Member

Choose a reason for hiding this comment

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

Let me see if I understood this correctly: you're asking for us to move this election sub-section to be part of section 3?

(The charter template on the CPC's repo mentions elections as part of section 4, that's why I added here) -- because there's no reference in section 3 of how someone becomes a TSC member.


#### Section 4.2.2. Decision Making

For webpack projects' decisions, Collaborators and TSC voting members shall operate under Lazy Consensus ([consensus seeking][]). When an agenda item has appeared to reach a
consensus, the moderator will ask "Does anyone object?" as a final call for dissent from the consensus. For all votes, a simple majority of all TSC voting members for, or against, the issue wins. A TSC voting member may
choose to participate in any vote through abstention. Votes are needed to add new members, remove members from the TSC or deciding in project critical issues, such as roadmapping major versions of webpack core.


## Section 5. Definitions

* **Contributors**: contribute code or other artifacts, but do not have the right to commit to the code base.
ovflowd marked this conversation as resolved.
Show resolved Hide resolved
Contributors work with the project's Collaborators to have code committed to the code base. A Contributor may be
promoted to a Collaborator by the TSC. Contributors should rarely be blocked by the TSC and never by the CPC or
OpenJS Foundation Board.

* **Project**: a technical collaboration effort, e.g. a subsystem, that is organized through the webpack organization creation.

----

This work is a derivative of the [Node.js Project TSC Charter](https://github.com/nodejs/node/blob/main/TSC_CHARTER.md).

[consensus seeking]: https://en.wikipedia.org/wiki/Consensus-seeking_decision-making