<div class="gmail_quote">On Sun, Jan 31, 2010 at 12:04 PM, Malcolm Wallace <span dir="ltr">&lt;<a href="mailto:malcolm.wallace@cs.york.ac.uk">malcolm.wallace@cs.york.ac.uk</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Google has announced that the Summer of Code programme will be running again this year.  If <a href="http://haskell.org" target="_blank">haskell.org</a> people would like to take part again this year, then we need volunteers:<br>


<br>
First,<br>
    * suggestions for suitable projects<br>
          (in the past this was organised using a reddit)</blockquote><div><br></div><div>Here&#39;s a proposal for a project I&#39;d be willing to mentor:</div><br>= A high-performance HTML combinator library using Data.Text =<br>

<br></div><div class="gmail_quote">Almost all web applications need to generate HTML for rendering in the user&#39;s browser. The three perhaps most important properties in an HTML generation library are:</div><div class="gmail_quote">

<br></div><div class="gmail_quote">- 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&#39;s request. Furthermore, efficient use of the server&#39;s resources is important to keep the number of clients per server high and costs per client low.</div>

<div class="gmail_quote"><br></div><div class="gmail_quote">- Correctness: Incorrectly created HTML can result in anything from incorrect rendering (in the best case) to XSS attacks (in the worst case).</div><div class="gmail_quote">

<br></div><div class="gmail_quote">- 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.)</div>

<div class="gmail_quote"><br></div><div class="gmail_quote">Combinator libraries, like the &#39;html&#39; package on Hackage [1], 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.</div>

<div class="gmail_quote"><br></div><div class="gmail_quote">Task: Create a new HTML combinator library, based on the &#39;html&#39; library, that&#39;s blazing fast, well tested and well documented. Also improve upon the &#39;html&#39; package&#39;s API by e.g. splitting the attribute related functions into their own module.</div>

<div class="gmail_quote"><br></div><div class="gmail_quote">Tools: QuickCheck for testing, Criterion for benchmarking, and Haddock for documenting.</div><div class="gmail_quote"><br></div><div class="gmail_quote">1. <a href="http://hackage.haskell.org/package/html">http://hackage.haskell.org/package/html</a></div>

<div class="gmail_quote"><br></div><div class="gmail_quote">-- Johan</div><div class="gmail_quote"><br></div>