OdHac/Projects

From HaskellWiki

Please feel free to propose your project here!

Cabal[edit]

About[edit]

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[edit]

Johan Tibell (via IRC)

Tasks[edit]

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[edit]

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[edit]

   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[edit]

About[edit]

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[edit]

Jasper Van der Jeugt

Tasks[edit]

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[edit]

About[edit]

That JavaScript compiler for Haskell that you probably heard of as being awesome and pretty. You heard right.

Coordinators[edit]

Adam Bergmark

Tasks[edit]

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.