Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -130,16 +130,16 @@
"remark-html": "^16.0.1",
"remark-refractor": "montogeek/remark-refractor",
"rimraf": "^6.0.1",
"sass": "^1.79.5",
"sass-loader": "^16.0.4",
"sass": "^1.93.2",
"sass-loader": "^16.0.5",
"sirv-cli": "^3.0.0",
"sitemap-static": "^0.4.2",
"static-site-generator-webpack-plugin": "^3.4.1",
"style-loader": "^4.0.0",
"tailwindcss": "^3.4.16",
"tap-spot": "^1.1.2",
"unist-util-visit": "^5.0.0",
"webpack": "^5.97.1",
"webpack": "^5.102.0",
"webpack-bundle-analyzer": "^4.10.2",
"webpack-cli": "^6.0.1",
"webpack-dev-server": "^5.2.2",
Expand Down
105 changes: 105 additions & 0 deletions src/content/concepts/governance.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
---
title: Webpack Project Governance
sort: 15
contributors:
- Jatinyadav29
---

webpack is an open source project that depends on contributions from the community. Anyone may contribute to the project at any time by submitting code, participating in discussions, making suggestions, or any other contribution they see fit. This document describes how various types of contributors work within the webpack project.

- [Roles and Responsibilities](#roles-and-responsibilities)
- [Contributors](#contributors)
- [Committers](#committers)
- [Reviewers](#reviewers)

- [Technical Steering Committee](#technical-steering-committee)
- [TSC Meetings](#tsc-meetings)

- [Consensus Seeking Process](#consensus-seeking-process)

## Roles and Responsibilities

### Contributors

Contributors are community members who contribute in concrete ways to the project, most often in the form of code and/or documentation. Anyone can become a Contributor, and contributions can take many forms. There is no expectation of commitment to the project, no specific skill requirements, and no selection process.

Contributors have read-only access to source code and so submit changes via pull requests. Contributor pull requests have their contribution reviewed and merged by a TSC member. TSC members and Committers work with Contributors to review their code and prepare it for merging.

As Contributors gain experience and familiarity with the project, their profile within, and commitment to, the community will increase. At some stage, they may find themselves being nominated as either a Website Team Member or Committer by an existing Website Team Member or Committer.

### Committers

Committers are community members who have shown that they are committed to the continued development of the project through ongoing engagement with the community. Committers are given push access to the project's GitHub repos and must abide by the project's [Contribution Guidelines](https://github.com/webpack/webpack/blob/main/CONTRIBUTING.md).

To become a Committer:

- One must have shown a willingness and ability to participate in the project as a team player. Typically, a potential Committer will need to show that they have an understanding of and alignment with the project, its objectives, and its strategy.
- Committers are expected to be respectful of every community member and to work collaboratively in the spirit of inclusion.

New Committers can be nominated by any existing Committer. Once they have been nominated, there will be a vote by the TSC members.

It is important to recognize that committership is a privilege, not a right. That privilege must be earned and once earned it can be removed by the TSC members by a standard TSC motion. However, under normal circumstances committership exists for as long as the Committer wishes to continue engaging with the project.

A Committer who shows an above-average level of contribution to the project, particularly with respect to its strategic direction and long-term health, may be nominated to become a Reviewer, described below.

### Reviewers

Reviewers are community members who have contributed a significant amount of time to the project through triaging of issues, fixing bugs, implementing enhancements/features, and are trusted community leaders.

Reviewers may perform all of the duties of Committers, and also:

- May merge external pull requests for accepted issues upon reviewing and approving the changes.
- May merge their own pull requests once they have collected the feedback they deem necessary. (No pull request should be merged without at least one Committer/Reviewer/TSC member comment stating they've looked at the code.)

To become a Reviewer:

- Work in a helpful and collaborative way with the community.
- Have given good feedback on others' submissions and displayed an overall understanding of the code quality standards for the project.
- Commit to being a part of the community for the long term.

A Committer is invited to become a Reviewer by existing Reviewers and TSC members. A nomination will result in discussion and then a decision by the TSC.

## Technical Steering Committee

A subset of the collaborators forms the Technical Steering Committee (TSC).
The TSC has final authority over this project, including:

- Technical direction
- Project governance and process (including this policy)
- Contribution policy
- GitHub repository hosting
- Conduct guidelines
- Maintaining the list of collaborators

The current list of TSC members is in [the project README](https://github.com/webpack/webpack/blob/main/README.md#current-project-members).

The [TSC Charter](https://github.com/nodejs/TSC/blob/HEAD/TSC-Charter.md) governs the operations of the TSC. All changes to the Charter need approval by the OpenJS Foundation Cross-Project Council (CPC).

### TSC Meetings

The TSC meets in a Discord conference call or Discord thread. Each year, the TSC elects a chair to run the meetings.

Any community member can create a GitHub issue asking that the TSC review something.
The TSC may invite people to take part in a non-voting capacity.

During the meeting, the TSC chair ensures that someone takes minutes. After the meeting, the TSC chair ensures that someone opens a pull request with the minutes.

The TSC seeks to resolve as many issues as possible outside meetings using [the webpack's governance repository issue tracker](https://github.com/webpack/governance/issues).

The process in the issue tracker is:

- A TSC member opens an issue explaining the proposal/issue and @-mentions `@webpack/tsc`.
- The proposal passes if, after 72 hours, there are two or more TSC voting member approvals and no TSC voting member opposition.
- If there is an extended impasse, a TSC member may make a motion for a vote.

## Consensus Seeking Process

The TSC follows a [Consensus Seeking](https://en.wikipedia.org/wiki/Consensus-seeking_decision-making) decision-making model.

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.

If an agenda item cannot reach a consensus, a TSC member can call for either a closing vote or a vote to table the issue to the next meeting. The call for a vote must be approved by a majority of the TSC, or else the discussion will continue. Simple majority wins.

---

_This document is an adaptation of the [Node.js project Governance Model](https://github.com/nodejs/node/blob/main/GOVERNANCE.md) and the [ESLint project Governance Model](https://github.com/eslint/eslint/blob/main/docs/src/contribute/governance.md)._
134 changes: 134 additions & 0 deletions src/content/contribute/governance/CHARTER.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
---
title: 'webpack TSC Charter'
sort: 1
---

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

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.

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

- **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
60 changes: 60 additions & 0 deletions src/content/contribute/governance/MEMBER_EXPECTATIONS.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
---
title: 'Member Expectations'
sort: 2
---

All participants in the webpack project must follow the
[Code of Conduct][]. There are further expectations for members of the [TSC][].

When decisions are made within the established guidelines and policies of the
project, those in leadership roles have a responsibility to uphold and respect
the decision even if they disagree with it. This is especially important in
external communications, for example in social media. Should the member be
unwilling or unable to do so, then they should resign their leadership position.
This does not mean that decisions cannot be revisited and discussed within the
team at a later time.

Everyone participating in the webpack project must conduct themselves in
a professional and respectful manner in accordance with our
[Code of Conduct][]. In addition, some general guidelines for
leadership group members include:

- Remediate quickly when you realize you made a mistake. Leaders are human,
and they will make mistakes. However they should act swiftly to
acknowledge mistakes and correct them.
- Aim to remediate first and then discuss. If other members of the
team express concerns about actions, acknowledge their concerns by
stopping the actions in question and then discuss within the team
to come to a common agreement.
- Treat all community members with respect, consideration, and highest
standards of ethical conduct.
- Value a diversity of views and opinions. Avoid preferential
treatment, and hold everyone (including ourselves) accountable to the same
set of standards. Everyone gets to speak up.
- Deal with issues directly with the person in question. Resist complaining
about others in the project in a public sphere.
- Build trust by keeping your promises.
- Be the model of accountability and leadership. Provide the example of
ownership and stewardship that everyone can follow to success.
- Commit to ongoing development and learning best practices for governing.
- Criticize ideas rather than people, discussing any concerns in person
whenever possible, and taking responsibility for our statements.

While the guidelines above focus primarily on the spaces where
we participate in official foundation work (GitHub, IRC, meetings,
conferences), it is important to recognize that the public behavior
of members also reflects on the webpack project.

If you're interested in an introduction to diversity, inclusion, and unconscious bias,
[try this free training offered by our partners at the Linux Foundation](https://training.linuxfoundation.org/linux-courses/open-source-compliance-courses/inclusive-speaker-orientation).

If it appears that any member of the project leadership is acting outside
of the expectations set above please refer to our [moderation policy](./MODERATION_POLICY.md)
which outlines the process of making an official complaint.

---

_This document is an adaption of the Node.js project [Member Expectations](https://github.com/nodejs/admin/blob/main/MemberExpectations.md)_

[Code of Conduct]: https://github.com/webpack/webpack/blob/main/CODE_OF_CONDUCT.md
[TSC]: ./CHARTER.md
Loading
Loading