diff --git a/GHCup.md b/GHCup.md index 529c39b..022ce3c 100644 --- a/GHCup.md +++ b/GHCup.md @@ -124,21 +124,26 @@ curl -s -L 'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-l ::: +# Relationships + ## Upstream (dependencies) -::: incremental +- supported tools + - GHC + - Cabal + - HLS + - Stack -- GHC -- Cabal -- HLS -- Stack +. . . -::: +- decisions that affect us + - release frequency + - upstream CI + - platform support + - binary distributions (the `.tar.gz`/`.zip`) ## Downstream (dependents) -::: incremental - - ![](haskell_logo.png){#id .class height=32px} Haskell developers - beginners, advanced, students, companies - ![](person.png){#id .class width=32 height=32px} end users (e.g. compiling pandoc from source) @@ -149,18 +154,17 @@ curl -s -L 'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-l - 🧰 tools - [vscode-haskell](https://github.com/haskell/vscode-haskell), [Haskell playground](https://play.haskell.org/), [nvim-lsp-installer](https://github.com/williamboman/nvim-lsp-installer) -::: - -# Bits and pieces +# The installer in detail ## How does it work? -::: incremental - * **Architectural components** - ![](sh-file.png){#id .class height=32px} bootstrap scripts - ![](exe-file.png){#id .class height=32px} ghcup binary (compiled) - ![](config-file.png){#id .class height=32px} ghcup-metadata + +. . . + * **Logical components** - ![](terminal.png){#id .class height=32px} cli interface - ![](file.png){#id .class height=32px} file layout / installation destination @@ -168,8 +172,6 @@ curl -s -L 'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-l - ![](brick-final-clearbg.png){#id .class height=32px} tui interface - ![](config.svg){#id .class height=32px} configuration -::: - ## Basic CLI (context) * **Architectural components** @@ -348,29 +350,83 @@ curl -s -L 'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-l ![](headache.png){#id .class height=550px} +# Distribution + +## What is distribution? + +* QA gate between "upstream" and "downstream" +* trust relationship (with upstream and downstream) +* release selection and defaults +* binary distribution + +## What happens on e.g. a GHC release + +- testing and inspection of bindists + - manual + - automated at [github.com/haskell/ghcup-metadata](https://github.com/haskell/ghcup-metadata/blob/develop/.github/workflows/bindists.yaml) +- fixing bindists +- building additional bindists (e.g. FreeBSD) + +. . . + +- forks at [github.com/stable-haskell](https://github.com/stable-haskell) + - builds cabal, stack and HLS binaries + - GHC TBD + +## The "recommended" versions (defaults) + +* community adoption (both industry and "open source") +* stack LTS +* HLS support +* known issues and regressions +* GHC HQs opinion and support window +* must be consistent across platforms + # Contributing ## How to contribute -**Some live action:** - -- project structure -- building the project (flags and project files) -- small code walkthrough - -## The future - ::: incremental +- loose project structure (BDFL) +- discuss early +- repositories + - [github.com/haskell/ghcup-hs](https://github.com/haskell/ghcup-hs): documentation, bootstrap-scripts, ghcup exe + - [github.com/haskell/ghcup-metadata](https://github.com/haskell/ghcup-metadata): bindist mapping (YAML), bindist testing +- build with cabal/stack +- communication + - [#haskell-ghcup](https://kiwiirc.com/nextclient/irc.libera.chat/?nick=Guest%7C?##haskell-ghcup) on libera IRC + - [#ghcup:matrix.org](https://matrix.to/#/#ghcup:matrix.org) (bridged with IRC) + - github issues + - [haskell discourse](https://discourse.haskell.org/) (interacting with the community) + +::: + +## Cool things to contribute to + +- documentation +- discussions +- defaults (e.g. "recommended" versions) + - overview of GHC issues and regressions +- Dhall +- manpage (via [optparse-applicative](https://github.com/pcapriotti/optparse-applicative/issues/176)?) +- TUI (ask @lsmor) +- YAML schema for metadata +- integration test +- new commands + - e.g. "health check" + +## Hard things to contribute to + - nightlies - revisions +- cross compiler support - curating old releases +- proper API for e.g. stack - beefed up `ghcup compile` interface - TUF? - supporting more tools (installer DSL) -::: - ## Advanced topics - bootstrap scripts @@ -383,18 +439,3 @@ curl -s -L 'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-l - isolated installs - mirrors -## Cool things to contribute to - -- documentation -- discussions -- deciding on defaults (metadata etc.) -- API for e.g. stack -- Dhall -- manpage (via [optparse-applicative](https://github.com/pcapriotti/optparse-applicative/issues/176)?) -- TUI (@lsmor) -- YAML schema for metadata -- integration test -- cross compiler support -- nightlies -- "health check" command -