In [https://groups.google.com/d/msg/comp.lang.tcl/crJ7BNsUJkY/9G4FEGoPaCgJ%|%tcl threads 2.1 question?], [comp.lang.tcl], 2001-09-05, [Donald Porter] gives a very nice example of the freedom that the programmer gains through the proper use of [namespace%|%namespaces]. The example speaks for itself: ====== # Someone provides the thread package with a thread::shared command: namespace eval thread { namespace export shared proc shared {option args} {...} } # Author of the foo package has different opinions about names: namespace eval foo { namespace import ::thread::shared # Shared what? What a stupid ambiguous name! rename shared sharedVariable proc myLongCommandName {} {...; sharedVariable set counter 1; ...} } # Author of the bar package has yet a third view: namespace eval bar { namespace import ::thread::shared # Stpd thrd pkg gonna give me RSI. rename shared sv proc x {} {...; sv set x 1; ...} } ====== <> Arts and Crafts of Tcl-Tk Programming | namespace