Difference between revisions of "MuniHac2016/Projects"

From HaskellWiki
Jump to: navigation, search
(add foundation)
m (add skill level)
Line 65: Line 65:
== ghc-mod: make using different compiler versions across projects easier ==
== ghc-mod: make using different compiler versions across projects easier ==
'''Required skill level''': Expert
https://github.com/DanielG/ghc-mod/issues/615, https://hackage.haskell.org/package/rts-loader#readme
https://github.com/DanielG/ghc-mod/issues/615, https://hackage.haskell.org/package/rts-loader#readme

Revision as of 15:22, 31 August 2016

Please add projects (following the template) that you are planning to work on during MuniHac.

OpenCV 3.1 Haskell binding

Homepage: https://github.com/LumiGuide/haskell-opencv

Contact: Bas van Dijk

Required skill level: Expert

haskell-opencv is an in-development opensource Haskell binding to the popular OpenCV-3.1 C++ Computer Vision library. Note that other Haskell OpenCV bindings already exist but these target the older 2.4 version of OpenCV.

The library comes with haddock documentation. Example programs are embedded in the documentation and are automatically build and run as part of the test-suite. They output images which are referenced from the documentation. Besides documentation the library also comes with a test-suite and the beginning of a benchmark suite. Finally, the library is already being used in production by LumiGuide for detecting available space to park your bicycle or car in big parking facilities.

The library is not finished yet. A lot of functions still need to be bound. However, the basis is there to easily bind missing functionality. All the core pieces are in place: core datatypes like points, sizes, polygons and most importantly matrices are there. It's also easy to bind missing datatypes. We use inline-c to inline C++ code in our Haskell code. We also have a way of dealing with exceptions originating from C++ code.

The goal of this MuniHac project is simply to bind more functionality. Roel and Bas will be available as mentors and can help you get started quickly and provide advice on how to best represent OpenCV functions in Haskell.


Homepage: https://github.com/haskell-servant

Contact: arianvp


Required skill level: Intermediate

Servant comes with a library `servant-foreign` that allows us to generate http clients in different languages like javascript and ruby. A servant-python library has been requested a few times, and it would be nice to add this to servant.

You could look at the code in `servant-js` and adapt it to generate python code. Preferably using the python `requests` library.

Servant GraphQL

Required skill level: Expert


We can look at how we can verify data based on a graphql description. We could look at the Universe pattern to solve this. (http://2015.ecoop.org/event/curryon-coding-for-types-the-universe-pattern-in-idris)

Servant Custom Type Errors

Required skill level: Intermediate


Servant generates scary error messages when things go wrong. GHC8 introduces custom type error messages. Perhaps you can explore how we can improve the usability of the servant library with this.

arianvp will be available as a mentor for servant-related projects.

ghc-mod – Haskell editor integration for Emacs, Vim, Atom etc.

Contact: Daniel Gröber (GH: DanielG, IRC: dxld), #ghc-mod (freenode)

ghc-mod-core: aka. "ghc-mod The Good Parts"

Required skill level: Intermediate


ghc-mod's codebase has been accumulating a lot of functionality over the years, leading to a significant maintenance burden in keeping everything working. We're trying to split the essential parts off into a new library and eventually rebase everything else on top of that.

ghc-mod: make using different compiler versions across projects easier

Required skill level: Expert

https://github.com/DanielG/ghc-mod/issues/615, https://hackage.haskell.org/package/rts-loader#readme

One of the major problems with ghc-mod is the fact that we directly link against the GHC API library which essentially means we can only support one GHC version per ghc-mod installation. Since ghc-mod now supports Stack this has become a much larger problem since GHC version changes are now transparent to users.

There are two approaches to solving this that we're considering: Either we (re)compile the ghc-mod executable at runtime against the GHC version we detect the project to be using or we use some dynamic linker voodoo. I've been prototyping a way to do the latter (see rts-loader package on Hackage) but it's not clear yet if this is a good idea or not.

Foundation Haskell

Homepage: https://github.com/haskell-foundation

Contact: Vincent Hanquez, Nicolas Di Prima, Jan Gerlinger

Required skill level: Beginners to Experts

Foundation is an ambitious community project trying to bring together keys part of modern haskell libraries functionality, and make everything work together better and consistently. The idea is to provide a better base with everything that a modern haskeller need to complete projects.

We're open to contributions and ideas in all differents breadth, for now we're concentrating on the basic core types like strings, arrays, and their APIes.