profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/goldfirere/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Richard Eisenberg goldfirere @tweag Philadelphia, PA https://richarde.dev/ I'm a Principal Researcher at @tweag, focusing on functional programming language/type systems. I'm core contributor to the Glasgow Haskell Compiler.

goldfirere/glambda 194

The home of the Glamorous Glambda interpreter

disco-lang/disco 132

Functional teaching language for use in a discrete mathematics course

goldfirere/effects 39

A Haskell translation of Idris's original algebraic effects library

0xd34df00d/refinedt 38

Refinement types + dependent types = ❤️

goldfirere/ghc 24

Mirror of ghc repository. DO NOT SUBMIT PULL REQUESTS HERE

bgamari/the-thoralf-plugin 21

This a type-checker plugin to rule all type checker plugins involving type-equality reasoning using smt solvers.

bgamari/ghc-pretty-errors 8

Design planning for prettier error messages from GHC

goldfirere/ghc-proposals 5

Proposed compiler and language changes for GHC and GHC/Haskell

goldfirere/bib 4

Richard Eisenberg's BiBTeX file

pull request commentghc-proposals/ghc-proposals

Unlifted Datatypes

I agree with @sgraf812's observation. More generally: as our language gets more intricate, our tools need to keep apace. This is why e.g. Agda and Idris are out ahead of Haskell with tooling. Those languages are more intricate, and so the tooling must be up to the task. For a long time, Haskell has limped along with sub-par tooling, because, well, I don't know why. As the tooling catches up, though, we can new flexibility in design -- for example, by making things less obvious in the code text if they can be clarified by tools.

@simonpj: you prodded this conversation to start. How do you feel about this all now?

sgraf812

comment created time in 2 hours

pull request commentghc-proposals/ghc-proposals

Fine-grained unused warnings

Just looking at old threads that I've fallen behind on. I really like what I see here. Just a gentle prod to reawaken the thread! :)

JakobBruenker

comment created time in 2 hours

PR closed ghc-proposals/ghc-proposals

Defaulting plugins No proposal needed

Rendered

There's a lot of interest in better defaulting, but no agreement on what to do. Let's move forward in a lightweight way with defaulting plugins. Easy to implement and doesn't constrain what we can do in the future.

+207 -0

12 comments

1 changed file

abarbu

pr closed time in 2 hours

pull request commentghc-proposals/ghc-proposals

Defaulting plugins

I think this ticket can now be closed.

abarbu

comment created time in 2 hours

pull request commentghc-proposals/ghc-proposals

Defaulting plugins

I like no-proposal-needed. But not as a replacement for out-of-scope. For example, a proposal to change the way cabal works is indeed out-of-scope -- but not no-proposal-needed. I will, in the name of efficiency, just blast ahead with this, but rein me back if you like.

abarbu

comment created time in 2 hours

pull request commentghc-proposals/ghc-proposals

Add support for total RecordWildCards

I see the motivation here -- I definitely understand why you would want this.

