<div dir="ltr">On 24 March 2015 at 03:07, Mike Meyer <span dir="ltr"><<a href="mailto:mwm@mired.org" target="_blank">mwm@mired.org</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><span class=""><div>On Mon, Mar 23, 2015 at 10:19 AM, Richard Eisenberg <<a href="mailto:eir@cis.upenn.edu" target="_blank">eir@cis.upenn.edu</a>> wrote:</div><div>> Forgive me, all, for asking what many may think a silly question, but I must ask:</div><div>> What's wrong with the platform?</div><div>> One non-answer to this question:<br></div></span><span class=""><div>> - "It's always out-of-date." This statement, while true, isn't a direct indication that something is wrong.</div><div><br></div></span><div>I think this is another symptom. Yes, there are some people who always</div><div>want the newest, shiniest thing. A system where you bundle up some</div><div>best-of set of libraries won't make them happy, unless maintenance of</div><div>the libraries moves into HP, or at least has releases coordinated with</div><div>it.</div></div></div></blockquote><div><br></div><div>+100</div><div><br></div><div>For me, HP is the only Haskell environment I will consider because:</div><div><br></div><div>1) Code I write needs to run on Mac (where it is written), Windows and Linux (where it is usually used). None of the 'build it yourself' alternatives gives a way to ensure, with confidence, that I have the same platform on each of my machines.</div><div>2) Life is too short to spend time messing around with things that won't build, out of date 'install from source' instructions and the like.</div><div>3) Haskell is not my core day job. HP always works, and is stable, predictable and documented.</div><div><br></div><div>However, it seems to me that each HP release is essentially a snapshot, and is not really maintained thereafter. What I would love to see is for HP releases to have some level of maintenance. In particular, Michael Snowman's comment earlier that:</div><div><br></div><div>"t<span style="font-size:13px">he version of attoparsec used by the platform today forces an old version of aeson to be used (0.6.2.1). The combination of that aeson and attoparsec version is vulnerable to an incredibly severe DoS attack for specially crafted JSON strings"</span></div><div><span style="font-size:13px"><br></span></div><div>goes to the heart of the matter for me.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div>I didn't have that problem with Python or Clojure. I didn't run into</div><div>it with Python until I was building enterprise-class systems. I ran</div><div>into other issues that made me drop Clojure before I ran into this</div><div>one.</div><div><br></div><div>So, why weren't the packages I wanted to install in the platform? If</div><div>it's really "batteries included" as the</div><div><a href="http://haskell.org/platform/contents.html" target="_blank">haskell.org/platform/contents.html</a> says, shouldn't they be there well</div><div>beyond just doing textbook exercises?</div></div></div></blockquote><div><br></div><div>I think there are a few issues here, some of which are probably specific to the Haskell community.</div><div><br></div><div>- There are not many Haskell users in the enterprise space who are in a position to make significant contributions of reasonably complete and 'battle tested' libraries for common problems. The OCaml community is very well served by the efforts of Jane Street in this respect.</div><div><br></div><div>- Related to the above, there are many libraries that are incomplete (as typically the contributor will solve the subset of the problem that relates to his/her needs.</div><div><br></div><div>- In some cases, people simply find better ways to do something that was previously messy, and this renders older (and otherwise stable) APIs and libraries unattractive. An example would be the way that Lenses have hugely simplified working on certain types of problem.</div><div><br></div><div>- There is a huge gap in understanding between even moderately capable Haskell programmers and those at the cutting edge. I believe that this could in many cases be filled with better documentation, but the fact remains that some packages have APIs which are designed at a level of type abstraction that is unnatural to me, which makes them very hard to use. As an example, when I look at the package documentation for Data.Lens.Partial.Common, I have no clue as to where to even start. Perhaps this is a reason why there are now almost as many Lens tutorials as Monad tutorials (and with a regrettably similarly poor signal to noise ratio). OTOH, maybe my IQ is just too low to be a Haskeller :-(</div><div><br></div><div>- I think, perhaps, that Haskell shares with Lisp communities the tendency that "we have a tool of great power available to us, so it is easier to roll our own solutions than use someone else's". I understand this, but the overall community is much better served where it can get behind a single library in each area that covers all major use cases, and which is well documented, maintained, builds cleanly and runs on all major platforms and generally remains backward compatible on upgrade.</div><div><br></div><div>I'm not sure if I am really offering any solutions here, but FWIW, I would advocate:</div><div><br></div><div>- HP probably does need to become smaller,of only because we do not all agree on what 'Batteries Included' means for Haskell.</div><div><br></div><div>- HP should be maintained, at least for critical bug fixes, until at least release of next HP + a short period (maybe 3 months).</div><div><br></div><div>- I would love to see a community effort to develop (or select from existing libraries) 'one library to rule them all' in some of the critical areas. This effort would include comprehensive documentation for every function, a meaningful set of examples and a commitment to bug fixes. The Python Standard library would be a good place to start in terms of which libraries are most needed - obviously not for API design!</div><div><br></div><div>Finally, to Mark and the HP team: the work you have done over the years is outstanding. The work of patiently pulling together inputs from many moving targets, testing on multiple platforms and releasing is patient, challenging and unglamorous. My sincere thanks to you all.</div><div><br></div><div>Best regards</div><div>Jeremy</div></div></div></div>