Skip to content
This repository has been archived by the owner on Mar 19, 2020. It is now read-only.

Difference between haskell-lang/haskell-lang and haskell-infra/hl? #2

Closed
zimurgh opened this issue Apr 25, 2016 · 9 comments
Closed

Comments

@zimurgh
Copy link

zimurgh commented Apr 25, 2016

Probably an early bird question that is coming too soon, but what's the motivation for splitting haskell-infra/hl into an organization of its own? Are there re-implementation plans or something similar? I'm asking because I'm trying to figure out which one I should be forking right now.

@snoyberg
Copy link
Contributor

It is a slightly early-bird question, as we're not quite ready for a public statement about the purpose of forking into this org/repo. As a short answer: this repo will focus on having content which is much more amenable to properly helping new users onboard with Haskell, whereas the current website has elected to stick with tools like the Haskell Platform on the assumption that it will improve at some point in the future. At this point, the code in this repo only has basic changes in place, such as updating to a newer LTS release, fixing warnings, and adding Travis support.

If you tell us what changes you're hoping to make, I (and others) can advise if it would be a fit for what we're doing here.

Also: if you're interested in the very vague description I've given here and would want to get involved in a project with such a focus, feel free to send me an email and I can give you more information.

@zimurgh
Copy link
Author

zimurgh commented Apr 25, 2016

Thanks for the information! That would seem to be inline with what I'd like to contribute to, effort wise. I'm not looking to "move the furniture around" this early on, but the changes I'd be looking to make would be mainly focused on clarity and helpfulness with regards to how the website presents and lays out the Haskell language to visitors. I'd like to see it become significantly more helpful and useful than it currently is, such that I'd link people the site if I wanted to give them a good first impression of the online Haskell resources and community. Of course what "helpful" and "useful" mean is up to interpretation, so I'd be interested in preliminary description of the plans even if they're vague. I'll send an email that will have more details.

@snoyberg
Copy link
Contributor

Awesome, I look forward to hearing from you. Feel free to also share thoughts publicly, we're fans of public discussion of such things.

@zimurgh
Copy link
Author

zimurgh commented Apr 26, 2016

