[Haskell-cafe] Backward compatibility

Ertugrul Söylemez es at ertes.de
Thu May 2 11:30:12 CEST 2013


Adrian May <adrian.alexander.may at gmail.com> wrote:

> Please don't interpret this as a rant: I'm just feeling a bit
> disappointed about probably having to give up on Haskell.
>
> [rant that update broke stuff]

Well, it is a rant, so you can just as well concede it. =)

The Haskell community and its descendants (Agda, Disciple, Idris, ...)
differ from all other developer communities I know in one point:  We
don't fear change.  There is a reason why other communities do:
Non-downward-compatible changes will break stuff.  We are aware of that.

Occasionally things will break, when they worked perfectly before an
update.  Does that mean that Haskell sucks?  Not really.  It means that
some library developers will have to get rid of their old bad habits.
This is unlikely to happen for unmaintained projects like WASH.  So the
question you should be asking yourself is:  Do you really want to use
WASH?  I'm surprised that you could build it with any GHC 7.x at all.

If you don't like this experimentalism and the rigor with which we get
rid of old problems (which isn't even that rigorous -- Functor and Monad
are still independent classes even today), then Haskell may indeed be
the wrong choice for you.  However, you should always ask yourself:  Who
is the one with bad habits?

Consider PHP:  It was broken since the beginning and is still broken
today.  The developers carefully make sure that it stays broken, because
fixing it would break applications.  They don't want them to break.
That means that you can rely on all of your old bad habits, keep your
SQL injection vulnerabilities, your broken program logic, etc.  Is this
good or bad?

Consider Debian, the PHP of Linux distributions:  Their philosophy is
never to touch a running system, so instead of employing architectural
changes they keep the old code bases as long as possible and follow a
rigorous backporting policy.  They don't want you to have to rewrite
your configuration files or update your shell scripts or whatever
at-most-five-minutes steps would usually be necessary after an update.
It should Just Work.  Is this good or bad?

To express this question in a broader context:  Are you leaving a broken
tool and replacing it with a new shiny one?  Or are you really just
replacing a small problem by a big one?  Haskell's change policy is a
small problem that prevents you from big problems.  PHP is a big problem
all by itself.  Do you really want to leave this wonderful realm just
because of one setback?  Keep in mind that this setback is an integral
part of why Haskell shines where PHP sucks.

Think about it. ;)


> In principle this is the best language on the planet, but with all
> these version gotchas I don't know that I can use it anymore. What a
> tragedy. I can't even think of a suggestion as to how Haskell should
> try to get out of this mess now.

We all have to deal with these gotchas.  However, I'm still much more
productive with Haskell than with any other language.  When I go to a
new GHC major version I always expect some old packages to fail, and I'm
often surprised by the small number of packages that actually do.

So my closing comment is:  Haskell is one of the best languages, but
that greatness comes at a price.  Deal with it.  Going back to PHP is
not the answer.

Instead you should recognize that now is the time to look into one of
the big three web frameworks of today:  Happstack, Snap and Yesod.  The
tool that is broken and needs to be replaced is WASH, not Haskell.


Greets,
Ertugrul

-- 
Not to be or to be and (not to be or to be and (not to be or to be and
(not to be or to be and ... that is the list monad.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130502/af65e2b3/attachment.pgp>


More information about the Haskell-Cafe mailing list