numfocus / outreachy-contributions-2023

This repository will be used to capture Outreachy applicants' contributions during the Applications phase - May-July 2023 Cohort
BSD 3-Clause "New" or "Revised" License
15 stars 4 forks source link

First Contribution by Avishkar Gunjal #38

Open Avi-88 opened 1 year ago

Avi-88 commented 1 year ago

Name: Avishkar Gunjal Project: PyTorch Project Governance Model Links:

Introduction

PyTorch is a popular open-source machine learning library used for developing and training deep neural networks. It was developed by Facebook's AI research team and is written in Python. PyTorch provides a dynamic computational graph that allows users to easily define, track, and optimize complex neural network models. It also supports automatic differentiation, which makes it easy to compute gradients and perform backpropagation. PyTorch is known for its ease of use, flexibility, and speed, and is widely used in both research and production environments.

Governance Model

PyTorch has a hierarchical technical governance structure with a small set of module maintainers overseeing the project's direction. All maintainers are expected to follow PyTorch's design philosophy, and anyone can become a maintainer based on their contributions and willingness to invest. The community is encouraged to contribute, file issues, make proposals, and review pull requests. Technical governance is separated from business governance, and membership is for individuals, not companies. This ensures that there is no way for any person or company to "buy their way into" the technical guidance of the project.

Project Roles

PyTorch adopts a hierarchical technical governance structure that is divided into module maintainers, core maintainers, and a lead core maintainer (also known as BDFL). This structure ensures that the project is well-maintained and that contributions are managed efficiently.

  1. Contributors:

    They are the ones who file issues, make pull requests, and contribute to the project. The contributors are encouraged to be present in the community and make proposals, review pull requests, and contribute to the growth of the project.
  2. Module maintainers:

    Module maintainers are responsible for reviewing and approving commits, improving design, and changing the scope of the module. They may adopt their own rules and procedures for making decisions, and they have the right to dispute decisions made by other module maintainers.
  3. Core maintainers:

    The core maintainers are responsible for articulating a cohesive long-term vision for the project, resolving contentious issues, and evaluating broad requests for changes from stakeholders of PyTorch. They have the power to veto any decision made at a module maintainer level and to resolve disputes as they see fit.
  4. Lead core maintainer (BDFL) :

    The lead core maintainer (BDFL) is responsible for making difficult decisions when the core maintainers cannot come to a consensus. They publicly articulate their decision-making and give clear reasoning for their decisions. The lead core maintainer is also responsible for confirming or removing core maintainers.

The Decision-making Process

  1. Uncontroversial Decision Process:

    In PyTorch, uncontroversial changes can be made through issues and pull requests on GitHub. Core and module maintainers ultimately approve these changes. Review from relevant experts is strongly preferred for pull request approvals.
  2. Controversial Decision Process:

    For controversial changes such as substantial changes to the framework or library, opening a GitHub issue for discussion is necessary. Core and module maintainers ultimately approve these changes.

Level of Difficulty in Finding and Understanding the Governance Model

PyTorch's governance model is well-defined and organized. The hierarchy of maintainers, with clear responsibilities and decision-making authority, helps ensure that changes to the framework are carefully considered and implemented. The process for making uncontroversial changes is straightforward, while the process for more substantial changes is more involved and requires discussion and approval from relevant experts. They also provide a link to the charter which defines the Foundation's governance while the technical governance of the opensource project is maintained in their docs