Difference between revisions of "Summer of Code/Project suggestions"

From HaskellWiki
Jump to navigation Jump to search
(Things moved to trac.)
 
Line 1: Line 1:
  +
Please refer to the new trac-based site at <http://hackage.haskell.org/trac/summer-of-code/>.
Haskell projects for Google's Summer of Code.
 
 
This page is for [[Summer of Code: People | mentors]] to add their ideas and to say which projects they'd be happy to supervise. It's also ok for other people to add their own ideas that are not yet claimed by a mentor. If you do this, could you please notify an admin person so that they can try and find a mentor for that project idea, because in the end we can only deal with project ideas that do have people prepared to mentor them.
 
 
Students should not claim projects here, they must use the normal Google Summer of Code application process. See the [http://code.google.com/soc/studentfaq.html 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 [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).
 
 
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 [http://haskell.org/hide 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 [http://research.microsoft.com/~simonpj/Papers/inc-gc.htm Non-stop Haskell] in GHC.
 
 
=== 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 improve it. Requires GHC backend hacking.
 
Must be very Haskell literate or have knowledge of code generators.
 
 
Mentor: Don Stewart (dons@cse.unsw.edu.au)
 
 
=== Parsers for various programming languages ===
 
 
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.
 
 
Mentor: Shae Matijs Erisson (shapr@scannedinavian.com)
 
 
=== Data.ByteString ===
 
 
==== 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 [http://www.cse.unsw.edu.au/~dons/fps.html Data.ByteString]
 
 
Mentor: Don Stewart (dons@cse.unsw.edu.au)
 
 
==== Storable a => Vector a ====
 
 
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.
 
 
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)
 
 
 
== Graphics ==
 
 
=== Fix HsSDL (Haskell [http://libsdl.org 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 unofficial 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: Duncan Coutts
 
 
It would be cool to see a library using ideas from [http://www.sandr.dds.nl/FunctionalForms/index.html FunctionalForms] in Gtk2Hs.
 
 
=== Darcs GUI ===
 
 
Design and implement a GUI front-end using wxhaskell for Darcs.
 
 
Mentor: No-one.
 
 
=== Embed ghci/ghci-api in ion ===
 
 
[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 [http://www.lua.org/ lua], 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].
 
 
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, ekarttun@cs.helsinki.fi)
 
 
 
== 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 editor's 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 [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]!
 
 
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)
 
 
== Bindings ==
 
 
=== D-BUS Binding ===
 
 
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.
 
 
Mentor: Duncan Coutts
 
 
=== Matlab Binding ===
 
 
Matlab/Octave is an excellent tool for quick imperative numerical programming.
 
However, it would be much nicer if anyone wrote bindings such
 
that it could be mixed with Haskell.
 
 
Mentor: Johan Henriksson (Mahogny, johen@student.chalmers.se)
 
 
=== GSL Binding ===
 
 
Extend the [http://dis.um.es/~alberto/GSLHaskell GSLHaskell] library to cover all the [http://www.gnu.org/software/gsl/ GSL] functions. Implement (possibly using additional numerical libraries) important Octave functions not available in the GSL.
 
 
Mentor: Alberto Ruiz (aruiz@um.es)
 
 
 
== 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, johen@student.chalmers.se)
 
 
 
== 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 ([mailto:ketil@ii.uib.no 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 (musasabi, ekarttun@cs.helsinki.fi)
 
 
=== 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 [http://ocamlnet.sourceforge.net/doc/goals/goals.html Ocamlnet project].
 
 
Mentor: Shae Matijs Erisson (shapr@scannedinavian.com)
 
 
=== IPv6 and IPSec for House ===
 
 
Implement IPv6 and maybe IPSec for the House (an operating system in Haskell). Needs mostly networking knowledge and ideas for binary data serialization.
 
 
=== Distributed compilation ===
 
 
A distcc-like tool for Distributed compilation of Haskell code
 
 
 
== 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. (See [http://www.cse.unsw.edu.au/~dons/h4sh.html h4sh].)
 
 
Mentor: Don Stewart (dons@cse.unsw.edu.au)
 
 
 
== Databases ==
 
 
=== [[Libraries and tools/Database interfaces/HaskellDB|HaskellDB]] ===
 
 
==== Port HaskellDB to HList ====
 
 
[[Libraries and tools/Database interfaces/HaskellDB|HaskellDB]] currently uses its own [[Extensible record|record system]], which (I believe) is less powerful than [http://homepages.cwi.nl/~ralf/HList/ HList]. The project is to port HaskellDB to use HList instead, making any necessary changes to the interface to make this possible and to fit HList better.
 
 
Mentor: Björn Bringert (bringert@cs.chalmers.se)
 
 
==== Implement back-end dependent SQL generation in HaskellDB ====
 
 
Currently HaskellDB uses the same SQL generator for all database systems. Unfortunately different database systems support different SQL dialects. The project is to make it possible to use different SQL generators for different back-ends, and implement generators for common database systems such as for example MySQL, PostgreSQL and SQLite. The project could also include adding support for back-end specific SQL extensions (such as various string and date functions, non-standard field types etc.) to the HaskellDB query language.
 
 
Mentor: Björn Bringert (bringert@cs.chalmers.se)
 
 
==== Add support for optimization features in HaskellDB ====
 
 
The projects is to added support for indexes, prepared statements and other optimization features to HaskellDB.
 
 
Mentor: Björn Bringert (bringert@cs.chalmers.se)
 
 
 
== Tools ==
 
 
=== HaRe in GHC ===
 
 
The Haskell Refactorer, [http://www.cs.kent.ac.uk/projects/refactor-fp/hare.html HaRe], is a tool for refactoring Haskell
 
systems. HaRe handles multi-module systems, and respects layout and
 
comments, so that refactored code looks as much as possible like the
 
original. HaRe covers the whole of Haskell 98, and uses the [http://www.cse.ogi.edu/PacSoft/projects/programatica/ Programatica]
 
system for its front end functionality.
 
 
Unfortunately, HaRe does not cover the whole of GHC Haskell. The aim of
 
this project is to port HaRe to the GHC API, so that HaRe can extend its
 
user base (and indeed be used to refactor itself!). This project builds on
 
a [http://www.cs.kent.ac.uk/pubs/2005/2266/content.pdf feasibility study by Chris Ryder], which covers much of the tricky
 
preliminary investigative work.
 
 
Mentor: Simon Thompson (s.j.thompson@kent.ac.uk)
 
 
=== Refactoring to Classes ===
 
 
Haskell has a powerful overloading mechanism with interfaces provided by
 
type classes and bindings to those interfaces by instance declarations.
 
It is natural during program development first to define a system without
 
overloading, and then to identify ways in which it can be introduced. This
 
might be by identifying a single set of functions to form the basis of a
 
class, or by identifying two such sets, which are to share the same
 
collection of names.
 
 
The aim of the project is to identify the use cases which would be most
 
helpful to users, and then to implement them in the Haskell Refactorer,
 
[http://www.cs.kent.ac.uk/projects/refactor-fp/hare.html HaRe],. A particularly fertile application area is in transformation
 
of non-monadic code into a monadic version.
 
 
Mentor: Simon Thompson (s.j.thompson@kent.ac.uk)
 
 
=== UML for Haskell ===
 
 
There has been some discussion on how to mix UML (or object oriented coding
 
in general). Try to develop a tool that creates haskell out of UML
 
in a suitable way. This project requires a lot of creativity on the part
 
of the student. A toy project to test the implementation should be implemented
 
as well.
 
 
Mentor: Johan Henriksson (Mahogny, johen@student.chalmers.se)
 
 
=== A diagram editor ===
 
 
GNU Dia is a quite badly maintained program, and progress has been slow.
 
Show them how it should be done by implementing a modularized diagram editor in
 
haskell. Experience of using these programs is a merit, since a key point
 
is to squash all the current usability problems in Dia.
 
 
Mentor: Johan Henriksson (Mahogny, johen@student.chalmers.se)
 
 
 
== Formal Verification ==
 
 
=== QuickCheck++ ===
 
Take a hard theorem prover and connect it to Haskell by making it
 
a drop-in replacement for QuickCheck
 
 
Mentor: No-one
 

Latest revision as of 01:46, 26 April 2006

Please refer to the new trac-based site at <http://hackage.haskell.org/trac/summer-of-code/>.