There's one of my hobby projects that could use some manpower to bootstrap it into a production-quality tool. It's an HTML templating system; right now it reads input templates in one of two languages (one very declarative, very similar to Python's jinja2, the other being a locally-pure functional language with a curly-bracket syntax), and it can output PHP and JavaScript as well as execute templates directly in Haskell code. There's also a rather experimental JSON-based intermediate format, designed for high-security scenarios (JSON can be parsed quickly, but because it cannot contain arbitrary code, a compromised compiler can be mitigated by whitelisting what the runtime can do; this way, only the runtime has to be audited, not the compiler).
There is an incomplete implementation of a PHP library that can interpret this intermediate JSON format, but it hasn't been used in any production-quality project yet. The core part is the compiler, consisting of a Parsec-based parser, an AST, an optimizer, and a few backends. The unique selling points: * Pre-compile your templates - now you can have the cake (expressive clean template language) and eat it too (great performance, because it's pre-compiled to your web app's native language). * Use the same template for PHP, Haskell and JavaScript (and maybe others, too). * Bye bye XSS: HTML-encoding is the default. * Extensible: Hook up your own native functions - it's as simple as adding a function to your template input data, then calling it inside the template. It could use some work in a lot of areas; projects could include, for example: - Getting the JavaScript backend to support 100% of the language features (right now, only the direct-execution and PHP backends pass all tests) - Implement some glue to allow easy embedding in Haskell web applications (yesod / happstack / snap) - Add more features to the input language (some of which would also require some changes to the backends), e.g.: - range literals - list comprehensions - indexed for-each, or some way of getting the current iteration's index; very useful for things like zebra-stripe data grids and such - Add other backends (Python and Ruby would be the most obvious candidates, but I'm really open to anything) - Add more library functions - A better optimizer - Some tooling and integration support, e.g. some kind of mechanism to switch between executing on-the-fly (for development) and using pre-compiled templates (for production), something to implement graceful degrading on the client side (use client-side templates when possible, fall back to postbacks and server-side templates as needed), syntax highlighters for popular editors, etc. Anyway, here's the source: https://bitbucket.org/tdammers/hpaco The PHP lib/script that can produce and run a subset of the JSON intermediate format is here: https://bitbucket.org/tdammers/phpaco (Any contributions, feedback, etc., very welcome) On Thu, Jul 04, 2013 at 05:26:59PM +0200, Anders Bech Mellson wrote: > Is there any project that needs working this fall which could be used as a > university project? > > I am in the university (M.Sc. in software development), > so I am mainly looking for project ideas (preferably concrete ones). > > We are 2-3 students that have ~10 hours pr week for 3 months to work on a > project. > > Is there a listing somewhere with project ideas for contributing to the > Haskell community? > > Thanks in advance, > Anders > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe