<div dir="ltr">Andrew,<div><br></div><div>I understand why you're concerned, but I would encourage you to press onward. In my experience - building commercial web applications in Haskell for the last 4 years - Haskell's library ecosystem works very well in practice.</div><div><br></div><div>In a recent project, I was able to run an interesting experiment: half my team (and half my code) was using JavaScript, and half was using Haskell. In both cases, we made an effort to avoid "not invented here" syndrome, and I think we largely succeeded in maintaining the right mentality about outside libraries. However, the <i>results</i> of that mentality were very different in these two cases. In the case of JavaScript, for any problem we had, there were many libraries that tried to solve it. That was awesome. However, before integrating a library, we had to spend a lot of time testing it, making sure it wouldn't interfere with our existing code, and integrating it. After 2 years, we had about 10 JS library dependencies, and we had gone through 10 or 20 more - integrated them, found they had serious issues, and then been forced to replace them.</div><div><br></div><div>In Haskell, there were usually only one or two choices for a particular problem. However, with a cursory glance of the code, we were usually able to determine that the code didn't do anything nasty. With QuickCheck and ghci, we were able to test things out very rapidly, to make sure they basically worked. Although cabal hell did occasionally rear its head, we were very strict about dependency versioning (eventually adopting Nix, which has very good Haskell support, to lock everything down) which meant that only the person working on the library integration had to deal with any sort of hell, and the rest of the team could simply pull and build. By the end of the project, we were using over 80 libraries from Hackage (more than 200, if you count dependencies-of-dependencies), there was only one time we had to replace a library that had made it past our initial vetting process.</div><div><br></div><div>I don't know much about how Hackage works or what the download counts represent, but I have found the download counts to be a useful, very rough approximation of relative popularity. If one library has wildly more downloads than another, I'll often look at it first - although, I'll usually look at the other ones as well, eventually.</div><div><br></div><div>Although the version numbers can look strange, you should know that the Package Version Policy (PVP) counts both the first and second digit groups as "Major version" numbers, with the first group usually used incremented only when the project is seriously overhauled. So, many projects stay at 0.1 indefinitely. For example, the <a href="https://hackage.haskell.org/package/containers">containers library</a> is currently at version 0.5.6.3, despite being very mature, completely stable, and in use by thousands of projects. About 10% of the 200 transitive dependencies in my earlier project were version 0.1.something.</div><div><br></div><div>So, to make a long story short, my experience with Hackage libraries has been overwhelmingly positive. The success rate with integrations has been over 98%, and the vetting and integration process has generally been quick and painless. Compared to the other ecosystems I've had experience with, I've been able to integrate - and <i>keep</i> integrated, for the long haul - far more code from Hackage than from anywhere else.</div><div><br></div><div>I hope you'll give it a shot, and I think you'll be pleasantly surprised by how things turn out.</div><div><br></div><div><br></div><div>Regards,</div><div>Ryan</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 30, 2015 at 6:22 AM, emacstheviking <span dir="ltr"><<a href="mailto:objitsu@gmail.com" target="_blank">objitsu@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Andrew,<div><br></div><div>The sheer number of packages is overwhelming and you can spend a very long time indeed trying to find something "suitable"... which... eventually may lead one to the conclusion, "It'll be quicker to roll my own" and then "Hey, I will upload it to Hackage, someone else might like it"... and so the list grows and grows and what began as an altruistic thought serves only to make it harder for the next guy to "find a suitable package".</div><div><br></div><div>Personally, I've walked away from Haskell purely because I got fed up being continually bitten by "cabal hell".</div><div>It's a shame because apart from LISP no other language has had such an impact on my thinking.</div><div><br></div><div>I did find that whatever package I used though, they tend to work, so maybe take the first one and get on with it, that's what I used to do.</div><div><br></div><div>Hope that helped, it probably didn't.</div><div>All the best,</div><div>Sean Charles.</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On 28 September 2015 at 16:15, Andrew Bernard <span dir="ltr"><<a href="mailto:andrew.bernard@gmail.com" target="_blank">andrew.bernard@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div style="word-wrap:break-word;color:rgb(0,0,0);font-size:14px;font-family:Calibri,sans-serif"><div><div><div>Since starting to look on Hackage for packages for such vital things as queues and algorithms, I am surprised to see very low numbers of downloads for packages that seem to me to be vitally important. For example, queuelike has only been downloaded 1617 times since being uploaded in 2009. Similar very low numbers seem to apply for many packages. Another example is cubicspline with only 485 downloads.</div><div><br></div><div>My question is, are the numbers on Hackage correct, and if so, do they indicate hardly anybody uses them, or indeed Haskell? I am starting to wonder.</div><div><br></div><div>I also notice version numbers are very low, often less than one and most often around 0.1 or so. This is either a display of extreme modesty on the part of Haskell library code developers (in fact, often found in open source communities), or an indication of lack of maturity of the code. Overall I am puzzled about this. I am trying to establish what packages to use in my coding and there seems to be little indication of what to choose, and how to assess code maturity. What am I missing?</div><span><font color="#888888"><div><br></div><div>Andrew</div><div><br></div><div><div></div></div></font></span></div></div></div>
<br></div></div>_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
<br></blockquote></div><br></div>
<br>_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
<br></blockquote></div><br></div>