This commit is contained in:
Julian Ospald 2024-06-01 21:31:00 +08:00
parent 3ad0a34337
commit 16511b852b
No known key found for this signature in database
GPG Key ID: 4275CDA6A29BED43
1 changed files with 81 additions and 40 deletions

121
GHCup.md
View File

@ -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