standalone erlang

Adrian Ho <>
Thu Feb 17 13:17:16 CET 2005

On Thu, Feb 17, 2005 at 10:53:57AM +0100, Bengt Kleberg wrote:
> distribute one file seems to be ok. but why insist upon one file after 
> installation?
> imho, if all the thousand files are placed in one directory it looks 
> like one file. and to remove the program it is sufficient to remove one 
> directory.

I guess it really depends on your deployment environment (OS, HW,
finicky users, etc.) and your business requirements.  For instance,
if the runtime environment in question had no filesystem, a standalone
binary is pretty much your only choice.  And if your customers aren't
comfortable with your use of Erlang or any non-mainstream technology,
a self-contained binary hides all the evidence.  (I don't know about
conditions in Europe, but around Asian parts, customers can get pretty
nervous if they find out you're using some esoteric technology that even
their in-house experts don't know diddly-squat about.  Putting an
exploded directory on their hard disks pretty much gives the game away.)

Here's an example of why I would like to see a Tclkit-like deployment
model in at least one implementation of Erlang.  One project that I used
it on was a multi-platform data visualization tool (Windows, Solaris
and Linux) that was written by a third party.

It started out as Joe's "thousand-file" scenario, which included the
Tcl runtime+libs and several third-party libs (native code, pure Tcl,
and everything in between).  The original upgrade procedure was exactly
what you described: Blow away the entire install directory, then unpack
from an archive.

Just as a lark, I decided to turn the entire directory into a starpack
(ie. a single executable file containing the Tcl runtime and all the
necessary application-specific stuff) and asked a couple of the end-users
I dealt with regularly to "shake it down" and report any problems to me.
My exact instructions to them were: "Just drop this file anywhere you
want and run it."

Not only were there zero problems, all three test binaries (for the
different platforms) were quickly circulated round the organization to
which I had contracted my services.  From that point onwards, /nobody/
wanted to go back to the old application management method, and I was
praised for having finally gotten rid of "all that trash".

As a side benefit, everyone thought I'd recoded the entire application
in C++ (it's a single binary, after all), and a recurring comment
I got was "Hey, it runs faster now", even though I hadn't done a
thing w.r.t. optimization.  Whether the speedup was real or purely
psychological, I'm not about to look this gift horse in the mouth.

As I start looking at Erlang, and esp. at ejabberd, I'm thinking that
it looks really cool, but I'm also wondering how I can get this in
the customer's front door without them going "aw crap, back to the old
days again?!" or "what the **** is Erlang, and why are you using it?"

- Adrian

More information about the erlang-questions mailing list