[Haskell-cafe] Working out which library to use (was: Haskell and DB)

Don Stewart dons at galois.com
Thu Nov 29 16:12:45 EST 2007

> Ketil Malde wrote:
> >I think this is the problem, not the solution.  There is a lot of DB
> >libraries, just like there are a multitude of XML libraries, several
> >collections, etc.  Too many libraries are written as research projects
> >or by grad students, and left to rot after release.  The fragmentation
> >also means that few libraries see any extensive testing - I was a bit
> >surprised that apparently none of the XML libraries can handle files
> >larger than a few megabytes, for instance.
> >
> >You're probably right that one of them would work, but especially new
> >users will have no way of knowing which one.  Only after the user 
> >has given up do people post similar experiences.
> >
> >This is getting better, of course - hackage will grow usage
> >and activity statistics and perhaps ratings, the wiki will be extended
> >with recommendations, more people will get involved in development.
> >But at the moment, this is a problem.
> >  
> This is one of the more frustrating aspects of Haskell. It's not that 
> nobody has written DB bindings - they most certainly have. It's not that 
> nobody has written compression or cryptography bindings - they have. 
> It's that there is a small zoo of them, and it's really hard to pick out 
> which ones are the "good" ones. I really hope this does improve in time. 
> (And I really wish I could do something positive to make this happen...)

We have the start on a solution for how to pick "the good ones".

    * Go to Hackage
    * Click on the 'experimental search interface'
    * Click on 'advanced search':
    * Type the name of the library you're interested in, into the 
            "required-by" field.

We'll consider which binary IO library is most popular, from:

    * binary
    * NewBinary
    * safecopy

The search engine returns the results:

    * binary, is used by 12 other packages:

        bencode, Etherbunny,GrowlNotify, harchive
        hmp3, hpaste, HPDF, infinity
        safecopy, tar, torrent, htar
    * NewBinary, is used by 4 other packages:

        ASN1, Crypto, GrowlNotify, Hmpf
    * safecopy, is used by 0 packages.

So choose Data.Binary if you trust the wisdom of the crowd.

So as a crude heuristic for measuring what the masses are saying, this
seems reasonable.

-- Don

More information about the Haskell-Cafe mailing list