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

Download page and Haskell Platform #176

Open
jaccokrijnen opened this issue Aug 30, 2016 · 32 comments
Open

Download page and Haskell Platform #176

jaccokrijnen opened this issue Aug 30, 2016 · 32 comments

Comments

@jaccokrijnen
Copy link

(Note: this is just a suggestion, I hope to contribute something constructive in this recent heated discussion)

As @gbaz mentioned here:

Are there proposals for how to update the page to make this more clear? Those would be welcome, but ideally tracked under another ticket. This discussion hopefully can stick to the name given to the minimal platform with the additional understanding that there will also be other differentiating text elsewhere.

Here's a quick mock-up:
suggestion

Other distributions would include Stack and HP full with a more technical motivation (e.g. Haskell platform about the extra libs, why that may be useful for limited network access etc.)

After reading through the recent discussions, it seems that this would address most problems:

  • It is completely straightforward what to choose for beginners new to the language, instead of being presented with different options and lengthy descriptions.
  • Both cabal and stack workflows are available
  • A getting started guide/example is the logical next step for new people (this should probably use stack, as it seems to be quite stable and well-received by new users)
  • Other advanced/alternative Haskell distributions are also available (stack/full platform)

I've only seen two convincing technical arguments in the stack vs HP discussion.

@bitemyapp
Copy link

bitemyapp commented Aug 30, 2016

I think this is a less confusing direction for the downloads page, although I'd note that the Haskell Platform website haskell.org links to is a bit slow. The platform website is also redundant given this kind of presentation, but I'd be in favor of eliding that anyway and just offering the download links for platform directly from haskell.org anyway.

I'd be a lot more comfortable with this presentation of the downloads page if Stack was elided from the HP installers, minimal and full both.

It would probably help if the pages better educated users on what they were actually choosing between, which exactly zero proposals for modifications to Haskell.org have attempted.

It's roughly about:

  1. cabal-install vs. Stack for installing, managing packages
  2. System installed GHC vs. Stack managed GHC

You can mix and match these choices at will but each have different failure modes that vary substantially depending on user workflow. Nothing is perfect.

I happen to believe based on substantial experience that Stack managed packages + Stack managed GHC is the most reliable, least fraught setup for typical users. I also recognize that it's not ideal for Nix users or people with custom build setups (elaborate Makefiles, Shake, etc.).

@gbaz
Copy link

gbaz commented Aug 30, 2016

@jaccokrijnen that's really nice looking! did you mock it up in html or just photoshop? If the former, a pointer to the files, etc. would be helpful (assuming this gets traction).

@jwiegley
Copy link

I really like the presentation @jaccokrijnen.

@jaccokrijnen
Copy link
Author

@gbaz it's some quick html, I could spend some time to make it functional but I think for the purposes of discussion the screenshot might be enough?

@jaccokrijnen
Copy link
Author

jaccokrijnen commented Aug 31, 2016

@bitemyapp I don't really follow your reasoning on why stack should be omitted from the HP (but I'm not a stack user, maybe I'm missing something).

cabal-install vs. Stack for installing, managing packages

As far as I know these tools can easily coexist on a system

System installed GHC vs. Stack managed GHC

So can these tools (with the exception of haskell/haskell-platform#251)

You can mix and match these choices at will but each have different failure modes that vary substantially depending on user workflow. Nothing is perfect.

Can you give an example?

I think the actual point of discussion should be the content of the getting-started guide, somewhat based on the haskell-lang.org:


Getting started

  1. Create a text file with the following content and save it as HelloWorld.hs

    main :: IO ()
    main = putStrLn "Hello world"
  2. Open up a terminal and run runghc HelloWorld.hs

  3. Learn more about...


Perhaps more stuff at step 3, but this is what comes to mind for new users.

This way there is also no need to directly choose between stack or cabal. From a quick look at the first five language tutorials on the wiki I find they all instruct to run ghci.

It would probably help if the pages better educated users on what they were actually choosing between, which exactly zero proposals for modifications to Haskell.org have attempted.

The referred documentation for setting up a project in step 3 (a wiki page?) could explain this.

@ghost
Copy link

ghost commented Aug 31, 2016

Perhaps "Downloads" (in the menu) should be renamed "Getting Haskell".

This option is more descriptive than "Downloads" ("Downloads of what?"), and more including than the often proposed alternative, "Getting started" ("Started? I've programmed in Haskell for years!").

@Blaisorblade
Copy link

  • "Getting started" and "Alternative Download" have indeed different goals. Some people want one path for "Getting started", others want all the options on "Downloads".

A common setup is "Getting started" pointing to "Alternative downloads", but we can hash details. Important: new users do exist and some do need to be handheld to One Way.

@jaccokrijnen

As far as I know these tools can easily coexist on a system

Yes, but:

  • Users "getting started" want to learn one tool, not both. Their UIs are significantly different—while I'm a happy stack user, learning stack after cabal experience wasn't immediate, and viceversa.
  • Installing a package with one tool doesn't install it with the other (in fact, the question arguably doesn't even make sense because stack doesn't have a single per-user DB, and with cabal without new-build you should not use the per-user DB without great care).
  • Try installing a package with cabal (no sandbox) with a stack-managed GHC. Marlow wrote "it doesn't work" on haskell-community, and I mostly agree. There might be tricky incantations that manage that, but there are more that fail.
  • With Stack-managed GHC (and @bitemyapp is adamant about that, as he mentioned), ghci doesn't work (on purpose). stack ghci is not equivalent (regardless of the disinformation about it), but might do.

@Blaisorblade
Copy link

But I actually came here (as suggested by @gbaz on Reddit) to report a current issue we should beware: for cabal we should ensure we mention a safe path, that is using sandboxes.

Regarding user experience, the current https://www.haskell.org/downloads page still suggests non-sandboxed installations first:

You can install a package using cabal by running:

$ cabal update
$ cabal install the-package

I've seen the warning afterwards about sandboxes, but that's too late. Usability-wise that's still a trap for new users.

@jaccokrijnen
Copy link
Author

@Blaisorblade

Important: new users do exist and some do need to be handheld to One Way.

Exactly.

Users "getting started" want to learn one tool, not both. Their UIs are significantly different—while I'm a happy stack user, learning stack after cabal experience wasn't immediate, and viceversa.

Absolutely, that's why I'm proposing that the getting started "guide" just uses runghc and no project tool (stack/cabal). Most newcomers start with the basic language tutorial anyways. And I've done a quick check: most tutorials like Learn you a Haskell start their chapters with simple ghci, not package management etc.

Installing a package with one tool doesn't install it with the other (in fact, the question arguably doesn't even make sense because stack doesn't have a single per-user DB, and with cabal without new-build you should not use the per-user DB without great care).

Right, but this seems a matter of documentation, the link I imagine in step 3 on project tools should clearly explain that there are two seperate tools and probably steer newcomers to stack (it seems to have the best "new user" experience).

Try installing a package with cabal (no sandbox) with a stack-managed GHC. Marlow wrote "it doesn't work" on haskell-community, and I mostly agree. There might be tricky incantations that manage that, but there are more that fail.

But who would do that? Again, it should be obvious from the documentation that these are two completely different tools.

With Stack-managed GHC (and @bitemyapp is adamant about that, as he mentioned), ghci doesn't work (on purpose). stack ghci is not equivalent (regardless of the disinformation about it), but might do.

That's concerning, can you give me more details? I have both stack and cabal on this system and never have problems running ghci. @bitemyapp?

@Blaisorblade
Copy link

Blaisorblade commented Sep 1, 2016

Let's clarify what most mean by "stack-managed GHC".

Apparently you installed some GHC version system-wide—then stack will use it by default (up to 1.2.0). In that scenario, stack and cabal coexist as you're discussing, and ghci does as well. For me and you that works perfectly.

There, Stack will also install and manage other GHC versions by itself as needed. That's not what we mean by "stack-managed GHC" though. We mean the scenario where no GHC can be found on the PATH, but there are only versions stack installs and knows how to find—while cabal doesn't.

The advantage is: the only GHC you get is the correct one for your project. Hence @bitemyapp is adamant this is more robust and pushed stack to switch to this by default in next cycle.

The disadvantage is: you lack direct access to GHCi and can't use cabal.

Once this is clear, all the claims about stack-managed GHC that you disagreed with should make more sense.


Regarding GHCi, a common replacement that works with stack-managed GHC is stack ghci.

Without a project it uses the "global" project, the one where stack install will put libraries go by default till you configure a project.

But in general, stack ghci loads the REPL for your project, similar to cabal repl, which is often a good thing, but doesn't have access to other libraries. Startup is just very slow on big projects (for either tool). That's a slightly more advanced scenario, but this is why I distinguish stack ghci/cabal repl from stack exec ghci (which simply runs the GHCi of the stack-managed GHC).

@jaccokrijnen
Copy link
Author

. In that scenario, stack and cabal coexist as you're discussing, and ghci does as well. For me and you that works perfectly.

But that is the scenario after instelling the platform, is it not?

There, stack installs ...

What do you mean with "there"? In the global PATH? I suppose not, since you mention cabal won't find it.

So if I understand correctly, the point you're making is that the ghci or -- interactive command (when run on a stack-managed ghc) does not work.

Running ghci with a globally installed ghc does. Which is the scenario with the platform. You get ghc+cabal and stack which may use the former ghc.

I think I am missing your point.

Once this is clear, all the claims about stack-managed GHC that you disagreed with should make more sense.

I wasn't disagreeing per se , just asking how those scenarios are likely. And that's basically still my question: A user asking cabal to use a stack-managed ghc seems very unlikely. And I understand that there's no problem with the globally installed ghci that comes with the platform.

@Blaisorblade
Copy link

The topic is not just "what happens if you install the HP". You also propose having a stack-only install on the webpage, so what happens there is relevant—and by now I hope it's clear cabal won't work well there.
Stack-only also matters because it gives (to this day) the most coherent stack experience—arguably even if you ignore current issues with HP-installed stack.* Hence, I agree with @bitemyapp's comment about the available choices.

*I'm not qualified to fully argue that point and I'm not sure this is the place; taking this point at face value is probably best. But since you'd like some evidence (which is reasonable), here's my 2 cents:

@jaccokrijnen
Copy link
Author

jaccokrijnen commented Sep 9, 2016

The topic is not just "what happens if you install the HP".

Well, this discussion was actually about @bitemyapp not being comfortable with including stack in the HP. I still haven't heard any convincing reason why this shouldn't be the case (except for the obvious open issue on system ghc). @bitemyapp 's argument on "wasted disk space" doesn't seem serious.

But thanks for clarifying the situation on stack-managed ghc and its disabled ghci!

You also propose having a stack-only install on the webpage, so what happens there is relevant—and by now I hope it's clear cabal won't work well there.

Sure, but then you're talking about stack+cabal and no global ghc? (I'd still like this confirmed: are stack-managed GHC's in PATH yes or no? If so, your concerns would make more sense to me)

Stack-only also matters because it gives (to this day) the most coherent stack experience—arguably even if you ignore current issues with HP-installed stack.*

With stack-only, do you mean a stack installation and no cabal/global ghc installation? I would like to think of "stack-only" describing a workflow just like a cabal-only workflow. These workflows should be part of documentation in the getting started guide and I think it should currently be biased to stack for new users. The platform installer should only be concerned with putting executables on a user's system.

I think it's not necessary to go into more detail about the stack & global ghc issues, haskell/haskell-platform#251 obviously has to be solved before a next HP, whether it is on HP's side by instructing stack to no use system GHC or stack defaulting to no-system-ghc.

@bitemyapp
Copy link

bitemyapp commented Sep 9, 2016

@jaccokrijnen >@bitemyapp 's argument on "wasted disk space" doesn't seem serious.

That's not the main reason at all. It's an old version of Stack and it currently has issues in how it is packaged with HP.

One is that it shouldn't really default to using the system-ghc furnished by HP at all.

I didn't want to get into it because I know nothing I say will make a difference here. However, in my absence if you could refrain from strawmanning my reasons, that would spare me having to reply again.

Thanks!

@gbaz
Copy link

gbaz commented Sep 9, 2016

@jaccokrijnen The issue you mention is solved by a PR to stack that improves how it handles using system ghcs without msys.

I've been a bit busy (and ill) lately but as far as I know the plan is to move ahead as per: https://mail.haskell.org/pipermail/haskell-community/2016-September/000184.html

To that end, anything you could do to get this very nice design work ready (obviously sans text, which we can sort out later) to be merged in would be great. If its just an html dump and you want me or someone else to actually pull it into the proper binary -- I'm fine with that, if it makes things easier. I'll also be traveling a little next week but should be able to pick up and run with things the weekend after this coming.

@Blaisorblade
Copy link

are stack-managed GHC's in PATH yes or no?

Stack-managed GHCs are indeed not in the PATH, as I tried to explain.

With stack-only, do you mean a stack installation and no cabal/global ghc installation?

Exactly. That's also what is currently available under https://www.haskell.org/downloads#stack. Your mockup appears to still include that option.

I would like to think of "stack-only" describing a workflow just like a cabal-only workflow.

"Stack-only" alone is ambiguous: "stack-only workflow" and "stack-only installation" mean different things. My message only talked about "stack-only installation".

@jaccokrijnen
Copy link
Author

I didn't want to get into it because I know nothing I say will make a difference here.

Hi @bitemyapp , sorry if this is a sensitive topic to you but I am not involved in any of the history with you and this repo. If you haven't read the above, I was actually trying to understand your concerns and weigh the pros/cons before implementing anything.
So I'd appreciate it if you wouldn't assume bad faith on my side.

However, in my absence if you could refrain from strawmanning my reasons, that would spare me having to reply again.

To get back at your first post:

I'd be a lot more comfortable with this presentation of the downloads page if Stack was elided from the HP installers, minimal and full both.

But you did not give any explanation, I had collected these two, which seem reasonable:

  1. Slow release cycles might result in an outdated stack (and other tools).
  2. Stack in HP does not find installed msys when using system ghc haskell/haskell-platform#251

And I found that: 1. Stack has an automated upgrade feature, which could be used in the installer 2. has to be solved. And yes, stack not using system-ghc seems the way to go.

Furthermore, @Blaisorblade showed that mixing stack/cabal/global ghc usage is a bad idea. And I think this is an issue of documentation/getting-started (except for haskell/haskell-platform#251) and not relevant for which binaries HP puts on a system. Then I wrote this suggestion:

Getting started

  1. Create a text file with the following content and save it as HelloWorld.hs

    main :: IO ()
    main = putStrLn "Hello world"
  2. Open up a terminal and run runghc HelloWorld.hs

  3. Learn more about...

in which I also tried to address your second concern ("It would probably help if the pages better educated users on what they were actually choosing between"). This way, we can the "mixed workflow" issue from the actual provided binaries.

Please let me know what you think about the actual contents of the discussion and point out things I might've missed. You can also pm me on reddit (spaceloop) if you don't want to discuss it here.

@jaccokrijnen
Copy link
Author

@gbaz Thanks, I can try to get the design working, but I'd first like to have a good overview of the pros/cons before proceeding (as I wasn't involved in the discussion on the download page of last year).

@jaccokrijnen
Copy link
Author

jaccokrijnen commented Sep 9, 2016

Exactly. That's also what is currently available under https://www.haskell.org/downloads#stack. Your mockup appears to still include that option.

For that option, any details on getting started should just point directly to the stack documentation.

You also propose having a stack-only install on the webpage, so what happens there is relevant—and by now I hope it's clear cabal won't work well there.

This scenario suggests having a cabal with no global ghc and the user actively trying to point cabal to a stack-managed ghc. That seems a bit unlikely. And would you agree with deferring the choice about cabal/stack to the end of the getting-started? I think that would be ideal for newcomers to the language.

I really appreciate you answering all my technical questions, by the way!

@Blaisorblade
Copy link

In sum, you're set on providing instructions that install stack through HP, instead of installing stack alone. It is certainly true that there are cases in which this works. Under that assumption, your plan makes sense.

I'm not convinced by that assumption, but I'm tired of arguing for it, especially when the response to some of my arguments is just "I haven't seen convincing reasons". I don't even know if you've seen commercialhaskell/stack#2548. I don't want to argue for it again.

However, it seems it has already been decided to offer the HP with stack by default by a different discussion, so I'd better let it go. I'll be unsubscribing from the thread shortly.

The platform installer should only be concerned with putting executables on a user's system.

False. A program installer should ensure that after installation, the installed program works out-of-the-box. I've already been over this particular misconception.

@gbaz
Copy link

gbaz commented Sep 9, 2016

@gbaz Thanks, I can try to get the design working, but I'd first like to have a good overview of the pros/cons before proceeding (as I wasn't involved in the discussion on the download page of last year).

