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 29 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
29 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
60348ef
chore(docs): Update CHARTER.md
evenstensberg Jan 7, 2025
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
185 changes: 185 additions & 0 deletions CHARTER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
# 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**: Provides a local server with live reloading and hot module replacement, improving developer
productivity.
- **webpack-cli**: Offers a command-line interface to interact with webpack's build processes and configurations.
- **webpack-contrib projects**: Includes various loaders, plugins, middlewares and utility repositories such as:
- `sass-loader`
- `file-loader`
- `style-loader`
- `webpack-hot-middleware`
- `webpack-bundle-analyzer`

These enable the handling of different asset types, interacting with webpack in various capacities to monitor builds
and improve applications.
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved

These projects, along with others housed within the `github.com/webpack` and `github.com/webpack-contrib`.
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved

## 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.

There is no specific set of requirements or qualifications for TSC membership beyond these rules. The TSC may add
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved
additional voting members to the TSC by a standard TSC motion. A TSC member can be removed from the TSC by voluntary
resignation or by a standard TSC motion. A standard TSC motion can be used to change a regular TSC member to a voting
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved
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 activities.
evenstensberg 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 hosting.
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved
* Conduct guidelines.
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved
* Maintaining the list of additional Collaborators.
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved
* Development process and any coding standards.
* Mediating technical conflicts between Collaborators or Foundation projects.
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved

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).

The TSC and entire technical community will follow any processes as may be specified by the OpenJS Foundation Board
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved
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

#### Section 4.2.1. Elections

Leadership roles in the webpack project will be peer elected representatives of the community.

For election of persons (such as the TSC Chairperson), a multiple-candidate method should be used, such as:

* [Condorcet][] or
* [Single Transferable Vote][]

Multiple-candidate methods may be reduced to simple election by plurality when there are only two candidates for one
position to be filled. No election is required if there is only one candidate and no objections to the candidate's
election. Elections shall be done within the projects by the Collaborators active in the project.
ovflowd marked this conversation as resolved.
Show resolved Hide resolved
ovflowd marked this conversation as resolved.
Show resolved Hide resolved

The TSC voting members will elect from amongst voting TSC members a TSC Chairperson to work on building an agenda for
ovflowd marked this conversation as resolved.
Show resolved Hide resolved
TSC meetings and a OpenJS Cross Project Council (CPC) voting member to represent the TSC in the OpenJS Foundation for a
term of one year. The Chair and voting CPC member may be (but are not required to be) the same person. The TSC shall
hold annual elections to select a TSC Chairperson and voting CPC member; there are no limits on the number of terms a
TSC Chairperson or voting CPC member may serve.

#### Section 4.2.2. Voting
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved

For internal project decisions, Collaborators shall operate under Lazy Consensus. The TSC voting members shall establish
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved
appropriate guidelines for implementing Lazy Consensus (e.g. expected notification and review time periods) within the
development process.

The TSC voting members follow a [Consensus Seeking][] decision making model. When an agenda item has appeared to reach a
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved
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
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved
choose to participate in any vote through abstention.

All changes to this charter must be approved by the CPC.
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved

#### Section 4.2.3. Project Roles
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved

The webpack git repository is maintained by the TSC and additional Collaborators who are added by the TSC voting members
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved
on an ongoing basis.

Individuals making significant and valuable contributions are made Collaborators and given commit-access to the project.
These individuals are identified by the TSC and their addition as Collaborators is discussed during a TSC meeting.
Modifications of the contents of the git repository are made on a collaborative basis as defined in the development
process.

Collaborators may opt to elevate significant or controversial modifications, or modifications that have not found
consensus to the TSC for discussion by assigning the `tsc-agenda` tag to a pull request or issue. The TSC voting members
should serve as the final arbiter where required. The TSC will maintain and publish a list of current Collaborators, as
well as a development process guide for Collaborators and Contributors looking to participate in the development effort.
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved

## Section 5. Definitions

* **Contributors**: contribute code or other artifacts, but do not have the right to commit to the code base.
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 encumbered by the TSC and never by the CPC or
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved
OpenJS Foundation Board.

* **Project**: a technical collaboration effort, e.g. a subsystem, that is organized through the project creation
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved
process and approved by the TSC.
evenstensberg marked this conversation as resolved.
Show resolved Hide resolved

----

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

[condorcet]: https://en.wikipedia.org/wiki/Condorcet_method
[consensus seeking]: https://en.wikipedia.org/wiki/Consensus-seeking_decision-making
[single transferable vote]: https://en.wikipedia.org/wiki/Single_transferable_vote