Personal tools

ZuriHac2014/Projects

From HaskellWiki

< ZuriHac2014(Difference between revisions)
Jump to: navigation, search
(Added Lorenzo to GHC)
(add hoodle to the Zurihac 2014 project page)
 
(29 intermediate revisions by 13 users not shown)
Line 16: Line 16:
   
 
* Jasper van der Jeugt
 
* Jasper van der Jeugt
  +
* David Wagner
   
 
=Haskell: the Gathering=
 
=Haskell: the Gathering=
Line 50: Line 51:
 
=GHC bug squashing=
 
=GHC bug squashing=
   
I plan to fix a few random GHC bugs and I’m more than happy to guide GHC-newbies in doing the same.
+
I plan to fix a few random GHC bugs and I’m more than happy to guide GHC-newbies in doing the same. Planning and coordination will happen at https://ghc.haskell.org/trac/ghc/wiki/ZuriHac2014. I started to collect some suitable tickets, feel free to add some.
   
 
* Joachim Breitner
 
* Joachim Breitner
Line 60: Line 61:
   
 
* Gerolf Seitz (I would like to have a RFC / code-review on oauth-provider)
 
* Gerolf Seitz (I would like to have a RFC / code-review on oauth-provider)
  +
  +
=Math Symbols in Diagrams=
  +
  +
I'd like to be able to label diagrams with mats symbols and fonts: http://projects.haskell.org/diagrams/. There has been some discussion of this on #diagrams and I need to write up an approach. NB I have used diagrams a lot but never hacked on the package itself.
  +
  +
* Dominic Steinitz
  +
* David Wagner
  +
  +
=Propellor=
  +
  +
See: http://hackage.haskell.org/package/propellor
  +
  +
