{"id":16733154,"url":"https://github.com/quchen/hackage-graph","last_synced_at":"2026-03-06T21:31:16.487Z","repository":{"id":15718135,"uuid":"18456211","full_name":"quchen/hackage-graph","owner":"quchen","description":"A graph of the interdependencies of the packages of hackage.haskell.org.","archived":false,"fork":false,"pushed_at":"2020-05-22T10:04:18.000Z","size":18358,"stargazers_count":16,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-10T12:03:49.611Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quchen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-04-05T00:04:27.000Z","updated_at":"2024-04-17T13:47:41.000Z","dependencies_parsed_at":"2022-09-01T09:51:12.318Z","dependency_job_id":null,"html_url":"https://github.com/quchen/hackage-graph","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/quchen/hackage-graph","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quchen%2Fhackage-graph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quchen%2Fhackage-graph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quchen%2Fhackage-graph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quchen%2Fhackage-graph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quchen","download_url":"https://codeload.github.com/quchen/hackage-graph/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quchen%2Fhackage-graph/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30198661,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"ssl_error","status_checked_at":"2026-03-06T18:57:34.882Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-10-12T23:48:50.079Z","updated_at":"2026-03-06T21:31:16.394Z","avatar_url":"https://github.com/quchen.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"Graph of Hackage packages\n=========================\n\nThe goal of this package is making the graph of Hackage package dependencies\navailable.\n\nThe program is very much hacked together with only that goal only in mind, so\nthe code is fairly ugly (but short enough so it doesn’t matter).\n\nTaking only the dependencies of the latest version of each package are taken\ninto account and ignoring packages with two or less dependencies and `base`,\nhere is what Hackage looked like at the time of creation:\n\n![](out/hackage-3in-small.png)\n\nA higher resolution that includes package names image is available in the\n[`out`](out/) directory (18 MiB PNG), as well as the raw [`dot`][dot] file to\ncreate it. (Visualization made with [Gephi][gephi].)\n\nSince there are *lots* of dependencies going all over the place, the graph\nis mostly a giant blob. To extract useful information from it probably requires\nspecial focus in an appropriate program.\n\n\n\nUsage\n-----\n\nThe rather program reads the locally stored package database `00-index.tar` from\na hardcoded location (in [`Main.hs`][main]), and generates data in [`dot`][dot]\nformat to represent all packages and which packages they depend on. The result\nis written to STDOUT, ready to be plotted with GraphViz compatible tools such as\n[Gephi][gephi].\n\n(There is another program to include a giant `.cabal` file that makes the core of\nthe `acme-everything` package, but that’s just a joke and nobody should ever use\nit.)\n\nTo build and run from scratch, proceed as usual:\n\n```\nstack build --exec hackage-graph-as-dot \u003e output.dot\n```\n\n\n\n[cabal-db]: http://hackage.haskell.org/package/cabal-db\n[dot]:      https://en.wikipedia.org/wiki/DOT_%28graph_description_language%29\n[gephi]:    https://gephi.org/\n[travis]:   https://travis-ci.org/quchen/hackage-graph\n[main]:     src/Main.hs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquchen%2Fhackage-graph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquchen%2Fhackage-graph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquchen%2Fhackage-graph/lists"}