Functional Programming

Functional Programming

Functional Programming

Nov 20, 2014

Stackage server: new features and open source

Stackage server: new features and open source

Stackage server: new features and open source

Open source

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:

Clarifying improvements

  • 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.

Packages

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 package:

    • 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

    snapshot itself.


  • Documentation versions: each snapshot that contains a version of

    this package will be listed along with documentation for that

    version.


README

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 .cabal file with:


extra-source-files: README.md

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 is .md, otherwise it's treated as plain text.

Specifying remote-repo in sandboxes

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 cabal.config 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 repository.


Additional package page features

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.

    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 icon.

  • 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:

Summary

Stackage just got easier to use:

  • The site is clearer now.

  • The 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.

  • Or you can start from the package list and view an individual package, vote and tag it.

  • It's open source!