From HaskellWiki
< ZuriHac2010
Revision as of 11:00, 15 March 2010 by SimonHengel (talk | contribs) (Addo Project: Testable Documentation)
Jump to: navigation, search

Generic information

You can apply for an account and a project using the community server.

Once you have an account and/or a project, you upload a Darcs repository as follows. First, initialize your repository on the server:

 $ ssh community.haskell.org
 you@haskell:~$ cd /srv/code/yourproject
 you@haskell:/srv/code/yourproject$ darcs init

Then, log out and push your repository:

 $ darcs push community.haskell.org:/srv/code/yourproject


If you have a project that you want to work on at the Hackathon, please describe it here.

Since Hackathons are great for teamwork, consider joining one of the projects mentioned below. If you're interested in one of these projects, add your name to the list of hackers under that project.


A large chunk of the Darcs team will be at ZuriHac. We would be delighted for you to join in and do some hacking with us. To help you get started, we have a big list of ProbablyEasy bugs to chew on. See our sprint page for more details!

Hackers: Florent Becker, Guillaume Hoffmann, Eric Kow, Reinier Lamers, Petr Rockai, Ganesh Sittampalam and more...

Need for speed

In 2006 the Python community had a NeedForSpeed sprint. Some Haskell libraries, like the containers library, could use some benchmarks (using e.g. Criterion) and hopefully some performance improvements.


The event library will hopefully replace GHC's I/O manager with a more scalable implementation, based on better data structures and more efficient system calls (e.g. epoll/kqueue).

The project is nearing completion, but more testing and benchmarking is needed. The code also needs to be merged into GHC.

Hackers: Johan Tibell

Data.Binary on continuations

The Data.Binary library provides blazing fast reading/writing of binary data. There are a few things I'd like to see improved, hopefully before inclusion in the Haskell Platform:

  • It's not possible to use the library on large inputs without resorting to lazy I/O. By changing the underlying implementation to use continuations and expose a continuations based API we can process large inputs without resorting to unsafe operations. This needs to be done while still offering good performance.
  • The library lacks error handling. The above implementation would naturally support communicating errors to the user. There are however other ways to achieve the same result.
  • The library currently includes two separate features in one package, low-level binary parsing of simple types (e.g. Ints and Words) and a data format (the Binary typeclass). Arguably the library should be split in two.
  • The binary data format should be documented and it should be clear which types are guaranteed to have the same encoding for the foreseeable future.

Hackers: Johan Tibell, Christophe Poucet, Marc A. Ziegert, Lennart Kolmodin

Comment by Jürgen "Jutaro" Nicklisch: I've hacked an addition package to binary: binary-shared, which gives sharing of data for serialization and deserialization. For my app this gives a huge saving of space and time and I think it would be reasonable to integrate this into the binary package.

Adaptable containers

Scala's collection library was completely overhauled in 2.8. The containers library is a bit dated. There are several things that could be done:

  • Write a new library based on associate data types, yielding performance improvements.
  • Write more tests and add some Criterion benchmarks.
  • Consolidate API naming, exported functions, etc.

Hackers: Christophe Poucet


I will work on Leksah and help is needed and welcome

  • Packaging for Debian/Ubuntu
  • Editor for Cabal files with configurations
  • Concept for Plugins/Extensions
  • Fixing bugs
  • ...

Hackers: Jürgen Nicklisch


The automatic rule based time tracker needs some love. Possible projects are

  • Graphical statistics
  • Export to hamster db (they have nice statistics)
  • More powerful date/time manipulation rules (including type inference and good error messages)
  • Performance improvements
  • ...

Hackers: Joachim “nomeata” Breitner


Loker is:

  • library for parsing (POSIX) UNIX Shell scripts
  • program for static analysis of Shell scripts
  • compiler for Shell scripts
  • whatever you can imagine related to Shell scripts.

Currently the parser part is almost done. See githug repository.

I am happy to see anyone interested in the project, please contact me.

Hackers: Roman Cheplyaka


Package stb-image contains a JPEG-decoding function, but it is a wrapper around a C function. Obviously, it is not the Haskell spirit to let C do the dirty work!

I once wrote a JPEG-decoder purely in Haskell. It is optimized for readability rather than speed. During the Hackathon, I want to:

  • package it under Cabal
  • try and optimize it (using bytestreams (or bitstreams?))
  • see whether it competes with the C implementation...

Help of hackers who know bytestreams is appreciated (you don't need knowledge of JPEG to participate in this project).

Hackers: Jeroen Fokker.


If there are any hledger users among participants, we could hack on it. First of all, hledger needs some refactoring and API cleaning. Then many nice features could be added.

Hackers: Roman Cheplyaka


There are several HTML combinator libraries on hackage, but we still need one that is *really* fast. This is attempt to tackle the problem described here. A simple API proposal can be found here, but that's only one idea. Everyone is welcome to hack on this (new) project, if you're interested please contact me.

Hackers: Jasper Van der Jeugt, Simon Meier


I will be working on the Pesto web framework. Rather than a regular framework, it is a collection of orthogonal modules for the model, view and controller part. I will try to release the regular-web package and possibly work on the Basil library.

Hackers: Chris Eidhof


Sirenial is a type-safe SQL wrapper. Compared to HaskellDB it uses simpler types and is able to automatically and transparently merge similar SELECT queries. During the Hackathon I will aim to bring the project to a usable state and release a first version on Hackage.

Hackers: Martijn van Steenbergen


We will work on library support (Cabal, FFI) for UHC. There are many other projects, work in progress, etc, so just ask us if you want to work on a UHC related project or just are interested to know a bit more about its internals.

Hackers: Atze Dijkstra, Andres Löh, Jeroen Fokker

Testable Documentation

I'll work on testable documentation. There is still some work to be done on DocTest (e. g. integration with Haddock, support for QuickCheck properties). An other idea is to define a format for tutorials, that allows us to verify that given Examples do actually work. Please drop me some lines (simon hengel at wiktory org), if you are interested in the topic.

Hackers: Simon Hengel


Please list projects with which you are familiar. This way, people know whom to contact for more information or guidance on a particular project.

Name Projects
tibbe event, Hyena, and general networking/HTTP
chrisdone Hacked on/worked on: libgd, hsql, fast/cgi, formlets, json, fdo-notify, mueval, lambdabot, wordcloud, goa, tryhaskell
coeus Network.Socket, binary+cereal; NFSv3 protocol, RS-Codes, have been working with multiple different interacting threads (i.e. combined with single-threaded GUIs, NFS-proxy)
chriseidhof formlets, sphinx, Basil, regular-web, regular, fclabels.
JedBrown distributed memory parallelism, numerical analysis, fft