Re: Executables: Why all the abuse?

From: Cameron MacKinnon (cmackin+nn_at_clearspot.net)
Date: 02/03/04


Date: Tue, 03 Feb 2004 16:50:15 -0500

Joe Marshall wrote:
> Cameron MacKinnon <cmackin+nn@clearspot.net> writes:
>>At least once a month, someone asks how to deliver a "standalone"
>>executable of a Lisp application. It's often his first post, and often
>>his last.
>
> Often, these posters aren't interested in solving a problem but are
> rather more interested in trolling.

I have to emphatically disagree. There are trolls out there, but these
people aren't them. Their question is quite a reasonable one, given a
background in other programming languages. And the fact that a
continuing stream of people shows up here and asks more or less the same
question ought to highlight an area where the documentation could use
improvement.

> If someone wants to distribute a C program, they zip up the executable
> with the dll's and the lastest version of MFC and put it into a
> install script.

It should be remembered how this process came about: In the Windows
world, where the dll search path was short and hardcoded, the namespace
was 8.3 (with the last 3 being .dll) and the libraries in rapid flux and
buggy, this led to "DLL Hell" - installing or removing application B
made application A buggy or unusable, for reasons unclear to the end user.

Early install "shield" programs were as bad as the disease, but the name
of the market leader gives a clue as to the origin - to shield users and
developers from the pain of a poorly designed shared library model.

On the UNIX side, many developers, even today, continue to ship
monolithic, static binaries. This avoids support calls caused by the
user having subtly different library versions. The user pays, because
his two apps, both statically linked with e.g. Motif, can't share memory.

This is not to say that Lisp developers can't or shouldn't use
installers as well. As other posters have pointed out, some Windows
users are now so comfortable with the process that they're suspicious of
apps which don't provide one. And in recent years, progress has been
made - you don't always have to shut down all other applications before
and reboot the operating system after installing a minor app.

But it should be remembered that these installers were created to solve
problems that Lisp doesn't necessarily have.

> If someone wants to distribute a Java program, they take the hierarchy
> of class files, turn it into a JAR file and tell the user to get the
> latest JRE from Sun.

Or, if it's an applet, the browser walks the user through the process.

> So why are these acceptable, but the notion of zipping up a fasl file
> and asking the user to get a lisp runtime is such a burden? Why is it
> unacceptable to launch a program via a batch script, but perfectly
> fine to launch it via a `shortcut'? Why is it unacceptable to simply
> paste the lisp image onto the tail end of the launcher program?

It depends on the size and utility of the application. For a big enough
app, "get and install an Oracle DBMS" isn't considered an unreasonable
additional requirement. But for stuff at the smaller end, distributed
free for the asking over the 'net, every extra megabyte, prerequisite or
installation step will cause a significant fraction of end-users to
disqualify themselves.

To a certain extent, this is true of developers as well. Clicking on
"Build EXE" (is that what Windows IDE folks do these days?) or typing
"make" is universally acceptable. Finding and using an install wizard
somewhat less so. And so on.