Latest revision as of 12:02, 26 June 2013
 1 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
 2 Projects
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.
 2.1 Darcs
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...
 2.2 DPM (Darcs Patch Manager)
The Darcs Patch Manager (DPM for short) is a tool that simplifies working with darcs. It is most effective when used in an environment where developers do not push their patches directly to the main repository but where patches undergo a reviewing process before they are actually applied. See http://www.factisresearch.com/2010/03/dpm/ for a short tutorial.
At the hackathon, we would like to add support for detecting conflicts between patches to the DPM. Some help from the darcs hackers on ideas how this feature could be realized would be great! Also, the integration with darcs is quite fragile, so we would also appreciate feedback from darcs hackers here.
Here are some ideas:
- Track conflicts. DPM should be aware of conflicts between two patches and between a patch and the current state of the repo.
- Diff between two patches in the same patch group.
- Improved apply command. DPM should select automatically the patch to apply instead of relying on darcs' interactive apply command
- Proper configuration file. At the moment, DPM relies exclusively on commandline arguments for customization.
- Some more patch states could be useful: DISCUSSION (similar to UNDECIDED but already reviewed and awaiting feedback from the patch developer), UNAPPLICABLE, ACCEPTED (ready to be applied but still unapplied). We should discuss which of these states are really needed and which can already be represented through the existing states + comments + the reviewed flag.
- The review command should offer the possibility to apply the patch directly to the repo. Something dialog like this would be cool:
What should I do with this patch? a) accept r) reject d) discard w) wait s) send review to author and wait
- Support for transitive dependencies
- Readline support
- Cleanup command (remove closed patch groups from the DB)
- Automatize interactive tests. DPM is lacking a good test suite. Often, I test DPM interactively by executing a series of shell commands and checking that the output is correct. It would be nice if we could record the shell commands and their output (the script tool could be useful here), so that we could replay them later.
- Bounce patch via email.
- Webfrontend for 'dpm list'
Hackers: Stefan Wehr
 2.3 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.
 2.4 event
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
 2.5 Data.Binary on continuations
- 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.
Comment by David Anderson: A good place to start for switching to CPS might be Attoparsec. The internals are very fast, and could probably make it into Binary.Get easily.
Comment by Lennart Kolmodin: I've got a CPS based version of binary working at http://haskell.org/~kolmodin/code/binary-push/ The Data.Binary.Get has been rewritten, some functions are still missing from the original API.
 2.6 Adaptable containers
- 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
 2.7 Leksah
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
 2.8 arbtt
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, Martin Kiefel
 2.9 loker
- 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
 2.10 JPEG-decoder
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.
 2.11 hledger
Hledger is a personal finance manager. Hackers are welcome! Hledger's author Simon Michael will be (remotely) with us.
- Readline-like interface in "hledger add", perhaps using shellac
- Embedded calculator into "hledger add"
- Exporting data to R
- Improve hledger as a library. Design good API
- Also see ideas here; feel free to add them to this list if you are going to hack on them
Hackers: Roman Cheplyaka
 2.12 BlazeHtml
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, and the corresponding github repo is here. Everyone is welcome to hack on this (new) project, if you're interested please contact me.
Hackers: Jasper Van der Jeugt, Simon Meier, Christopher Done(?)
- I'm interested in this -- I've forked your github gist. Do you want to start a proper project that we can fork? I'll try to come up with some Criterion tests and QuickCheck properties. I'm interested in adding a type-safe layer which may require some newtypes. Criterion will help determine how detrimental this is to speed and space. ---- Chrisdone 22:17, 15 March 2010 (UTC)
 2.13 Pesto
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, Christopher Done(?)
 2.14 Sirenial
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
 2.15 UHC
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
 2.16 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 some 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.
Update: I plan to finish DocTest integration with Haddock and then spend the rest of the weekend on Cabal. If you are interested in testable documentation or if you have any ideas, I would still like to chat with you;)
Hackers: Simon Hengel
 2.17 Histories on data types
I'm going to be working on a seamlessly extending ADTs with histories and lifting functions on those ADTs to properly extend the histories. Things I'll probably spend time on: trying to find a clean SYB formulation for this, and extending the Diff library on Hackage to work on ByteString and Text.
Hackers: Fred Ross
 2.18 Haskell eval/type-checker/smallchecker as a RESTful service
Hackers: Christopher Done
 2.19 Cabal
Cabal just recently i had to implement a minimal packaging system for my work. for some of the tasks it was convenient to reuse some of the cabal features. so i just stumbled across a post from duncan from last year (post from duncan) trying to find developers interested in helping with cabal. don't know if anybody wants to do some work on that but if there is i'd be up for it.
Hackers: Oliver Mueller, Simon Hengel
 2.20 symhs
sympy is a very good and easy to use symbolic math package for python. We would like to create something similar in Haskell. Of course the time will be limited, so we will try to concentrate on something minimal which is already useful.
During the hackathon a basic polynomial data structure and a couple of operations (expansion, differentiation) were coded. Mostly to serve as source for ideas and inspiration. See the code on gitorious.
Hackers: Mihaly Barasz, Gergely Risko
 2.21 Tunskell
A VPN mesh daemon written in Haskell. Among other things, it implements an IP routing engine, the BGP dynamic routing protocol, and the results so far show that it's smoking fast at what it does.
The code is still under heavy construction. The goal for the hackathon is to finish the BGP portion of the code, hooking up a routing table using that BGP code, and get multiple routers communicating and routing between each other, with some QuickCheck and Criterion thrown in. Other possible tasks are adding transport security (authentication + crypto between peers), peer management (disconnect/reconnect handling), handling network timeouts, and figuring out how to do configuration and hot configuration reloading.
Since the aim is partially to dispel the myth that Haskell can't be used for I/O heavy real world code, help on improving the performance of the code is most welcome.
Hackers: David Anderson
 2.22 HOC
The Haskell Objective C-Bridge (HOC) currently does not work out-of-the box on latest ghc/cabal. We want to fix this, work on cabal support for building Objective C modules, and eventually see if it is possible to get HOC on hackage.
Hackers: Benedikt Huber, David Markvica
 2.23 Haskell Platform
Time to release the Haskell Platform
 2.24 Email
A library for sending emails via SMTP or `sendmail`. In the future the email library should be extended to include parsing and generating of emails, reading mboxes and maildirs or connecting to IMAP and POP servers.
Hackers: Gero Kriependorf, Dirk Spöri, Johannes Weiss,
 2.25 Data.Category
An implementation of restricted categories. It contains categorical functors which support the identity functor and functor composition without needing newtype wrappers.
Hackers: Sjoerd Visscher
 3 Experience
Please list projects with which you are familiar. This way, people know whom to contact for more information or guidance on a particular project.
|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|
|SebastiaanVisser||salvia: websockets, inter-process sessions, more flexible user managent, http-ranges, more abstract api and more. (github)|
|DavidAnderson||Used: FFI, Network, STM; modest hacking on Attoparsec.|