Java has the right idea. Namespace by [reverse] domain name. It's sadly a tad verbose though. There's high contention for short names which is at odds with uniqueuness.
On the open source side, how much stuff was org.sourceforge that then had to move when SourceForge turned into a scummy operation?
Microsoft's CLR guidelines are a little less verbose but still run into the same problem with corporate name being permanently unique.