* David Wagner (I would like to add [http://mmonit.com/monit/ monit] support to propellor).
  +
  +
=Rest=
  +
  +
We have recently open sourced our [https://github.com/silkapp/rest rest framework] which Erik Hesselink gave a presentation about at last years ZuriHac. It provides a declarative way to define REST resources (rest-core) which can be used to run the api on different web servers (rest-happstack, rest-snap) and to automatically generate clients for different languages along with documentation and usage examples (rest-gen). We want to write introductory materials to get people started. We'd appreciate help and we'd be happy to sit down with anyone wanting to get started with rest.
  +
  +
* Adam Bergmark
  +
* Erik Hesselink
  +
* Sebastiaan Visser
  +
  +
Project ideas:
  +
  +
* Write tutorials based on the rest-example blog application
  +
* Refactor the rest-gen haskell client generation to use haskell-src-exts
  +
* Write a test-framework that runs an api and uses its generated client
  +
  +
= Erlang Interpreter in Haskell=
  +
  +
This is my learning project for Haskell, and since I come from Erlang background I have chosen to combine both things into one.
  +
  +
* Gleb Peregud
  +
* Felipe Zapata
  +
  +
= LGtk: GUI framework in Haskell=
  +
  +
See [http://lgtk.wordpress.com/ http://lgtk.wordpress.com/] and [http://www.haskell.org/haskellwiki/LGtk http://www.haskell.org/haskellwiki/LGtk].
  +
I would like to work on a browser backend with GHCJS and improving documentation (writing a tutorial especially).
  +
  +
* Péter Diviánszky
  +
* Pék Dániel
  +
  +
= LambdaCube 3D - Stunts game=
  +
[http://lambdacube3d.wordpress.com/ LambdaCube 3D] is a domain specific language and library that makes it possible to program GPUs in a purely functional style.
  +
During ZuriHac I'll implement FRP based menu for [https://www.youtube.com/watch?v=XoE5CKLLnaM Stunts demo]. If you are interested in game development join! :)
  +
  +
* Csaba Hruska
  +
  +
= extensible-effects =
  +
  +
Revise the package's API and prepare the 2.0 version.
  +
  +
WIP is at https://github.com/feuerbach/extensible-effects
  +
  +
* Roman Cheplyaka
  +
* Steven Keuchel
  +
  +
= complexity =
  +
  +
[http://hackage.haskell.org/package/complexity Complexity] is a tool to measure the emprical complexity of functions. During Zurihac we want to rewrite complexity so that it makes use of the excellent Criterion package. We also want to rewrite the reporting part. Perhaps not depend on any GUI toolkits but instead generate a static HTML report.
  +
  +
* Roel van Dijk
  +
* Tim Schwarte
  +
  +
= Binding for librabbitmq =
  +
  +
See https://github.com/alanxz/rabbitmq-c
  +
  +
* Mikael Brockman
  +
  +
= The `psqueues` package =
  +
  +
Help creating a <hask>psqueues</hask> package providing performant implementations of priority search queues. These are data structures that manage a set of triples of the form <hask>(key, priority, value)</hask> and allow efficient lookup and removal by key, efficient update of priority by key and efficient lookup and removal of the element with minimal priority. More precisely, I imagine that the package should provide <hask>IntPSQ</hask>s, <hask>HashPSQ</hask>, and <hask>PSQ</hask> data structures whose requirements and API are analogous to <hask>IntMap</hask>s, <hask>HashMap</hask>s, and general <hask>Map</hask>s.
  +
  +
The implementation plan is as follows.
  +
  +
* The APIs are structured analogously to the existing <hask>containers</hask> and <hask>unordered-containers</hask> APIs extended with additional functions inspired by the <hask>PSQueue</hask> package.
  +
* The implementation of <hask>PSQ</hask> is based on [http://hackage.haskell.org/package/PSQueue-1.1/docs/Data-PSQueue.html Hinze's construction] and the code already provided in the <hask>PSQueue</hask> package.
  +
* The implementation of <hask>IntPSQ</hask>s uses a radix-tree that stores <hask>(key, priority, value)</hask> triples in inner nodes and enforces the min-heap property. There is a draft of this structure in TODO URL, which significantly outperforms the <hask>PSQueue</hask> package specialized to <hask>Int</hask>s (see [https://github.com/meiersi/containers/commit/4009123e0a9cb1ceec3bac9fd6432420cd00d47b]).
  +
* The implementation of the <hask>HashPSQ</hask>s uses an <hask>IntPSQ</hask> over the hash values of the keys and manages the collisions using a <hask>PSQ</hask> to guarantee logarithmic worst-case performance for <hask>insert</hask>s and <hask>lookup</hask>s.
  +
  +
The two main use cases of the structures provided by this package are the GHC IO manager and pure LRU caches, which are used in many web application backends to speedup data storage access. However, I'm sure there are more use cases for efficient priority search queues.
  +
  +
There is a [https://github.com/meiersi/containers/commits/feat-compact-intmaps branch in my fork of containers] that contains a minimal, but working and well-performing [https://github.com/meiersi/containers/blob/feat-compact-intmaps/Data/IntPSQ.hs IntPSQ]. The work that remains to be done is to
  +
  +
* incorporate and modernize the <hask>PSQ</hask> from the <hask>PSQueues</hask> package
  +
* combine <hask>IntPSQ</hask>s and <hask>PSQ</hask>s to form a <hask>HashPSQ</hask>
  +
* implement extensive tests
  +
* implement more realistic benchmarks for the above two usecases
  +
  +
This project is well-suited for a group of Haskellers starting at intermediate level, as the work can be parallelized well and the individual tasks are small and well-defined.
  +
  +
Project lead: Simon Meier
  +
  +
Participants:
  +
* Alex Sayers
  +
* Jasper Van der Jeugt
  +
  +
= The `th-versions` package =
  +
  +
The goal of this package would be to implement Template Haskell functions to look around in the environment for build time information: timestamp, git commit hash (and info on dirtiness maybe), content of VERSION file while walking upwards from the current directory, path of compilation, hostname of compilation, architecture, etc.
  +
  +
Then we would embed this to the program/library being compiled with a splice.
  +
  +
Template Haskell may not be everyone's favorite extension, but it's definitely better than CPP. :)
  +
  +
This project is well-suited for some advanced beginners who want to learn about TemplateHaskell and already create some useful new hackage package in the process.
  +
  +
If you have questions, feel free to ask:
  +
* Gergely Risko
  +
* Mihaly Barasz
  +
  +
= GHC `--make-link-only` flag =
  +
  +
At nilcons we use makefiles to drive Haskell compilation for various reasons. The final linking has to be done with `ghc --make`, because that's the easiest way to call the linker with all the necessary packages correctly passed.
  +
  +
But we want to assert that this `ghc --make` shouldn't do any compilations at all, because previous parts of the makefile should have taken care of that. If GHC detects that compilations are needed and linking is not enough, that's a serious mistake somewhere in our system.
  +
  +
Currently this check is implemented by grepping for "Compiling" in the output of `ghc --make`, which is a bit kludgy.
  +
  +
Therefore we would like to implement the `--make-link-only` mode (open to better names) that will do the same thing as `--make` linking wise, but if compilations are needed it will issue a fatal error.
  +
  +
* Gergely Risko
  +
* Mihaly Barasz
  +
  +
= GHC: selectively ignore some warnings =
  +
  +
`-fwarn-name-shadowing` is a very useful warning that can uncover a lot of hard to catch bugs. But it's annoying when a short name is used locally in a small let that is otherwise defined in the Prelude or in lens: e.g. `map`, `to`, `view`.
  +
  +
Therefore we would like to add annotations that can be used to ignore name shadowing for the binding, something like this:
  +
  +
f = ...
  +
let {-# SHADOWS #-} map = defaultMapWhatever
  +
in gameWithAnotherMap map
  +
...
  +
  +
We're not sure about the syntax here, so we're happy to hear your opinions!
  +
  +
A similar request for `-fwarn-unused-binds` is already in trac under #3283, we'll try to handle that too.
  +
  +
* Gergely Risko
  +
* Mihaly Barasz
  +
  +
= Opaleye =
  +
  +
See: http://staff.science.uva.nl/~grelck/nl-fp-day-2014.html#ellis
  +
  +
And: http://staff.science.uva.nl/~grelck/nl-fp-talks/ellis.pdf
  +
  +
* Tom Ellis
  +
* Renzo Carbonara
  +
  +
= hoodle =
  +
  +
See: http://ianwookim.org/hoodle
  +
  +
And: http://github.com/wavewave/hoodle
  +
  +
* Ian-Woo Kim

Latest revision as of 12:08, 10 June 2014

These are some of the projects that ZuriHac 2014 attendees will be working on:

Contents

[edit] 1 Aeson

See: http://hackage.haskell.org/package/aeson

  • Bas van Dijk (Faster JSON encoder)

[edit] 2 Scion / Lambdachine

  • Thomas Schilling

[edit] 3 Hakyll

See: http://jaspervdj.be/hakyll/

  • Jasper van der Jeugt
  • David Wagner

[edit] 4 Haskell: the Gathering

Implementation of Magic: the Gathering in Haskell. We will work on the rules engine, card implementations (both in Haskell) and the web client (TypeScript/HTML). Help is welcome in all three areas.

  • Martijn van Steenbergen

[edit] 5 T-Digest

Persistent implementation of the T-Digest (https://github.com/tdunning/t-digest) quantile estimation data structure, for use in ekg.

  • Johan Tibell

[edit] 6 Nomyx

Nomyx is a game where you can change the rules while playing: http://www.nomyx.net

  • Corentin Dupont (I'll work on new features and bugs . Help/advices are welcome :))

[edit] 7 Snap

See: http://snapframework.com/

  • Alfredo Di Napoli - I have in mind a couple of interesting features I would like to see in snap.

[edit] 8 Hackage

See: http://hackage.haskell.org/

  • Ian Ross (tags interface)
  • Alp Mestanogullari (most likely a nice statistics page)

[edit] 9 GHC bug squashing

I plan to fix a few random GHC bugs and I’m more than happy to guide GHC-newbies in doing the same. Planning and coordination will happen at https://ghc.haskell.org/trac/ghc/wiki/ZuriHac2014. I started to collect some suitable tickets, feel free to add some.

  • Joachim Breitner
  • Lorenzo Tabacchini

[edit] 10 Oauth-provider

See: http://github.com/gseitz/oauth-provider

  • Gerolf Seitz (I would like to have a RFC / code-review on oauth-provider)

[edit] 11 Math Symbols in Diagrams

I'd like to be able to label diagrams with mats symbols and fonts: http://projects.haskell.org/diagrams/. There has been some discussion of this on #diagrams and I need to write up an approach. NB I have used diagrams a lot but never hacked on the package itself.

  • Dominic Steinitz
  • David Wagner

[edit] 12 Propellor

See: http://hackage.haskell.org/package/propellor

  • David Wagner (I would like to add monit support to propellor).

[edit] 13 Rest

We have recently open sourced our rest framework which Erik Hesselink gave a presentation about at last years ZuriHac. It provides a declarative way to define REST resources (rest-core) which can be used to run the api on different web servers (rest-happstack, rest-snap) and to automatically generate clients for different languages along with documentation and usage examples (rest-gen). We want to write introductory materials to get people started. We'd appreciate help and we'd be happy to sit down with anyone wanting to get started with rest.

  • Adam Bergmark
  • Erik Hesselink
  • Sebastiaan Visser

Project ideas:

  • Write tutorials based on the rest-example blog application
  • Refactor the rest-gen haskell client generation to use haskell-src-exts
  • Write a test-framework that runs an api and uses its generated client

[edit] 14 Erlang Interpreter in Haskell

This is my learning project for Haskell, and since I come from Erlang background I have chosen to combine both things into one.

  • Gleb Peregud
  • Felipe Zapata

[edit] 15 LGtk: GUI framework in Haskell

See http://lgtk.wordpress.com/ and http://www.haskell.org/haskellwiki/LGtk. I would like to work on a browser backend with GHCJS and improving documentation (writing a tutorial especially).

  • Péter Diviánszky
  • Pék Dániel

[edit] 16 LambdaCube 3D - Stunts game

LambdaCube 3D is a domain specific language and library that makes it possible to program GPUs in a purely functional style. During ZuriHac I'll implement FRP based menu for Stunts demo. If you are interested in game development join! :)

  • Csaba Hruska

[edit] 17 extensible-effects

Revise the package's API and prepare the 2.0 version.

WIP is at https://github.com/feuerbach/extensible-effects

  • Roman Cheplyaka
  • Steven Keuchel

[edit] 18 complexity

Complexity is a tool to measure the emprical complexity of functions. During Zurihac we want to rewrite complexity so that it makes use of the excellent Criterion package. We also want to rewrite the reporting part. Perhaps not depend on any GUI toolkits but instead generate a static HTML report.

  • Roel van Dijk
  • Tim Schwarte

[edit] 19 Binding for librabbitmq

See https://github.com/alanxz/rabbitmq-c

  • Mikael Brockman

[edit] 20 The `psqueues` package

Help creating a
psqueues
package providing performant implementations of priority search queues. These are data structures that manage a set of triples of the form
(key, priority, value)
and allow efficient lookup and removal by key, efficient update of priority by key and efficient lookup and removal of the element with minimal priority. More precisely, I imagine that the package should provide
IntPSQ
s,
HashPSQ
, and
PSQ
data structures whose requirements and API are analogous to
IntMap
s,
HashMap
s, and general
Map
s.

The implementation plan is as follows.

  • The APIs are structured analogously to the existing
    containers
    and
    unordered-containers
    APIs extended with additional functions inspired by the
    PSQueue
    package.
  • The implementation of
    PSQ
    is based on Hinze's construction and the code already provided in the
    PSQueue
    package.
  • The implementation of
    IntPSQ
    s uses a radix-tree that stores
    (key, priority, value)
    triples in inner nodes and enforces the min-heap property. There is a draft of this structure in TODO URL, which significantly outperforms the
    PSQueue
    package specialized to
    Int
    s (see [1]).
  • The implementation of the
    HashPSQ
    s uses an
    IntPSQ
    over the hash values of the keys and manages the collisions using a
    PSQ
    to guarantee logarithmic worst-case performance for
    insert
    s and
    lookup
    s.

The two main use cases of the structures provided by this package are the GHC IO manager and pure LRU caches, which are used in many web application backends to speedup data storage access. However, I'm sure there are more use cases for efficient priority search queues.

There is a branch in my fork of containers that contains a minimal, but working and well-performing IntPSQ. The work that remains to be done is to

  • incorporate and modernize the
    PSQ
    from the
    PSQueues
    package
  • combine
    IntPSQ
    s and
    PSQ
    s to form a
    HashPSQ
  • implement extensive tests
  • implement more realistic benchmarks for the above two usecases

This project is well-suited for a group of Haskellers starting at intermediate level, as the work can be parallelized well and the individual tasks are small and well-defined.

Project lead: Simon Meier

Participants:

  • Alex Sayers
  • Jasper Van der Jeugt

[edit] 21 The `th-versions` package

The goal of this package would be to implement Template Haskell functions to look around in the environment for build time information: timestamp, git commit hash (and info on dirtiness maybe), content of VERSION file while walking upwards from the current directory, path of compilation, hostname of compilation, architecture, etc.

Then we would embed this to the program/library being compiled with a splice.

Template Haskell may not be everyone's favorite extension, but it's definitely better than CPP. :)

This project is well-suited for some advanced beginners who want to learn about TemplateHaskell and already create some useful new hackage package in the process.

If you have questions, feel free to ask:

  • Gergely Risko
  • Mihaly Barasz

[edit] 22 GHC `--make-link-only` flag

At nilcons we use makefiles to drive Haskell compilation for various reasons. The final linking has to be done with `ghc --make`, because that's the easiest way to call the linker with all the necessary packages correctly passed.

But we want to assert that this `ghc --make` shouldn't do any compilations at all, because previous parts of the makefile should have taken care of that. If GHC detects that compilations are needed and linking is not enough, that's a serious mistake somewhere in our system.

Currently this check is implemented by grepping for "Compiling" in the output of `ghc --make`, which is a bit kludgy.

Therefore we would like to implement the `--make-link-only` mode (open to better names) that will do the same thing as `--make` linking wise, but if compilations are needed it will issue a fatal error.

  • Gergely Risko
  • Mihaly Barasz

[edit] 23 GHC: selectively ignore some warnings

`-fwarn-name-shadowing` is a very useful warning that can uncover a lot of hard to catch bugs. But it's annoying when a short name is used locally in a small let that is otherwise defined in the Prelude or in lens: e.g. `map`, `to`, `view`.

Therefore we would like to add annotations that can be used to ignore name shadowing for the binding, something like this:

f = ...
    let {-# SHADOWS #-} map = defaultMapWhatever
    in gameWithAnotherMap map
    ...

We're not sure about the syntax here, so we're happy to hear your opinions!

A similar request for `-fwarn-unused-binds` is already in trac under #3283, we'll try to handle that too.

  • Gergely Risko
  • Mihaly Barasz

[edit] 24 Opaleye

See: http://staff.science.uva.nl/~grelck/nl-fp-day-2014.html#ellis

And: http://staff.science.uva.nl/~grelck/nl-fp-talks/ellis.pdf

  • Tom Ellis
  • Renzo Carbonara

[edit] 25 hoodle

See: http://ianwookim.org/hoodle

And: http://github.com/wavewave/hoodle

  • Ian-Woo Kim