Update
This commit is contained in:
parent
3ad0a34337
commit
16511b852b
115
GHCup.md
115
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
|
||||
|
||||
:::
|
||||
. . .
|
||||
|
||||
- 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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user