Hackage at Baltimore

After the ICFP 2010 conference proper had come to a close, I came along for some Haskell-related revelry in Baltimore, from Thursday evening (Sept 30) to Sunday night (Oct 3). My paper-reading queue is chock full, and my wallet less so. Anyway, I had a good time and met some amazing people. I was there for a good reason, though.

I gave a talk at the Haskell Implementors’ Workshop about Hackage, which you can find at http://vimeo.com/15464003. It’s 35 minutes in total.

The presentation part is a straightforward overview. Open discussion starts at about 16:30. You can get the slides here [PDF].

I hope it gives you a better idea of where Hackage is going. During the weekend, I had some great discussions about Hackage, and comparing functional languages, and finance (of all things). Even better, there was actual solid planning. On Sunday, Duncan Coutts and I materialized a plan for switching over to the new Hackage. It’s up online at the Hackage trac wiki, and the current revision looks something like this:

*Live mirroring (user-immutable, all accounts are historical) Get archive.tar.gz of all ~10,000 packages on Hackage

Investigate unmirrorable packages (e.g. binembed-example, network-info, old-time)

Get cabal-installs pointing at it Implement backup for newer features (not all essential): Download statistics

Candidates

Preferred versions + deprecation Get data migration (schema updates) working more smoothly *Live server beta testing (user-mutable, all accounts are active) Disable registration; main Hackage accounts imported in

Still mirroring the main Hackage

Changes made here will be wiped out when server is fully deployed Configure server with Apache to support the tracs, support https on Hackage When ready to deploy: turn off upload on current Hackage Construct export tarball with these features: core (packages, user db, admin list)

upload (trustees, maintainers)

tags (based on categories, initially)

distro (from current files: arch + debian, eventually exherbo + ubuntu)

download (from logs, give expected format to Galois log holders)

versions (deprecated packages, preferred-versions) Wipe server state and restore from tarball *Switch!

Throughout all this there will be testing for backups and performance. The starred items are the significant ones that’ll be announced. They look like “use it with cabal-install!”, “use it as you please unofficially!”, and “use it as you please officially!”. If you’d like to learn more about some of the ideas behind hackage-server, the architecture document is a good starting point, as well as past blog posts and the features themselves.