Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Owners" needed for the "alternative installation options" #170

Closed
tomjaguarpaw opened this issue Feb 8, 2022 · 32 comments
Closed

"Owners" needed for the "alternative installation options" #170

tomjaguarpaw opened this issue Feb 8, 2022 · 32 comments

Comments

@tomjaguarpaw
Copy link
Collaborator

tomjaguarpaw commented Feb 8, 2022

It would be great to have "owners" for each of the "alternative installation options" (listed below). That is, for each alternative installation option there should be someone who is responsible for making sure that installation option is specified clearly, works, and is kept up to date. If we can't find an owner for an installation option then I suggest we remove that installation option because (a) lack of owner probably implies the option is not very popular anyway and (b) the information is likely to get outdated and broken, causing more harm than good.

If anyone has any thoughts then please comment here. Unless the discussion here suggests otherwise, after a week or two I'll add tickets for each installation option, to find an owner or remove the option. Once we have those tickets we can post widely on the usual Haskell channels to find volunteer owners.

Current alternative installation options

@tomjaguarpaw
Copy link
Collaborator Author

It may also be useful to bear in mind a ranking of most popular Linux distributions, such as the ranking from DistroWatch.

@jaspervdj
Copy link
Contributor

We discussed this during the Haskell.org meeting and we would prefer to significantly shorten the alternative installation options, or remove it entirely.

@tomjaguarpaw
Copy link
Collaborator Author

OK, so if anyone has any strong feelings about continuing to present "alternative installation options" please speak up, especially if you can help us support them with your expertise!

I will also circulate this on Haskell Discourse at some point to widen the debate.

@tomjaguarpaw
Copy link
Collaborator Author

Posted to

@Pitometsu
Copy link

Just keep nix, please.

@Ericson2314
Copy link
Contributor

Ericson2314 commented Apr 2, 2022

CC @Mistuke for Chocolatey. I of course like Nix too.

I am thinking it would be better to condense this section then cull it. I don't like the trend of languages making their own *up and so don't feel great about steering people towards it.

With the upcoming work on the GHCJS and Asterius upstreaming, and recent developments like https://gitlab.haskell.org/ghc/ghc/-/merge_requests/5965 I think the following will be true:

  • Stack and ghcup will increasing by overkill, as cabal build ghc and stack build ghc just work, and the right solution is to think about caching builds for arbitrary packages rather than special-casing GHC.

  • Hopefully more web development / cross compilation will mean that the "single target platform" GHCs than stack and ghcup give one are underpowered and insufficient anyways.

So while I am very sympathetic with the idea of cleaning up this page, and in particular don't dispute these truths:

  • the page is an awkward verbose compromise to broker peace between various factions
  • ghcup and stack are indeed the most popular options right now

I think culling the alternatives right now would be skating to the where the puck is currently, not skating to where the puck is going.

@tomjaguarpaw
Copy link
Collaborator Author

I think culling the alternatives right now would be skating to the where the puck is currently, not skating to where the puck is going.

That's OK, once the puck has demonstrably gone somewhere we can skate there after it!. I don't think this puck moves especially quickly!

@tomjaguarpaw
Copy link
Collaborator Author

Regarding nix, what we have at the moment is

nix: a popular cross-distro package manager, aiming to provide reproducible builds and declarative configuration

That's unlikely to go out of date, but not very helpful either. Nix folk presumably already know how to get Haskell. On the other hand we have a lot of Nix expertise in the Haskell community, so maybe someone will step up to write and maintain a Nix alternative installation option.

@pwm
Copy link

pwm commented Apr 2, 2022

That's unlikely to go out of date, but not very helpful either. Nix folk presumably already know how to get Haskell. On the other hand we have a lot of Nix expertise in the Haskell community, so maybe someone will step up to write and maintain a Nix alternative installation option.

I maintain nixkell a small haskell-nix installer/skeleton. I'm not saying it should go on haskell.org but I agree that a Nix installation should be there given the sizeable intersection of the two communities. Also whatever ends up on there should be better than what is currently there, which I agree is not helpful at all.

@tomjaguarpaw
Copy link
Collaborator Author

a Nix installation should be there given the sizeable intersection of the two communities

The way I see it is, if there is sizeable support for a particular option then someone will step up to be an official owner of it. I hope someone will do so for a nix installation method. @pwm, if enough people like your nixkell, then perhaps that could be it! I'm happy to hear about other alternatives.

@TikhonJelvis
Copy link
Member

Just keep nix, please.

What does recommending Nix on the Haskell website accomplish? I am a very active Nix and NixOS user myself, and I still don't think a note about Nix on the Haskell downloads page would be useful.

When somebody comes to the downloads page, I see two cases: either they already use Nix, or they don't.

If somebody already uses Nix, they don't need a note on the downloads page. They might need (better) documentation about how to use Nix for Haskell—but that's something that needs to live in the Nix world. From our point of view, it isn't even clear where to link! (The Nix/Nixpkgs manual? The Nixpkgs Haskell documentation? Haskell.nix? The Nix wiki?)

If somebody isn't using Nix yet, we don't want to recommend it just to get Haskell. The downloads page is primarily useful for beginners, so picking Nix up just to install Haskell would be taking on two steep learning curves simultaneously! Grappling with Nix when you just want to do some Haskell—you don't care about learning Nix for its own sake— could easily turn a beginner off Nix or even off Haskell.

So what does that leave us? What's the profile of a visitor to haskell.org for whom a note about Nix would be useful?

For what it's worth, I also think this is true for most specific distro documentation. Arch/Gentoo/SUSE/etc1 users don't need distro-specific installation instructions; they'll either use non-distro-specific tools or rely on their own tools and documentation. I see a reasonable case for instructions on Ubuntu or Homebrew because those are de facto default tools that beginners use without much specific knowledge or experience, but Nix today is pretty much the opposite of that.

Footnotes

  1. Arch + Haskell is a bit of a special case because it might make sense to actively recommend that Arch users don't get anything Haskell-specific from Arch—but the Downloads page doesn't seem like the right place for that either!

@tomjaguarpaw
Copy link
Collaborator Author

f-a on Discourse points out that Nix is used as much as ghcup according to the Haskell Survey.

@Ericson2314
Copy link
Contributor

Ericson2314 commented Apr 2, 2022

Yeah I agree @TikhonJelvis that haskell.org boosting Nix isn't important. It's more like I feel haskell.org is implicitly saying "don't trust your system package manager" that irks me. Traditional distros being terrible leading to every language developing its own branded "*up" tool is an easily understood state of affairs.

That's why I would prefer a more general vague wording that just admits there are alternatives, warns in some cases they will give you out of date stuff, but also says in other cases they won't mand might come with their own benefits.

I just want to start to descalate the disto vs language cold war, and keep door open to a better future.

@tomjaguarpaw
Copy link
Collaborator Author

That's why I would prefer a more general vague wording that just admits there are alternatives, warns in some cases they will give you out of date stuff, but also says in other cases they won't mand might come with their own benefits.

Could you be more concrete about some wording you would like to see?

@ketzacoatl
Copy link
Contributor

@Ericson2314 I think you have valid points, however, I also think the end-user experience should take precedence - IMHO this page should focus on what provides the best onboarding experience. It can certainly link to other pages with vague recommendations for alternatives, but to do so on this page directly detracts from the page providing clear and actionable recommendations for onboarding users.

One great benefit to these changes is that it also keeps the recommendations well-maintained, which reduces support costs fielding questions and such.

the page is an awkward verbose compromise to broker peace between various factions

While I understand that this is the way it is now, I think the end-user experience needs to be more important than that.

@tonyday567
Copy link

Once you remove alternative installation options, the page no longer describes the installation of the haskell toolchain, nor is it really a download section.

Having the big four (GHC, cabal-install, HLS and stack) at the top is confusing. It makes more sense to headline the whole page with a link to GHCup, and then suggest to follow the provided links if you want to install the toolchain manually. Add in a comment that stack is an alternative toolchain installation option to GHCup in the stack section, and it flows well.

This order would help clarify the actual 'Installation Instructions' 1. 2. list which is confusing as it stands. GHCup installs stack if you want but it is not listed as such. And then the instructions could be easily interpreted as having to complete both steps in order to install the whole toolchain - it needs at least an or.

@tomjaguarpaw
Copy link
Collaborator Author

Once you remove alternative installation options, the page no longer describes the installation of the haskell toolchain, nor is it really a download section.

I'm not sure what you mean here. Do you mean it should continue to list the alternative installation options? Could you elaborate on the rationale?

The other issues are worth discussing but off-topic for this issue, I think. I would welcome you opening another ticket to discuss them.

@ketzacoatl
Copy link
Contributor

While I think this is a different issue entirely, +1 on renaming the downloads page to "install haskell", "get started", or similar.

@tonyday567
Copy link

I am in favour of removing the alternative installation instructions. Once they are removed, the page has a more "getting started" or "install" feel to it. There are no downloads on the page at all, and the word 'download' doesn't seem the right label for the section.

Given the brevity, once the alternatives are removed, I don't think you could say that it describes the Haskell toolchain and its installation. The GHCup site and the individual toolkit sites of the big 4 all do a great job of that already.

The other issues are worth discussing but off-topic for this issue, I think. I would welcome you opening another ticket to discuss them.

Sure thing.

@AntC2
Copy link

AntC2 commented Apr 3, 2022

