Subject: Please, Sir, May I Have a Decent VM?

From: Shlomi Fish <[email-masked]>
Date: Sat, 14 Feb 2004 22:26:40 +0200

------------------------- 
Note:

This is a response to one of Joel Spolsky's recent rants titled "Please Sir,
may I have a Linker?". 

http://www.joelonsoftware.com/articles/PleaseLinker.html

Spolsky's article is in general good and I agree with it. But this article is
a vital correction.  
--------------------------

Joel Spolky had to write a countdown clock for his company's New Year's Eve
party. So far so good. He choose to write it in C#/.NET ("Michael wrote an
application to do this in C# with WinForms in about 60 seconds. It's a great
development environment.") Then, however he had to deploy it:

<<< 
My job was getting countdown.exe to run on three computers. Sounds easy.

Nope. Double click the EXE, and I got a ridiculously user-hostile error
message about mscoree.dll or something, followed by a gratuitous dump of my
path. No mention of the fact that the problem was simply that the .NET runtime
was not installed. Luckily I'm a programmer and I figured that must be the
problem.

How do you install the runtime? The "easiest" way is through Windows Update.
But Windows Update really wanted me to get all the critical updates first
before I installed the runtime. That's reasonable, right? Two of the
"critical" updates were a Windows service pack and a new version of Internet
Explorer, both of which required a reboot.

All told, for each computer I needed to run this little .NET application on, I
had to download something like 70 or 80 MB (good thing we have a fast net
connection) and reboot three or four times. And this is at a software company!
I know how long it took, because the first time it started downloading, I put
Office Space on the big screen TV, and by the time the movie was over, the
installation process was almost finished. Every ten minutes during the movie I
had to jump up, go to each computer, and hit OK to some stupid dialog box.

Well, Mr. Spolsky - here's the solution to your problem. If you had written
the application in Tcl/Tk or Perl/Tk (which may have taken a bit longer and
require some RTFMing and STFWing), and then install a comparatively small
run-time on your Windows computers - it would have worked out of the box, 
without any reboots.  Windows, why not UNIX? Yes you can run it on UNIX as 
well. Hell, you can even run it on your toaster!

Seriously. VMs like Perl, Python, Tcl, Ruby, Lua, etc. offer true portability,
are fully open source, (and so can be ported to new systems should the need
arise), written in fully portable ANSI C, and offer a remarkable speedy
development, and performance that is adequate for most needs. Furthermore,
they maintain backwards compatibility in very large time frames. I am using 
perl 5.8.1 at home, and my production environment still caries perl 5.6.0 
which is a few years old. Yet, all my scripts and modules run like a charm 
there. 

You can install a Perl and friends VM and then forget about it. Upgrades would
be free and usually not be absolutely necessary, as most programs just work on
older versions of the language.

This is indeed an open sourcerer "we've done it better" troll message. But it
is proven. Java's portability is a joke. Sun is holding the code all for
itself, and only pre-ports it to a handful of platforms. (the most common ones
but still) If you wish to port it elsewhere, you need to do it yourself, and
cannot effectively share your knowledge to anyone. Furthermore, the other and
third party Java modules form a very hard-to-conquer dependency hell. (an
absolute nightmare compared to the stupidifying ease that is Perl's CPAN.pm
module, where one command can install a whole slew of modules and all of their
dependencies).

Note that I don't think Java is a particularly bad language. It's not. But as
a technology and an ideology, it sucks big time as far as the open source
hacker is concerned. .NET seems like a Windows-only version of Java, perhaps
done a bit better. (I heard some very good things about it) As Spolsky noted
it is equally problematic, even only for Windows platforms. Maybe Mono (the
open source cross-platform implementation of .NET) holds a promise similar to
Perl and friends, but only the future can tell.

The question, of course, is why open source development platforms have
integrated lessons that others repeat times and again? Because it's an
"anarchy" governed by the "survival of the fittest" and "do and let do" laws.
Open source hackers will not use a crappy, unstable technology for long, and
frown upon anything that does not play nicely with the rest of the world.

When visiting Freshmeat.net looking for interesting software, I automatically
avoid anything that is written in Java, because I know it's either a huge
binary download or a dependency hell or both. (speaking from experience). Such
software may technically be open-source, but even people with an Electrical
Engineering degree from the Technion, will find a hard time getting its source
to compile and run. (and I know many EE graduates from the Technion who are
otherwise very intelligent, but much more clueless about things like that than
I am)

Some people avoid anything that falls out of the Free Software definition,
because they don't want to depend on proprietary code. Furthermore, all
software running on an open-source-powered system is expected to play nice
with each other. Perl, Python, Ruby, Tcl, PHP and anything else can co-exist
on one machine and even call each other's scripts. KDE and GNOME can co-exist
on the same machine, and run each other's apps. You can easily install
countless versions of Apache, and other web-browsers on the same machine, and
easily host them on different ports or on virtual web folders. And so forth.

Using the power and portability of the ANSI C language (and to a lesser extent
C++), all these programs and more are easily portable from machine to machine,
and from operating system to operating system with just a straightforward
compile. Write once - compile and test everywhere. Not much worse than Java,
and in Perl and friends it's even better than Java - Write once - test
everywhere, even without compilation.

Meanwhile vendors of closed-source software are repeating the same mistakes,
simply because they are not subjected to the conditions of the open source
world. It's not that all open source software is of good quality. That is
hardly the case. But open source software whose accessibility and
"play-niceness" sucks is dead-on-arrival in the open source world.  That's
what I call a developer friendly environment. 

Windows, OTOH, is still anything but. I find a Windows environment painful to
work in. And given this story of Spolsky and all the other tall tales he 
gives, you don't have to wonder why.

Die Windows! Die! Die! Die!!!

-------------------------------------------

Regards,

	Shlomi Fish

---------------------------------------------------------------------
Shlomi Fish      [email-masked]
Homepage:        http://t2.technion.ac.il/~shlomif/

I don't believe in fairies. Oops! A fairy died.
I don't believe in fairies. Oops! Another fairy died.

---

From: "Nadav Har'El" <[email-masked]>
Date: Sun, 15 Feb 2004 10:50:49 +0200

> Die Windows! Die! Die! Die!!!

The Jargon File says it nicely:

   Microsoft Windows. A thirty-two bit extension and graphical shell to
   a sixteen-bit patch to an eight-bit operating system originally coded
   for a four-bit microprocessor which was written by a two-bit company
   that can't stand one bit of competition.

(http://www.faqs.org/docs/jargon/M/Microsloth-Windows.html)

(the joke probably talked about Windows 95, but it's still funny...)

-- 
Nadav Har'El                        |      Sunday, Feb 15 2004, 23 Shevat 5764
[email-masked]             |-----------------------------------------
Phone: +972-53-790466, ICQ 13349191 |Jury: Twelve people who determine which
http://nadav.harel.org.il           |client has the better lawyer.

---

From: Ori Idan <[email-masked]>
Date: Mon, 16 Feb 2004 04:53:10 +0200

As I promised, here are my details:

Ori Idan
Email: [email-masked] (would be [email-masked] soon...)
Cell phone: 052-425155
Address: 16 Hapoel str. Nof-Yam Herzelia 46625.

--
Ori Idan

---

From: Ori Idan <[email-masked]>
Date: Mon, 16 Feb 2004 14:06:33 +0200

You are right, wrong list.
I sent it late last night when I was too tired and somehow did not see 
to what address I am sending it.
What I learn from this is that I should not send mails when I am too tired
:-)

--
Ori Idan