08 October 2006

White vs Black, Good vs Evil (or RailsConf report)

I thought I'd write some words about RailsConf Europe here. I'll do that now but there's one more important thing I want to tell people here apart from just giving an overview of the conference.

Speaking about RailsConf. There were a lot of interesting technical talks there covering present and future trends in Rails development. I especially liked the new movement towards REST and new developments on ActiveResource RESTful ruby client library which would make interaction between web resource (service) and clients a lot more straightforward than in usual SOAP/XMLRPC case. I even wrote a simple C++ library to do the same thing ActiveResource does. Also interesting was Thomas Fuchs' presentation about javascript testing framework (which supports Konqueror among other browsers btw). There were more cool talks but this blog article is not really about them.

We had two "political" talks at RailsConf both telling us that Rails is cool, Rails is great, Rails is fast, whatsoever. We were also told that any information about Rails' weakness, slowness is just plain FUD. For people not involved in Rails community I'll give several links.

Here and here Joel Spolsky says that Ruby and Rails are slow. This and this are the replies from David Hanssen.

You say, ok, this is just another "language war".

Yesterday I discovered another battlefield. Steve Yegge tries to say that Agile software development can be bad and Agile is basically egomania and religion.

You say, ok, this is not a language but rather methodology war.

But there's a common pattern between those political RailsConf talks, language and methodology wars. In those cases people are presenting things as the fight between Good vs Evil, Right Thing vs Wrong Thing, etc. And when people in both camps do that we have this ridiculous situation when thing "A" can be "Good" and "Evil" at the same time! And more importantly, if we listen to them we naturally hear that things can only be White or Black, there's nothing in between.

So Agile methodology can be "the only true way" if we listen to agilists or "egomania" if we listen to their counterpart. Now I want to ask you, people, is it really so? Is thing "A" doomed to be either White or Black? I really doubt that. "A" can work (or be good) for one group of people, can be bad for another and (sic!) there's a third group of people that don't care of "A" at all.

So there are always situations when you either like something or dislike or don't care. And that doesn't automatically make "something" Good or Evil. Simply put, there're people who want you to think of White vs Black, Good vs Evil and they usually have good reasons to do so (like to get you or your money). Most importantly their reasons and goals may not coincide with yours. Therefore I developed a habit of recognizing this pattern and analyzing all kind of information that comes in that "White vs Black" shell to assure I have my own opinion and make my own decisions and achieve my own results.

Certainly not all people have "Black or White" vision. When it comes for software development methodologies I always remember Barry Boehm and Richard Turner's "Balancing Agility and Discipline" book which is the good example of how can we extract the best thing from all methodologies by avoiding polar "White vs Black".

Same applies for programming languages. Instead of fighting the wars we'd better benefit from all the languages. And here I must admit I'm really sad to see the proposal to choose the only one scrtipting language for KDE. Do you recognize the pattern of "White vs Black" here? I do...

4 comments:

Anonymous said...

"And here I must admit I'm really sad to see the proposal to choose the only one scrtipting language for KDE."

You know, as nice as it would be to support zillions of different languages, a highly integrated environment like KDE would only suffer from too many choices. It's really a PITA to build a small footprint distro with several interpreters and VM's for doing different stuff. I don't want to have millions of language runtime environments eating all my disk space.

Nothing prevents you from using language foo for task bar, but choosing one as an official choice simply reduces bloat. It also brings synergy benefits and improves interoperability. I cannot say Ruby is the best language out there, but at least it's not backed by mostly religious zealots nor stubborn companies.

Unknown said...

anonymous is right. it's not about "black and white" it's about recognizing that there are real downsides to "as many languages as we care to support". they've mostly been covered on kde-core-devel so i won't rehash them here.

right now saying that the language should "foo" or "bar" for app devel is certainly too early, but discussing if we ought to be aiming for a certain number of additional languages as "core languages" in addition to c++ (and perhaps that number should be 1) is timely and useful

Alexander Dymo said...

Zillions languages? Well, I doubt so, our kdebindings package does not contain zillions just because people do want just a few languages and do not want to write KDE programs, say in Modula. If we consider this more closely, we'll see just a few languages that people choose to write bindings to and to write applications in. Not infinite, not 30 but just 3-5. And when we want to say that only 1 from them is good and other 2-4 are not we're going to either fuel another round of language wars or (more importantly) piss people out. And I do think (that's my impression after some irc conversations) that current thread at kde-core-devel already does both these things.

About whether this is the good time to discuss the topic "how many languages we care to support". Currenlty we don't know of any substantial work (read "real" applications) in trunk/KDE being done in other language than C++. Let's just allow more languages at first and see what happens and we'll get more informed about the topic. Currently we're arguing using almost zero information. It seems like we're trying to make a premature decision, aren't it?

Anonymous said...

The problems we face today is complexity. Isn't it funny that persons who would never want to code in Visual Basic take Python and so forth?

Computer Scientists and academia care a lot about languages. Sure better languages add to productivity, but honestly, do you usually take what is best of what is standard. Would you chose C++ if it was not standard? I am not sure, it is so illogical and full of traps.

C++ is standard, very flexible. But flexibility is also a source of complexity and thus failure. For most application related developments c++ is not first class. So you use a safe subset and don't get really in touch with the ugly elements of that language.

Agile Development is nothing more than: Software Engineering sucks, i.e. management of software development, so please get us a development methods.

Now, we understand why software development needs management! We just don't want management slack.

Slack reduction is the next big thing. Cost reduction was yesterday.

It is very simple, more languages, more security risks. There is a reason why Microsoft standardised on .NET. You don't want to care about 20 different languages. Think e.g. of JavaScript. From my perspective language-wise it would not have made much a difference when Netscape took Pascal with a few net functions instead of JavaScript as a scripting language. Theoretically you can rewrite almost any Pascal program in Javascript. Is the syntax of JavaScript better than the syntax of Modula or Pascal? I don't think so. Then Flash: Why didn't they take Javascript as a scripting language?

Now we have a lot of good languages which took the lesson from past languages and address matters of personal taste. The question whether you introduce a new language is an economical one. In the end what counts is the output, applications.