Skip to content

Proposal for Workflow #26

Open
Open
@certik

Description

@certik

Ideal Plan

Here is a proposal that I would like to get feedback on and discuss. This is my idea how this GitHub repository can work.

How Opensource Works

Successful open source projects, such as SymPy that I started 13 years ago, have:

  • one or two owners/leaders
  • 10-20 core developers with push access, those people can merge GitHub Pull
    Requests (PRs)
  • hundreds of people who contribute PRs
  • thousands of people who open issues and discuss them

How the Fortran Committee Could Work

The Fortran Standards document is compiled from LaTeX source code, and
proposals that eventually get approved must be of very high quality and must
succeed multiple rounds of approvals. Fundamentally this is no different to
opensource development.

Here is how it could work:

  • The J3 committee chair and the WG5 committee chair are the two owners/leaders

  • The J3 and WG5 comittee voting members are the core developers, who approve
    proposals in the same way they currently do (the proposal must be submited at
    the J3 website, then advocated at the committee, and eventually approved).

  • Hundreds of people use this GitHub repository to submit PRs, where each PR is
    a particular proposal. We all collaborate on the PRs, and if it gets merged,
    it means that the proposal is of very high quality and is worth for the
    committee to spend their time to consider it. We use issues to track how the
    proposal gets processed by the committee and either approved or rejected. We
    send further PRs to improve upon it based on the committee feedback.

  • Thousands of people open issues to propose new features and discuss them.

  • Anybody can create a PR to try to create a proposal. Only members of the
    committee have push access (are allowed to merge PRs) and if they merge a PR,
    they are responsible to advocate for it at the committee and collect the
    commitee's feedback.

  • The committee itself does not need to change at all how it works, members of
    the committee who do not have time or interest to be involved at GitHub do
    not need to. For this plan to work, just several members of the committee
    need to be actively involved (we already have 3 or 4 members who are
    involved, and that is enough to get us started). As this GitHub repository
    becomes more popular, I can imagine eventually all members of the committee
    to at least read some of the responses and activity and what issues are
    popular.

  • The whole community works on PRs and essentially works nonstop (with hundreds
    of people in all time zones one gets a new PR every couple days, as in
    SymPy). That way, when the committee meets, it has high quality proposals to
    consider, and it does not need to spend precious committee time to develop
    high quality proposals, because that work is outsourced to the wide
    community.

  • The core developers (committee members) are the ones who ultimately decide
    what goes in, and what does not. Just like now. The only thing that changes
    is that the workflow becomes more efficient.


Some lessons from open source development that will apply here:

  • If we are successful, we will get thousands of issues from people all over
    the world. Some good, some not as high quality. People will discuss issues.
    Initially, many will be frustrated at how slow the committee works. The best
    reaction that we can do is to encourage people to create PRs and try to
    create high quality proposals for the issue(s) that they care about. And
    invite them to collaborate on the PRs.

  • Experience shows that this scales really well. We build a team. People start
    feeling positive about the future, because their voice is heard, and their
    work (in PRs) is used and their (small or large) contributions help shape the
    future of Fortran.

Metadata

Metadata

Assignees

No one assigned

    Labels

    metaRelated to this repository

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions