On 07/16/2013 01:04 PM, Jorgen Grahn wrote:
> On Tue, 2013-07-16, crankypuss wrote:
>
> [access(2)]
>
>> I get the idea from
>> other comments in the documentation that the presence of access in linux
>> is motivated politically rather than technically, that it's part of the
>> requirements for a posix certification or something.
>
> That's one way of putting it, but a bit misleading. The reason it
> exists is /practical/: you don't remove a system calls which has
> existed since the 1980s, even if you think they are misdesigned.
>
> /Jorgen
>
Although I definitely understand and fully support the idea that you
don't go around breaking existing code just to make the world tidier, I
also feel that it's a mistake to retain B.A.D. (broken-as-designed)
functionality for the sake of an existing codebase.
I hesitate to mention Microsoft Windows but it is a good example of the
damage that can occur when compatability with existing code becomes more
important than fixing what needs to be fixed. They started out with a
poorly designed single-user monitor, and in order to maintain
compatability with existing code they never really did fix things (at
least up to the point where I walked away in disgust).
It would be sad indeed to see linux go down that same wretched path...
not that it is even in the same ballpark, but it is not yet perfect and
it will never reach that goal if incompatible changes are
philosophically disallowed; nor will it continue to improve if
incompatible changes are allowed to drive people away because they are
excessively disruptive.
Linux picked up a lot of concepts from Unix but imo Unix has never been
quite perfect and ancestor worship is not going to benefit linux in the
long run. It could be that it takes a few decades for the awkward
design characteristics of a system to become obvious and then move past
obviousness to become annoying enough to provoke someone to fix them.
But if, when they reach that point, they are left in place as they were,
that basically amounts to the end of growth and the beginning of old
age's decline.
There are design flaws inherent in the Unix architecture/mechanism that
run very deep and seem to have been picked up by linux either unnoticed,
or noticed and justified by limited resource availability.
Maybe the only way to keep the software arts moving forward is to
collect what we have learned and throw away existing implementations
every few decades, or maybe we are forever doomed to carry along
annoyances from the past, I don't claim to know one way or the other.
It does seem to me that it might be time to build a new abstraction
layer that can become a more consistent intermediary between existing
code and fixed code, but that involves a huge amount of work.