[Haskell-cafe] Anyone up for Google SoC 2010?
johan.tibell at gmail.com
Thu Mar 4 16:18:29 EST 2010
On Sun, Jan 31, 2010 at 12:04 PM, Malcolm Wallace <
malcolm.wallace at cs.york.ac.uk> wrote:
> Google has announced that the Summer of Code programme will be running
> again this year. If haskell.org people would like to take part again this
> year, then we need volunteers:
> * suggestions for suitable projects
> (in the past this was organised using a reddit)
Here's a proposal for a project I'd be willing to mentor:
= A high-performance HTML combinator library using Data.Text =
Almost all web applications need to generate HTML for rendering in the
user's browser. The three perhaps most important properties in an HTML
generation library are:
- High performance: Given that the network introduces a lot of latency the
server is left with very little time to create a response to send back to
the client. Every millisecond not spent on generating HTML can be used to
process the user's request. Furthermore, efficient use of the server's
resources is important to keep the number of clients per server high and
costs per client low.
- Correctness: Incorrectly created HTML can result in anything from
incorrect rendering (in the best case) to XSS attacks (in the worst case).
- Composability: Being able to create small widgets and reuse them in
several pages fosters consistency in the generated output and helps both
correctness and reuse. (Formlets play a big roll here but being able to
treat HTML fragments as values rather than as strings is important too.)
Combinator libraries, like the 'html' package on Hackage , address the
the last two criteria by making the generated HTML correct by construction
and making HTML fragments first class values. Traditional templating systems
generally have the first property, offering excellent performance, but lacks
the other two.
Task: Create a new HTML combinator library, based on the 'html' library,
that's blazing fast, well tested and well documented. Also improve upon the
'html' package's API by e.g. splitting the attribute related functions into
their own module.
Tools: QuickCheck for testing, Criterion for benchmarking, and Haddock for
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe