[Haskell-cafe] ANN: Webwire 0.1.0, netwire 1.2.5

Michael Snoyman michael at snoyman.com
Fri Sep 16 10:58:14 CEST 2011


On Fri, Sep 16, 2011 at 11:44 AM, Ertugrul Soeylemez <es at ertes.de> wrote:
> Michael Snoyman <michael at snoyman.com> wrote:
>
>> Nice to see another project taking advantage of WAI and Shakespeare. I
>> look forward to seeing some example code as well, though I personally
>> am very wary of continuation-based frameworks.
>
> AFRP uses continuations under the hood, so you can view webwire as
> continuation-based to some extent.  But out of interest, why are you
> wary?  This is highly experimental work, and I see some problems coming:
>
>  * Lower performance, though that can be fixed.  Right now I'm getting
>    up to about 8000 requests per second using apachebench with -n 10000
>    and -c 1000, which is probably not enough for high volume sites.
>
>  * Sessions are a runtime-only phenomenon.  This is a more serious
>    problem, for which I don't currently have a general solution, though
>    for most applications specialized solutions can be written.
>
>  * FRP and netwire in particular have a steep learning curve.
>
> If you see any further potential problems, I'd be very grateful, if
> you'd let me know.

I'm not sure what you mean by runtime-only, could you clarify? The
reason I'm wary of continuation-based frameworks is that (at least
from what I've seen) they are purposely non-RESTful. I know REST is a
buzzword, but the other way to put it is: you're going to end up
working against most of what HTTP is doing. There are good reasons why
HTTP is stateless, and that shouldn't be circumvented lightly.

I don't want to go too far on this right now, as I'm not an expert on
cont-based frameworks, and I'm certainly not sure how webwire works.
But from what I've seen in the past, you end up with ugly URLs and bad
caching behavior. I think web developers *should* have to think about
the fact that a page request is an inherently stateless operations,
and storing state data should be a huge exception[1], not the norm.

Michael

[1] Obviously, there are some *common* exceptions, like authentication.



More information about the Haskell-Cafe mailing list