A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/ghc-proposals/ghc-proposals below:

ghc-proposals/ghc-proposals: Proposed compiler and language changes for GHC and GHC/Haskell

This repository contains specifications for proposed changes to the Glasgow Haskell Compiler. The purpose of the GHC proposal process and of the GHC Steering Committee is to broaden the discussion of the evolution of GHC.

A GHC Proposal is a document describing a proposed change to the compiler, the specification of the language it accepts, or the surrounding ecosystem. These include:

Changes that are not necessarily within the scope of the committee include:

Should the GHC maintainers deem a change significant or controversial enough, they may, at their discretion, involve the GHC Steering Committee and ask the contributor to write a formal proposal.

Proposals are evaluated against our principles, which cover both language design and language stability

The life cycle of a proposal

This section outlines what stages a proposal may go through. The stage is identified by a GitHub label, which is identified in the following list.

  1. (No label.) The author drafts a proposal.

    What is a proposal?

  2. (No label.) The author submits the proposal to the wider Haskell community for discussion, as a pull request against this repository.

    How to submit a proposal

  3. (No label.) Responsibility for next action: author.

    The wider community discusses the proposal in the commit section of the pull request, while the author refines the proposal. This phase lasts as long as necessary.

    At some point the proposal author brings the proposal before the committee for review, which will prompt the committee secretary to appoint a shepherd for the proposal.

  4. (No label.) Responsibility for next action: committee secretary. Timescale: a few days.

    The committee secretary appoints a committee member as shepherd, which moves the proposal to the Pending shepherd recommendation state.

  5. Label: Pending shepherd recommendation. Responsibility for next action: shepherd. Timescale: two weeks.

    The shepherd reviews the proposal, and may request changes that they would like to see before they submit their recommendation to accept or reject the proposal to the committee.

    During this period, the shepherd may change the label to "Needs revision". This does not imply that the shepherd is opposed to the proposal, but is merely meant to indicate that there are outstanding comments the author of the proposal needs to address before the shepherd can continue.

    Within two weeks, the shepherd should submit their recommendation to accept or reject the proposal to the committee. This moves the proposal to the Pending committee review state.

  6. Label: Pending committee review. Responsibility for next action: shepherd. Timescale: four or five weeks.

    The shepherd actively guides the committee towards a consensus.

    Within four or five weeks the committee should come to a conclusion, which may be:

    Needs-revision is a common outcome, including for proposals that the committee is enthusiastic about. It is usually accompanied with guidance about the revisions that are sought. There may be multiple iterations of revision followed by committee discussion. The goal is to be clear about where the next action lies: with the committee or with the author.

    Acceptance of the proposal implies that the implementation will be accepted into GHC provided it is well-engineered, well-documented, conforms to the specification and does not complicate the code-base too much. However, the GHC maintainers may reject an implementation if there turn out to be significant gaps in the specification, unforeseen interactions with existing features, or unexpected breaking changes not covered by the backwards compatibility assessment. In this case the proposal should be revised.

  7. Label: Dormant. If a proposal sees no activity for along time, it is marked as “dormant”, and eventually closed.

  8. Label: Implemented. Once a proposal is accepted, it still has to be implemented. The author may do that, or someone else. We mark the proposal as “implemented” once it hits GHC’s master branch (and we are happy to be nudged to do so by email, GitHub issue, or a comment on the relevant pull request).

Do not hesitate to contact us if you have questions.

How to start a new proposal

Proposals are written in either ReStructuredText or Markdown. While the proposal process itself has no preference, keep in mind that the GHC Users Guide uses ReStructuredText exclusively. Accepted proposals written in ReStructuredText thus have the slight benefit that they can be more easily included in the official GHC documentation.

Proposals should follow the structure given in the ReStructuredText template, or the Markdown template. (The two are identical except for format.)

See the section Review criteria below for more information about what makes a strong proposal, and how it will be reviewed.

To start a proposal, create a pull request that adds your proposal as proposals/0000-proposal-name.rst or proposals/0000-proposal-name.md. Use the corresponding proposals/0000-template file as a template.

