{"id":13443065,"url":"https://github.com/commercialhaskell/stackage","last_synced_at":"2025-07-23T17:06:37.078Z","repository":{"id":5568550,"uuid":"6774018","full_name":"commercialhaskell/stackage","owner":"commercialhaskell","description":"Stable Haskell package sets: vetted consistent packages from Hackage","archived":false,"fork":false,"pushed_at":"2025-07-20T14:25:54.000Z","size":21219,"stargazers_count":546,"open_issues_count":25,"forks_count":821,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-07-20T15:23:53.058Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.stackage.org/","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/commercialhaskell.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2012-11-20T07:41:30.000Z","updated_at":"2025-07-20T14:25:58.000Z","dependencies_parsed_at":"2023-12-11T15:28:11.925Z","dependency_job_id":"9e22cac7-1c42-43d9-9a29-75ed392561d0","html_url":"https://github.com/commercialhaskell/stackage","commit_stats":{"total_commits":13856,"total_committers":939,"mean_commits":14.75612353567625,"dds":0.7904878752886836,"last_synced_commit":"00e08d28a0311ea007bff673d089d19a26cd543a"},"previous_names":["fpco/stackage"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/commercialhaskell/stackage","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commercialhaskell%2Fstackage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commercialhaskell%2Fstackage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commercialhaskell%2Fstackage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commercialhaskell%2Fstackage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/commercialhaskell","download_url":"https://codeload.github.com/commercialhaskell/stackage/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commercialhaskell%2Fstackage/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266717709,"owners_count":23973384,"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","status":"online","status_checked_at":"2025-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"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-07-31T03:01:55.546Z","updated_at":"2025-07-23T17:06:37.065Z","avatar_url":"https://github.com/commercialhaskell.png","language":"Dockerfile","funding_links":[],"categories":["Dockerfile"],"sub_categories":[],"readme":"stackage\n========\n[![check](https://github.com/commercialhaskell/stackage/actions/workflows/check.yml/badge.svg)](https://github.com/commercialhaskell/stackage/actions/workflows/check.yml)\n\nStable sets of Haskell Packages from Hackage\n\n_This repository is for package authors and maintainers to get their packages into Stackage._\n\nIf you simply want to use Stackage as an end user, please follow the instructions in the  [stack documentation](https://docs.haskellstack.org/en/stable/) and on \u003chttps://www.stackage.org/\u003e.\n\nWe highly recommend using the Haskell [stack](https://github.com/commercialhaskell/stack) tool for doing builds, which\nincludes built-in Stackage support.\n\nAdd your package\n----------------\n- To add your package in Stackage Nightly: edit the [build-constraints file](https://github.com/commercialhaskell/stackage/blob/master/build-constraints.yaml) and open a PR.\n- To add you package to Stackage LTS: you need to open a pull request for changing [lts-haskell](https://github.com/commercialhaskell/lts-haskell/tree/master/build-constraints) build-constraints.\n\nWe welcome all packages, provided:\n\n* The package author/maintainer agrees to the [maintainers agreement](https://github.com/commercialhaskell/stackage/blob/master/MAINTAINERS.md).\n* The package is buildable and testable from Hackage. We recommend setting up CI, which ensures a package is not accidentally incomplete, etc.\n* The package is compatible with the newest versions of its dependencies.\n* The package is compatible with the versions of libraries that ship with GHC ([more information on lenient lower bounds](https://tech.fpcomplete.com/blog/2014/05/lenient-lower-bounds)).\n\nFull details on how to add and test a package can be found in the [maintainers agreement](https://github.com/commercialhaskell/stackage/blob/master/MAINTAINERS.md#adding-a-package).\n\n__NOTE__: There is an approximate 30 minute delay between a package uploading\nto Hackage and being available to the Github workflow action to check upper\nbounds. If a pull request is marked as failed due to using an older version,\nplease close and reopen the PR to retrigger a CI build.\n\nOther repos\n-----------\n\nThe Stackage project consists of multiple repositories. This repository\ncontains the metadata on packages to be included in future builds and some\nproject information. In addition, we have the following repositories:\n\n* [stackage-server](https://github.com/fpco/stackage-server) [![Base image](https://github.com/fpco/stackage-server/actions/workflows/base.yml/badge.svg)](https://github.com/fpco/stackage-server/actions/workflows/base.yml)\n* [curator](https://github.com/commercialhaskell/curator) ![Build Status](https://github.com/commercialhaskell/curator/workflows/Runtime%20image/badge.svg)\n* [lts-haskell](https://github.com/commercialhaskell/lts-haskell)\n* [stackage-snapshots](https://github.com/commercialhaskell/stackage-snapshots/)\n\nCurious how it all fits together? See the [Stackage data\nflow](https://github.com/commercialhaskell/stackage/blob/master/DATA-FLOW.md).\n\nBuild the package set\n---------------------\n\nGenerally only the stackage build server run by the stackage curator\nteam and people interested in incorporating stackage snapshots into an\nOS distribution need to build the entire package set. If you're\ninterested in trying this yourself, please check out\n[the curator guide](https://github.com/commercialhaskell/stackage/blob/master/CURATORS.md),\nthough be aware that this is not a recommended practice and there\nlikely will be problems you will need to debug yourself.\n\n## Processing\n\nThe following describes at a high level the series of steps for processing\n\n### Nightlies\n\n1. Get list of core packages\n2. Get build constraints from list of maintained packages\n3. Load up package index\n4. Calculate build plan using newest versions of packages\n5. Write out a YAML file with complete build plan\n6. Verify that the build plan can be compiled\n7. Perform the build\n\n### LTS\n\n1. Load up most recent build plan\n2. Convert build plan into constraints for next build\n3. Continue from step (3) above\n\nFrequently Asked Questions\n--------------------------\n\n__Why is Stackage LTS still on an older version of GHC?__\n\nTypically it takes some months from a new major ghc release before\nthe Haskell ecosystem supports it fully enough that we can push it\nto a new stable Stackage major version release. There can also be\nghc regressions that hold up a LTS major release.\n\nThe lag for minor ghc releases should be less\nbut it still requires extra work and there is usually some delay - this also\nallows for some community testing before updating LTS.\n\n__Why does Stackage have an older version of a package than Hackage?__\n\nThere are a number of answers to this question:\n\n* Simplest reason: how old of a Stackage snapshot are you using? Once a\n  snapshot is created, it's frozen for all time. So if you use\n  nightly-2016-01-01, by the time you get to 2018, it will be pretty dated.\n* If you're using an LTS snapshot: we lock down major versions when\n  first creating an LTS run, so subsequent minor versions will not get\n  new versions necessary. For example, if LTS 6.0 has `foo` version\n  1.2.3, and the author immediately thereafter releases a version\n  1.3.0 and never releases another 1.2.\\* version, you'll never get\n  another update in the LTS 6 line\n* Sometimes we have upper bounds in place because other packages have\n  problems with newer versions of dependencies. Open up the\n  [build-constraints file](https://github.com/commercialhaskell/stackage/blob/master/build-constraints.yaml)\n  and search for \"Stackage upper bounds\"\n* Wired-in packages - those that ship with GHC and cannot be upgraded,\n  and packages depending on them - are fixed to GHC versions. Common\n  examples of this are containers and transformers. There's a lot more\n  information on this in\n  [an FP Complete blog post](https://tech.fpcomplete.com/blog/2014/05/lenient-lower-bounds)\n\n__How long do you maintain an LTS build?__\n\nWe only guarantee that we will maintain a single LTS major version at\na time, and that it will be maintained for at least three months. This\nis the\n[originally proposed support window](https://tech.fpcomplete.com/blog/2014/12/backporting-bug-fixes),\nand hasn't changed since then.\n\nThat said, we do maintain the capability to keep multiple LTS runs\noperational in parallel, and with LTS 6 and 7 in fact did so. We\naren't changing our guarantees yet on longevity of a release, but are\ntrying to push out the bounds a bit farther.\n\n__What time are Stackage snapshots published?__\n\nStackage Nightly and LTS are not released at a fixed time of day, they get\npushed to stackage.org (and the metadata to the stackage-snapshots github repo)\nwhen their builds finish on the Stackage build server and\nthe latest built haddocks have been synced over. This time varies\ngreatly depending on build times for package updates, bounds breakage,\nproblems with new packages being added and other build issues, etc. There are\ndays when a release does not happen. LTS releases tend to happen over the\nweekend or early in the week.\n\n__Where to get help regarding uploading packages?__\n\nPlease ask on the #stackage channel on the\n[Haskell Foundation Slack](https://join.slack.com/t/haskell-foundation/shared_invite/zt-mjh76fw0-CEjg2NbyVE8rVQDvR~0F4A)\nor open an issue or comment on the PR which uploads the package.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommercialhaskell%2Fstackage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcommercialhaskell%2Fstackage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommercialhaskell%2Fstackage/lists"}