[Haskell-cafe] Backward compatibility

Adrian May adrian.alexander.may at gmail.com
Thu May 2 07:27:10 CEST 2013


Hi All,

Please don't interpret this as a rant: I'm just feeling a bit disappointed
about probably having to give up on Haskell.

Let's face it: this decision to change the default syntax in GHC7 means
that right now Haskell looks about as stable as Ruby on Rails.

I just tried to use Flippi. It broke because of the syntax change so I
tried WASH. I couldn't even install it because of the syntax change. I
persisted for a while but gave up because getPackageId doesn't exist in any
form at all anymore. This was only the install script: what would WASH
itself have in store for me to get my brain around?

What are my choices here:

1) Revert to GHC6 or put pragmas and compiler switches everywhere, switch
2010 off globally with cabal or even make an alias of ghc: That means I'll
gradually clash with people who decide ...
2) Convert all my code and a lot of other peoples' to the new syntax,
thereby exacerbating the problem that ruled out 1.

Either way, we're looking at a long period during which a large portion of
the libraries will be incompatible with the other portion, and nobody will
know which style to write. I don't know if or when WASH or any other
library will convert, or even if I'd prefer that to happen sooner or later,
because that would depend on when other libraries do and how I'd worked
around it in the meantime. Altogether that means I can't sensibly decide to
rely on any library, so I can't use Haskell. I'll just have to go back to
fumbling around in XSL, PHP and the like. Is Haskell 2010 really so much
better that it justifies this?

I just saw that movie "The Words": the moral of the story is that you
shouldn't try to change your mistakes.

...

Apparently it's not only 2010. I now find that buildng the Haskell Platform
wants GHC 7.4.2, not 7.4.1 because of the line "import Prelude" (if I
remember rightly,) and even when I follow the rules precisely I still get
several different deprecation warnings. The prelude is not exactly obscure.
If you deprecate that you've broken everything. Is it really impossible to
keep such a basic mantra meaningful from one minor version to the next?
Java was fond of deprecating things in the early days, but when they said
"deprecated" they didn't mean "switched off", let alone that it would lead
to a syntax error. They just meant "not trendy anymore."

It's a very common illusion to believe that the central thing in your life
is also the central thing in everybody else's. That's why things like
Norton take over your whole machine: those guys believe that the only
reason you bought the computer was to fight viruses, because that's what
most of the machines in their office were bought for.

There seems to be something similar going on in the way Haskellers are
expected to update all their code whenever GHC decide to issue an update.
But in reality we have jobs of our own. I'd like to choose Haskell over XSL
because I think it'll enable me to write web sites more efficiently, not
because I want to forget all about my job and savour the brilliance of the
latest Haskell version. But in reality I'm just sitting here waiting for
the Platform to compile just in case it's the Ubuntu package's fault, but I
know it won't help. I'll just get other problems instead. Reality is that
the whole ecosytem is in disarray because of this lack of respect for
backward compatibility. At least Rails can plead that it's relatively new,
but Haskell has been around for over 20 years.

I understand that progress has to be made, and it would be nice if people
did just update all their code quickly so you could switch off old stuff
and move on. But it's not hard to survey the code that's out there and see
how much stuff you'd be breaking if you did. If it's not a lot, then
switching it off to wake them up would be an acceptable compromise. But it
looks to me as if a lot of very important stuff is still failing on the GHC
from November 2010, so clearly things are going too fast. Adding new stuff
is great, and sometimes the new stuff clashes with the old stuff. But how
much of that deprecated stuff really *needed* to be switched off, and
couldn't the new stuff have been designed so as not to force that?

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.

Adrian.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130502/3d067612/attachment.htm>


More information about the Haskell-Cafe mailing list