Initial commit

This commit is contained in:
Julian Ospald 2024-05-19 01:05:23 +08:00
commit 60b9754415
No known key found for this signature in database
GPG Key ID: 4275CDA6A29BED43
12 changed files with 96 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
GHCup.html
GHCup.pdf

56
GHCup.md Normal file
View File

@ -0,0 +1,56 @@
% GHCup
% Julian Ospald
% June 07, 2024
# GHCup
## Intro
[Haskell Survey 2022](https://taylor.fausak.me/2022/11/18/haskell-survey-results/#s2q1)
![](survey.png)
## What is GHCup?
```sh
curl -s -L 'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-linux.tar.xz' |
tar -xJ -C /tmp &&
cd /tmp/ghc-9.6.5-x86_64-unknown-linux/ &&
./configure --prefix="$HOME/.local" &&
make install &&
rm -rf /tmp/ghc-9.6.5-x86_64-unknown-linux/
```
## How it started
* 🤹 small team at work on different platforms
* 🧑‍💻 SHELL + POSIX
* 🦾 first version was 165 LOC
* 🙏 only installer at that time was stack
## Goals
- ☮️ unification
- unix principles
- 🛠️ do one thing and do it well
- ⚗️ pipes, compose stdout and stdin
- 🎁 good re-distribution
- 🛣️ user experience (get out of the way)
## To install or not install
* [https://hasufell.github.io/posts/2023-11-14-ghcup-is-not-an-installer.html](https://hasufell.github.io/posts/2023-11-14-ghcup-is-not-an-installer.html)
### Concerns
* ![](open-box.png){#id .class width=32 height=32px} installer
* ![](linux.png){#id .class width=32 height=32px} distribution channel
* ![](feedback.png){#id .class width=32 height=32px} feedback channel
* ![](qa.png){#id .class width=32 height=32px} testing/QA
* ![](user.png){#id .class width=32 height=32px} deciding on defaults (e.g. "recommended" GHC version)
* ![](chain-saw.png){#id .class width=32 height=32px} holistic toolchain experience
- stack integration
- VSCode integration
- cabal-install integration
* ![](ghaction.png){#id .class width=32 height=32px} CI (e.g. github actions)

31
NOTES.md Normal file
View File

@ -0,0 +1,31 @@
- vision, usability
- main GHCup types
- metadata versions
- metadata variants
- ghcup-metadata CI (bindist install)
- distro selection (libc compatibilty etc.)
- stack
- how we manage metadata
- Dockerfiles
- stack integration
- Version file, Types file
- file layout
- reproducibility
- security
- HLS/GHC interaction
- for the future
- cool things to contribute to
- deciding on defaults (metadata etc.)
- API for e.g. stack
- Dhall
- manpage
- TUI
- schema
- integration test
- revision
- documentation
- cross
- nightlies

7
README.md Normal file
View File

@ -0,0 +1,7 @@
# GHCup talk
Build via:
```sh
pandoc -t slidy -s GHCup.md -o GHCup.html
```

BIN
chain-saw.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
feedback.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
ghaction.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
linux.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
open-box.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
qa.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
survey.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
user.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB