<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>I agree with Richard, but would like to caution that doing
something about our build tools is, while very important, also
very risky, if history is to serve as a lesson. I think I would
prefer to see the Haskell Foundation "warm up" on some easier
battles to build consensus and gain momentum before wading into
these treacherous waters.</p>
<p>John<br>
</p>
<div class="moz-cite-prefix">On 12/10/20 2:50 PM, Richard Eisenberg
via hf-discuss wrote:<br>
</div>
<blockquote type="cite"
cite="mid:010f01764e341294-7a0a53b6-ee76-4330-979c-a0dad7a7c113-000000@us-east-2.amazonses.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
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=""
moz-do-not-send="true">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=""
moz-do-not-send="true">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="" moz-do-not-send="true">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=""
moz-do-not-send="true">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=""
moz-do-not-send="true">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="" moz-do-not-send="true">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="" moz-do-not-send="true">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="" moz-do-not-send="true">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=""
moz-do-not-send="true">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=""
moz-do-not-send="true">https://mail.haskell.org/cgi-bin/mailman/listinfo/hf-discuss</a></div>
</blockquote>
</div>
<br class="">
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
hf-discuss mailing list
<a class="moz-txt-link-abbreviated" href="mailto:hf-discuss@haskell.org">hf-discuss@haskell.org</a>
<a class="moz-txt-link-freetext" href="https://mail.haskell.org/cgi-bin/mailman/listinfo/hf-discuss">https://mail.haskell.org/cgi-bin/mailman/listinfo/hf-discuss</a>
</pre>
</blockquote>
</body>
</html>