OdHac/Projects
Please feel free to propose your project here!
Cabal
About
Cabal is a system for building and packaging Haskell libraries and programs. It defines a common interface for package authors and distributors to easily build their applications in a portable way.
Coordinators
Johan Tibell (via IRC)
Tasks
Bug-closing fixit, where people try to reproduce bugs on the GitHub issue tracker and report those that cannot be reproduced as such. This would be very useful as the number of open issues has gotten a bit out-of-control, making the issue tracker less useful.
This is a good opportunity for the less experienced Haskell folks to get acquainted with the Haskell infrastructure and possibly even dig into the Cabal internals.
Update Wednesday 1 May
I am planning to hack on cabal. Here's some details from Johan:
Hi Dominic,
I'm glad you decided to hack on Cabal! :)
In addition to checking out the source, make sure you can build the code and run the tests. This is the recipe I use:
To build Cabal:
cd Cabal/ cabal install --only-dependencies --enable-tests -j cabal configure --enable-tests cabal build cabal test
To build cabal-install (Cabal must be built first):
cd cabal-install/ cabal install --only-dependencies -j --package-db ../Cabal/dist/package.conf.inplace cabal configure --package-db ../Cabal/dist/package.conf.inplace cabal build
You only need to run the cabal install --only-dependencies part once. You may already have the dependencies installed on your machine.
Depending on what you're feeling like, there's lots of different things you can do. Start by going to the bug tracker at https://github.com/haskell/cabal/issues
One problem with the bug tracker today is that there are way too many open bugs that are no longer relevant. One thing you could do is to go through the bugs and try to reproduce them. If you can't reproduce them add a comment on the bug saying so and send me an email with these bugs and I will close them. If you can reproduce them you can try to fix them if you like. Depending on the bug that might be easy or hard. Note that Gregory Collins and I already went through a bunch of them so I suggest you start somewhere in the middle (say, page 6).
If that doesn't tickle your fancy you could just browse the bug list until you come upon something you care about.
Another task would be to try to extend the test suite, especially with small unit tests (place in tests/UnitTests).
Another challenge would be to make sure the test suite works even if we configure with e.g. -w <other GHC version>. Some tests need to call e.g. ghc-pkg and they do that using this file: https://github.com/haskell/cabal/blob/master/Cabal/tests/PackageTests/PackageTester.hs . However, as you can see in this file we use a hack to try to guess the right ghc-pkg to call. The right thing to do would be to read Cabal/dist/setup-config and use the Cabal library to locate the right ghc-pkg (and other commands) to call. This would make the tests less brittle.
Hope this is enough to get you started!
P.S. Feel free to share this with other OdHac attendees. The more people that hack on Cabal the better.
-- Johan
On Fri, Apr 26, 2013 at 7:29 AM, Dominic Steinitz <dominic@steinitz.org> wrote: Hi Johan,
I am going to OdHac next week and would prefer to work on Cabal. I see you are going to make yourself available via irc to provide advice.
Are there any specific issues / bugs I should work on? What preparations should I make other than cloning the latest sources from github?
Thanks, Dominic.
Building Cabal to Run Selected Tests
cd tests/Distribution/Compat/ hsc2hs CreatePipe.hsc ghc PackageTests.hs -o MyTest -package-db=../dist/package.conf.inplace
Dominics-MacBook-Pro:Cabal dom$ tests/MyTest -t BuildTestSuiteDetailedV09 Cabal test suite - testing cabal version 1.17.0 BuildTestSuiteDetailedV09: : [Failed] build failed! expected: False but got: True
Test Cases Total Passed 0 0 Failed 1 1 Total 1 1
Hakyll
About
Hakyll is a Haskell library for generating static sites, mostly aimed at small-to-medium sites and personal blogs. It is written in a very configurable way and uses an xmonad-like DSL for configuration.
Coordinators
Jasper Van der Jeugt
Tasks
Hakyll should be a very accessible project, even for Haskell beginners. I have quite a few ideas for improvements, and I welcome ideas from other people as well!
- Implement an OrgMode parser for Pandoc
- Close some Issues
- TMP file API
- Fay integration?
- [done] Extend template system
- Extend checks
- ...
Fay
About
That JavaScript compiler for Haskell that you probably heard of as being awesome and pretty. You heard right.
Coordinators
Adam Bergmark
Tasks
Goes without saying: See the issues marked 'odhac': https://github.com/faylang/fay/issues?labels=odhac&milestone=2&page=1&state=open There's a fine selection of easy to medium to hard issues to close.
Other stuff that needs doing:
- Libraries binding to cool JavaScript libraries: Example, a PhoneGap binding: https://github.com/faylang/fay/issues/111
- The jQuery binding is god-awful and needs doing properly, preferably from scratch and preferably generated.
- Test cases, test cases, test cases.
- More benchmarks are always good.
That's the easy stuff. Harder stuff, probably the stuff I'll be doing:
- Patching and testing the various haskell-suite libraries, esp. the type checker.
- Add a generic serializer for the Automatic thing in the FFI.
- Finish the monad optimization of a >> b >>= \c -> d to _(a); _(b); var c = _(d); etc.
It would be nice to possibly port the AST to the haskell-suite's desugard AST and implement type-classes, but I'll have to evaluate that.
Possibly the biggest point of all:
Write some web apps with Fay. Consider this part of the ‘Getting Shit Done’ mantra. No point in writing any of these tools if we don't use them to make cool stuff.