The pull request summary should include a brief description of your proposal, along with a link to the rendered view of proposal document in your branch. For instance,

This is a proposal augmenting our existing `Typeable` mechanism with a
variant, `Type.Reflection`, which provides a more strongly typed variant as
originally described in [A Reflection on
Types](http://research.microsoft.com/en-us/um/people/simonpj/papers/haskell-dynamic/index.htm)
(Peyton Jones, _et al._ 2016).

[Rendered](https://github.com/bgamari/ghc-proposals/blob/typeable/proposals/0000-type-indexed-typeable.rst)
How to amend an accepted proposal

Some proposals amend an existing proposal. Such an amendment :

Often, this happens after a proposal is accepted, but before or while it is implemented. In these cases, a PR that _changes_ the accepted proposal can be opened. It goes through the same process as an original proposal.

Members of the Haskell community are warmly invited to offer feedback on proposals. Feedback ensures that a variety of perspectives are heard, that alternative designs are considered, and that all of the pros and cons of a design are uncovered. We particularly encourage the following types of feedback,

How to comment on a proposal

To comment on a proposal you need to be viewing the proposal's diff in "source diff" view. To switch to this view use the buttons on the top-right corner of the Files Changed tab.

Use the view selector buttons on the top right corner of the "Files Changed" tab to change between "source diff" and "rich diff" views.

Feedback on a open pull requests can be offered using both GitHub's in-line and pull request commenting features. Inline comments can be added by hovering over a line of the diff.

Hover over a line in the source diff view of a pull request and click on the + to leave an inline comment

For the maintenance of general sanity, try to avoid leaving "me too" comments. If you would like to register your approval or disapproval of a particular comment or proposal, feel free to use GitHub's "Reactions" feature.

How to bring a proposal before the committee

When the discussion has ebbed down and the author thinks the proposal is ready, they

  1. Review the discussion thread and ensure that the proposal text accounts for all salient points. Remember, the proposal must stand by itself, and be understandable without reading the discussion thread.
  2. Add a comment to the pull request, briefly summarizing the major points raised during the discussion period and stating your belief that the proposal is ready for review. In this comment, tag the committee secretary (currently @adamgundry).

The secretary will then label the pull request with Pending shepherd recommendation and start the committee process. (If this does not happen within a few days, please ping the secretary or the committee.)

What is a dormant proposal?

In order to keep better track of actively discussed proposals, proposals that see no activity for an extended period of time (a month or two) might be marked as “dormant”. At any time the proposer, or someone else can revive the proposal by picking up the discussion (and possibly asking the secretary to remove the Dormant tag).

You can see the list of dormant proposals.

You can reach the committee by email at ghc-steering-committee@haskell.org. This is a mailing list with public archives.

The current members, including their GitHub handle, when they joined first, when their term last renewed, when their term expires and their role, are:

The committee members have committed to adhere to the Haskell committee guidelines for respectful communication and are subject to the committee bylaws.

We would also like to thank our former members:

Committee process for responding to a proposal

The committee process starts once the secretary has been notified that a proposal is ready for decision.

The steps below have timescales attached, so that everyone shares the same expectations. But they are only reasonable expectations. The committee consists of volunteers with day jobs, who are reviewing proposals in their spare time. If they do not meet the timescales indicated below (e.g. they might be on holiday), a reasonable response is a polite ping/enquiry.

Here are some characteristics that a good proposal should have.

Below are some criteria that the committee and the supporting GHC community will generally use to evaluate a proposal. These criteria are guidelines and questions that the committee will consider. None of these criteria is an absolute bar: it is the committee's job to weigh them, and any other relevant considerations, appropriately.

How to build the proposals?

The proposals can be rendered by running:

nix-shell shell.nix --run "./build.sh"

This will then create a directory _build which will contain an index.html file and the other rendered proposals. This is useful when developing a proposal to ensure that your file is syntax correct.

To build without Nix, run:

./build.sh

To view the docs at http://127.0.0.1:8000 and rebuild on changes, add --autobuild.

Feel free to contact any of the members of the GHC Steering Committee with questions. Email and Matrix (#ghc:matrix.org) are both good ways of accomplishing this.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.3