Code Monkey home page Code Monkey logo

www.haskell.org's People

Contributors

albert-vill avatar andys8 avatar aviaviavi avatar dekudekuplex avatar dschrempf avatar emilypi avatar enmcarv avatar ericson2314 avatar expede avatar ffaf1 avatar gbaz avatar gwils avatar hasufell avatar heige-pcloud avatar ketzacoatl avatar kleidukos avatar martinsos avatar mhitza avatar mimi1vx avatar mjhoy avatar noughtmare avatar pdfrod avatar pidelport avatar rebeccaskinner avatar romefeller avatar sekunho avatar soupi avatar tikhonjelvis avatar tomjaguarpaw avatar tritlo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

www.haskell.org's Issues

IO actions not working in sandbox

When running suggested example

do line <- getLine; putStrLn line

in sandbox I get an error as below
image

This behavior seems to be common for all IO actions.

Create permanent urls to latest hackage package documentation

For frequently used Haskell packages, i like to bookmark the documentation pages. That's why i would like to propose having urls pointing to the newest hackage package documentation version. Currently, urls contain the package version like

https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-Traversable.html

I know there is the possibility to remove the version number from the url like

https://hackage.haskell.org/package/base/docs/Data-Traversable.html

but this needs manual work when bookmarking and redirects back to an url with a package version. So the bookmarked url and the page url are never the same, so you can't see which hackage page is already bookmarked, and everytime a package updates, it requires manual new bookmarks (this is not frequent with stable base packages, but painful with newer, still evolving packages).

Instead it would be good to have permanent urls like

https://hackage.haskell.org/package/base-latest/docs/Data-Traversable.html (preferred)
https://hackage.haskell.org/package/base/latest/docs/Data-Traversable.html

that don't redirect like for ghc documentation, e.g. https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/exts/template_haskell.html. Those urls could be promoted in search engines to avoid having long outdated package versions showing up in the top results.

Dark mode in CSS for the main site as well as Hackage?

It will be such a nice addition if both sites support the dark mode. To be precise, try to use CSS prefers-color-scheme media queries.

This feature is now supported on desktop/mobile Safari, Chrome (post), Firefox (post), and see can I use? for further details. In other words, most of recent browsers are able to switch between light and dark modes.

