<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">In my view, a lack of communication like the one highlighted here is exactly what the Haskell Foundation hopes to improve. It's still being bootstrapped, so don't expect any action soon, but I would hope for forward motion by the springtime.<div class=""><br class=""></div><div class="">Of course, the HF needs all of us to be the best foundation it can -- so please consider nominating yourself for a board position (<a href="https://haskell.foundation/board-nominations/" class="">https://haskell.foundation/board-nominations/</a>) and/or applying for the executive director (full-time, salaried) position (<a href="https://haskell.foundation/ed-job-description/" class="">https://haskell.foundation/ed-job-description/</a>)! In either role, you could have direct impact on moving this all forward.</div><div class=""><br class=""></div><div class="">Richard<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Dec 10, 2020, at 6:42 AM, Allen Sobot via hf-discuss <<a href="mailto:hf-discuss@haskell.org" class="">hf-discuss@haskell.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">As a still (very) new Haskell user by many measures, indeed the little experience I had with Cabal isn't great overall in my view (honestly not a fan of Stack grabbing separate GHC instances though either unless I pass like 2 command-line flags, if there's a configuration option I'm not aware of I'd be grateful).</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">I had no clue about the communication issues etc. plaguing Cabal, that explains a bit...</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">In any case I'd like to try to contribute what I can to this effort, mainly to improve the UX which I agree is absolutely terrible in my humble opinion.</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">(Side note: I was informed on another mailing list that I may have some setting pertaining to forcing some kind of read receipt which is considered impolite on mailing lists, if this is still the case I apologize and I'm trying to determine what even is the precise issue or setting controlling it, at least on K-9 Mail and Neomutt)</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">On December 10, 2020 12:23:42 p.m. GMT+01:00, Ignat Insarov <</span><a href="mailto:kindaro@gmail.com" style="font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">kindaro@gmail.com</a><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">> wrote:</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""># Do something about Cabal?<br class=""><br class="">Hello.<br class=""><br class="">Cabal is the second most used tool in Haskell after GHC. It has many<br class="">problems. It may be noticed that there is one and a half developers working on<br class="">it. This is clearly not enough to address these problems. I propose that this is<br class="">a good place to invest in.<br class=""><br class="">### Problems I have in mind:<br class=""><br class="">* Poor communication, lack of open source development process.<br class=""><br class="">The whole Cabal–Stack schism appears to be an outcome of poor<br class="">communication. One of the leading developers of Cabal is even banned from<br class="">participation somewhere in Stack circles.[1] Personally, I reported several<br class="">issues to Cabal and every single time it resulted in sadness. Observe a<br class="">vicious circle: core developers are overworked ⇒ they are being unfriendly ⇒<br class="">there are fewer contributors ⇒ core developers are overworked.<br class=""><br class="">I have no hard evidence but it appears that presently, more people that strive<br class="">to improve the Haskell build experience are outside the Cabal cabal than are<br class="">inside.<br class=""><br class="">* User experience is an afterthought.<br class=""><br class="">Cabal's user experience is horrifying. A collection of complaints is being<br class="">compiled elsewhere.[2] There are also bugs being opened to Cabal because of<br class="">this, requiring triage and therefore wasting the precious time of the few<br class="">overworked developers. Stack is much more friendly — this shows by example<br class="">that the user experience problem is not inherent and may be solved.<br class=""><br class="">It is ordinary to receive output like this:<br class=""><br class="">```<br class="">% cabal run example-executable<br class="">Warning: The package list for '<a href="http://hackage.haskell.org" class="">hackage.haskell.org</a>' is 84 days old.<br class="">Run 'cabal update' to get the latest list of available packages.<br class="">Resolving dependencies...<br class="">cabal: Could not resolve dependencies:<br class="">[__0] trying: example-0.1.0.6 (user goal)<br class="">[__1] next goal: opaleye (dependency of example)<br class="">[__1] rejecting: opaleye-0.7.1.0, opaleye-0.7.0.0 (constraint from project<br class="">config TODO requires ==0.6.7006.1)<br class="">[__1] rejecting: opaleye-0.6.7006.1 (conflict: example => opaleye^>=0.7)<br class="">[__1] skipping: opaleye-0.6.7006.0, opaleye-0.6.7005.0, opaleye-0.6.7004.2,<br class="">opaleye-0.6.7004.1, opaleye-0.6.7004.0, opaleye-0.6.7003.1,<br class="">opaleye-0.6.7003.0, opaleye-0.6.1.0, opaleye-0.6.0.0, opaleye-0.5.4.0,<br class="">opaleye-0.5.3.1, opaleye-0.5.3.0, opaleye-0.5.2.2, opaleye-0.5.2.0,<br class="">opaleye-0.5.1.1, opaleye-0.5.1.0, opaleye-0.5.0.0, opaleye-0.4.2.0,<br class="">opaleye-0.4.1.0, opaleye-0.4.0.0, opaleye-0.3.1.2, opaleye-0.3.1, opaleye-0.3,<br class="">opaleye-0.2, opaleye-0.6.7002.0, opaleye-0.6.7001.0, opaleye-0.6.7000.0,<br class="">opaleye-0.5.2.1, opaleye-0.3.1.1 (has the same characteristics that caused the<br class="">previous version to fail: excluded by constraint '^>=0.7' from example)<br class="">[__1] fail (backjumping, conflict set: example, opaleye)<br class="">After searching the rest of the dependency tree exhaustively, these were the<br class="">goals I've had most trouble fulfilling: opaleye, example<br class="">```<br class=""><br class="">There are so many things that are wrong here. Even a sneaky _«to do»_<br class="">remark. If you wonder, in this case the solution is to remove and re-generate<br class="">`cabal.project.freeze`.<br class=""><br class="">Even the name of the program — it is actually _«cabal-install»_ — is<br class="">incomprehensible, it should be re-branded to Cabal, which is how everyone<br class="">calls it anyway.<br class=""><br class="">* Features are not being introduced.<br class=""><br class="">There is no reason for two build tools to exist. The killer feature of Stack —<br class="">snapshots — should be supported by Cabal. Possibly Cabal itself should be<br class="">refactored and split so that there are separate tools for packaging, version<br class="">resolution and human interaction — I do not know. But certainly the way things<br class="">are presently is a waste of developer effort and a source of confusion for<br class="">everyone.<br class=""><br class="">### My proposition, in particular.<br class=""><br class="">* Ask all the people that show compassion to the cause of a great Haskell build<br class="">tool to unite and work together on a better Cabal. This includes the<br class="">developers of Stack and everyone that expressed unhappiness with the current<br class="">state of Cabal. These people should be seen as a blessing, not as an obstacle.<br class="">* Put in place a clear process for contributing and decision making, so that it<br class="">does not come down to the privileged opinion of one of the core developers.<br class="">* Make a model of user experience that Cabal should conform to, and make<br class="">conformance a priority. Surely there are among us people that know a thing or<br class="">two about user experience — call for them to step forward. Every issue that<br class="">stems from misunderstanding, re-assign to the model instead of closing.<br class="">* Merge the support of Stackage snapshots into Cabal. Ask the core developers of<br class="">Stack to join the effort. Transition from Stack to Cabal should be one well<br class="">discoverable command that just works.<br class=""><br class="">I realize that this letter is largely an opinion piece. You can also see it as<br class="">an _«ideal piece»_. Without an ideal, without a vision, we are stuck with the<br class="">present. I do not insist that my vision is the best. But the present reality is<br class="">not the best vision either. I propose, foremost, that we work and fight for a<br class="">better future.<br class=""><br class="">[1]: <a href="https://github.com/commercialhaskell/stackage/issues/4472" class="">https://github.com/commercialhaskell/stackage/issues/4472</a><br class="">[2]: <a href="https://github.com/tomjaguarpaw/tilapia/issues?q=is%3Aissue+is%3Aopen+cabal" class="">https://github.com/tomjaguarpaw/tilapia/issues?q=is%3Aissue+is%3Aopen+cabal</a><br class="">_______________________________________________<br class="">Haskell-Cafe mailing list<br class="">To (un)subscribe, modify options or view archives go to:<br class=""><a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" class="">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br class="">Only members subscribed via the mailman list are allowed to post.<br class=""></blockquote><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">_______________________________________________</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">hf-discuss mailing list</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="mailto:hf-discuss@haskell.org" style="font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">hf-discuss@haskell.org</a><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="https://mail.haskell.org/cgi-bin/mailman/listinfo/hf-discuss" style="font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">https://mail.haskell.org/cgi-bin/mailman/listinfo/hf-discuss</a></div></blockquote></div><br class=""></div></body></html>