Skip to content
Michael Snoyman edited this page Feb 16, 2012 · 15 revisions

Wishlist

See the TODO list for tasks that will be implemented. Below is a list of Yesod features that would be nice, but that we can continue to live without. Volunteers are welcome:

  • integration with responsive design principles. May need to pick a framework to integrate with like semantic.gs. Have the ability to automatically serve properly sized images (maybe pre-cache different sizes, maybe cache different sizes after generating them).

  • a backwards-compatible, high-level websockets interface. Possibly use the sockjs standard

  • Solution for better integration testing. funcunit.js has some good ideas, but they try to couple it to steal.js and I couldn't get it to get pages from my localhost. The Ruby project ghostbuster may be the easiest approach. capybara-webkit gives some ideas about how we can have a DSL independent of the testing driver.

  • integration with Javascript tooling. backbone.js looks interesting for this. There are others like knockout.js. We could try the FRP route with flapjax.

  • Create a wai-handler-direct-fastcgi which uses the direct-fastcgi package instead of the C library. Discussion: https://github.com/snoyberg/wai-handler-fastcgi/commit/ca64674de3934ae8dd9a612487596db0cd049781

  • http-enumerator: add multipart form rendering. That’s possibly even a good project for a separate package.

  • screen casts, maybe webinars/virtual meetups.

  • Have client session cookie code not only optional for whole site, but optional per subsite. Follow up on Matt’s idea of “Yesod middleware” for providing features like sessions.

  • Proxy subsite. Could be useful for cross-domain Ajax.

  • Web site touchups, including better navigation for the screencasts

  • Extend the current benchmark suite to run against Erlang, Nginx Perl module, and maybe that one Lua contender and Lift. Based on this, for Erlang, We may need to benchmark against both Yaws and mistulin. Here is an article on doing http benchmarking and another

  • integrate Yesod's forms with digestive-functors forms.

  • file uploading plugin configurable for different storage methods and providers (like Ruby's carrierwave + fog)

  • wiki sub-site- there are now a few Yesod wiki applications. The community could use a re-useable sub-site.

  • A Yesod installer script

  • use the numerals package for i18n numbers

  • type-safe parameters- an extension to type-safe urls. so /foo/2?bar is directed to

    getFoo :: Int -> String -> RepHtml
    getFoo id bar = do ...

Persistent

There are a lot of potential tasks here, including plenty of relatively green field coding opportunities (implement a new backend), or even API redesign.

  • projections, or sub-selects, where you only want a portion of your data fields returned. This was discussed on web-devel. The only reasonable implementation given was to stick either a default value or an undefined in the fields you don’t want.
  • A Persistent backend using mysql-direct
  • A Persistent backend using pgsql-direct
  • Determine if lenses can be used (without complicating things) to deal with namespacing issues.

Deployment

  • Faster deployment with binary diffs, perhaps using bsdiff of courgette.
  • A documented technique for zero-downtime

Community Applications

  • An application that integrates with the Yesod development environment to automatically collect compile errors. If someone else has already offered a solution to a similar compile error it will try to match it and offer the solution.
Clone this wiki locally