The dark mode support for Hackage will be very useful for easing eye strain, especially when referencing the API frequently from an editor in a dark mode. I am not good at adjusting colour theme, otherwise I would create a PR directly. :-(

Haskell.org homepage has poor accessibility

I reckon haskell.org is not accessible. For example, if you load https://haskell.org on your desktop and keep pressing tab, focus becomes stuck in the "try ghci" window. You cannot proceed through the rest of the website by tabbing. This means screen reader users basically cannot use the website. I'm not sure what happens on mobile but I suspect it's similar.

I intend to learn more about accessibility and hopefully improve this. I know basically nothing about accessibility as is. I would welcome any volunteers who already know what they're doing.

Upgrade Dependencies

We have a specific need to upgrade hakyll so that we can use the public API for the testimonials code, however this also presents a good opportunity to upgrade the dependencies more generally, including:

  1. The nixpkgs release we're pinned to
  2. All haskell dependencies

Cannot use learn/mobile on terminal

When I tap on "write help" or one of the example commands to try out, I cannot actualy execute this, because on a mobile device I have no enter key(board).

Firefox Preview
Android 9

Outdated cabal documentation

The original Cabal proposal (which must be from about 20 years ago) appears on Haskell.org. It is not clearly marked as an archive of a historical document. A user tried to follow it to enable FlexibleContexts, specifically the The Cabal simple build infrastructure section.

Is it possible to perhaps just delete it and let the internet archive preserve it for posterity? Alternatively, if as a historical document it should be preserved, could it be clearly marked as a historical document, not for up-to-date use, and perhaps even moved to another domain (haskell-history.org?).

Is the Yesod book really introductory?

The "Developing Web Applications with Haskell and Yesod" book is currently listed under "Introductory Books for Learning Haskell", but the book itself states that it is not suitable for complete beginners:

This book takes as an assumption that you are already familiar with most of the basics of Haskell. There are two wonderful books for learning Haskell, both of which are available for reading online:

  • Learn You a Haskell for Great Good!
  • Real World Haskell

~https://www.yesodweb.com/book/haskell

Perhaps it should be moved to the intermediate books section?

add books / reorganize books

I know there's bigger plans here, but for now it would be nice to update the book section under documentation.

In particular, there's at least four "intermediate" books not on the page:

https://leanpub.com/production-haskell
https://www.manning.com/books/haskell-in-depth
https://www.apress.com/gp/book/9781484244791
https://leanpub.com/functional-design-and-architecture

(source: https://www.reddit.com/r/haskell/comments/o8v3d9/the_book_intermediate_haskell_is_cancelled/)

Given the number of books on the page it might now also be worthwhile to pull the list apart in to "beginner" and "intermediate" texts in general.

Add a CSS Auto-Formatter

We should add a CSS auto-formatter to the nix environment, and format the existing CSS so that it looks nice. Consider possibly using a commit hook to auto-format new commits.

wiki vs haskell.org page content

Hello,

While reading about the haskell.org committee, I came across:

Which page is the authoritative? Should one just be a link to the other?
I find this type of duplication confusing at best and time-consuming at worst (if I want any confidence in my understanding of the material, I need to read both pages and compare the content).

I'd be happy to help with content updates, but not sure what updates would be welcome.

Downloads page needs quick explainer

Hi,

I'm a little new here but looked into Haskell before and was annoyed by all the options that are presented without [sufficient] explanation on the downloads page.

Instead of this:

There are three widely used ways to install the Haskell toolchain on supported platforms. These are:

Minimal installers: Just GHC (the compiler), and build tools (primarily Cabal and Stack) are installed globally on your system, using your system’s package manager.

Stack: Installs the stack command globally: a project-centric build tool to automatically download and manage Haskell dependencies on a project-by-project basis.

Haskell Platform: Installs GHC, Cabal, and some other tools, along with a starter set of libraries in a global location on your system.

Please write a short introduction about general programmer workflow, and describe the basic problem that each tool is supposed to solve. Every tool/problem arises as a result of observing a problem and conceptualizing a tool/feature to improve the basic model of programming, which is 1. write 2. compile 3. run 4. debug 5. distribute 6. manage updates (dependencies).

The idea of what is "minimal" in an installer is highly subjective and completely meaningless to someone who is unfamiliar with the tools, since their conception of what is necessary for programming is different from the developer's. You can define "minimal installer" later after the user is familiar with the general ideas behind the tools.

General guidelines: use "if/then" statements to describe when a user must make a selection/decision about what to pay attention to.

At one point I had read and understood the comparison of these tools but like most people, I use this information and then discard it after I've made my decision, unless I discover an exception to my expectations about what kind of workflow I am getting from the set of tools I have chosen to investigate.

Please reply and help me help you make this page more accessible to new people.

Optimizing initial experience on haskell.org for the first-time Haskell user

Hi,
I am opening this issue as advised by @tomjaguarpaw , following up on the discussion I started on Haskell Foundation Slack.

I have been using Haskell for years but few days ago I wanted to check what is the current recommended way to install Haskell, hoping I might clean up my mess that somehow works but I can't even remember how I set it up (I am on ArchLinux, using Stack, didn't use ghcup so far).

In this process I actually ended up having a hard time figuring out what is the current recommended approach, which is I am writing this.

My journey

I went to haskell.org first, but didn't see any obvious link/button that would guide me to setting up Haskell on my machine. I did see the "Downloads" link in the top navbar, but it wasn't emphasized in any way, and I usually expect from "Downloads" to be a list of binaries, which wasn't what I was looking for, I was looking for a "Getting started" kind of thing that will take me through the process of setting up Haskell.

I scrolled through the whole webpage and saw link to Haskell wiki at the bottom, so I concluded that might have section "Beginners" or "Getting started" or smth and I clicked on that.

On haskell wiki I saw catchy orange "Download Haskell" button on haskell wiki. That button took me to haskell.org/platform, where I went through some technical noise (details about stack upgrade and libgmp) to at the end learn that I should install ghcup and stack.

I then went to haskell.org/ghcup to learn that ghcup also installs stack, so started wondering if I should install stack via ghcup or if I should do it separately as previous instructions said.

At that moment I concluded this is all getting too complicated and maybe I went the wrong way, so I went back to haskell.org because I remembered I saw "Downloads" there, and maybe I should have clicked on that. "Downloads" took me to instructions that sent me to haskell.org/ghcup again.

At this point I gave up for now because I wasn't sure if I should use ghcup to install Stack or not, and I was also afraid it might mess up my hls (does ghcup do the "wrapper" thing to pick correct hls based on project? I wasn't sure), and decided to come back to it once I do more research and have more time.

Thoughts

haskell.org -> "Downloads" -> haskell.org/ghcup is not a bad journey, but it still feels somewhat weird, as "Downloads" is in no way emphasized, and when I end up at ghcup page it feels a bit like this is a third-party project due to different webpage design and style. Plus, top part of GHCup home page is pretty complex and feels more aimed at contributors than first time users.

I know that comparisons with Rust are often made, but it seems to me that they did this right: they have a big yellow "Get Started" button on the top of the homepage, impossible to miss.
That button takes you to the page where almost immediately they tell you to use rustup to install rust (no big intro on rustup like ghcup has, just a couple of sentences and then a command to install it / run it), give you a bit of details on the toolchain, follow up with a super short tutorial to get something working and then send you off to the book/tutorials/examples.
I would imagine that Haskell could also benefit from such direct, guided journey for the new users!

Ideas

Here is how I see possible steps to improving experience of getting started with Haskell, ordered by benefit/complexity ratio:

  1. Add a big, visible "Get Started" button above the fold on haskell.org home page that just sends user to haskell.org/downloads. "Try it!" interactive section is already occupying a lot of space hm, but easiest thing might be to insert a new section above the "Try it" which would have a big button on the middle that says "Get Started" or "Install Haskell". Or, it could go under the code example on the right + we would add some spacing under the "Haskell - An advanced ..." piece. Besides Rust page, another example could be project I am working on, https://wasp-lang.dev/ -> we put the "Try it" button right under the title and code example, and it takes you to installation instructions.
  2. Streamline Downloads page just a bit more:
    Make "Installation instructions" section more prominent, since it is the main call to action we want them to take -> if there is one thing they will see first on this page, it should be that section. It doesn't mean it has to be first section, but we could for example apply some spacing around it, put some kind of border to emphasize it, maybe change the background color to purple (Same as there is "Try it" on the home page).
    Figure out if we should recommend installing stack separately or not.
  3. Make haskell.org/ghcup page feel more "official" -> either by saying it is "recommended" / "official" installer, or by using the same design as on haskell.org.
  4. Ultimate solution: Create "Getting started" page to which the "Get started" button on haskell.org home page will lead, instead to "Downloads". It would start with short instructions on how to install ghcup, then help you create your very first project and run it, maybe super shortly explain what is stack/cabal/hackage, but in practical way, then quickly cover what is the support like in the editors and which editors are most popular (so I guess covering vscode, vim, emacs would already be enough) and then finally forward you to the further materials for learning with clear path of progress (so instead of huge list of books, there would be an opinionated suggestions on the reading order). Again, I think Rust did this really well with https://www.rust-lang.org/learn/get-started .

Guiding principles

The main idea behind this is that at every step in this journey, it should be very clear what is the next recommended step, and user's focused should be kept on it.

So if there are multiple buttons on the screen, the one that is recommended should be somehow emphasized. Less buttons/links also helps.

If there are multiple pieces of information that might be interesting, the one that is most likely to be important should again be put in focus -> e.g. if we send them to ghcup to install it, installation instructions should be more prominent than list of communities or even GIF showing how ghcup works -> we don't want them to join ghcup Discord at this point, we want them to install ghcup. We also don't need them to look at the GIF of ghcup, it doesn't serve any purpose, they came here anyway to install it and GIF won't convince them further. rustup.rs is great example of this, page is very clean and minimal, with installation instructions emphasized, and list of communities at the bottom and additional resources at the bottom.

First linux download link doesn't work / is confusing

The ppa Ubuntu section at the top of: https://www.haskell.org/downloads/linux/ says to do:

sudo add-apt-repository -y ppa:hvr/ghc
sudo apt-get update
sudo apt-get install -y cabal-install-XXX ghc-YYY

However, it was not obvious (to me) that I had to replace XXX and YYY with something else, and what that something else was.

Is there an option to always install the most recent version? Or could there are least be some text linking to another page with the currently released version number is, to tell us what to replace XXX and YYY with?

haskell.org needs a governance page

The haskell community is large and made up of many groups. These groups have different, and sometimes overlapping responsibilities. To a new haskeller, it makes no sense and there are no clear answers on the confusion. Desires to contribute and help in small ways take us down rabbitholes looking for which group is responsible for what and who to ask for permission or who to get approval for a change. This leads to contributors giving up before even sending in their contribution, and creates barriers to entry.

Given the complicated nature of the haskell ecosystem and the various groups with decision making power, when I look at haskell.org, I expect to see a page that clearly and concisely lists those groups and the overall governance structure for the community.

For comparison, https://www.rust-lang.org/governance is both clear and concise (they also have some of the same structures found in the haskell ecosystem).

I'd be happy to work with the haskell.org site developers to help craft such a page provided that I receive:

  • confirmation a new page with this content would be welcome and accepted
  • agreement the page should be included in the main list of links on the haskell.org website
  • support and feedback listing the groups and determining the content for the page

`nix-shell` warns about a non-free license

Error:

On a fresh clone, running nix-shell fails with the following error:

error: Package ‘haskell-org-0.1.0.0’ in /nix/store/gxsq867akcklrbvzq1ph4nsadckgipaw-cabal2nix-www.haskell.org/default.nix:3 has an unfree license (‘unfree’), refusing to evaluate.

a) For `nixos-rebuild` you can set
  { nixpkgs.config.allowUnfree = true; }
in configuration.nix to override this.

b) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
  { allowUnfree = true; }
to ~/.config/nixpkgs/config.nix.

(use '--show-trace' to show detailed location information)

Environment:
Nix 2.3.4 on Linux (PopOS)

Steps to reproduce:

  1. Install Nix
  2. Clone this repository
  3. Enter a nix shell

Suggested Resolution:
Address the licensing issue so that nix-shell does not require enabling non-free licenses.

Testimonials section on website

Hello, I am a developer from strivelabs, we have developed the HTML and style for the testimonial section on the website.
This is the link to the PR: #101

CI to build and deploy the lastest site

In #57, it is pointed out that the date will auto-correct the next time the site is built/deployed. While it seems there is an existing .gitlab-ci.yml, it doesn't seem to include anything for publishing the updates that have been merged. Considering this is a static site built with hakyll, it ought to be relatively easy to add this, but maybe there are additional TODOs to integrate with how the site is hosted.

requirements

  • Updates that have been validated and merged should be built and deployed by CI without requiring an admin taking action (approval or triggers are reasonable, but this update process should not require an admin uploading files or similar).
  • CI should deploy whatever is on master, so additional updates to master (including reverting a change) update the live deployment.

Build issues with nix on mac

When running buildAndWatch on mac, I am getting some build errors from nix. ./buildAndWatch cabal works fine.

~/d/f/www.haskell.org ❯❯❯ ./buildAndWatch                                                                                  ✘ 130
error: cannot coerce null to a string, at /Users/avi/dev/forks/www.haskell.org/builder/default.nix:27:21
(use '--show-trace' to show detailed location information)
~/d/f/www.haskell.org ❯❯❯ nix --version
nix (Nix) 2.3.14

I don't know much about nix, but happy to help troubleshoot if there are things I can try and report back on.

Download page is confusing

https://www.haskell.org/downloads/ is confusing

  • it doesn't concisely present the most popular options, but instead directs to haskell-platform, which then might direct to your packager manager, ghcup or other things, which creates another layer of confusing indirection
  • "minimal installer" is a duplicate of haskell-platforms redirection to system package managers
  • the description of haskell-platform "Installs GHC, Cabal, and some other tools, along with a starter set of libraries in a global location on your system." is inaccurate for choices like ghcup, which does not install in a global location
  • it doesn't direct to chocolatey, which is considered the most properly packaged GHC for windows, according to some, although its popularity is surprisingly low according to the haskell 2019 survey (which might be a good reason to have it on the download page)

Site not building locally on Linux

I'm using Nix to build the site on a non-NixOS Linux system. The Nix shell runs correctly, but buildAndWatch fails with the following error:

Compiling
  [ERROR] ./community.markdown: hGetContents: invalid argument (invalid byte sequence)

I suspect this is related to an issue with GHC on Nix and the locale encoding (NixOS/nixpkgs#64603).

link to downloadable old docs

From haskell.org we can easily find the documentation of old versions. But only for online browsing. Their single-file downloadable versions [haddock.html.tar.xz, libraries.html.tar.xz, users_guide.html.tar.xz ] are also on the server [for example www.haskell.org/ghc/docs/8.6.5/users_guide.html.tar.xz] but there is no link to them from haskell.org. I only found them by first finding the address for the latest version and then replacing "latest" with "8.6.5" in the URL.

footer needs an update

It’s 2021 already, and the webpage shows the wrong year in the footer - I assume, that problem should disappear after the build. It’s a small task, but very important - it will bring the present and the future to haskell.org :D could someone do that?

haskell.org hosts severely out-of-date cabal docs

Everything occurring under https://www.haskell.org/cabal/release/ is severely out of date. This is really confusing to users who are trying to learn about cabal but who end up stumbling across documentation that does not describe the versions of cabal they are trying to use. For example two of the top three hits on DuckDuckGo for a simple cabal-related query are to this outdated documentation.

Is it possible to simply remove these pages?

(Tangentially I must say I'm somewhat confused because I don't see, based on the www.haskell.org repo, how those pages got there)

Provide IRC web client link?

Could we provide a direct link to one of our IRC channels (probably #haskell, or maybe #haskell-beginners if it exists) by taking advantage of a web based IRC client? That would help users new to IRC access everything on IRC with lower friction.

Current IRC web page is https://www.haskell.org/irc/

tutorial (or manual) for haskell

For a person new to Haskell, the www.haskell.org website is the main "face" for Haskell as a language/tool, and community. As someone who isn't familiar with Haskell's overly-complicated community/leadership structure, you would see the haskell.org website as the authoritative source for all things blessed by the Haskell community leadership. For example, if I don't know how to learn haskell, I would naturally think, "I'll go look for their 'getting started guide', probably haskell.org/learn or some such". But if you actually look, you'll find https://www.haskell.org/documentation/ to be not very helpful for a newb (there are numerous reasons).

A seasoned haskeller would probably object:

"but that page lists all the best tutorials from around the community! It's great!"

Ok, sure, that's nice, but the seasoned Haskeller has forgotten what it's like to be new to learning haskell and to know virtually nothing about the complicated nature of the community. The big list of links is unhelpful in that it isn't specific. When I look at this list, I cannot choose which to invest myself in, and I see no means for making that decision (there is no call to action or aid to help me understand which choice would be better for me).

For example, let's compare that to rust and julia:

Rust has - https://www.rust-lang.org/learn - which links to 3 materials:

One is a tutorial-repo on GitHub, the other two are comprehensive books. All are obviously authoritative, and iterated on by the larger community. Perhaps most importantly, in contrast to haskell's documentation page, Rust's learn page has a very clear call to action for the user, and I would feel pretty confident when making my selection.

As an additional point of comparison, Julia's "documentation" link sends us to https://docs.julialang.org/en/v1/ - also a comprehensive, authoritative book.

Another note: An intrepid newb will eventually land on the haskell wiki when looking for answers to various "topics", and given the weight that site has in the search engine, but yet unmaintained content, the wiki pages are often near the top of search results and rather embarrassing when read in detail.

Thus, I propose haskell.org host and maintain an authoritative manual/document for Haskell, one suitable for new Haskellers, one that shows them how to get up and running, and one that is available to be maintained by the community.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.