What's Cooking with Yesod
April 11, 2010
I know I've been quiet on this blog for a few weeks now (though quite vocal on the web-devel mailing list...), so I just wanted to give a bit of an update on Yesod.
After the initial release, there has been a lot of collaboration in the community towards getting more solid tools available for Haskell web development. Most notably, Jeremy Shaw is working on the web-routes package; I'm not going to go into depth on it now, but it basically provides for type-safe URLs and pluggable web applications.
Yesod included in the initial release a quasi-quoted syntax for declaring routing in an application; a number of people have taken note of this. I have actually split this feature off into its own package and made it compatible with Jeremy's web-routes. Once again, I won't go into the details now, but it's a nicer syntax with more power than what's in Yesod now.
I'm also working on two other fronts outside of Yesod. The first is hamlet, which is a quasi-quoted templating system based (loosely) on haml. Even if you don't like the syntax of the templates, the monadic interface might allow for some very interesting features in its own right, and will most likely replace HStringTemplate as the preferred templating system in the next Yesod. I'd like community feedback on whether to maintain support for HStringTemplate.
The second front is persistent, a simplistic, non-relational data storage abstraction layer meant to be the basis of a model layer in Yesod. Unfortunately, this has received the least of my attention, and I'm not sure if it will be mature enough for the next release. This is another area where I'd appreciate community feedback.
I've just created a new branch on github for the next version of Yesod; I encourage everyone to check it out and let me know what they think! After this release, I will begin a very serious documentation effort. Due to the major changes coming up, documenting now would be a waste of time, but I hope the next release brings us much closer to a more stable API.
Finally, there's also progress on the next WAI release. This is more of an evolutionary than revolutionary change. So far, the only breaking change is that request and response headers are case-insensitive in the Eq instance. I've also added a buffer function to (hopefully) make enumerators more performant. I believe this will play very nicely with Hamlet to produce incredibly fast output.
So I believe the roadmap for the next few weeks will be:
- Release some underlying libraries to work with transformers 0.2.0
- Release hamlet
- Release web-routes and web-routes-quasi
- Release WAI
- Release Yesod
- Document like hell, replacing the current yesodweb.com site. I'll be placing documentation for all yesod-related packages on that site.