> Some user decides to inherit from my TCP class, such as to modify from TCP
> Reno to TCP with SACK.  In the derived class, the user inadvertantly
> creates an instance variable with a name that already exists in the
> original TCP class.

This is a general Ruby problem / feature. But making a variable private
would sometimes cause grief becuase some other user actually needs to access
this variable.
In C++ I've seen cases where it was necessary to clone the source code of a
C++ third party library class in order to solve a very valid problem. It is
by no means fun to have to maintain a copy of such code.

I think it is fine that a derived class can create members in its own scope,
separate from the base - but I see no significant reason for preventing
access.

Mikkel