commit 60b97544152305da0ea8c21c4575ffe28ff398e8 Author: Julian Ospald Date: Sun May 19 01:05:23 2024 +0800 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..382061c --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +GHCup.html +GHCup.pdf diff --git a/GHCup.md b/GHCup.md new file mode 100644 index 0000000..7896c64 --- /dev/null +++ b/GHCup.md @@ -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) + diff --git a/NOTES.md b/NOTES.md new file mode 100644 index 0000000..15260a1 --- /dev/null +++ b/NOTES.md @@ -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 + diff --git a/README.md b/README.md new file mode 100644 index 0000000..24fcbb4 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# GHCup talk + +Build via: + +```sh +pandoc -t slidy -s GHCup.md -o GHCup.html +``` diff --git a/chain-saw.png b/chain-saw.png new file mode 100644 index 0000000..bdd29e2 Binary files /dev/null and b/chain-saw.png differ diff --git a/feedback.png b/feedback.png new file mode 100644 index 0000000..13a45b7 Binary files /dev/null and b/feedback.png differ diff --git a/ghaction.png b/ghaction.png new file mode 100644 index 0000000..d7cf466 Binary files /dev/null and b/ghaction.png differ diff --git a/linux.png b/linux.png new file mode 100644 index 0000000..ebd2290 Binary files /dev/null and b/linux.png differ diff --git a/open-box.png b/open-box.png new file mode 100644 index 0000000..2d59ffa Binary files /dev/null and b/open-box.png differ diff --git a/qa.png b/qa.png new file mode 100644 index 0000000..2edb79d Binary files /dev/null and b/qa.png differ diff --git a/survey.png b/survey.png new file mode 100644 index 0000000..2460fa8 Binary files /dev/null and b/survey.png differ diff --git a/user.png b/user.png new file mode 100644 index 0000000..9afed7b Binary files /dev/null and b/user.png differ