[Haskell-cafe] Picking an architecture for a Haskell web app

Joel Reymont joelr1 at gmail.com
Wed May 9 11:42:12 EDT 2007


Folks,

I have finished an alpha version of my EasyLanguage [1] to C#  
compiler and need to deploy it on Amazon EC2/S3.

The compiler web interface is very simple: paste EL code, get back C#  
code or the same EL code with the error highlighted. I view the site  
as more than just a compiler, though, and want a blog, forums, etc.  
Last but not least, I want to be able to update portions of the site  
without shutting it down.

My choice seems to boil down to HAppS [2], HOPE [3], or a combination  
of Ruby/Rails with Lambdabot.

At first glance, HAppS lacks publishing (my ultimate need) but  
promises an interface to S3 sometime in the future. My understanding  
is that it's ready but is not being released. HAppS is heavy on  
features that I may not make use of. I had a hard time understanding  
the HPaste [4] code written using HAppS and I don't fancy using XSLT  
as my HTML template language.

HOPE has a publishing framework (blog, RSS, comments). I could write  
the forums or just use Google Groups. I like the module system and  
the FCGI interface should let me couple HOPE with Lighty [5]. The  
HOPE code base looks clean and simple and I'm guessing that adding  
Lambdabot-style dynamic loading of modules would be straightforward.  
Overall, HOPE has everything that I need, without unnecessary extras.  
It does not have an interface to Amazon S3, though, and I would need  
that to rewrite the storage bits to use S3 instead of a regular  
database.

Lambdabot by itself doesn't offer much apart from robust dynamic  
loading of Haskell code. Its features have been heavily tested,  
though, which gives me a warm feeling. I'm thinking that the same hot- 
loading technology that Lambdabot uses could be coupled with either  
HAppS or HOPE. Lambdabot has a FCGI which should make mixing it with  
HOPE particularly easy.

Going with Ruby and Rails I will have everything I need and more. The  
compiler could run in a separate server (think Lambdabot) but I would  
need to manage two different platforms.

Is my assessment correct? Did I miss anything?

What approach do you favor?

	Thanks, Joel

P.S. I have the same compiler written in OCaml which is what I  
started with. Developing it has been a relative breeze but deploying  
on the web was a tale of frustration. I gave up and finished the  
Haskell version.

[1] http://lambda-the-ultimate.org/node/2201
[2] http://happs.org/HAppS/README.html
[3] http://hope.bringert.net/about
[4] http://hpaste.org
[5] http://www.lighttpd.net/

--
http://wagerlabs.com/





More information about the Haskell-Cafe mailing list