Personal tools

Web/Comparison of Happstack, Snap and Yesod

From HaskellWiki

< Web(Difference between revisions)
Jump to: navigation, search
m (Happstack: Adding patch-tag)
(Communities: - add link to happstack tag on stackoverflow)
Line 21: Line 21:
 
== Communities ==
 
== Communities ==
   
* Happstack — Garnered from [http://happstack.com/community the Community page], [http://groups.google.com/group/HAppS the HappS mailing list], #happs on Freenode IRC, [http://happstack.com/irc-logs/ with IRC logs], [http://code.google.com/p/happstack/issues/list Google Code] for issue tracking, [http://code.google.com/p/happstack/w/list a wiki], [http://www.twitter.com/happstack Twitter], a [http://www.facebook.com/happstack Facebook group].
+
* Happstack — Garnered from [http://happstack.com/community the Community page], [http://groups.google.com/group/HAppS the HappS mailing list], #happs on Freenode IRC, [http://happstack.com/irc-logs/ with IRC logs], [http://code.google.com/p/happstack/issues/list Google Code] for issue tracking, [http://code.google.com/p/happstack/w/list a wiki], [http://www.twitter.com/happstack Twitter], a [http://www.facebook.com/happstack Facebook group], and the [http://stackoverflow.com/questions/tagged/happstack happstack tag on StackOverflow].
 
* Snap — Garnered from the [http://snapframework.com/about About page], [http://mailman-mail5.webfaction.com/listinfo/snap the Snap mailing list] #snapframework on Freenode IRC, [https://github.com/snapframework/snap-core/issues Github] for issue tracking.
 
* Snap — Garnered from the [http://snapframework.com/about About page], [http://mailman-mail5.webfaction.com/listinfo/snap the Snap mailing list] #snapframework on Freenode IRC, [https://github.com/snapframework/snap-core/issues Github] for issue tracking.
 
* Yesod — Garnered from the [http://www.yesodweb.com/page/community Community Resources], [http://stackoverflow.com/questions/tagged/yesod StackOverflow], a [http://groups.google.com/group/yesodweb?pli=1 Google Group], [http://www.haskell.org/mailman/listinfo/web-devel the web-devel mailing list], (Which, due to the large proportion of Yesod-related questions, has essentially become ‘yesod-devel’.) #yesod on Freenode IRC, [https://github.com/yesodweb/yesod/issues Github] for issue tracking, a [http://www.yesodweb.com/wiki wiki] for posting documentation.
 
* Yesod — Garnered from the [http://www.yesodweb.com/page/community Community Resources], [http://stackoverflow.com/questions/tagged/yesod StackOverflow], a [http://groups.google.com/group/yesodweb?pli=1 Google Group], [http://www.haskell.org/mailman/listinfo/web-devel the web-devel mailing list], (Which, due to the large proportion of Yesod-related questions, has essentially become ‘yesod-devel’.) #yesod on Freenode IRC, [https://github.com/yesodweb/yesod/issues Github] for issue tracking, a [http://www.yesodweb.com/wiki wiki] for posting documentation.

Revision as of 22:54, 19 January 2012

Note: Work in progress. I will outline planned sections in headings momentarily.

There is no existing complete comparison of Happstack, Snap and Yesod. Such a thing helps people to choose and feel they've made a well-founded decision.

Contents

1 The home page

I'll start with the web sites at first impression.

2 Maintainers

Next, the main maintainers of the projects is handy to know:

3 Communities

4 Documentation

There is roughly the same set of documentation for each, varying in side and detail, with a quickstart for each, more complete tutorials, and haddock API documentation.

5 Use Cases

It's interesting to know who is using these frameworks.

5.1 Happstack

5.2 Snap

  • hpaste ­— the Haskell pastebin.
  • Darcs Den — a place to share your darcs projects and collaborate with others.
  • housetab.org — a webapp for sharing expenses (source code here)
  • JCU — a web-based Prolog environment.
  • snap-pastie another pastebin.
  • snapframework.com the Snap home page.
  • Silk — a new way to create and consume content.
  • Karamaan Group — uses Snap for an internal company intranet.

5.3 Yesod

6 Repositories and Installation

I am running Ubuntu 10.04.

6.1 Happstack

Installed from the happstack package from Hackage, or can be retrieved via the patch-tag Darcs repository. Info from the Download page.

$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 6.12.3
$ cabal --version
cabal-install version 0.10.2
using version 1.10.2.0 of the Cabal library 
$ cabal-dev install happstack
…
Registering happstack-6.0.5...

real    2m13.240s
user    1m38.886s
sys 0m7.588s

Installs fine in GHC 6.12.3 in a couple of minutes.

6.2 Snap

The web site Download page advises to install the snap package from Hackage:

$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 6.12.3
$ cabal --version
cabal-install version 0.10.2
using version 1.10.2.0 of the Cabal library 
$ cabal-dev install snap
…
Registering snap-0.7...

real    5m1.105s
user    4m24.369s
sys 0m15.389s

Installs fine in GHC 6.12.3 in a couple of minutes.

6.3 Yesod

The web site advises to install the yesod package from Hackage.

$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 6.12.3
$ cabal --version
cabal-install version 0.10.2
using version 1.10.2.0 of the Cabal library 
$ time cabal-dev install yesod
Resolving dependencies...
cabal: cannot configure conduit-0.0.1.1. It requires base >=4.3 &&
<5 For the dependency on base >=4.3 && <5 there are these
packages: base-4.3.0.0, base-4.3.1.0, base-4.4.0.0 and
base-4.4.1.0. However none of them are available.

This was anticipated in the documentation, (“If you want to install yesod painlessly, get ghc >= 7.” from the install help wiki page. ) so the behaviour is expected.

chris@cn-done:~/yesod$ export PATH=/opt/ghc/7.0.4/bin/:$PATH
chris@cn-done:~/yesod$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.0.4
chris@cn-done:~/yesod$ cabal install Cabal cabal-install
--bindir=/opt/ghc/7.0.4/bin
…
Linking dist/build/cabal/cabal ...
Installing executable(s) in /opt/ghc/7.0.4/bin
chris@cn-done:~/yesod$ cabal --version
cabal-install version 0.10.2
using version 1.10.2.0 of the Cabal library 

So I'm now on 7.0.4 with the latest cabal installed for 7.0.4. Proceeding should work:

$ time cabal-dev install yesod
…
Registering yesod-0.9.4.1...

real    8m55.781s
user    7m2.446s
sys 0m21.809s

Installs with no problems as the guide suggests.