Summer of Code/Project suggestions: Difference between revisions

From HaskellWiki
No edit summary
(Big refactorization, categorization.)
Line 1: Line 1:
Haskell projects for Google's Summer of Code.
Haskell projects for Google's Summer of Code.


This page is for mentors to add their ideas and to say which projects they'd be happy to supervise. It is also for students to see what kinds of projects are available. Students should not claim projects here however, but use the normal Google SoC application process. Mentors feel free to write your name under orphaned projects.
This page is for mentors to add their ideas and to say which projects they'd be happy to supervise. Students should not claim projects here however, but using the normal Google Summer of Code application process, see the [http://code.google.com/soc/studentfaq.htm student FAQ] for details.


== Cabal-get/HackageDB ==
== Cabal ==
 
=== Cabal-get/HackageDB ===
Cabal-get is an automatic installer for Cabal libraries.
Cabal-get is an automatic installer for Cabal libraries.
The goal is to distribute the program with [http://haskell.org/cabal Cabal], but to achieve this we need to cut almost all of its dependencies. This project should be fairly easy (the code base of cabal-get is only 1K loc).
The goal is to distribute the program with [http://haskell.org/cabal Cabal], but to achieve this we need to cut almost all of its dependencies. This project should be fairly easy (the code base of cabal-get is only 1K loc).
Line 9: Line 11:
Mentor: Lemmih (lemmih@gmail.com)
Mentor: Lemmih (lemmih@gmail.com)


== GhcPlugins ==
== GHC ==
 
=== GhcPlugins ===
Write a new plugin system using the new ghc-api. Enough of the groundwork has been laid out now that someone with a few months and some background could finish up the work.
Write a new plugin system using the new ghc-api. Enough of the groundwork has been laid out now that someone with a few months and some background could finish up the work.


Line 16: Line 20:
Mentor: Lemmih (lemmih@gmail.com)
Mentor: Lemmih (lemmih@gmail.com)


== Fix HsSDL (Haskell [http://libsdl.org libSDL] bindings) on Windows and MacOS ==
=== Implement various debugging tools in GHC ===
 
== Implement various debugging tools in GHC ==
* Dynamic breakpoints.
* Dynamic breakpoints.
* Generic object viewer.
* Generic object viewer.
Line 25: Line 27:
Mentor: Lemmih (lemmih@gmail.com)
Mentor: Lemmih (lemmih@gmail.com)


== Handle recursive modules in GHC ==
=== Handle recursive modules in GHC ===


== Gtk / Graphics / GNOME related projects ==
=== Incremental Garbage Collector for GHC ===


I'd be happy to accept projects in this area. Last year I was unoficial mentor to Paolo who did the [http://www.cairographics.org/ cairo] bindings. Possible ideas include a [http://www.freedesktop.org/wiki/Software/dbus dbus] binding. (Feel free to add more ideas here or I might do as I think of them.)
Implementing the incremental garbage collection algorithm described in the paper [http://research.microsoft.com/~simonpj/Papers/inc-gc.htm Non-stop Haskell] in GHC.


Mentor: Duncan Coutts
=== Parsers for various programming languages ===


== Incremental GC for GHC ==
Populate the [http://haskell.org/ghc/docs/latest/html/libraries/index.html Language] hierarchy of modules with new parsers for many languages, at the moment it does only contain Language.Haskell.


Implementing the incremental garbage collection algorithm described in the paper [http://research.microsoft.com/~simonpj/Papers/inc-gc.htm Non-stop Haskell] in GHC.
Mentor: Shae Matijs Erisson (shapr@scannedinavian.com)


== hs-plugins based web server ==
=== Data.ByteString ===


Build an industrial-strength CGI/FastCGI/etc daemon to be used for enterprise-type web applications.
Extend the [http://www.cse.unsw.edu.au/~dons/fps.html Data.ByteString]
interface to arbitrary (Storable a) arrays. Data.ByteString provides a
high performance api to arrays of bytes. Generalise this to arbitrary
vectors of Storable a values, winning fame and glory in the process.


HSP does have the hs-plugins part. So do new versions of WASH. In HAppS the enterprise part is keeping us away from hs-plugins, if it were for research only there would be hs-plugins support (4-8 hours of work).
Mentor: Don Stewart (dons@cse.unsw.edu.au)


== Continuation based DSL on top of HAppS ==
=== Unicode layer over Data.ByteString ===


Do you have a vision how to do better than WASH? Integrate continuation based interaction with client or use something like Functional Forms for the interaction. How to best to interact with XML etc. Other HAppS related projects
Extend the [http://www.cse.unsw.edu.au/~dons/fps.html Data.ByteString]
also possible.
interface to support Unicode.
 
Mentor: Don Stewart (dons@cse.unsw.edu.au)
 
=== Improve performance of numerical code ===


Mentor: Einar Karttunen (musasabi)
GHC's performance for double and float intensive code is not as good as
it could be. Find out why and improive it. Requires GHC backend hacking.
Must be very Haskell literate or have knowledge of code generators.


== Parsers for various programming languages ==
Mentor: Don Stewart (dons@cse.unsw.edu.au)


Populate the [http://haskell.org/ghc/docs/latest/html/libraries/index.html Language] hierarchy of modules with new parsers for many languages, at the moment it does only contain Language.Haskell.
=== Port the Clean high performance string code ===


Mentor: Shae Matijs Erisson (shapr)
Clean does very well for low level string benchmarks. Find out what
they do, and port it to [http://www.cse.unsw.edu.au/~dons/fps.html Data.ByteString]


== Yi projects ==
Mentor: Don Stewart (dons@cse.unsw.edu.au)


Syntax Highlighting, Plugins.  It's quite a peculiar kind of application.  Its design is based on [http://www.cse.unsw.edu.au/~dons/papers/PSSC04.html type-safe dynamically loadable modules] and it is [http://www.cse.unsw.edu.au/~dons/papers/PSSC04.html more dynamic than Emacs]!
== Graphics ==


Mentor: Shae Matijs Erisson (shapr)
=== Fix HsSDL (Haskell [http://libsdl.org libSDL] bindings) on Windows and MacOS ===


== Students' ideas / Game ==
=== Gtk / Graphics / GNOME related projects ===


I'm ready to take on anyone willing to write a useful application or game (preferably a program) given that it is of reasonable size (upper limitaton).
I'd be happy to accept projects in this area. Last year I was unoficial mentor to Paolo who did the [http://www.cairographics.org/ cairo] bindings. (Feel free to add more ideas here or I might do as I think of them.)


Mentor: Johan Henriksson (Mahogny)
Mentor: Duncan Coutts


== Bioinformatics tools ==
=== D-BUS Binding ===


1. Further develop RBR, a tool for masking repeats.  This can include
Haskell bindings to the [http://www.freedesktop.org/wiki/Software/dbus D-BUS] message bug system, a simple way for applications to talk to one another.  
a) optimize (using FastPackedString and/or a new internal data structure); b) extend functionality.


2. Develop a tool for annotation/classification of sequences.  This would involve computation on and visualization of graphs (experience with the latter would be really great).
Mentor: Duncan Coutts


Prior bioinformatics knowledge is not a requirement. Please contact me for details.
=== Embed ghci/ghci-api in ion ===


Mentor: Ketil ([mailto:ketil@ii.uib.no ketil@ii.uib.no])
[http://modeemi.cs.tut.fi/~tuomov/ion/ ion] is a cool window manager
written by Tuomo Valkonen, a Haskell hacker. It is currently extensible
in Ion, but a very interesting project would be to work out how to
dynamically extend it in Haskell, perhaps using ideas from
[http://www.cse.unsw.edu.au/~dons/yi.html Yi].


== Concurrent disk-based data structures ==
Mentor: Don Stewart (dons@cse.unsw.edu.au)


Implement B+tree or a variant supporting concurrent updates using STM,
== Web development ==
serialize updates into a write ahead log and provide for serialization.
Bind the whole thing with a nice HaskellDB like API. Variations on
the theme possible.


Mentor: Einar Karttunen
=== Continuation based DSL on top of HAppS ===


== Haskellnet ==
Do you have a vision how to do better than WASH? Integrate continuation based interaction with client or use something like Functional Forms for the interaction. How to best to interact with XML etc. Other HAppS related projects
also possible.


We have got cgi, ftp, http, and irc. Get them into shape in the hierarchical libraries as well as adding a number of other protocols, like nntp, smtp and pop3, imap4, ... much like the [http://ocamlnet.sourceforge.net/doc/goals/goals.html Ocamlnet project].
Mentor: Einar Karttunen (musasabi)


Mentor: Shae Matijs Erisson (shapr)
== Editing ==


== Port ghc-api's eval mechanism to Yi ==
=== Port ghc-api's eval mechanism to Yi ===


Yi is an editor written and extensible in Haskell. Construct a binding
Yi is an editor written and extensible in Haskell. Construct a binding
Line 103: Line 116:
Mentor: Don Stewart (dons@cse.unsw.edu.au) and Lemmih (lemmih@gmail.com).
Mentor: Don Stewart (dons@cse.unsw.edu.au) and Lemmih (lemmih@gmail.com).


== Data.ByteString ==  
=== Yi projects ===


Extend the [http://www.cse.unsw.edu.au/~dons/fps.html Data.ByteString]
Syntax Highlighting, Plugins.  It's quite a peculiar kind of application.  Its design is based on [http://www.cse.unsw.edu.au/~dons/papers/PSSC04.html type-safe dynamically loadable modules] and it is [http://www.cse.unsw.edu.au/~dons/papers/PSSC04.html more dynamic than Emacs]!
interface to arbitrary (Storable a) arrays. Data.ByteString provides a
high performance api to arrays of bytes. Generalise this to arbitrary
vectors of Storable a values, winning fame and glory in the process.
 
Mentor: Don Stewart (dons@cse.unsw.edu.au)
 
== Unicode layer over Data.ByteString ==
 
Extend the [http://www.cse.unsw.edu.au/~dons/fps.html Data.ByteString]
interface to support Unicode.


Mentor: Don Stewart (dons@cse.unsw.edu.au)
Mentor: Shae Matijs Erisson (shapr@scannedinavian.com)


== Generic Hide Hacking ==
=== Generic Hide Hacking ===
* Rewrite plugins for the new plugin-system.
* Rewrite plugins for the new plugin-system.
* Integration with [[Lambdabot]], access to plugins through Hide.
* Integration with [[Lambdabot]], access to plugins through Hide.
Line 126: Line 129:
Mentor: Don Stewart (dons@cse.unsw.edu.au), Lemmih (lemmih@gmail.com)
Mentor: Don Stewart (dons@cse.unsw.edu.au), Lemmih (lemmih@gmail.com)


== A Haskell shell ==
== Games ==


Concise syntax and higher order functions would make a Haskell shell
=== Frag hacking ===
very useful. This project would aim to produce a real world shell
 
written in Haskell, and using an embedded domain specific language to
[[Frag]] is a 3d first person shootup game written in Haskell,
encode common operations.
using OpenGL. It can be greatly extended in all sorts of ways. If
you're in to gaming, have a look at this.


Mentor: Don Stewart (dons@cse.unsw.edu.au)
Mentor: Don Stewart (dons@cse.unsw.edu.au)


== Embed ghci/ghci-api in ion ==
=== Students' ideas / Games ===
 
I'm ready to take on anyone willing to write a useful application or game (preferably a program) given that it is of reasonable size (upper limitaton).
 
Mentor: Johan Henriksson (Mahogny)
 
== Bioinformatics ==
 
=== Bioinformatics tools ===
 
1. Further develop RBR, a tool for masking repeats.  This can include
a) optimize (using FastPackedString and/or a new internal data structure); b) extend functionality.


[http://modeemi.cs.tut.fi/~tuomov/ion/ ion] is a cool window manager
2. Develop a tool for annotation/classification of sequences. This would involve computation on and visualization of graphs (experience with the latter would be really great).
written by Tuomo Valkonen, a Haskell hacker. It is currently extensible
 
in Ion, but a very interesting project would be to work out how to
Prior bioinformatics knowledge is not a requirement. Please contact me for details.
dynamically extend it in Haskell, perhaps using ideas from
 
[http://www.cse.unsw.edu.au/~dons/yi.html Yi].
Mentor: Ketil ([mailto:ketil@ii.uib.no ketil@ii.uib.no])
 
== Concurrency / Network ==


Mentor: Don Stewart (dons@cse.unsw.edu.au)
=== Concurrent disk-based data structures ===


== Improve performance of numerical code ==
Implement B+tree or a variant supporting concurrent updates using STM,
serialize updates into a write ahead log and provide for serialization.
Bind the whole thing with a nice HaskellDB like API. Variations on
the theme possible.


GHC's performance for double and float intensive code is not as good as
Mentor: Einar Karttunen
it could be. Find out why and improive it. Requires GHC backend hacking.
Must be very Haskell literate or have knowledge of code generators.


Mentor: Don Stewart (dons@cse.unsw.edu.au)
=== Haskellnet ===


== Port the Clean high performance string code ==
We have got cgi, ftp, http, and irc. Get them into shape in the hierarchical libraries as well as adding a number of other protocols, like nntp, smtp and pop3, imap4, ... much like the [http://ocamlnet.sourceforge.net/doc/goals/goals.html Ocamlnet project].


Clean does very well for low level string benchmarks. Find out what
Mentor: Shae Matijs Erisson (shapr@scannedinavian.com)
they do, and port it to [http://www.cse.unsw.edu.au/~dons/fps.html Data.ByteString]


Mentor: Don Stewart (dons@cse.unsw.edu.au)
== UNIX ==


== Frag hacking ==  
=== A Haskell shell ===


[[Frag]] is a 3d first person shootup game written in Haskell,
Concise syntax and higher order functions would make a Haskell shell
using OpenGL. It can be greatly extended in all sorts of ways. If
very useful. This project would aim to produce a real world shell
you're in to gaming, have a look at this.
written in Haskell, and using an embedded domain specific language to
encode common operations.


Mentor: Don Stewart (dons@cse.unsw.edu.au)
Mentor: Don Stewart (dons@cse.unsw.edu.au)

Revision as of 14:08, 24 April 2006

Haskell projects for Google's Summer of Code.

This page is for mentors to add their ideas and to say which projects they'd be happy to supervise. Students should not claim projects here however, but using the normal Google Summer of Code application process, see the student FAQ for details.

Cabal

Cabal-get/HackageDB

Cabal-get is an automatic installer for Cabal libraries. The goal is to distribute the program with Cabal, but to achieve this we need to cut almost all of its dependencies. This project should be fairly easy (the code base of cabal-get is only 1K loc).

Mentor: Lemmih (lemmih@gmail.com)

GHC

GhcPlugins

Write a new plugin system using the new ghc-api. Enough of the groundwork has been laid out now that someone with a few months and some background could finish up the work.

GhcPlugins will replace the plugin system currently used in hIDE.

Mentor: Lemmih (lemmih@gmail.com)

Implement various debugging tools in GHC

  • Dynamic breakpoints.
  • Generic object viewer.
  • Simple CCS for providing stack traces on exceptions and breakpoints.

Mentor: Lemmih (lemmih@gmail.com)

Handle recursive modules in GHC

Incremental Garbage Collector for GHC

Implementing the incremental garbage collection algorithm described in the paper Non-stop Haskell in GHC.

Parsers for various programming languages

Populate the Language hierarchy of modules with new parsers for many languages, at the moment it does only contain Language.Haskell.

Mentor: Shae Matijs Erisson (shapr@scannedinavian.com)

Data.ByteString

Extend the Data.ByteString interface to arbitrary (Storable a) arrays. Data.ByteString provides a high performance api to arrays of bytes. Generalise this to arbitrary vectors of Storable a values, winning fame and glory in the process.

Mentor: Don Stewart (dons@cse.unsw.edu.au)

Unicode layer over Data.ByteString

Extend the Data.ByteString interface to support Unicode.

Mentor: Don Stewart (dons@cse.unsw.edu.au)

Improve performance of numerical code

GHC's performance for double and float intensive code is not as good as it could be. Find out why and improive it. Requires GHC backend hacking. Must be very Haskell literate or have knowledge of code generators.

Mentor: Don Stewart (dons@cse.unsw.edu.au)

Port the Clean high performance string code

Clean does very well for low level string benchmarks. Find out what they do, and port it to Data.ByteString

Mentor: Don Stewart (dons@cse.unsw.edu.au)

Graphics

Fix HsSDL (Haskell libSDL bindings) on Windows and MacOS

Gtk / Graphics / GNOME related projects

I'd be happy to accept projects in this area. Last year I was unoficial mentor to Paolo who did the cairo bindings. (Feel free to add more ideas here or I might do as I think of them.)

Mentor: Duncan Coutts

D-BUS Binding

Haskell bindings to the D-BUS message bug system, a simple way for applications to talk to one another.

Mentor: Duncan Coutts

Embed ghci/ghci-api in ion

ion is a cool window manager written by Tuomo Valkonen, a Haskell hacker. It is currently extensible in Ion, but a very interesting project would be to work out how to dynamically extend it in Haskell, perhaps using ideas from Yi.

Mentor: Don Stewart (dons@cse.unsw.edu.au)

Web development

Continuation based DSL on top of HAppS

Do you have a vision how to do better than WASH? Integrate continuation based interaction with client or use something like Functional Forms for the interaction. How to best to interact with XML etc. Other HAppS related projects also possible.

Mentor: Einar Karttunen (musasabi)

Editing

Port ghc-api's eval mechanism to Yi

Yi is an editor written and extensible in Haskell. Construct a binding to ghc-api such that new expressions may be evaluated at runtime in the editor, accessing the editors internal structures in a type safe way, dynamically. elisp for Haskell!

Mentor: Don Stewart (dons@cse.unsw.edu.au) and Lemmih (lemmih@gmail.com).

Yi projects

Syntax Highlighting, Plugins. It's quite a peculiar kind of application. Its design is based on type-safe dynamically loadable modules and it is more dynamic than Emacs!

Mentor: Shae Matijs Erisson (shapr@scannedinavian.com)

Generic Hide Hacking

  • Rewrite plugins for the new plugin-system.
  • Integration with Lambdabot, access to plugins through Hide.
  • Other?

Mentor: Don Stewart (dons@cse.unsw.edu.au), Lemmih (lemmih@gmail.com)

Games

Frag hacking

Frag is a 3d first person shootup game written in Haskell, using OpenGL. It can be greatly extended in all sorts of ways. If you're in to gaming, have a look at this.

Mentor: Don Stewart (dons@cse.unsw.edu.au)

Students' ideas / Games

I'm ready to take on anyone willing to write a useful application or game (preferably a program) given that it is of reasonable size (upper limitaton).

Mentor: Johan Henriksson (Mahogny)

Bioinformatics

Bioinformatics tools

1. Further develop RBR, a tool for masking repeats. This can include a) optimize (using FastPackedString and/or a new internal data structure); b) extend functionality.

2. Develop a tool for annotation/classification of sequences. This would involve computation on and visualization of graphs (experience with the latter would be really great).

Prior bioinformatics knowledge is not a requirement. Please contact me for details.

Mentor: Ketil (ketil@ii.uib.no)

Concurrency / Network

Concurrent disk-based data structures

Implement B+tree or a variant supporting concurrent updates using STM, serialize updates into a write ahead log and provide for serialization. Bind the whole thing with a nice HaskellDB like API. Variations on the theme possible.

Mentor: Einar Karttunen

Haskellnet

We have got cgi, ftp, http, and irc. Get them into shape in the hierarchical libraries as well as adding a number of other protocols, like nntp, smtp and pop3, imap4, ... much like the Ocamlnet project.

Mentor: Shae Matijs Erisson (shapr@scannedinavian.com)

UNIX

A Haskell shell

Concise syntax and higher order functions would make a Haskell shell very useful. This project would aim to produce a real world shell written in Haskell, and using an embedded domain specific language to encode common operations.

Mentor: Don Stewart (dons@cse.unsw.edu.au)