Skip to content

Current and future status of project stack.yaml's #2533

Closed
@jneira

Description

@jneira
  • To reflect some recent discussions in the irc channel and get more broad feedback

  • Actually we have a stack.yaml for each supported ghc

  • Keeping them up-to-date needs some effort, most times mechanical and boring but sometimes tricky

  • The install script uses those stack.yaml's to define the list of supported/available ghcs to install hls, even if the script uses cabal underneath

    • But we are discussing deprecate and remove the install script
  • Pros:

    • They make easier to possible contributors using stack start to work on hls, so we get more chances to get contributions.
    • They make easier for advanced users using stack build hls from source and we are suggesting that as workaround for some issues
      • The alternative to the install script, ghcup compile hls only allow using cabal for the build
    • It is much harder to create a new stack.yaml from the air for those all possible case uses than update an existing one. stack init does not work for hls.
    • More broadly, we send out a signal to the haskell community: hls aims to support stack in parity with cabal for users, maintainers and contributors. I firmly think that it helps to the friendly coexistence of both tools in the community.
  • Contras

    • We have to maintain all those stack.yamls, which is a error prone and boring task most of times and a tricky one sometimes
    • We have to maintain the circleci setup and worry about it
    • Contributors not using stack can find difficulties in update those stack.yamls and it could make them stop working on hls (as commented by @fendor)
  • Alternatives:

  1. Remove all stack.yamls and require cabal or nix to work on hls (i think nobody has suggested that at the moment but for completeness)
  2. Keep only one stack.yaml with the last lts or other (suggested by @wz1000)
  3. Keep two stack.yamls: last lts and nightly (they could be the same ghc at some point though) (suggested by @fendor? not sure)
  4. Keep one stack.yaml for supported ghc: it will remove the ghcs of minor versions (one or two) (suggested by @simonmichael iirc)
  5. Keep the actual state of things

Keeping some of the stack.yamls makes pros and contras only vary quantitatively.

Personally i am for 4 or 5.

Metadata

Metadata

Assignees

No one assigned

    Labels

    CIContinuous integrationbuild tool: stackold_type: metaPlaning and organizing other issuesstatus: in discussionNot actionable, because discussion is still ongoing or there's no decision yet

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions