{"id":17892459,"url":"https://github.com/simonmichael/haskell-links","last_synced_at":"2025-03-23T00:32:59.093Z","repository":{"id":138801887,"uuid":"490846491","full_name":"simonmichael/haskell-links","owner":"simonmichael","description":"Exploratory project to gather Haskell links","archived":false,"fork":false,"pushed_at":"2024-11-14T23:56:31.000Z","size":318,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-18T16:04:09.930Z","etag":null,"topics":["haskell","haskell-learning"],"latest_commit_sha":null,"homepage":"https://haskell-links.org","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simonmichael.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"github":["simonmichael"],"patreon":"simonmichael","open_collective":"simon","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":"simonmichael","issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2022-05-10T20:12:33.000Z","updated_at":"2024-11-14T23:56:35.000Z","dependencies_parsed_at":"2024-02-01T17:57:33.105Z","dependency_job_id":null,"html_url":"https://github.com/simonmichael/haskell-links","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonmichael%2Fhaskell-links","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonmichael%2Fhaskell-links/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonmichael%2Fhaskell-links/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonmichael%2Fhaskell-links/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simonmichael","download_url":"https://codeload.github.com/simonmichael/haskell-links/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245040235,"owners_count":20551297,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["haskell","haskell-learning"],"created_at":"2024-10-28T14:37:54.626Z","updated_at":"2025-03-23T00:32:58.643Z","avatar_url":"https://github.com/simonmichael.png","language":"PHP","funding_links":["https://github.com/sponsors/simonmichael","https://patreon.com/simonmichael","https://opencollective.com/simon","https://liberapay.com/simonmichael"],"categories":[],"sub_categories":[],"readme":"# haskell-links\n\nI [wrote](https://www.reddit.com/r/haskell/comments/um43bz/most_current_materials_for_learning_haskell/i80f40x/):\n\u003e *There's no way these very frequent reddit and chat requests for learning materials can capture all the existing resources. \nThere are too many, and folks who know where they are get burned out reposting them. \nThere have been many attempts to gather them, haskell.org/documentation being the most obvious, \nbut none of them have fully succeeded. We could really do with some more systematic, scalable (crowd-sourced, lightweight) approach.*\n\nHere comes another attempt! \n\nhttps://haskell-links.org, AKA the **Haskell Links Library**, is the web UI.\n\n## Goals\n\n- A comprehensive, up to date, maintained collection of links to Haskell resources (docs, sites, services..),\n- that is scalable, durable, cost-effective and community-owned\n- searchable and with the best content emphasised (eg by voting)\n- which all kinds of Haskellers find useful, time-saving, and enjoyable\n- and which accelerates Haskell learning and adoption.\n\n## How will we recognise success ?\n\n- Questions like \"What's a good Haskell book?\" and \"Please recommend Haskell learning materials\"\n  can be answered easily and efficiently with a high quality link. \n- Knowledge of all available resources is more widely shared across the community,\n  and easily discoverable by newcomers.\n- High quality content is not forgotten or perpetually undiscovered.\n- The community's most popular resources are featured prominently.\n- Using, contributing to, and managing the service is easy and fun.\n\n## Some principles\n\n- Avoid unnecessary work - this aims to fill a need, not to generate work or a hobby.\n  Existing, good enough, cheap beats pending, perfect, costly.\n- Ruthless efficiency - think Craigslist. Less is more.\n- High reliability.\n- Chat ops, at some point - think lambdabot's @where.\n- Good web presence and SEO.\n- High [bus factor](https://en.wikipedia.org/wiki/Bus_factor), low [toil](https://sre.google/sre-book/eliminating-toil).\n- Can be solo or community operated, but always ultimately community-owned.\n\n## Data\n\nThe primary data to be gathered is a link record, consisting of\n\n- the URL. The unique primary key.\n- an optional (?) short id, a unique possibly-hypenated word, useful for chat ops\n- an optional description. Plain text or perhaps link-free markdown, always enclosed in double quotes.\n  (The other fields don't need quotes.) This and the other fields are always UTF8-encoded. \n- optional tags, a spaced list of possibly-hyphenated lowercase words, used for categorisation\n\nThese link records will be public data, stored in a single CSV file in this git repository,\nfor durability, manageability and maximum readability/compatibility.\n\nLater, secondary data may be added to enrich the above, particularly votes.\nThis will likely be semiprivate data, stored in a sqlite DB by a web app, \nbacked up and accessible to current/future admins and perhaps the Haskell Foundation \nfor durability.\n\n## Capture\n\nLinks are to be collected by some combination of:\n\n- manual edits to the CSV\n- scripts/cron jobs, also in this repo, collecting links from existing sources:\n  haskell.org, planet.haskell.org, /r/haskell, etc.\n- the web UI\n- the chat UI\n\nThere should always be an import/reconcile procedure which adds/updates \nwithout creating duplicates or conflicts.\n\n## Tags\n\nAll records have one tag indicating their source, such as `lambdabot`\n\n## UI\n\n1. CSV can be edited manually via git/github (?)\n2. A web app will provide filtering, sorting, updating, voting, permalinks, appropriate feeds, discoverability.\n3. A chat bot running in #haskell or wherever it's wanted will allow searching and updating.\n\n## Web presence\n\nThe web app runs at https://haskell-links.org, a custom domain for now.\n\nSEO is checked with [google search console](https://search.google.com/search-console?resource_id=sc-domain%3Ahaskell-links.org).\n\n## Timeline\n\n- 2022-05-10 project start\n- gather some link sources\n- develop some import scripts/procedures\n- start gathering links\n- set up a simple web view\n- set up a simple chat ui\n- 2022-05-16 version 1 announced\n- v1.1, ui/link updates\n- 2022-05-20 v1.2, new data scheme and repo, column filters enabled by default, gray background\n- 2022-05-21 v1.3, works without javascript; supports multiple data sources, multiple tags, movable columns\n- drop tagging goal for now, just track links' source\n\nMore detail: [app changes](https://github.com/simonmichael/haskell-links/commits/main), [data changes](https://github.com/simonmichael/haskell-links-data/commits/main)\n\n## Discuss / contribute\n\n- Chat `sm` in #haskell, via\n  \u003ca href=\"https://web.libera.chat/#haskell\"\u003eLibera\u003c/a\u003e or\n  \u003ca href=\"https://matrix.to/#/#haskell:libera.chat\"\u003eMatrix\u003c/a\u003e.\n  Discourse also works well, eg [here](https://discourse.haskell.org/t/ann-haskell-links-org-searchable-links-database).\n- PRs fixing bugs are especially welcome.\n- More link sources should be imported / interoperated with. (?)\n- Enhance lambdabot or use another bot ?\n- Some workflow permitting web edits, and ideally multiple edit UIs, is desirable.\n- Where and how is master data stored ?\n- Which other data sources are synced and how ?\n- How are tags stored/edited ?\n- How are votes tracked/stored/edited ?\n\n## Related projects / potential link sources\n\n### Official-ish\n\n- https://haskell.org/documentation                           official starting point\n- https://wiki.haskell.org                                    haskell wiki\n- https://wiki.haskell.org/Special:RecentChanges              haskell wiki recent changes\n- https://wiki.haskell.org/index.php?title=Special:AllPages   haskell wiki all pages\n- https://en.wikibooks.org/wiki/Haskell                       haskell wikibook\n- https://haskell.pl-a.net                                    aggregates most discussion sites/feeds\n- https://planet.haskell.org                                  many haskell blog posts pass through here\n- https://reddit.com/r/haskell                                or here\n- https://www.haskell.org/mailing-lists                       mail lists\n- https://discourse.haskell.org                               discussions forum\n- https://stackoverflow.com/questions/tagged/haskell          haskell questions on Stack Overflow\n- https://www.haskell.org/irc                                 some IRC channels\n- https://view.matrix.org/?query=haskell                      some Matrix rooms\n- https://haskell.foundation/podcast                          HF podcast\n- https://hackage.haskell.org/packages/browse                 hackage package search                (#hackage)\n- https://packdeps.haskellers.com                             hackage dependency monitor / reverse deps\n- https://hoogle.haskell.org                                  hackage package API search\n- https://www.stackage.org/lts                                stackage LTS package/API search\n- https://www.stackage.org/nightly                            stackage Nightly package/API search\n- https://wiki.haskell.org/Language_and_library_specification  language specs\n- https://github.com/ghc-proposals/ghc-proposals               ghc proposals\n- https://github.com/haskell/core-libraries-committee          core libraries proposals\n- https://github.com/haskellfoundation/tech-proposals          HF tech proposals\n\n### Link databases\n\n- https://github.com/simonmichael/lambdabot-where             archive of lambdabot's @where db\t\t\t(int-e)\n- https://www.extrema.is/articles/haskell-books               filterable haskell book list\t\t\t\t(tcard, Travis Cardwell)\n\n### Link lists\n\n- https://wiki.haskell.org/Learning_Haskell                   \n- http://jackkelly.name/wiki/haskell.html                     annotated links\t\t\t\t\t\t\t(Jack Kelly)\n- http://www.vex.net/~trebla/haskell/learn-sources.html       reviews of some classic docs\t\t\t\t(monochrom, Albert Y.C. Lai)\n- https://github.com/cohomolo-gy/haskell-resources            A List of Foundational Haskell Papers\t\t(@cohomolo-gy)\n- https://github.com/krispo/awesome-haskell                   Awesome Haskell\t\t\t\t\t\t\t(@krispo, Konstantin Skipor)\n- https://github.com/uhub/awesome-haskell                     awesome-haskell\t\t\t\t\t\t\t(@uhub)\n\n### Link-heavy docs\n\n- http://dev.stephendiehl.com/hask                            What I Wish I Knew When Learning Haskell\t(Stephen Diehl)\n- https://github.com/Gabriella439/post-rfc/blob/main/sotu.md  State of the Haskell ecosystem\t\t\t(@Gabriella439, Gabriella Gonzalez)\n- https://wiki.haskell.org/Typeclassopedia                    reference for the standard type classes   (Brent Yorgey)\n\n### Doc collections\n\n- https://guide.aelve.com                                     retired haskell docs/links wiki-db\t\t(peargreen, Artyom Kazak)\n- https://www.fpcomplete.com/haskell/learn                    good practical tutorials and library overviews\n- https://www.schoolofhaskell.com                             more FP Complete docs\n- https://serokell.io/blog/haskell                            good introductory and general posts\n\n### Other\n\n- https://www.fosskers.ca/en/blog/base                        GHC/base/etc. compatibility\n- https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history  GHC/boot library versions\n- https://github.com/search/advanced                          search for haskell repos on github\n- https://news.ycombinator.com/item?id=31459103               2022 discussion of tagging","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonmichael%2Fhaskell-links","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonmichael%2Fhaskell-links","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonmichael%2Fhaskell-links/lists"}