Hackage, Cabal and The Haskell Platform

The Second Year
Don Stewart Galois Duncan Coutts Well-Typed

Goals of the Haskell Platform

Standardized list of compilers, libraries and tools Comprehensive: Haskell: Batteries Included One level of quality control for Hackage Makes it easier to get your work distributed, with free marketing support Move stabilization work from GHC team to libraries team One click installers for Windows, Mac, Unix http://haskell.org/platform

● ● ●

The Haskell Platform

What we did in 2010

First full year of the HP project

Time-based releases:
– –

2010.1.x March 2010.2.x July

Package Addition Process

– –

+ text mtl → mtl2 with transformers

HP Results: 2010
● ● ● ●

703k total downloads 138k unique IP addresses downloaded Haskell ~125k downloads per HP release Windows dominates the installs, and is 50% of traffic to the HP site. Total world's population of Haskell programmers would fit on 1155 Boeing 747s...

● ● ● ●

Global Village 154 countries US . DE . UK . JP . RU . CA . CH . AU . FR . BR SE . NL . PL . IN . IT . ES . UA . AR . KR . FI

“Try http://hackage.haskell.org/platform/ It's made this sort of stuff a lot easier!” “Drooling over the Haskell Platform” “I'm glad to see such an easy way to get up and running with Haskell finally!” “MSYSGit + MingW + Emacs + HaskellPlatform on Windows is so nice. It's almost like I'm using a real OS.” “The #Haskell Platform installed beautifully on my machine. I wish that all of my research tools were so nicely packaged” “it is easier to install the new #haskell #Platform in a mac than the JDK #win

Avoiding avoiding success hurts
“Cannot believe I still can't apt-get install haskell-platform in Ubuntu 10.04...” “Haha! Haskell, I hate you! Someone knows why, after installing Haskell Platform on Mac, I can't use cabal?” “Installing Haskell Platform 2010.2.0.0 using the official DMG. MacPorts sucks!” “Why is haskell-platform 138MB? Does it include monad of the entire world?” “Installing Haskell Platform on Linux is a royal pain in the ass.” “So, you can't compile & install Haskell unless you already have a working version of Haskell...”

Haskell Platform and GHC 7

The new GHC 7 comes out soon
● ● ● ● ●

No more base 3 -XMonoBinds with GADTs -XHaskell2010 by default (e.g. FFI available) 3 months until HP 2011 Inliner, LLVM, type checker, IO manager new

● ●

So: 3 month “beta testing” for GHC 7 series Then it is in the standard distribution


Hackage Results: growing growth

Total Hackage downloads :
● ● ●

1.26 million downloads in Q1-Q3 2010. 2.92 million downloads total 160K downloads in August

Compare with 80 K last August

Total Packages on Hackage : 2445

(+1000 over last year) (+128 over last year)

Total Contributors : 628 developers

Top 20 Haskell Apps on Hackage cabal-install, xmonad, haddock, cpphs, happy, alex, hscolour, darcs, pandoc, texmath, hlint, leksah, xmobar, yi, agda, cabal2arch, uuagc, hoogle, gitit, c2hs

Top 20 Haskell Libs on Hackage parsec, HTTP, zlib, binary, network, utf8-string, QuickCheck, mtl, Cabal, haskell-src-exts, regex-base, hslogger, transformers, text, uniplate, parallel, xml, json, HaXml, stm

Cabal and cabal-install
● ● ● ●

cabal test – see the talk hackage 2 – see the talk Libraries and build-tools in same package Support for more compilers
cabal install –uhc

License checking, clean-room builds, hudson support, build reporting

Future work for Cabal
● ● ● ● ●

NixOS-style persistent package management New constraint solver for dependencies cabal benchmark? Parallel builds Hackage docs as wikis

New Hackage Visual Design

Work still to do

Ubuntu “Haskell Platform” .deb

Coming downstream from Debian Don't use MacPorts Need new Mac maintainer team

More comprehensive “native” Mac tools
● ●

● ●

“Enterprise” Haskell installers: SunOS/ CentOS Easy regression testing of Hackage
● ● ●

Nightly smoke tests, “cabal install –chroot” Hudson build farm integration... Source analysis interface to Hackage package code