So in the near future, I'd be looking to make changes to the wording and clarity of the "Feature" section on the home page and the "Documentation" page. My rationale is that the current website lacks tremendously in clarity or focus on getting new users oriented quickly. I would like to contribute to improving that. I'd imagine there is quite a bit of discussion and potential bikeshedding to be had over what aspects of the Haskell language should be displayed proudly in the storefront, but as of right now, the Feature section on the home page could have better wording/examples and the Documentation page could use descriptions for each of its links explaining what one should expect to get out of each resource (because they aren't all the same).

As a general aside, I'm mainly just interested in contributing to the infrastructure that will serve as the entry point for new Haskellers and people curious about the language. I think improving the home page is a great goal and I'm just looking to pitch in to its formation. As of right now, the above details are the modifications I would be looking to do knowing nothing else about what is planned. I would prefer to hear about any plans you had in mind already before contributing anything that's not small.

To detail my general impression of haskell.org, I should start by saying that I more or less agree with a lot of the sentiment that Chris Done wrote up in his blog post (I would add that rust-lang.org also has a REALLY good and simple home page that we could learn from). However, I want to vouch for some of the value the Haskell Wiki had back before the current haskell.org site, as it seems to be unappreciated and that the current site regressed in UX from what the Haskell Wiki home page was already providing. I would like to see an improvement not only on what haskell.org currently is, but what we have historically gotten from the Haskell Wiki's front page.

So what's so special about the Haskell Wiki's home page?

When I started learning Haskell (back in 2011 or so), the main point of entry to learning the language (at least in terms of what served as my point of entry) was the home page of the Haskell Wiki and not much else. That page hasn't really changed at all since then. It's definitely dated, but looking at the current state of the haskell.org page, there are a couple design/presentation features of the wiki's home page that I feel should be taken note of as they were quite helpful back when I was getting started and looking to learning more about the language. I was actually a pretty big fan of the wiki when I was starting out. I liked the orange/grey/sand color scheme and I thought it was cool that Haskell had its own wiki. The site did it's job back before I realized how out of date and incomplete it actually was. So, about that home page...

Some things the Haskell Wiki home page got right:

  • The logo and language synopsis are laid out nicely and don't feel cramped, though there's no feature list (which is a problem and something the current site improves upon). It could also be argued that the synopsis doesn't really make the case for the language at all and thus isn't really doing much, as Evan Czaplicki pointed out in his "Let's be mainstream! User focused design in Elm" talk at Curry On! 2015. Why sell Haskell as an "advanced purely-functional programming language" if neither "advanced" or "purely-functional" have been defined yet in this context?
  • Underneath that is the Haskell Wiki's best design decision over the current site: three columns each featuring the three things that I (a new user) cared about: documentation/learning resources, libraries/applications, and community presence online - and in that order. Sure, the columns consist of a collection of links, half of which aren't interesting to me, but the other half are very relevant. The Haskell Wiki's home page let me get to a variety of different Haskell-related things with a single click.
  • Also note the "Download Haskell" that is visually distinct from the rest of the links and located pretty much at the center of the page. It is not a separate "Dowload" tab embedded in the nav bar.
  • Note the "What is Haskell?" link. I remember this being the first thing I checked out, it just seemed like a logical first step. Also, the article it linked to did a very good job explaining the value of Haskell and it's radical language features. There's claims in it that today I would consider out of date and/or misleading (why present quick sort in Haskell if it isn't quick?), but otherwise the article did a good job at getting me to care back then. I was interesting at learning the language after reading that article.
  • The second thing I remember checking out was "Applications/Libraries" because at the time I just thought Haskell was an academic language meant for teaching functional programming (I only knew about it because it was being used in my FP class in college). I had no idea there were libraries and applications for a variety of different real-world things.
  • Finally, I checkout out the "Try Haskell in your browser" and "tutorials", because I was interested in becoming competent in the language and investing time in learning it. Note what I didn't click on. I wasn't looking for books to buy or courses to take. I just wanted the closest thing to a "Beginner's Guide to Haskell" as I could find. Which is ultimately a problem because this really didn't exist. I settled on reading Learn You a Haskell for Great Good, but what I was really looking for was the Haskell equivalent to this.

So overall, the wiki did a decent job as an entry point to the language, back then. Now we've got the new "haskell.org" site and while I appreciate the effort into improving the presentation quality in web design, the actual UX properties seemed to have regressed from what the Haskell Wiki was providing. So in contrast to the previous list, here are my observations when visiting the current home page:

  • The logo is great and the synopsis is minimal in a good way, but now there's a "Declarative, statically typed" heading going on to the right along with a code snippet that doesn't really bother to explain what's declarative, statically typed, or useful about the code snippet itself. It's just kind of "there".
  • There's the "try Haskell" prompt right there in the page, but it's just a empty prompt. It would nice if it could set me up with something similar to what Rust's page gives me, which is a simple yet complete program that gives me a first impression of the language's syntax in every-day use and actually allows me to play around with the code and see what happens when I change things.
  • There's a rather large CSS row dedicated to showcasing the "An open source community effort for over 20 years" along with links to meetup videos. When I was a new user, this would be wasted space. Most languages I was checking out where open source initiatives, so that's not much of a selling point and I wouldn't be particularly interested in watching meetup videos on Haskell topics before I even really know what Haskell is or why I should invest time in immersing myself in it. In fact, with the minimal synopsis in the branding header and the feature list being completely out of view unless I scroll down, the home page doesn't seem to be interested in telling me what Haskell ACTUALLY is. This is bad.
  • Then we get to the feature list. Many of the feature details aren't worded very well (in my opinion), use weird examples that don't clearly convey much, and often leave out really important properties of said features. For instance, the "Statically typed" feature details make no mention of refactorability or maintainability. As a Haskeller, I can now read between the lines and infer such a property from what's currently there, but not everyone's on-board with static type systems and the description on the home page doesn't really make the case for them. It doesn't mention algebraic data types or explicit type signatures, for instance. It just talks about how various mis-matching types will yield an error, which is probably the one thing one doesn't need to explain to new users about Haskell's static type system. Everyone knows that type errors are a thing with static type systems, that's what we historically don't like about them. "Why is Haskell's static type system different in a good way to what I've already used in Java et. al.?" In a way, I think it could be argued that we shouldn't try to make the case for Haskell's key language features right there on the home page. Instead, we should just provide a simple enumeration of features like Rust's site does and then we can link the visitor to a more in-depth summary of why each of these features matter. This would be especially helpful for Haskell's two most exotic and controversial features: pure FP and lazy evaluation. These features deserve way more justification than they're given on the site. Note the approach the Haskell Wiki took: it had the "What is Haskell?" link that presented visitors with a in-depth article that basically summarized "Why Use Haskell?" and did a relatively good job of it.
  • There is no "Download Haskell" or "Install Haskell" button anywhere, but instead there's a very visually quiet tab in the nav bar called "Downloads", which links me to a bunch of choices that I'm not ready to make as a new user. It feels like the Debian download page. "Should I use the minimal installers? What's Stack? I guess I'll need Stack for large projects in the future. And the Haskell Platform is.....basically the minimal install with batteries included? I guess I'll go with that. Seems safe." It presents me with tons of choices about how to get Haskell set up on my computer as if I care about the fine details as an absolute beginner. I just want something that will let me start playing around with the language on my local machine. Right now I just want a fool-proof way to experiment and test-drive the language, I can install the ideal environment later.
  • The Documentation tab is also quiet and appears third on the nav bar as if it's something other than the most important link on the entire site. Maybe it's not the most important link for first-time visitors, but for returning new users I'd argue it will be the most reached-for link on the home page. Ideally, the Documentation tab should come first like it does on Rust's home page. Also, it shouldn't link to a dump site of links that start with books and courses. "I JUST WANT A "GETTING STARTED" GUIDE!" screams a younger version of myself. Also note how the Documentation page seems as indecisive as I would be about which learning materials I should check out first. It's just a neutral list of things, when ideally certain resources should be clearly ranked over others. Fair democratic representation of community-provided docs is nice, but new users don't care about the fairness of it all. At the very least, each link should have a description as to what it's linking to so I can do some basic filtering other than just clicking on all of them.

So this is pretty long, I'll just wrap up by saying that much of this is just my opinion and that I obviously can't know what the current home page looks like to fresh eyes as I already knew Haskell by the time the home page got a face-lift. However, I've got a pretty good idea what worked for me in those early days. I would be interested in learning more details about the future of the project and am eager to pitch in some PRs in the upcoming future.

@chrisdone
Copy link
Member

chrisdone commented Apr 26, 2016

Hi @OldManMike. I think your ideas and priorities are pretty inline with mine and ours. But could you break your ideas up into separate issues? For example, one github issue for the feature section: state the problem (one that other people can say "oh, yeah, that's a problem"; the less subjective, the more chance people will agree), and a solution; things like linking to more elaborate discussions of features were part of my original design announcement, but writing content takes time. We're planning on making a "getting started" page, so that's another issue. The downloads page is known to be a terrible mess born from design-by-committee nonsense, that's another issue. The Try Haskell prompt can't just accept a file of code, that's an undertaking, and one which you could spend time working on. There are issues like this with each of your points and they should be discussed because they're all detailed.

Obviously, I'd prefer to skip any kind of bikeshedding process that will butcher my poor design (it's already been dragged through the streets for a year when it was released). But I know it's not perfect. I'm in favor of removing things rather than adding more (which is what the Wiki suffered from, fundamentally; too much adding), and generally only addressing problems of real usability or lack of funneling to the right resources. Any nitpicking below the granularity of "we need a user guide" and "we need a more prominent download button" is likely to be unproductive. Otherwise we're good to get cracking.

@chrisdone
Copy link
Member

Made an issue for the getting started page #5.

@chrisdone
Copy link
Member

Made an issue for the download page #6.

@OldManMike do you want to open up issues for any remaining concerns? 👍

@zimurgh
Copy link
Author

zimurgh commented Apr 26, 2016

@chrisdone I'll add an issue to annotate the materials located on the documentation page.

I agree design issues that are likely to spiral into bikeshedding and overcomplicated decision-making process should be avoided at this early stage, but I would still claim that as of right now the home page does not function cohesively to accomplish a clear goal. It's a meaningless criticism for me to make, granted, if the site it's sitting atop doesn't work towards a unified goal either. So I'll keep most of my home page criticisms on the back burner until it becomes more obvious what the overall direction of the content is going to be.

@snoyberg
Copy link
Contributor

snoyberg commented May 2, 2016

Closing, as this has already spawned separate issues. Thanks for the input

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

No branches or pull requests

3 participants