
andrewcoppin:
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' http://hackage.haskell.org/packages/search.html * Click on 'advanced search': http://hackage.haskell.org/packages/advancedsearch.html * 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