(I'm commenting here from the thread on Discourse.)

(And just FYI/in case you're overlooking something.)

The haskell.org/downloads page includes Official bindists, which points to the GHC downloads page. I'm bemused by the comment

The installation process is a bit manual, so this is meant for power users.

I'm not a power user. The 'installation process' is to download a .tar and unpack it. Point and click. Nothing "manual". That's all I've ever used. I don't understand those other options -- I regard them as for 'power users' -- they all seem to involve going to a command line and typing in gobbledygook. I'm a Windows user; I don't do command line.

@ParetoOptimalDev
Copy link

What about something like this format, not necessarily the wording:

Recommended: Get started easily with ghcup

Advanced: See [Get started using stack] or [system package manager installation options]

@ParetoOptimalDev
Copy link

What does recommending Nix on the Haskell website accomplish? I am a very active Nix and NixOS user myself, and I still don't think a note about Nix on the Haskell downloads page would be useful.

To clarify before I say more , I'm speaking of using Nix for providing the ghc/cabal/hls toolchain below and not a nixified Haskell project like nixkell mentioned above.

I think the small but perhaps growing number of new to nix/nixos and new to Haskell users could use a pointer to "install with nix like ...".

Then sometimes users exhaust available options, run into bugs with all options, and leave out of frustration. Perhaps nix could be a failsafe for the case of providing a working toolchain.

For example in the past my coworkers have had something break on Ubuntu and installing that software with Nix let them reinstall a working version rather than wait for some hotfix or update.

So perhaps a "nothing else working, try using Nix" would be useful. I imagine most users that encounter problems won't seek support no matter how easy it is, but they may try another option.

@ketzacoatl
Copy link
Contributor

So perhaps a "nothing else working, try using Nix" would be useful.

Right, but that message for those users should include/link to specific instructions, and then someone should be responsible for making sure those instructions/that link is maintained/remains functional.

@tonyday567
Copy link

I didn't realise how popular nix is becoming:

https://taylor.fausak.me/2021/11/16/haskell-survey-results/#s2q1

If a third of existing Haskell users use nix then this would flow on to new users adopting it, and further jsutify adding it to the page.

@sullyj3
Copy link

sullyj3 commented Apr 4, 2022

The problem with Nix is that there are always umpteen different ways to do things, and none of them are considered standard. You can add ghc to systemPackages, use cabal2nix, or stack2nix or haskell.nix, with or without flakes, maybe ghcWithPackages. Using nix-env or the new style nix profile. Maybe only ever in a project specific nix-shell definition, or using home manager. There are probably a bunch more I'm not thinking of. If Nix should be mentioned, it's not clear to me what specific route should be recommended.

I think dealing with all of that should be left to Nix documentation (or more realistically at this stage, someone's blog).

A getting started guide for a language really ought to provide a single blessed path that beginners are expected to follow for uniformity. And I think that should be ghcup for access to ghc and ghci when learning the absolute basics, plus stack for an introduction to projects and dependencies. People who want to do something different will figure it out.

@ketzacoatl
Copy link
Contributor

A getting started guide for a language really ought to provide a single blessed path that beginners are expected to follow for uniformity. And I think that should be ghcup for access to ghc and ghci when learning the absolute basics, plus stack for an introduction to projects and dependencies. People who want to do something different will figure it out.

Well said! 💯

@maralorn
Copy link
Contributor

maralorn commented Apr 7, 2022

As a nixpkgs haskellPackages maintainer I would like to chime in here (acknowledging that I am partially repeating others):

  • I agree that pitching nix to Haskell newbies is an exceptionally bad idea from a learning curve perspective.
  • I am in favor of pushing ghcup as primary means of installation, but installing Haskell via ghcup on nixos doesn’t work. That’s why I would very much appreciate a hint with a link to our documentation.
  • I volunteer to be "owner" for the nix installation option.

@tomjaguarpaw
Copy link
Collaborator Author

tomjaguarpaw commented Apr 7, 2022

Thanks @maralorn! In which case can you provide a PR changing the following Nix section to whatever you think is appropriate?

* [nix](https://nixos.org/): a popular cross-distro package manager, aiming to provide reproducible builds and declarative configuration

And can you add a "Markdown comment" next to it like

[](This installation method is owned by @maralorn)

@tomjaguarpaw
Copy link
Collaborator Author

Feedback

Feedback from circulating this to various Haskell fora.

On Reddit in particularly there was very strong support for simplifying by removing references to anything except ghcup and Stack.

It was pointed out that Nix has usage similar to ghcup, however, even Nix users admitted that it is not appropriate for beginners

There was a lot of support for keeping around at least some reference to installation through operating system package managers even though the packages are not always up to date. The support for operating system package managers was very strong on haskell-cafe and somewhat strong on Discourse, yet nearly completely absent on Reddit.

We shouldn't advertise Arch because its insistence on dynamic linking leads to very broken workflows.

@sullyj3
Copy link

sullyj3 commented Apr 11, 2022

I can appreciate the argument that system package managers should be preferred where possible, but I would only ever use them to install ghcup or stack. I'm confused about why one would want to use them to manage ghc directly, when you can only have one installed at a time, and it's likely out of date. Solutions like curl | sh are not ideal, but they're a good compromise as a means of providing a single straightforward method to support, and security concerns are overblown

@tomjaguarpaw
Copy link
Collaborator Author

Closed via #194

@ParetoOptimalDev
Copy link

I agree that pitching nix to Haskell newbies is an exceptionally bad idea from a learning curve perspective.

Nix to simply bootstrap ghc, cabal, and hls is a good idea from a learning curve perspective especially if the new Haskeller is a novice Nix user.

Nix to manage Haskell projects for a beginner though is definitely bad for reducing learning curve.

I might be preaching to the choir and you'll probably mention this in your instructions, but wanted to make this distinction so others know it's a simple option to use Nix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests