We've been working on Stackage server for a while and now that
the code has stabilized it's ready to be open source. You can
fork it on
Github! We're a responsive team, used to bringing pull requests
forward and getting them deployed.
Since the last
update we added a bunch of things. Here's a rundown:
Recommended snapshots: The home page now lists recommended
snapshots for GHC 7.8, GHC 7.8 Haskell Platform flavour, and GHC
7.6. Makes it a little more straight-forward where to start.
Snapshots: The snapshots page has been
cleaned up a bit to cleanly separate times when snapshots are
uploaded. Just an aesthetic improvement.
We also reorganized the
Preparing your system to use Stackage wiki page to be more
straight-forward to get started.
We now list all packages from Hackage on the packages page. A subset
of these are included in Stackage snapshots. Hitting those links
takes you to our new page package. Examples:
On this page we display:
Metadata for the most recently uploaded version of that
- Name, version, license, authorship, maintainer
We also display the dependencies of that package. Notice that
there are no version constraints. That information is stored in the
Documentation versions: each snapshot that contains a version of
this package will be listed along with documentation for that
We support showing a README from your package (see e.g. hlint
example above), which is a really nice way to introduce people to
your package. You can use the same one that you use for your Github
README.md, just include it in your
If your filename is just
README it'll be included
as plain text. With the
.md extension it will be
rendered as markdown.
Please do go ahead and include your README.md in your .cabal
file. If you don't have one, please write one and make it helpful
and descriptive for any newbies to your package.
If no README file is found it falls back to the package
description, which is displayed as plain text. As is well-known in
the community at large, writing descriptive pros in Haddock syntax
is not pleasant, whereas everyone is pretty much writing their
READMEs in markdown anyway thanks to Github.
CHANGELOGs are also displayed as markdown if the file extension
.md, otherwise it's treated as plain text.
An issue with using Stackage in the past was that you had to
either put your
remote-repo field in your global cabal
config, or setup an hsenv. Or by using a
with constraints in it. Now the feature has been merged
to be able to specify
remote-repo in the
cabal.config file in your project root. Once this is
released you'll be able to use a Stackage snapshot within a sandbox
and keep the
cabal.config file in your source
Additional package page
Additional features include:
Tagging: tagging a package is easy: you just click the
+ button, type something and hit return.
We try to keep the tags of a simple format (a slug), so if you
type characters that shouldn't be in there, it'll remove them and
then prompt you to confirm.
Related: if you click a tag it will take you to a page of all
packages tagged with that, e.g. parsing.
Finally, there is a list
of all tags. Currently it's rather small because that's just
what I populated myself.
Likes: just upvote a package if you like it. Hit the thumbs up
Comments: comments are provided by Disqus. It's very easy to
comment with Disqus, you can use your normal account.
If you're interested in a package, or are an author, you can hit
the Subscribe link displayed at the bottom of the page to subscribe
to that discussion to get updates of future comments.
Additional to the other metadata, like Github, we make use of
the files in your package, so we will also display:
Stackage just got easier to use:
- The site is clearer now.
wiki guide is easier.
- Using Stackage from a sandbox will soon be very easy.
- You can browse documentation of your snapshot on Stackage via
the snapshot (e.g.
- Or you can start from the package list and view an
individual package, vote and tag
- It's open source!
Do you like this blog post and need help with DevOps, Rust or functional programming? Contact us.