@jaccokrijnen : I take it by pros/cons you mean of the choice of how we point people? To be honest I think the discussion here has covered the bases pretty well, and I think its covered the pros/cons pretty well at this point.

In discussions like these, the default assumption is that if everyone has a full understanding, something like consensus can be reached. So I can see how it might feel that you're missing some facts. since there's not really a consensus. But this issue has been discussed to death and there are still matters where it seems people have taken different evaluations of the relative weight of certain concerns. At the same time, on the haskell-community mailinglist, as has been mentioned, the idea, when proposed, of having an HP-focused downloads page paired with a "getting started" page that has a stack-based workflow (to recognize the concern that stack seems to have a better onboarding path) seemed to attract an almost all-around positive response, at least moreso than any previous suggestions. So, based on that discussion, where we seemed to find some traction and common ground, I think it would be best to proceed in that direction.

@snoyberg
Copy link

snoyberg commented Sep 9, 2016

I should probably get this out there officially before I get accused of backpedaling later:

  • How these two pages are linked to from the rest of the site will be vitally important to it being a widely accepted solution. For example, if there are many prominent links to a downloads page, with that page featuring the platform, and no prominent links for the getting started page, this would not be something I'm happy with.
  • I still believe that any promotion of HP should happen after the HP+Stack bugs previously mentioned are addressed.
  • I still consider the promotion of the HP at all from its current position to be a bad idea and contrary to what the majority of the community feels is best, but I'm willing to compromise on this if the getting started page is clearly enough linked to.
  • It's still a major concern that there is no clear "next steps" to follow up with an HP download. Stack has such guides (and we're planning on making even more targeted materials on the matter), but the Cabal user guide which is linked is actively harmful (it provides recommendations which are contrary to best practices).
  • As I've expressed in the past, I am very concerned that poor packaging of Stack with HP combined with a slow release process is likely to result in spurious Stack bug reports, as happened in the past from this downloads page promoting outdated GHC for Mac OS X downloads.

In other words: I've been misquoted in the past as supporting a direction when in fact a plan I compromisingly agreed to was half implemented. Let me say clearly that I have massive reservations about what is being suggested, big concerns that the details of implementation will be suboptimal, and am only grudgingly on board with moving forward with it, despite it being contrary to community best interests and publicly stated opinions.

@snoyberg
Copy link

snoyberg commented Sep 9, 2016

Also, one more thing: it seems fairly obvious from a lot of these arguments around Stack vs HP that many people opposed to Stack have not actually tried it. I'm not making that accusation against any individual in particular, but I would recommend that someone who wants to express an opinion on the best way for users to get started with Haskell actually test the methods under discussion. I did exactly that with the new HP MInimal installer, which is where some of my points of concern came from.

@gbaz
Copy link

gbaz commented Sep 9, 2016

On the getting started and downloads page, I think the intention is that they both be in the top nav bar, and further that the downloads page link to the getting started page. The "next steps" from an hp download would be to direct people to the getting started page, in my understanding.

@snoyberg
Copy link

snoyberg commented Sep 9, 2016

That sounds good in principle.

@jaccokrijnen
Copy link
Author

jaccokrijnen commented Sep 9, 2016

I'm not convinced by that assumption, but I'm tired of arguing for it, especially when the response to some of my arguments is just "I haven't seen convincing reasons". I don't even know if you've seen commercialhaskell/stack#2548. I don't want to argue for it again.

You're taking that out of context, I've initially commented to your concerns point by point and you have not replied to most of these comments, except for my questions (which I appreciate). I have agreed that the technical issues linked in this thread should first be resolved and that your concerns regarding mixed workflows should be addressed through proper documentation.

The platform installer should only be concerned with putting executables on a user's system.

False. A program installer should ensure that after installation, the installed program works out-of-the-box. I've already been over this particular misconception.

Again, that was said in a context. I meant that as your "binaries on a system that work out of the box", my point was that your "mixed workflow concerns" seem to me as an issue of documentation/getting-started, not as an issue of what should be part of the HP installer.

I get it that it might be tiring for you to argue the same things in different places, just keep in mind I'm new in this whole infra discussion and I am trying my best to understand/make a useful first contribution.

To be honest, it feels like I have to walk through a bit of a minefield in this discussion...

@snoyberg
Copy link

@jaccokrijnen Just to give us some context, how much experience with using Stack do you have, and on which platforms? That may help us understand where you're coming from.

@jaccokrijnen
Copy link
Author

Hi @snoyberg , as I have written before, I am not a stack user but use cabal-install for Haskell. I do use stack sometimes to verify if my project also builds using that tool. In case you were referring to me in

people opposed to Stack have not actually tried it

you are mistaken. I think stack is a nice piece of software and like to recommend it to new users now and then. Being a cabal user does not make me a stack opponent, I just don't feel any necessity to use it (and I think there are others like me who aren't as vocal as many stack users).