However, I'm not keen to introduce new syntax for this use case. While we can say that this is syntax novices don't need to know, a large codebase will include the new syntax, so people will at least need to know how to read the syntax -- which is (at present) unsearchable (what would your search terms be?) and unsuggestive. (I wouldn't associate ! with unused-match warnings.)

Instead, how about this:

  • A new warning, off by default but included in -Wall, called -Wunused-record-wildcards, which would trigger on all matches of the form RecordCon { .. } where there is an unused field.
  • A new facility for selectively enabling warnings over part of a module. Concretely, I suggest the modifier syntax:
toJSON :: Rec -> ...
%(Warnings "-Wunused-record-wildcards") toJSON (RecCon { .. }) = ...

also writable as

toJSON :: Rec -> ...
%(Warnings "-Wunused-record-wildcards")
toJSON (RecCon { .. }) = ...

or maybe even as

%(Warnings "-Wunused-record-wildcards")
toJSON :: Rec -> ...
toJSON (RecCon { .. }) = ...

if we decide to say that a %Warnings that affects a type signature also affects the definition.

This is clearly verbose. But the modifiers syntax critically allows any type-level expression after the %. So, a project could define

type CompleteRecordWildcard = Warnings "-Wunused-record-wildcards"   -- or something even shorter

and then use %CompleteRecordWildcard where appropriate.

That's still a small mouthful, but I think that's OK. Code is read much more often than it is written, and I think it's sensible for more obscure features to have long names. This makes them easy to read for the uninitiated and easy to search for the curious.

brandon-leapyear

comment created time in 3 hours

pull request commentghc-proposals/ghc-proposals

COMPLETE set signatures (under review)

One small clarifying question: does the forall-or-nothing rule apply? That is, could I write {-# COMPLETE (:<) :: forall a. IsList l a => l a #-}? Note that I've quantified a but not l. (I say: yes, it applies. But I don't care very much. The answer should be in the proposal.)

Accepting this would obviate #399, right? Does @cgibbard have an opinion about this proposal vis-a-vis his own?

I'm agnostic on the back-compat issue. I say: let's leave this question open until we have an implementation and can better assess impact. Failing that, I vote for no back-compat.

sgraf812

comment created time in 3 hours

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commenthaskellfoundation/tech-proposals

Haskell Foundation Community Grants

+# Community Grants++## Introduction++This proposal is for the Haskell Foundation to undertake a direct small grant+program, funded by individual donations to the foundation, to distribute funding+where it can make a difference to the Haskell community.  The aim is to make the+Haskell Foundation a more appealing target for individuals wishing to donate for+the good of the entire Haskell community.  This indefinite ongoing program would+accept submissions from the community on a rolling basis, and award up to $2000+grants to individuals as a stipend to support their work on the proposed+project.++The amount of money involved is small, so the primary risk of the proposal is+that funding decisions would generate discouragement or ill will from rejected+submissions.  The risk can be partially mitigated by the use of a random lottery+system to select winners after an initial selection of submissions that the+Foundation believes are worth accepting.++## Background++Numerous mechanisms currently exist for individuals to financially support parts+of the Haskell community, including projects that have individually set up+fundraising, individuals who have requested donations via Patreon, GitHub+sponsorships, etc., and purchase of services and subscriptions to content.  Each+of these choices supports a specific part of the Haskell community, and none of+them offer a default way to contribute to Haskell as a whole.++The Haskell Foundation now also accepts individual donations, and its+organizational mission is consistent with being precisely such an appealing+target for general-purpose donations to Haskell.  However, there is currently+not a clear picture for how funds make it from donations to the Haskell+Foundation to directly encouraging contributions to the Haskell community.  In+surveys of the community, individuals who have decided not to contribute to the+Haskell Foundation have given the reason that they don't see that their+contributions would support the Haskell open source community.++The HFTP process superficially appears to offer such a path.  However, there are+several barriers to its being used directly by individuals or small projects for+which funding could make a difference.  Note that "individuals and small+projects" describes a vast portion of crucial Haskell libraries and tools.++1. The HFTP process is not encouraging to individuals looking for small amounts+   of funding, and says things like "Typically, this includes many rounds of+   discussion with HF leaders, Haskell library maintainers, and the broader+   community, several iterations on the design of the proposal, and some effort+   at prototyping the proposed change."+2. The benefit of small grants can depend on life circumstances, such as one's+   need for child care, willingness to leave an employer, etc.  Individuals may+   prefer not to include this information in a document open for public comment.++Thus, the HFTP process isn't a great fit for direct requests from individuals or+small projects for financial support.  Furthermore, the HFTP process gives an+explicit example of a "Summer of Code" style program as within scope for an HFTP+proposal.  This is such a proposal.++Several other communities have similar grant programs.  Some examples include:

I would love to know more about how these programs work in other communities -- especially the open source ones. (While I do know the internals about the Tweag Fellowship program, I think that program is sufficiently different from what's being proposed here so as to make our data irrelevant.) What are those programs' goals? Have the programs achieved the goals? What's the role of these programs within their communities?

cdsmith

comment created time in 8 hours

Pull request review commenthaskellfoundation/tech-proposals

Haskell Foundation Community Grants

+# Community Grants++## Introduction++This proposal is for the Haskell Foundation to undertake a direct small grant+program, funded by individual donations to the foundation, to distribute funding+where it can make a difference to the Haskell community.  The aim is to make the+Haskell Foundation a more appealing target for individuals wishing to donate for+the good of the entire Haskell community.  This indefinite ongoing program would+accept submissions from the community on a rolling basis, and award up to $2000+grants to individuals as a stipend to support their work on the proposed+project.++The amount of money involved is small, so the primary risk of the proposal is+that funding decisions would generate discouragement or ill will from rejected+submissions.  The risk can be partially mitigated by the use of a random lottery+system to select winners after an initial selection of submissions that the+Foundation believes are worth accepting.++## Background++Numerous mechanisms currently exist for individuals to financially support parts+of the Haskell community, including projects that have individually set up+fundraising, individuals who have requested donations via Patreon, GitHub+sponsorships, etc., and purchase of services and subscriptions to content.  Each+of these choices supports a specific part of the Haskell community, and none of+them offer a default way to contribute to Haskell as a whole.++The Haskell Foundation now also accepts individual donations, and its+organizational mission is consistent with being precisely such an appealing+target for general-purpose donations to Haskell.  However, there is currently+not a clear picture for how funds make it from donations to the Haskell+Foundation to directly encouraging contributions to the Haskell community.  In+surveys of the community, individuals who have decided not to contribute to the+Haskell Foundation have given the reason that they don't see that their+contributions would support the Haskell open source community.++The HFTP process superficially appears to offer such a path.  However, there are+several barriers to its being used directly by individuals or small projects for+which funding could make a difference.  Note that "individuals and small+projects" describes a vast portion of crucial Haskell libraries and tools.++1. The HFTP process is not encouraging to individuals looking for small amounts+   of funding, and says things like "Typically, this includes many rounds of+   discussion with HF leaders, Haskell library maintainers, and the broader+   community, several iterations on the design of the proposal, and some effort+   at prototyping the proposed change."+2. The benefit of small grants can depend on life circumstances, such as one's+   need for child care, willingness to leave an employer, etc.  Individuals may+   prefer not to include this information in a document open for public comment.++Thus, the HFTP process isn't a great fit for direct requests from individuals or+small projects for financial support.  Furthermore, the HFTP process gives an+explicit example of a "Summer of Code" style program as within scope for an HFTP+proposal.  This is such a proposal.++Several other communities have similar grant programs.  Some examples include:++* Google Summer of Code, which awards between $1500 and $3300 per student,+  scaled by cost of living, for a student to contribute to a project for a+  summer.+* Clojurists Together, which awards between $1500 and $9000 per grant for people+  to contribute to a Clojure project for an indefinite period of time.+* The Unitary Fund, which awards $4000 per grant for research-based+  contributions to quantum technology.+* The Tweag Open Source Fellowship, which states that it's twice the amount of+  Google Summer of Code.++## Motivation++As discussed above, the primary motivation for this proposal is to make the+Haskell Foundation an appealing target for individuals who wish to donate money+for the good of the entire Haskell community, without expressing any specific+opinion on where that money is best invested.  This requires a mechanism for+community decision-making about how to distribute donations among the many+worthy causes where they could do some good, beyond the day to day operations+of the foundation itself.++There are several secondary motivations, as well.++* We hope to increase open source contributions to Haskell by finding high+  efficiency investments where a small contribution can make a big difference+  because someone is in a place where they are blocked from contributing.  This+  doesn't necessarily have to be a top priority for the community.  If a small+  investment can help even a second-tier priority, it is still a good thing.+* We hope to build more community support and awareness of people contributing+  to Haskell.  Bringing the community together in support of a shared goal can+  clear the path of procedural obstacles.++## Goals++The goal of this proposal is to set up a small grant program administered by the+Haskell Foundation.++Submissions to the grant program should come from individuals who feel they+could perform additional work on projects of benefit to the Haskell community if+they had extra funding.  Submissions may include:++* Open source tools and libraries.  This should focus on tools that are broadly+  useful for Haskell developers.  Simply being written in Haskell is not enough.+* Documentation and learning materialsthat are freely available to the+  community.+* Project leadership and support, including user support, project management,+  bug triage and coordination, code review, and technical writing.++Certain submissions are not appropriate, and those submitting them would be+referred to the HFTP process, instead.  This includes anything asking for+financial support above $2000.  (This is less than other similar programs, but+we feel it's important to limit the risk given the lower standard of review+involved.)  It also includes any submission that might be controversial in any+way, because the more private nature of these proposals isn't the right process+for anything potentially controversial.  Submissions should also not ask for+assistance from the Haskell Foundation beyond the grant money, so if someone+wants to recruit contributors, find infrastructure, etc. that they don't intend+to pay for themselves, this is not the right process for that.  (However, a+submission that explains that someone has already lined up extra assistance is+welcome.)  Grants must be awarded to a single individual, and not shared among+multiple contributors.  More complex proposals like this are also better suited+the the HFTP process.++These individuals would write a short summary of their intended work, limited to+two pages, and answering the following questions:++* What are you intending to do, and how will it benefit the Haskell community?+* Why are you the right person to do this work?  If possible, submissions are+  strongly encouraged to include a statement of support from an existing+  maintainer of or core contributor to the project involved.+* How much funding are you asking for, and how will it make your work possible?++As a prerequisite for receiving a grant, individuals will agree to write two+blog posts and share a link to discourse.haskell.org.  The first is a project+plan, which must be posted before funds are dispersed.  The second is a detailed+report on the results, which should be posted after described work has been+completed, regardless of its level of success.  Individuals who do not follow+through on the second blog post are ineligible for future grants.++A Community Grant Committee, consisting of five members, will be chosen by the+Haskell Foundation executive team.  An email list will be set up, readable only+by the executive team and Community Grant Committee, for receiving and+discussing submissions.  Once per month, the Haskell Foundation executive team+will a communicate to the committee how much funding is available for grants,+based on the program's budget, which is at the discretion of the Foundation.++Each proposal will be considered by members of the committee, using their+informed judgement to determine whether accepting the submission is in the best+interest of the Haskell community.  Among other factors, committee members+should consider:+1. Whether the proposal might be controversial.  It should be rejected it if+   there is any likelihood that it will.+2. How much difference the grant is likely to make on the probability for+   success.  A good proposal will justify the amount asked for, which could be+   used for paying expenses directly related to the project, removing obstacles+   to contribution by, for example, paying for child care, or covering housing+   and basic expenses if the alternative is to spend less time on project work.+3. The overall impact if the effort succeeds.  In determining the impact, the+   committee should keep in mind the long-term benefit of building expertise, if+   the submission is likely to lead to opportunities for continuing work.++Community Grant Committee members will use approval voting to determine which+submissions to accept.   A submission is accepted if it receives majority+support from the committee.  When a submission is not accepted, the committee+may choose, by majority vote again, to provide feedback to the submitter on how+their proposal could be improved.  Otherwise, the results of the vote are not+announced, to avoid embarrassment or hard feelings.++A random lottery system will then be used to award grants to accepted proposals,+continuing until either the approved submissions are exhausted, or a submission+is drawn which cannot be funded with the remaining budget.  The committee will+then recommend to the executive team to award the grants selected in the+lottery.  The executive team will have final authority to award grants.++## People++- The Haskell Foundation executive team and board will determine how many+  projects are chosen by setting a budget as funds are available.+- There will be a Community Grant Committee of five people responsible for+  evaluating whether to accept each submission.  This will be chosen by the+  Haskell Foundation executive team.+- Proposals will be written and submitted by various members of the community+  who feel their contributions would benefit from funding.++## Resources++The project can consume whatever resources are allocated to it, at the+discretion of the Haskell Foundation board or executive team.++## Timeline++- Choosing a Community Grant Committee may require apprroximately a month.+- Once there is a Community Grant Committee, the first round of grants can occur+  as soon as the budget is available.  The committee will choose new grants+  monthly after that.++## Lifecycle:++N/A++## Deliverables++N/A++## Outcomes++* We expect an increase in individual donations to the Haskell Foundation.+* We expect an increase in project work by people receiving grants.+* We anticipate the possibility of some negative sentiment as some grants are+  not awarded.  We seek to minimize this by choosing winners in a random+  lottery, so that failure to receive an award isn't seen as rejection by the+  community.++## Risks++The main risk worth considering is that funding decisions will generate

How will we know whether this is happening? That is, if we successfully fund 10 projects/year, but also put off 20 other projects through disappointment, how will we know?

cdsmith

comment created time in 8 hours

Pull request review commenthaskellfoundation/tech-proposals

Haskell Foundation Community Grants

+# Community Grants++## Introduction++This proposal is for the Haskell Foundation to undertake a direct small grant+program, funded by individual donations to the foundation, to distribute funding+where it can make a difference to the Haskell community.  The aim is to make the+Haskell Foundation a more appealing target for individuals wishing to donate for+the good of the entire Haskell community.  This indefinite ongoing program would+accept submissions from the community on a rolling basis, and award up to $2000+grants to individuals as a stipend to support their work on the proposed+project.++The amount of money involved is small, so the primary risk of the proposal is+that funding decisions would generate discouragement or ill will from rejected+submissions.  The risk can be partially mitigated by the use of a random lottery+system to select winners after an initial selection of submissions that the+Foundation believes are worth accepting.++## Background++Numerous mechanisms currently exist for individuals to financially support parts+of the Haskell community, including projects that have individually set up+fundraising, individuals who have requested donations via Patreon, GitHub+sponsorships, etc., and purchase of services and subscriptions to content.  Each+of these choices supports a specific part of the Haskell community, and none of+them offer a default way to contribute to Haskell as a whole.++The Haskell Foundation now also accepts individual donations, and its+organizational mission is consistent with being precisely such an appealing+target for general-purpose donations to Haskell.  However, there is currently+not a clear picture for how funds make it from donations to the Haskell+Foundation to directly encouraging contributions to the Haskell community.  In+surveys of the community, individuals who have decided not to contribute to the+Haskell Foundation have given the reason that they don't see that their+contributions would support the Haskell open source community.++The HFTP process superficially appears to offer such a path.  However, there are+several barriers to its being used directly by individuals or small projects for+which funding could make a difference.  Note that "individuals and small+projects" describes a vast portion of crucial Haskell libraries and tools.++1. The HFTP process is not encouraging to individuals looking for small amounts+   of funding, and says things like "Typically, this includes many rounds of+   discussion with HF leaders, Haskell library maintainers, and the broader+   community, several iterations on the design of the proposal, and some effort+   at prototyping the proposed change."+2. The benefit of small grants can depend on life circumstances, such as one's+   need for child care, willingness to leave an employer, etc.  Individuals may+   prefer not to include this information in a document open for public comment.++Thus, the HFTP process isn't a great fit for direct requests from individuals or+small projects for financial support.  Furthermore, the HFTP process gives an+explicit example of a "Summer of Code" style program as within scope for an HFTP+proposal.  This is such a proposal.++Several other communities have similar grant programs.  Some examples include:++* Google Summer of Code, which awards between $1500 and $3300 per student,+  scaled by cost of living, for a student to contribute to a project for a+  summer.+* Clojurists Together, which awards between $1500 and $9000 per grant for people+  to contribute to a Clojure project for an indefinite period of time.+* The Unitary Fund, which awards $4000 per grant for research-based+  contributions to quantum technology.+* The Tweag Open Source Fellowship, which states that it's twice the amount of+  Google Summer of Code.++## Motivation++As discussed above, the primary motivation for this proposal is to make the+Haskell Foundation an appealing target for individuals who wish to donate money+for the good of the entire Haskell community, without expressing any specific+opinion on where that money is best invested.  This requires a mechanism for+community decision-making about how to distribute donations among the many+worthy causes where they could do some good, beyond the day to day operations+of the foundation itself.++There are several secondary motivations, as well.++* We hope to increase open source contributions to Haskell by finding high+  efficiency investments where a small contribution can make a big difference+  because someone is in a place where they are blocked from contributing.  This+  doesn't necessarily have to be a top priority for the community.  If a small+  investment can help even a second-tier priority, it is still a good thing.+* We hope to build more community support and awareness of people contributing+  to Haskell.  Bringing the community together in support of a shared goal can+  clear the path of procedural obstacles.++## Goals++The goal of this proposal is to set up a small grant program administered by the+Haskell Foundation.++Submissions to the grant program should come from individuals who feel they+could perform additional work on projects of benefit to the Haskell community if+they had extra funding.  Submissions may include:++* Open source tools and libraries.  This should focus on tools that are broadly+  useful for Haskell developers.  Simply being written in Haskell is not enough.+* Documentation and learning materialsthat are freely available to the+  community.+* Project leadership and support, including user support, project management,+  bug triage and coordination, code review, and technical writing.++Certain submissions are not appropriate, and those submitting them would be+referred to the HFTP process, instead.  This includes anything asking for+financial support above $2000.  (This is less than other similar programs, but+we feel it's important to limit the risk given the lower standard of review+involved.)  It also includes any submission that might be controversial in any+way, because the more private nature of these proposals isn't the right process+for anything potentially controversial.  Submissions should also not ask for+assistance from the Haskell Foundation beyond the grant money, so if someone+wants to recruit contributors, find infrastructure, etc. that they don't intend+to pay for themselves, this is not the right process for that.  (However, a+submission that explains that someone has already lined up extra assistance is+welcome.)  Grants must be awarded to a single individual, and not shared among+multiple contributors.  More complex proposals like this are also better suited+the the HFTP process.++These individuals would write a short summary of their intended work, limited to+two pages, and answering the following questions:++* What are you intending to do, and how will it benefit the Haskell community?+* Why are you the right person to do this work?  If possible, submissions are+  strongly encouraged to include a statement of support from an existing+  maintainer of or core contributor to the project involved.+* How much funding are you asking for, and how will it make your work possible?++As a prerequisite for receiving a grant, individuals will agree to write two+blog posts and share a link to discourse.haskell.org.  The first is a project+plan, which must be posted before funds are dispersed.  The second is a detailed+report on the results, which should be posted after described work has been+completed, regardless of its level of success.  Individuals who do not follow+through on the second blog post are ineligible for future grants.++A Community Grant Committee, consisting of five members, will be chosen by the+Haskell Foundation executive team.  An email list will be set up, readable only+by the executive team and Community Grant Committee, for receiving and+discussing submissions.  Once per month, the Haskell Foundation executive team+will a communicate to the committee how much funding is available for grants,+based on the program's budget, which is at the discretion of the Foundation.++Each proposal will be considered by members of the committee, using their+informed judgement to determine whether accepting the submission is in the best+interest of the Haskell community.  Among other factors, committee members+should consider:+1. Whether the proposal might be controversial.  It should be rejected it if+   there is any likelihood that it will.+2. How much difference the grant is likely to make on the probability for+   success.  A good proposal will justify the amount asked for, which could be+   used for paying expenses directly related to the project, removing obstacles+   to contribution by, for example, paying for child care, or covering housing+   and basic expenses if the alternative is to spend less time on project work.+3. The overall impact if the effort succeeds.  In determining the impact, the+   committee should keep in mind the long-term benefit of building expertise, if+   the submission is likely to lead to opportunities for continuing work.++Community Grant Committee members will use approval voting to determine which+submissions to accept.   A submission is accepted if it receives majority+support from the committee.  When a submission is not accepted, the committee+may choose, by majority vote again, to provide feedback to the submitter on how+their proposal could be improved.  Otherwise, the results of the vote are not+announced, to avoid embarrassment or hard feelings.++A random lottery system will then be used to award grants to accepted proposals,+continuing until either the approved submissions are exhausted, or a submission+is drawn which cannot be funded with the remaining budget.  The committee will+then recommend to the executive team to award the grants selected in the+lottery.  The executive team will have final authority to award grants.++## People++- The Haskell Foundation executive team and board will determine how many+  projects are chosen by setting a budget as funds are available.+- There will be a Community Grant Committee of five people responsible for+  evaluating whether to accept each submission.  This will be chosen by the+  Haskell Foundation executive team.+- Proposals will be written and submitted by various members of the community+  who feel their contributions would benefit from funding.++## Resources++The project can consume whatever resources are allocated to it, at the+discretion of the Haskell Foundation board or executive team.++## Timeline++- Choosing a Community Grant Committee may require apprroximately a month.+- Once there is a Community Grant Committee, the first round of grants can occur+  as soon as the budget is available.  The committee will choose new grants+  monthly after that.++## Lifecycle:++N/A++## Deliverables++N/A

I would say this proposal does have deliverables:

  • The membership (and written charter) of the Community Grant Committee.
  • Advertisements on our website and elsewhere that this program exists.
  • A functioning mechanism for submitting applications.

and perhaps others.

cdsmith

comment created time in 8 hours

Pull request review commenthaskellfoundation/tech-proposals

Haskell Foundation Community Grants

+# Community Grants++## Introduction++This proposal is for the Haskell Foundation to undertake a direct small grant+program, funded by individual donations to the foundation, to distribute funding+where it can make a difference to the Haskell community.  The aim is to make the+Haskell Foundation a more appealing target for individuals wishing to donate for+the good of the entire Haskell community.  This indefinite ongoing program would+accept submissions from the community on a rolling basis, and award up to $2000+grants to individuals as a stipend to support their work on the proposed+project.++The amount of money involved is small, so the primary risk of the proposal is+that funding decisions would generate discouragement or ill will from rejected+submissions.  The risk can be partially mitigated by the use of a random lottery+system to select winners after an initial selection of submissions that the+Foundation believes are worth accepting.++## Background++Numerous mechanisms currently exist for individuals to financially support parts+of the Haskell community, including projects that have individually set up+fundraising, individuals who have requested donations via Patreon, GitHub+sponsorships, etc., and purchase of services and subscriptions to content.  Each+of these choices supports a specific part of the Haskell community, and none of+them offer a default way to contribute to Haskell as a whole.++The Haskell Foundation now also accepts individual donations, and its+organizational mission is consistent with being precisely such an appealing+target for general-purpose donations to Haskell.  However, there is currently+not a clear picture for how funds make it from donations to the Haskell+Foundation to directly encouraging contributions to the Haskell community.  In+surveys of the community, individuals who have decided not to contribute to the+Haskell Foundation have given the reason that they don't see that their+contributions would support the Haskell open source community.++The HFTP process superficially appears to offer such a path.  However, there are+several barriers to its being used directly by individuals or small projects for+which funding could make a difference.  Note that "individuals and small+projects" describes a vast portion of crucial Haskell libraries and tools.++1. The HFTP process is not encouraging to individuals looking for small amounts+   of funding, and says things like "Typically, this includes many rounds of+   discussion with HF leaders, Haskell library maintainers, and the broader+   community, several iterations on the design of the proposal, and some effort+   at prototyping the proposed change."+2. The benefit of small grants can depend on life circumstances, such as one's+   need for child care, willingness to leave an employer, etc.  Individuals may+   prefer not to include this information in a document open for public comment.++Thus, the HFTP process isn't a great fit for direct requests from individuals or+small projects for financial support.  Furthermore, the HFTP process gives an+explicit example of a "Summer of Code" style program as within scope for an HFTP+proposal.  This is such a proposal.++Several other communities have similar grant programs.  Some examples include:++* Google Summer of Code, which awards between $1500 and $3300 per student,+  scaled by cost of living, for a student to contribute to a project for a+  summer.+* Clojurists Together, which awards between $1500 and $9000 per grant for people+  to contribute to a Clojure project for an indefinite period of time.+* The Unitary Fund, which awards $4000 per grant for research-based+  contributions to quantum technology.+* The Tweag Open Source Fellowship, which states that it's twice the amount of+  Google Summer of Code.++## Motivation++As discussed above, the primary motivation for this proposal is to make the+Haskell Foundation an appealing target for individuals who wish to donate money+for the good of the entire Haskell community, without expressing any specific+opinion on where that money is best invested.  This requires a mechanism for+community decision-making about how to distribute donations among the many+worthy causes where they could do some good, beyond the day to day operations+of the foundation itself.++There are several secondary motivations, as well.++* We hope to increase open source contributions to Haskell by finding high+  efficiency investments where a small contribution can make a big difference+  because someone is in a place where they are blocked from contributing.  This+  doesn't necessarily have to be a top priority for the community.  If a small+  investment can help even a second-tier priority, it is still a good thing.+* We hope to build more community support and awareness of people contributing+  to Haskell.  Bringing the community together in support of a shared goal can+  clear the path of procedural obstacles.++## Goals++The goal of this proposal is to set up a small grant program administered by the+Haskell Foundation.++Submissions to the grant program should come from individuals who feel they+could perform additional work on projects of benefit to the Haskell community if+they had extra funding.  Submissions may include:++* Open source tools and libraries.  This should focus on tools that are broadly+  useful for Haskell developers.  Simply being written in Haskell is not enough.+* Documentation and learning materialsthat are freely available to the+  community.+* Project leadership and support, including user support, project management,+  bug triage and coordination, code review, and technical writing.++Certain submissions are not appropriate, and those submitting them would be+referred to the HFTP process, instead.  This includes anything asking for+financial support above $2000.  (This is less than other similar programs, but+we feel it's important to limit the risk given the lower standard of review+involved.)  It also includes any submission that might be controversial in any+way, because the more private nature of these proposals isn't the right process+for anything potentially controversial.  Submissions should also not ask for+assistance from the Haskell Foundation beyond the grant money, so if someone+wants to recruit contributors, find infrastructure, etc. that they don't intend+to pay for themselves, this is not the right process for that.  (However, a+submission that explains that someone has already lined up extra assistance is+welcome.)  Grants must be awarded to a single individual, and not shared among+multiple contributors.  More complex proposals like this are also better suited+the the HFTP process.++These individuals would write a short summary of their intended work, limited to+two pages, and answering the following questions:++* What are you intending to do, and how will it benefit the Haskell community?+* Why are you the right person to do this work?  If possible, submissions are+  strongly encouraged to include a statement of support from an existing+  maintainer of or core contributor to the project involved.+* How much funding are you asking for, and how will it make your work possible?++As a prerequisite for receiving a grant, individuals will agree to write two+blog posts and share a link to discourse.haskell.org.  The first is a project+plan, which must be posted before funds are dispersed.  The second is a detailed+report on the results, which should be posted after described work has been+completed, regardless of its level of success.  Individuals who do not follow+through on the second blog post are ineligible for future grants.++A Community Grant Committee, consisting of five members, will be chosen by the+Haskell Foundation executive team.  An email list will be set up, readable only+by the executive team and Community Grant Committee, for receiving and+discussing submissions.  Once per month, the Haskell Foundation executive team+will a communicate to the committee how much funding is available for grants,+based on the program's budget, which is at the discretion of the Foundation.++Each proposal will be considered by members of the committee, using their+informed judgement to determine whether accepting the submission is in the best+interest of the Haskell community.  Among other factors, committee members+should consider:+1. Whether the proposal might be controversial.  It should be rejected it if+   there is any likelihood that it will.+2. How much difference the grant is likely to make on the probability for+   success.  A good proposal will justify the amount asked for, which could be+   used for paying expenses directly related to the project, removing obstacles+   to contribution by, for example, paying for child care, or covering housing+   and basic expenses if the alternative is to spend less time on project work.+3. The overall impact if the effort succeeds.  In determining the impact, the+   committee should keep in mind the long-term benefit of building expertise, if+   the submission is likely to lead to opportunities for continuing work.++Community Grant Committee members will use approval voting to determine which+submissions to accept.   A submission is accepted if it receives majority+support from the committee.  When a submission is not accepted, the committee+may choose, by majority vote again, to provide feedback to the submitter on how+their proposal could be improved.  Otherwise, the results of the vote are not+announced, to avoid embarrassment or hard feelings.++A random lottery system will then be used to award grants to accepted proposals,+continuing until either the approved submissions are exhausted, or a submission+is drawn which cannot be funded with the remaining budget.  The committee will+then recommend to the executive team to award the grants selected in the+lottery.  The executive team will have final authority to award grants.++## People++- The Haskell Foundation executive team and board will determine how many+  projects are chosen by setting a budget as funds are available.+- There will be a Community Grant Committee of five people responsible for+  evaluating whether to accept each submission.  This will be chosen by the+  Haskell Foundation executive team.+- Proposals will be written and submitted by various members of the community+  who feel their contributions would benefit from funding.++## Resources++The project can consume whatever resources are allocated to it, at the+discretion of the Haskell Foundation board or executive team.++## Timeline++- Choosing a Community Grant Committee may require apprroximately a month.+- Once there is a Community Grant Committee, the first round of grants can occur+  as soon as the budget is available.  The committee will choose new grants+  monthly after that.++## Lifecycle:++N/A++## Deliverables++N/A++## Outcomes

Though I'm not sure how it fits in this template: how would we assess the success of this program? Every proposal (in my personal opinion) should have criteria that define its success. It may be sometimes that the effort of measuring the criteria (e.g. extensive surveying) might be too high to be worth it, but we should still be able to define what success looks like.

What do you think are the success criteria? Should there be a plan for assessing the program (after, say, a year) to see if it's meeting these criteria?

cdsmith

comment created time in 8 hours

Pull request review commenthaskellfoundation/tech-proposals

Haskell Foundation Community Grants

+# Community Grants++## Introduction++This proposal is for the Haskell Foundation to undertake a direct small grant+program, funded by individual donations to the foundation, to distribute funding+where it can make a difference to the Haskell community.  The aim is to make the+Haskell Foundation a more appealing target for individuals wishing to donate for+the good of the entire Haskell community.  This indefinite ongoing program would+accept submissions from the community on a rolling basis, and award up to $2000+grants to individuals as a stipend to support their work on the proposed+project.++The amount of money involved is small, so the primary risk of the proposal is+that funding decisions would generate discouragement or ill will from rejected+submissions.  The risk can be partially mitigated by the use of a random lottery+system to select winners after an initial selection of submissions that the+Foundation believes are worth accepting.++## Background++Numerous mechanisms currently exist for individuals to financially support parts+of the Haskell community, including projects that have individually set up+fundraising, individuals who have requested donations via Patreon, GitHub+sponsorships, etc., and purchase of services and subscriptions to content.  Each+of these choices supports a specific part of the Haskell community, and none of+them offer a default way to contribute to Haskell as a whole.++The Haskell Foundation now also accepts individual donations, and its+organizational mission is consistent with being precisely such an appealing+target for general-purpose donations to Haskell.  However, there is currently+not a clear picture for how funds make it from donations to the Haskell+Foundation to directly encouraging contributions to the Haskell community.  In+surveys of the community, individuals who have decided not to contribute to the+Haskell Foundation have given the reason that they don't see that their+contributions would support the Haskell open source community.++The HFTP process superficially appears to offer such a path.  However, there are+several barriers to its being used directly by individuals or small projects for+which funding could make a difference.  Note that "individuals and small+projects" describes a vast portion of crucial Haskell libraries and tools.++1. The HFTP process is not encouraging to individuals looking for small amounts+   of funding, and says things like "Typically, this includes many rounds of+   discussion with HF leaders, Haskell library maintainers, and the broader+   community, several iterations on the design of the proposal, and some effort+   at prototyping the proposed change."+2. The benefit of small grants can depend on life circumstances, such as one's+   need for child care, willingness to leave an employer, etc.  Individuals may+   prefer not to include this information in a document open for public comment.++Thus, the HFTP process isn't a great fit for direct requests from individuals or+small projects for financial support.  Furthermore, the HFTP process gives an+explicit example of a "Summer of Code" style program as within scope for an HFTP+proposal.  This is such a proposal.++Several other communities have similar grant programs.  Some examples include:++* Google Summer of Code, which awards between $1500 and $3300 per student,+  scaled by cost of living, for a student to contribute to a project for a+  summer.+* Clojurists Together, which awards between $1500 and $9000 per grant for people+  to contribute to a Clojure project for an indefinite period of time.+* The Unitary Fund, which awards $4000 per grant for research-based+  contributions to quantum technology.+* The Tweag Open Source Fellowship, which states that it's twice the amount of+  Google Summer of Code.++## Motivation++As discussed above, the primary motivation for this proposal is to make the+Haskell Foundation an appealing target for individuals who wish to donate money+for the good of the entire Haskell community, without expressing any specific+opinion on where that money is best invested.  This requires a mechanism for+community decision-making about how to distribute donations among the many+worthy causes where they could do some good, beyond the day to day operations+of the foundation itself.++There are several secondary motivations, as well.++* We hope to increase open source contributions to Haskell by finding high+  efficiency investments where a small contribution can make a big difference+  because someone is in a place where they are blocked from contributing.  This+  doesn't necessarily have to be a top priority for the community.  If a small+  investment can help even a second-tier priority, it is still a good thing.+* We hope to build more community support and awareness of people contributing+  to Haskell.  Bringing the community together in support of a shared goal can+  clear the path of procedural obstacles.++## Goals++The goal of this proposal is to set up a small grant program administered by the+Haskell Foundation.++Submissions to the grant program should come from individuals who feel they+could perform additional work on projects of benefit to the Haskell community if+they had extra funding.  Submissions may include:++* Open source tools and libraries.  This should focus on tools that are broadly+  useful for Haskell developers.  Simply being written in Haskell is not enough.+* Documentation and learning materialsthat are freely available to the+  community.+* Project leadership and support, including user support, project management,+  bug triage and coordination, code review, and technical writing.++Certain submissions are not appropriate, and those submitting them would be+referred to the HFTP process, instead.  This includes anything asking for+financial support above $2000.  (This is less than other similar programs, but+we feel it's important to limit the risk given the lower standard of review+involved.)  It also includes any submission that might be controversial in any+way, because the more private nature of these proposals isn't the right process+for anything potentially controversial.  Submissions should also not ask for+assistance from the Haskell Foundation beyond the grant money, so if someone+wants to recruit contributors, find infrastructure, etc. that they don't intend+to pay for themselves, this is not the right process for that.  (However, a+submission that explains that someone has already lined up extra assistance is+welcome.)  Grants must be awarded to a single individual, and not shared among+multiple contributors.  More complex proposals like this are also better suited+the the HFTP process.++These individuals would write a short summary of their intended work, limited to+two pages, and answering the following questions:++* What are you intending to do, and how will it benefit the Haskell community?+* Why are you the right person to do this work?  If possible, submissions are+  strongly encouraged to include a statement of support from an existing+  maintainer of or core contributor to the project involved.+* How much funding are you asking for, and how will it make your work possible?++As a prerequisite for receiving a grant, individuals will agree to write two+blog posts and share a link to discourse.haskell.org.  The first is a project+plan, which must be posted before funds are dispersed.  The second is a detailed+report on the results, which should be posted after described work has been+completed, regardless of its level of success.  Individuals who do not follow+through on the second blog post are ineligible for future grants.++A Community Grant Committee, consisting of five members, will be chosen by the+Haskell Foundation executive team.  An email list will be set up, readable only+by the executive team and Community Grant Committee, for receiving and+discussing submissions.  Once per month, the Haskell Foundation executive team+will a communicate to the committee how much funding is available for grants,+based on the program's budget, which is at the discretion of the Foundation.++Each proposal will be considered by members of the committee, using their+informed judgement to determine whether accepting the submission is in the best+interest of the Haskell community.  Among other factors, committee members+should consider:+1. Whether the proposal might be controversial.  It should be rejected it if+   there is any likelihood that it will.+2. How much difference the grant is likely to make on the probability for+   success.  A good proposal will justify the amount asked for, which could be+   used for paying expenses directly related to the project, removing obstacles+   to contribution by, for example, paying for child care, or covering housing+   and basic expenses if the alternative is to spend less time on project work.+3. The overall impact if the effort succeeds.  In determining the impact, the+   committee should keep in mind the long-term benefit of building expertise, if+   the submission is likely to lead to opportunities for continuing work.++Community Grant Committee members will use approval voting to determine which+submissions to accept.   A submission is accepted if it receives majority+support from the committee.  When a submission is not accepted, the committee+may choose, by majority vote again, to provide feedback to the submitter on how+their proposal could be improved.  Otherwise, the results of the vote are not+announced, to avoid embarrassment or hard feelings.++A random lottery system will then be used to award grants to accepted proposals,+continuing until either the approved submissions are exhausted, or a submission+is drawn which cannot be funded with the remaining budget.  The committee will+then recommend to the executive team to award the grants selected in the+lottery.  The executive team will have final authority to award grants.++## People++- The Haskell Foundation executive team and board will determine how many+  projects are chosen by setting a budget as funds are available.+- There will be a Community Grant Committee of five people responsible for+  evaluating whether to accept each submission.  This will be chosen by the+  Haskell Foundation executive team.+- Proposals will be written and submitted by various members of the community+  who feel their contributions would benefit from funding.++## Resources++The project can consume whatever resources are allocated to it, at the+discretion of the Haskell Foundation board or executive team.++## Timeline++- Choosing a Community Grant Committee may require apprroximately a month.+- Once there is a Community Grant Committee, the first round of grants can occur+  as soon as the budget is available.  The committee will choose new grants+  monthly after that.++## Lifecycle:++N/A

I think there is a bit that could be said here: it would take some time (a month?) to actually organize, and then the grants program could begin, without a specified ending date.

cdsmith

comment created time in 8 hours

Pull request review commenthaskellfoundation/tech-proposals

Haskell Foundation Community Grants

+# Community Grants++## Introduction++This proposal is for the Haskell Foundation to undertake a direct small grant+program, funded by individual donations to the foundation, to distribute funding+where it can make a difference to the Haskell community.  The aim is to make the+Haskell Foundation a more appealing target for individuals wishing to donate for+the good of the entire Haskell community.  This indefinite ongoing program would+accept submissions from the community on a rolling basis, and award up to $2000+grants to individuals as a stipend to support their work on the proposed+project.++The amount of money involved is small, so the primary risk of the proposal is+that funding decisions would generate discouragement or ill will from rejected+submissions.  The risk can be partially mitigated by the use of a random lottery+system to select winners after an initial selection of submissions that the+Foundation believes are worth accepting.++## Background++Numerous mechanisms currently exist for individuals to financially support parts+of the Haskell community, including projects that have individually set up+fundraising, individuals who have requested donations via Patreon, GitHub+sponsorships, etc., and purchase of services and subscriptions to content.  Each+of these choices supports a specific part of the Haskell community, and none of+them offer a default way to contribute to Haskell as a whole.++The Haskell Foundation now also accepts individual donations, and its+organizational mission is consistent with being precisely such an appealing+target for general-purpose donations to Haskell.  However, there is currently+not a clear picture for how funds make it from donations to the Haskell+Foundation to directly encouraging contributions to the Haskell community.  In+surveys of the community, individuals who have decided not to contribute to the+Haskell Foundation have given the reason that they don't see that their+contributions would support the Haskell open source community.++The HFTP process superficially appears to offer such a path.  However, there are+several barriers to its being used directly by individuals or small projects for+which funding could make a difference.  Note that "individuals and small+projects" describes a vast portion of crucial Haskell libraries and tools.++1. The HFTP process is not encouraging to individuals looking for small amounts+   of funding, and says things like "Typically, this includes many rounds of+   discussion with HF leaders, Haskell library maintainers, and the broader+   community, several iterations on the design of the proposal, and some effort+   at prototyping the proposed change."+2. The benefit of small grants can depend on life circumstances, such as one's+   need for child care, willingness to leave an employer, etc.  Individuals may+   prefer not to include this information in a document open for public comment.++Thus, the HFTP process isn't a great fit for direct requests from individuals or+small projects for financial support.  Furthermore, the HFTP process gives an+explicit example of a "Summer of Code" style program as within scope for an HFTP+proposal.  This is such a proposal.++Several other communities have similar grant programs.  Some examples include:++* Google Summer of Code, which awards between $1500 and $3300 per student,+  scaled by cost of living, for a student to contribute to a project for a+  summer.+* Clojurists Together, which awards between $1500 and $9000 per grant for people+  to contribute to a Clojure project for an indefinite period of time.+* The Unitary Fund, which awards $4000 per grant for research-based+  contributions to quantum technology.+* The Tweag Open Source Fellowship, which states that it's twice the amount of+  Google Summer of Code.++## Motivation++As discussed above, the primary motivation for this proposal is to make the+Haskell Foundation an appealing target for individuals who wish to donate money+for the good of the entire Haskell community, without expressing any specific+opinion on where that money is best invested.  This requires a mechanism for+community decision-making about how to distribute donations among the many+worthy causes where they could do some good, beyond the day to day operations+of the foundation itself.++There are several secondary motivations, as well.++* We hope to increase open source contributions to Haskell by finding high+  efficiency investments where a small contribution can make a big difference+  because someone is in a place where they are blocked from contributing.  This+  doesn't necessarily have to be a top priority for the community.  If a small+  investment can help even a second-tier priority, it is still a good thing.+* We hope to build more community support and awareness of people contributing+  to Haskell.  Bringing the community together in support of a shared goal can+  clear the path of procedural obstacles.++## Goals++The goal of this proposal is to set up a small grant program administered by the+Haskell Foundation.++Submissions to the grant program should come from individuals who feel they+could perform additional work on projects of benefit to the Haskell community if+they had extra funding.  Submissions may include:++* Open source tools and libraries.  This should focus on tools that are broadly+  useful for Haskell developers.  Simply being written in Haskell is not enough.+* Documentation and learning materialsthat are freely available to the
* Documentation and learning materials that are freely available to the
cdsmith

comment created time in 8 hours

Pull request review commenthaskellfoundation/tech-proposals

Haskell Foundation Community Grants

+# Community Grants++## Introduction++This proposal is for the Haskell Foundation to undertake a direct small grant+program, funded by individual donations to the foundation, to distribute funding+where it can make a difference to the Haskell community.  The aim is to make the+Haskell Foundation a more appealing target for individuals wishing to donate for+the good of the entire Haskell community.  This indefinite ongoing program would+accept submissions from the community on a rolling basis, and award up to $2000+grants to individuals as a stipend to support their work on the proposed+project.++The amount of money involved is small, so the primary risk of the proposal is+that funding decisions would generate discouragement or ill will from rejected+submissions.  The risk can be partially mitigated by the use of a random lottery+system to select winners after an initial selection of submissions that the+Foundation believes are worth accepting.++## Background++Numerous mechanisms currently exist for individuals to financially support parts+of the Haskell community, including projects that have individually set up+fundraising, individuals who have requested donations via Patreon, GitHub+sponsorships, etc., and purchase of services and subscriptions to content.  Each+of these choices supports a specific part of the Haskell community, and none of+them offer a default way to contribute to Haskell as a whole.++The Haskell Foundation now also accepts individual donations, and its+organizational mission is consistent with being precisely such an appealing+target for general-purpose donations to Haskell.  However, there is currently+not a clear picture for how funds make it from donations to the Haskell+Foundation to directly encouraging contributions to the Haskell community.  In+surveys of the community, individuals who have decided not to contribute to the

Can you cite any sources here? This sounds like a statement of fact, and I'd like to understand it better.

cdsmith

comment created time in 8 hours

Pull request review commenthaskellfoundation/tech-proposals

Haskell Foundation Community Grants

+# Community Grants++## Introduction++This proposal is for the Haskell Foundation to undertake a direct small grant+program, funded by individual donations to the foundation, to distribute funding+where it can make a difference to the Haskell community.  The aim is to make the+Haskell Foundation a more appealing target for individuals wishing to donate for

I find it interesting that the stated aim of this program is to incentivize donations -- not to support contributors. I actually agree with this aim, in that I believe this program would incentivize donations more than support contributors. After all, if I'm relying on these grants to support my lifestyle, the lottery system would be a big barrier to coming to depend on this support.

cdsmith

comment created time in 8 hours

PullRequestReviewEvent
PullRequestReviewEvent

issue commentmicrosoft/vscode

merge-conflict: Add compare {current,incoming} to original

I agree about the code lenses -- it was actually just a small experiment to see if the strange behavior I was witnessing was related to the command palette somehow and I wanted a new way to trigger my new code path. I will remove it -- happy for this feature to be available only for someone who looks for it.

OK. I will polish a bit and post a PR. Thanks.

goldfirere

comment created time in 3 days

issue commenthaskell/error-messages

Provide a link in error messages a la https://ipxe.org/err/...

I think a very good first stab at what to address would be to look at this data type (https://gitlab.haskell.org/ghc/ghc/-/blob/20e6fec8106521efe7c571612d6d4353fec5c832/compiler/GHC/Driver/Errors/Types.hs#L66) and create a page for every constructor of the types mentioned there. This won't cover all the errors in today's GHC, because not every error has been ported over to the new format. But it would be a very good starting point. To keep track of the pages, we could even name the pages after the constructors. These aren't shown to users, but they are useful internal identifiers. If/when we create user-visible ids, it should be easy to map from these internal ids to the new external ones.

It would take only a tiny bit of support from GHC to print out the URL in the message. I would do this by adding a new diagnosticURL :: a -> Maybe URL (for some URL type... maybe just a String for now) to the Diagnostic class (https://gitlab.haskell.org/ghc/ghc/-/blob/20e6fec8106521efe7c571612d6d4353fec5c832/compiler/GHC/Types/Error.hs#L230), and then including this URL in the rendered output when available. Because it would be printed only when there really is a URL, we can build out the facility slowly.

huppmann

comment created time in 3 days

issue commenthaskell/error-messages

Language extensions don't work

See https://gitlab.haskell.org/ghc/ghc/-/issues/20385.

noughtmare

comment created time in 3 days

issue commenthaskell/error-messages

Non-exhaustive pattern match warning with guards

That wiki page is indeed excellent. I'd personally be quite happy for that to be the on the wiki associated with this main repo instead of the fork. Thanks, @noughtmare!

noughtmare

comment created time in 3 days

issue commentmicrosoft/vscode

merge-conflict: Add compare {current,incoming} to original

Thanks for this advice. I couldn't get anything with activationEvents working, but your message inspired me to clone my local repo into a new folder (yarn clean isn't a thing... and I only thought of git clean when writing this comment), where my new stuff works. Hooray!

What are good next steps here? I already noticed a bug in my code, in that if I click on a code lens to do the comparison, the cursor still needs to be within the conflict region for the comparison to work. This is because I didn't, at first, understand how/where the conflict ever gets passed to the action. I'm pretty sure I can fix this. And I suppose I could avoid the constructed string by just enumerating the three possibilities separately. (Luckily, three is a small number.)

But the tasks beyond this are beyond me: creating tests, any documentation, etc. I could put in this time, but is it a reasonable expectation that this patch would get merged? I don't want to spend time cleaning the code and learning more about how to contribute without a reward at the end. Or, is it a better strategy to wait for the VSCode team to address this, essentially using my patch as a tighter specification of what I'd like?

What do you suggest?

Thanks for your help!

goldfirere

comment created time in 4 days

issue commentmicrosoft/vscode

merge-conflict: Add compare {current,incoming} to original

It's definitely recompiling and loading my changes. If I just changed this line in the original code to use conflict.commonAncestors[0].content, I was able to observe the result I wanted.

In the version I've built, my new command e.g. merge-conflict.compare-current-original appears in the command palette (when I Cmd+Shift+P), but then executing it produces an error that the command doesn't exist. It smells to me like the registerTextEditorCommand isn't working somehow -- or that I've mistyped the name of the command in different places. But I don't spot my mistake.

goldfirere

comment created time in 5 days

push eventgoldfirere/web

Richard Eisenberg

commit sha 50b91ae5e8520cee6a48f1a3c51621902bf8fc75

Another video

view details

push time in 6 days

issue commentmicrosoft/vscode

merge-conflict: Add compare {current,incoming} to original

I made a vain attempt to fix this myself in https://github.com/goldfirere/vscode/commit/9f8c9ebdfad14c6fea58f71e20c8a018f9e5aa42, but it doesn't work (and fails the pre-commit lint, due to my constructed string). I've never worked in TypeScript before, so there could be all manner of other silliness here, but the commit should get the idea across. Someone more knowledgeable with VSCode internals could hopefully take what I have and make it actually work. (It doesn't: somehow, my new commands aren't recognized. This baffles me.)

goldfirere

comment created time in 6 days

create barnchgoldfirere/vscode

branch : wip/T133088

created branch time in 6 days

issue commentmicrosoft/vscode

merge-conflict: Add compare {current,incoming} to original

Thanks, @IllusionMH, but I don't think so. I feel like I must be missing something, but it looks like #37350 is essentially a side-by-side representation of the diff3 conflict style that git provides. This side-by-side representation is really useful, but I'm looking for something more: word-by-word (or char-by-char) highlights of what actually changed. Let me demonstrate.

This is the rendering of a 3-way merge in VSCode today.

Screen Shot 2021-09-14 at 11 17 08 AM

With merge-conflict.compare, I can get this:

Screen Shot 2021-09-14 at 11 19 16 AM

Note that orig is highlighted, along with the fact that EQ1 and EQ2 are different. These highlights are so, so useful. But this comparison is between the current and incoming versions. I want the same display, but comparing the current and original or the incoming and original. That's it! No three-way fanciness required (beyond what git already does).

For comparison, here is emacs:

Screen Shot 2021-09-14 at 11 22 12 AM

I have cycled through the three possible head-to-head comparisons to see that original-vs-incoming involves only a 1-character change. I can then confidently change EQ2 to EQ1 in the current code, accept the current version, and move on. Without manually doing the word-by-word or char-by-char comparison, I don't see how I can as easily resolve this conflict in VSCode.

As an added bonus, I'm hoping that implementing what I want is far easier than #37350. It's exactly the same as the existing merge-conflict.compare, but just changing the files that are compared.

goldfirere

comment created time in 6 days