[KLUG Advocacy] Symlinks and ideas vs. implementation

Robert G. Brown advocacy@kalamazoolinux.org
Wed, 28 Jan 2004 01:16:51 -0500


On Wed, 28 Jan 2004 00:41:42 -0500, Peter Buxton <somercet@core.com> wrote:

>ObRant: When Alan Cox was busy on that kernel for ludicrously under-
>powered machines (FOLKS, right?), he was surprised to note that the code
>to implement symlinks roughly doubled the size of the generic FS code. A
>sure sign that symlinks are a Bad Thing (but not the only one).

Interesting observation!

Was "the code" pre-exisiting. or written just before he noted this?

I'd like to see the other reasons why symlinks are a "Bad Things". I've
always sort of accepted them as part of UNIX file systems, but haven't 
really thought aboutthem as Good or Bad, but rather Expedient. They have
proved useful, but not as I can recall in ways that hard links would NOT
have been.

Let's not confuse a Good Idea with a Bad Implementation. It may not be 
economical to go back and re-implement something better, perhaps for some
time, and a lot of good ideas may not be initially be implemented well.
One measure of how bad things really are is in how much a good idea,per-
haps implemented bady, "pulls" the implementor into other choices which 
might not be optimal. This leads to somewhat less measurable deficiencies
in "the code", but rather distributes the effects of the poor implementation
of a particular characteritics throughout the system. This is a lot more
insidieous than merely "bad", but isolated and reasonably modular imple-
mentation.

Example: I have been involved in a number of OO design efforts in the 
financial sevices biz. One of the earliest classes we had to design was
a "currency" class, and of course we flubbed it the first time. Oh, not
in any obvious way, but in a number of rather subtle ways that only be-
came apparent after some use. How did we know? Software that used this
class had to cover for some of the deficiencies of the resulting objects,
often in the same ways, in many places. Someone on the team noticed this
eventually, and we decided to implement a new currency class, based on
what we observed and learned from using the first one.

With this in mind, I'm interested in seeing the other reasonswhy symlinks
are Bad Things (or not).. Would it benefit from better implementation, or
is the implementation, already worked over (maybe a few times), trying to
tell us something?

							Regards,
							---> RGB <---