Some more context: I was not involved or followed any of the earlier discussions on the haskell.org Downloads page. That might be where some of my questions were coming from. It was because of your recent blogposts and the tone of the discussion (which I absolutely disliked) that compelled me to try and make a technical contribution with a neutral tone.

... which brings me to the "context" of this specific issue:

  • I took a look at the current downloads page and concluded it's not nice for most users (especially beginners). Too much detail and a choice which for newcomers is almost impossible.
  • I then took a look at haskell-lang's download page and think its design is much better
  • I tried to get some technical clarifications at your blogpost about the HP, to which I got no reply.
  • I think the HP installer is a nice solution for getting all relevant binaries in the Haskell ecosystem. Offering the technical possibility to use both stack/cabal workflows and being backwards compatible with most language tutorials, as they often use ghc(i).
  • I learned there is a seperate concern about the "getting started" after running the HP installer
    • I suggested a simple getting started, to which I got almost no response
  • I learned that there is a concern about outdated versions of tools in HP
    • I suggested that perhaps stack upgrade could be run by the installer, to which I got almost no response
  • I learned that there are some open issues of stack in the HP
    • I agreed those should be solved before promoting a new platform
  • People like bitemyapp write statements which they don't want to back up when I ask some questions. Except for when they think I am strawmanning one of their arguments.
  • I feel the need to write these lengthy replies because it seems some people are assuming I am set on pushing this suggestion at any cost or or they ignore/unsubscribe from this thread because they claim that I am not listening.

My main technical observation is that some people are seeing problems in packaging certain software together while those concerns are actually about the accompanying documentation/getting-started guide (e.g. mixing cabal/stack workflows).
... But who knows, maybe I'm wrong on the internet, I am just a student trying to spend some of his free time to understand and hopefully improve the situation.

@jaccokrijnen
Copy link
Author

jaccokrijnen commented Sep 10, 2016

To get back to the original discussion: I initially imagined this to be one page, not two. But some users might want the downloads page just to be that: a list of possible downloads (perhaps for non-newcomers).

So what about this presentation?
suggestion_header

This way, it's visually clear for a newcomer where to get started while downloads is still available for others.

The mock-up from my first post could then be that "Get Haskell" page (maybe without the other distributions, keeping the current downloads page as it is?)

  • Get Haskell page could have a note "Looking for other Haskell distributions? Go to Downloads"
  • Downloads page could have a note "New to Haskell? Get Haskell"

@snoyberg
Copy link

In case you were referring to me in people opposed to Stack have not actually tried it you are mistaken.

I'm not. I'm trying to understand why there's such an obvious gap in understanding between you and two other commenters here giving explanations why pointing Stack users at an HP download is suboptimal. And that's really the crux of the matter here as far as I'm concerned: if someone's going to use Stack, they are almost always better off using the Stack direct download option, not the HP. Including Stack in HP does not provide meaningful benefit*, and causes additional problems.

* The only "benefit" I'm aware of is that running ghci from the terminal "just works." But this isn't really true in practice: it means that if you run ghci instead of stack ghci, you may accidentally end up with a different version of GHC, and certainly with a different set of packages in scope. In other words: the entirety of the HP workflow is a regression IMO from a straight Stack workflow.

I tried to get some technical clarifications at your blogpost about the HP, to which I got no reply.

Apologies for that, I don't know why I didn't get notification on comments on that blog post. However, I think the majority of those questions should be addressed by the discussion here. To address some points:

There is no clear "getting started" guide for new users.

How is this related to HP-minimal vs. stack as a download option? Obviously it seems like a good thing to have in any case.

This is a massive part of the problem, and something I'm seeing no recognition from on the HP side. A download page that provides all the tools without any way to use them is useless. Sure, someone determined enough to use Haskell, or who already knows how to use Haskell, can make do with that. The Haskell homepage should be for new users to get started easily. The HP is simply failing at that goal.

Choice confusion: saying "HP vs Stack" is actually misleading. The real question is "HP+cabal-install vs HP+Stack vs Stack". A new user is not in a strong enough position to make this decision.

If I understand correctly, HP-minimal is ghc + ghci + stack + cabal, right? Then it would be "Stack + (Nothing vs ghc/ghci/cabal)". I would agree that any new users should not have to make a decision and be pointed to stack directly, for example by the getting-started guide.

This is again missing the point: we're talking about "how will I use Haskell?" A collection of a bunch of tools without a means to use them is useless. HP Minimal does include the tools you mentioned. But a user is going to have a specific workflow.

Stack has an upgrade option, right? Could this be automated by the installer or simply be referenced in a getting-started guide?

Sure, HP could do that. It will make the installation significantly slower, and be a further example of why a Stack-specific download is better for Stack users.

That seems fair. However, if it's just a set of binaries being placed on a machine I'm not too afraid.

I think the bug reports have proven this was in fact something to be afraid of.


My point in all of this: trying to claim that HP is an unopinionated download option because it allows all workflows is only true at the most basic of levels. The download page proposed here is not servicing new users, only appeasing existing Haskellers who want to see HP at the top of the page. The only way I know to serve users correctly is to ask the questions:

  1. What do we expect a new user to want to do?
  2. What's the best workflow for a new user to follow?
  3. What's the best way for a new user to achieve this?

I've answered these questions multiple times, and the Stack approach is the correct answer from all data and opinions I have. I've unfortunately not seen this kind of approach being used by advocates for an HP-centric download.

@jaccokrijnen
Copy link
Author

jaccokrijnen commented Sep 11, 2016

I think one problem is this: you are talking about "HP workflow" including issues about documentation after downloading HP, while I am talking about HP as the installer for common Haskell tools. This thread has split in two discussions: technical questions about the installer and the contents of the downloads/getting-started page. I think we have similar concerns about the accompanying documentation for newcomers.

In this issue I want to improve that documentation.

And please note that my questions on your blog were about the HP installer, you have responded with answers about the download page (again, with the exception of the aforementioned issues).


The download page proposed here is not servicing new users, only appeasing existing Haskellers who want to see HP at the top of the page. The only way I know to serve users correctly is to ask the questions:

Ok, so we are at the point of the discussion where I would like to be, thinking out the details of the getting started documentation. I had already suggested a simple proposal, but here it is again in case you didn't see it, with some modifications:

Getting started

  1. Create a text file with the following content and save it as HelloWorld.hs

    main :: IO ()
    main = putStrLn "Hello world"
  2. Open up a terminal and run runghc HelloWorld.hs

  3. Learn more about...

I like this getting-started guide because I think that

1 What do we expect a new user to want to do?

First thing would be learning Haskell "the language" (not a project/package management tool).

2 What's the best workflow for a new user to follow?

Stack (from all the positive things I've heard about it)

3 What's the best way for a new user to achieve this?

Follow this 3-step guide


The only "benefit" I'm aware of is that running ghci from the terminal "just works." But this isn't really true in practice: it means that if you run ghci instead of stack ghci, you may accidentally end up with a different version of GHC, and certainly with a different set of packages in scope. In other words: the entirety of the HP workflow is a regression IMO from a straight Stack workflow.

I have been looking at beginner Haskell tutorials, for instance learnyouahaskell. These tutorials are focussed on the language features, not about setting up projects/managing dependencies. To me, having the tutorials work with ghci outweighs the concerns of slightly newer compilers or versions of basic libraries.

@snoyberg
Copy link

I think one problem is this: you are talking about "HP workflow" including issues about documentation after downloading HP, while I am talking about HP as the installer for common Haskell tools.

I don't know what this means. I and others in this thread have all explained why the HP itself presents problems for a Stack based workflow. I'm not going to repeat those here. In addition to that, I am claiming that simply putting HP on the download page is insufficient, because new users will have no idea what to do next. If we give users recommended next steps, I'd strongly argue for them to be based on Stack. And if we know we're telling people to use Stack, HP is delivering an inferior experience.

But at this point, I think I'm just repeating both myself and others in this thread, and most likely decisions will be made regardless of what I have to say. So I'm going to follow the lead of everyone else promoting Stack and bow out at this point, I have more productive ways to spend my time than fight a losing battle.

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

6 participants