[erlang-questions] Stuff that breaks when you move it

Witold Baryluk baryluk@REDACTED
Mon Aug 3 15:15:52 CEST 2009

Dnia 2009-08-03, pon o godzinie 15:04 +0200, Joe Armstrong pisze:
> There's two kinds of stuff:
>     A) Stuff which doesn't break when you move it
>     B) Stuff which breaks when you move it

> Thus Erlang is in B.
> But it doesn't have to be so - this is a bug not a feature
> Note: 1) This problem (stuff breaking when you move it) is
> a particular pain when you have to make something work
> that depends upon several different components and each one
> individually breaks when you move it.
> 2) Sometimes stuff cannot be moved to where the author wanted
> you to move it to. So if you have not got admin rights
> you *cannot* move your program to /bin (or whatever)
> So lets add:
>      P-2: It should be possible to move stuff to *any*
>           directory in the file system to which you have write access
>           without breaking it.
> And while we're on the subject:
>      P-3: We should be able to *remove* stuff without breaking
>      other stuff that is not dependent upon the stuff we have removed.
>  And
>      P-4: If we add stuff to the system and then remove it we should put
>      the system back to the state it was in before we added the
>      stuff that we removed. (Possibly we might change the state of the
>      system log to say that we have added and removed something,
>      but nothing else should happen)
> Very little software obeys principles P-1 to P-4.
> This is bad.
> Fix it.

I think that Debian packaging system and policy enforces to obey
P3 and P4.

About P1 and P2, it is about parametrization of paths mainly in
dependent stuff,
sometimes it is good (many versions can coexist), sometimes bad (lots of
additional configuration needed by user, or special detection
procedures, with some convention for default paths, and when many
versions exists which to remove on upgrades). Anyway most tools,
should be beware about self location, this is for example,
why many tools/scripts uses $0 aka argv[0] to refer to itself, not
necessary default name/path given by author. Similarly with paths.

LHS can be helpful here also, but this standard is mostly about
system locations. I don't know if it is easy to maintain similar
structure in users' home directory.

Witold Baryluk <baryluk@REDACTED>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: To jest cz??? wiadomo?ci podpisana cyfrowo
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20090803/e0e665f1/attachment.bin>

More information about the erlang-questions mailing list