Learning how Yesod works internally is hard. It is a large framework with complicated components. Finding the appropriate code and understanding how it contributes to the framework is difficult, meaning developers will struggle.
Spock manages sessions, but users of current Spock versions must do their own authentication handling. Older versions (<0.7) can use the Spock-auth package.
Routes are defined end-to-end with type declarations. This allows your API to be introspective, serving its own documentation and derived query code, via jQuery for Javascript and servant-client for Haskell.
We Haskellers are accustomed to flying completely blind when using many libraries, luckily with Servant this isn’t the case. It features comprehensive tutorials, literate haskell examples for many use cases and great Haddock documentation for everything else.
Extending Servant's existing functionality can be made difficult by the complexity of its type level machinery. Lucky most use cases are able to avoid this.
You actually have to count the index of the entry where you changed the specification, and then go and change the entry at the same index in the list of implementation methods. There is no other indication that the two are connected. This along with complex and verbose route definitions, makes it very hard to safely make changes to an API.
You are required to define a number of separate complicated types and their implementations which are usually spread out over a number of files. This makes it hard to figure out the API.
Currently, authorization must be handled through some other package (or custom code). Managing authorization directly within Servant, including OAuth and other tokens, is under development.
There is extensive documentation and tutorials for Happstack and Happstack Lite available for use. Documentation and tutorials help programmers write their code; with so many options, programmers will have an easy time learning the framework.
Happstack has been around for over seven years. During this time developers used the framework and offered feedback to improve it. As a result, it is stable and unlikely to have major changes. Happstack Lite was created from all of this feedback
When an exception occurs on the server, the error gets printed. By seeing an error that makes no sense to the user, his experience is negatively impacted. Having a negative experience can mean a user never visits the site again.
Having the source code on gitHub means developers can easily suggest improvements and error reports. They also have a community that can help with any problems that come up.
Since Scotty is small, it does not contain some features that a complex web application may need. Anything that Scotty can't provide must be either found or written, costing developers.
Wai-routes is extremely easy to customise. It's neutral to other parts of the system such as the templating language, or the wai server being used. Wai-routes only targets and provides full access to the wai API. The wai-routes handlers are also simple functions which are passed the request data and the environment and return a Response in IO. Arbitrary middleware, routes, and handlers can be mixed together to construct an application.
Snap provides "snaplets". These are self-contained modules of code that provide additional functionality without muddling the core library. Having these resources saves time when developing code.
Heist is a templating system which supports HTML5 and XML. Template langugages in general provide shortcuts to longer blocks of code, decreasing the need for development time and knowledge.
The comprehensive Snap documentation is currently outdated (last activity appears to have been 2013), though Snap itself is under active development. Note that this primarily affects tutorials and guides; the API documentation is generated automatically and remains current.
If you have a data encoding you would like to allow as a path chunk, you can do so by routing with an attoparsec parser or regular expression directly.
There is a lot of advanced language extensions in use for the engine - if you have a typo somewhere, the errors are practically impossible to understand.
Users must rely primarily on the example project and auto-generated API documentation (Haddocks). The author of Apiary is not a native English speaker and openly acknowledges this issue.