[darcs-users] darcs issues

Alexander Staubo alex at byzantine.no
Tue Dec 21 02:28:43 UTC 2004


Neal D. Becker wrote:
> There is one major stumbling block - and I would guess it
> may have been discussed here before - which is the implementation language.

I'm curious why you think this is a stumbling block, and also what you 
think it's blocking in the first place.

Do you think that Haskell is going to make adoption slower? Do you think 
that Haskell is going to make *development* slower? Do you think users 
(those don't care about the source code) mind that it's Haskell? Do you 
think developers who would like to contribute mind that it's Haskell?

Floating vague speculations around is not helping anyone, really. You 
will have to cough up some pretty convincing, hard evidence in order to 
sway anyone. How about a 30-page analysis on how rewriting Darcs in 
Python would make it 50 times faster, increase portability and make 
Darcs developers three times as attractive to the opposite sex.

Anything not based on facts is useless and ultimately tainted by 
politics and a myopic bias towards the technology-of-the-day. It could 
be Python today, it might be Ruby tomorrow. If Python goes out of 
favour, is Darcs going to chase whatever new thing comes along?

Admittedly a language has logistical facets; it depends on a sort of 
language ecology. A project needs developers who know the language, and 
it needs up-to-date compiler tools and libraries that support the 
platforms we need.

If we were talking about Algol here I would be a little more worried, 
because then the tool infrastructure itself would be a liability. But 
Haskell's tool support is not a liability.

As for developers, as Mark Stosberg comments, even though Svk is using a 
much more mainstream language than Haskell, its development seems less 
active. There's a ton of dead open source projects out there that are 
based on Python, C or other popular languages; they are the living (or 
rather, dead) evidence against the oft-touted argument that a mainstream 
language by itself would attract more developers. That's because 
developers usually don't work on a project because of the language, but 
because of what's *being implemented* in the language.

Anything beyond that is speculation. The developer mindshare problem is 
not worth discussing until Darcs suddenly suffers a dearth of 
contributions. As it is now, it looks like Darcs is doing fine; and 
there's that old adage, "if it ain't broke..." Darcs is even attracting 
developers *because* of Haskell; I know, because I'm one such developer.

Still, this is speculation with very little hard evidence. Now if, like 
Stephan Bortzmeyer, you said, "GHC doesn't compile binaries for my 
platform of choice," or, "Haskell can't do blah by design", then you 
would at least dealing with facts. Whether they're important facts is 
another matter, but at least we can evaluate them logically.

In conclusion, evaluate a language's suitability based on facts, not 
vague, unfounded statements like "x is more mainstream than y". Then we 
can have a real discussion.

 > Haskell is not exactly your main stream language.

I'm interested in the psychology here. How does a language's 
mainstreamness affect a program?

Mainstreamness, I think, is about sexiness; it's not just that you don't 
know Haskell, you don't think it's as sexy as the alternatives.

The notion of mainstreamness is a vicious circle, and you're already 
perpetuating it with your mindset. Languages increase in adoption and 
become mainstream thanks to grassroots and corporate promotion and 
support. But if everybody decides not to adopt something because it's 
not mainstream yet, then that something will never become mainstream.

Python wasn't mainstream just a few years ago. Just two or three of 
years ago people would laugh at you for suggesting developing serious, 
large-scale apps in Python. As a rule, people don't laugh so much these 
days. But they would probably still laugh at Haskell.

As an aside, I'll mention that two of Haskell's best features -- 
generators and list comprehensions -- were grafted onto Python 
relatively recently. In a way you're using Haskell without realizing it 
(assuming you're a Python user).

> I wonder what you think
> of the idea of a re-implementation in a more main stream language.  I think
> anyone who likes elegant languages would probably like Python, which is
> very widely available.

I will pretend you said something like "Python is a more suitable 
language than Haskell for technical reasons", because your other 
argument is so irrelevant and badly formulated.

While I know Python better than I know Haskell, and I know that it would 
be easier for me to implement certain features I want if Darcs were 
written in Python, I think Python is slightly less suitable, because 
Darcs' use of Haskell to express the theory of patches.

I also suspect Python would be just as slow, or slower, than Haskell. 
Remember that Python is, at the moment, interpreted, whereas Haskell is 
natively compiled. Haskell is statically typed, whereas Python uses a 
humongous amount of dynamic dispatching at runtime.

Python might seem easier to optimize at first glance, due to its 
non-functional, non-recursive nature, but in the end it would probably 
mean writing a bunch of stuff in C, as opposed to making the Python code 
more efficient.

The performance part is just my professional opinion, and is impossible 
to predict except with a proper proof of conept.

If Darcs today were just an idea and we were still talking about which 
language to choose, and I were one of the core developers, I would 
suggest Python. But that's because I'm an experienced Python developer 
and would be more productive, at least initially, in that language. It's 
not because of any technical reasons per se.

Since Darcs already exists, the language has been decided. And David 
Roundy, the principal author of Darcs, does not hold Python in very high 
regard. If I remember correctly, it was his experiences with Python that 
pushed him into Haskell's loving arms.

Of course, anyone is free to offer alternative implementations in other 
languages.

Alexander.




More information about the darcs-users mailing list