Skip to content

simonmichael/haskell-links

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

haskell-links

I wrote:

There's no way these very frequent reddit and chat requests for learning materials can capture all the existing resources. There are too many, and folks who know where they are get burned out reposting them. There have been many attempts to gather them, haskell.org/documentation being the most obvious, but none of them have fully succeeded. We could really do with some more systematic, scalable (crowd-sourced, lightweight) approach.

Here comes another attempt!

https://haskell-links.org, AKA the Haskell Links Library, is the web UI.

Goals

  • A comprehensive, up to date, maintained collection of links to Haskell resources (docs, sites, services..),
  • that is scalable, durable, cost-effective and community-owned
  • searchable and with the best content emphasised (eg by voting)
  • which all kinds of Haskellers find useful, time-saving, and enjoyable
  • and which accelerates Haskell learning and adoption.

How will we recognise success ?

  • Questions like "What's a good Haskell book?" and "Please recommend Haskell learning materials" can be answered easily and efficiently with a high quality link.
  • Knowledge of all available resources is more widely shared across the community, and easily discoverable by newcomers.
  • High quality content is not forgotten or perpetually undiscovered.
  • The community's most popular resources are featured prominently.
  • Using, contributing to, and managing the service is easy and fun.

Some principles

  • Avoid unnecessary work - this aims to fill a need, not to generate work or a hobby. Existing, good enough, cheap beats pending, perfect, costly.
  • Ruthless efficiency - think Craigslist. Less is more.
  • High reliability.
  • Chat ops, at some point - think lambdabot's @where.
  • Good web presence and SEO.
  • High bus factor, low toil.
  • Can be solo or community operated, but always ultimately community-owned.

Data

The primary data to be gathered is a link record, consisting of

  • the URL. The unique primary key.
  • an optional (?) short id, a unique possibly-hypenated word, useful for chat ops
  • an optional description. Plain text or perhaps link-free markdown, always enclosed in double quotes. (The other fields don't need quotes.) This and the other fields are always UTF8-encoded.
  • optional tags, a spaced list of possibly-hyphenated lowercase words, used for categorisation

These link records will be public data, stored in a single CSV file in this git repository, for durability, manageability and maximum readability/compatibility.

Later, secondary data may be added to enrich the above, particularly votes. This will likely be semiprivate data, stored in a sqlite DB by a web app, backed up and accessible to current/future admins and perhaps the Haskell Foundation for durability.

Capture

Links are to be collected by some combination of:

  • manual edits to the CSV
  • scripts/cron jobs, also in this repo, collecting links from existing sources: haskell.org, planet.haskell.org, /r/haskell, etc.
  • the web UI
  • the chat UI

There should always be an import/reconcile procedure which adds/updates without creating duplicates or conflicts.

Tags

All records have one tag indicating their source, such as lambdabot

UI

  1. CSV can be edited manually via git/github (?)
  2. A web app will provide filtering, sorting, updating, voting, permalinks, appropriate feeds, discoverability.
  3. A chat bot running in #haskell or wherever it's wanted will allow searching and updating.

Web presence

The web app runs at https://haskell-links.org, a custom domain for now.

SEO is checked with google search console.

Timeline

  • 2022-05-10 project start
  • gather some link sources
  • develop some import scripts/procedures
  • start gathering links
  • set up a simple web view
  • set up a simple chat ui
  • 2022-05-16 version 1 announced
  • v1.1, ui/link updates
  • 2022-05-20 v1.2, new data scheme and repo, column filters enabled by default, gray background
  • 2022-05-21 v1.3, works without javascript; supports multiple data sources, multiple tags, movable columns
  • drop tagging goal for now, just track links' source

More detail: app changes, data changes

Discuss / contribute

  • Chat sm in #haskell, via Libera or Matrix. Discourse also works well, eg here.
  • PRs fixing bugs are especially welcome.
  • More link sources should be imported / interoperated with. (?)
  • Enhance lambdabot or use another bot ?
  • Some workflow permitting web edits, and ideally multiple edit UIs, is desirable.
  • Where and how is master data stored ?
  • Which other data sources are synced and how ?
  • How are tags stored/edited ?
  • How are votes tracked/stored/edited ?

Related projects / potential link sources

Official-ish

Link databases

Link lists

Link-heavy docs

Doc collections

Other