What's often not as exposed is that Tcl was node.js before there was node.js (or, well, Twisted, POE etc.) . It has a pretty powerful event loop (moved out of Tk into the core language originall, if I remember correctly), and it's very easy to tie in scripts to add functionality. So it became quite popular for system that had to communicate with lots of different devices, gathered information from a lot of sources etc., centralized information processing hubs. Nevermind that it was very easy to add GUIs to monitor it or enter information. Back in the days, quite a few companies had pretty huge Tcl-based infrastructure, and despite the lack of support for "programming in the large", they were surprisingly easy to decipher and extend.
I still don't know why Tcl had problems entering the WWW age. It started out pretty well, the aolserver was/is a pretty capable and performant system and they even had browser plugins (i.e. as a Java rival), but once the plethora of web services hit the landscape and we all went "Web 2.0", the lack of a proper CPAN equivalent and the slightly outdated Tk look caused some exodus to more hip scripting languages. The sad thing is that since quite a while Tcl overcame all those troubles (modules, packages, native look and feel), but probably a bit too late.
I also wish I understood why Tcl was not more widely used in the early days of the Web. HTML is a string-based protocol, and Tcl is optimized for handling strings -- it's an absolutely natural fit.
Bugzilla, for example, was originally written in Tcl; but for reasons I have never been able to discover, it was completely redone in Perl. Anybody here know why?
Well, Tcl enjoyed a bad reputation for a while, mainly due to the "everything's a string" mantra leading some to believe it's not much use beyond that, RMS's flame war against it (which is why we're all using Guile now), and mostly the simple, but slightly odd syntax (expr, array and list functions).
Then you've got to remember that for a while, Sun owned Tcl. Pretty much the same period when they were hyping Java…
Also, the core Tcl distribution was still focused on scripting (embedded or not) and GUI programming with Tk. Modularity back in the days often involved separate interpreters with added featurs (TclX for example).
Compare that to PHP: Basically the same situation regarding additional modules, but they had everything related to simple web development in one package - parsing requests, handling pictures… You could use PHP to do scripting and even GUIs, and you could use Tcl to do web development. But once you're written off as a niche language, it's hard to escape that trap.
We've got a whole bunch of interpreted languages out there, but only a few of them are considered all-purpose languages. Ruby and Python mostly, even Perl has to fight a bit against the Unix scripting preconceptions.
Tcl wouldn't be the first scripting language of that period "lost". Anyone remember Pike or Icon?
I still don't know why Tcl had problems entering the WWW age. It started out pretty well, the aolserver was/is a pretty capable and performant system and they even had browser plugins (i.e. as a Java rival), but once the plethora of web services hit the landscape and we all went "Web 2.0", the lack of a proper CPAN equivalent and the slightly outdated Tk look caused some exodus to more hip scripting languages. The sad thing is that since quite a while Tcl overcame all those troubles (modules, packages, native look and feel), but probably a bit too late.