The language looks good on paper. It's also used widely enough to hold onto "legacy but useful" status for a long, long, long time (think cobol or fortran--there are still people writing new code in these languages, but only in very narrow niches, very little general-interest code).
There's a ton of weird gotchas, though, once you start writing in it that will drive you mad. Like the bracing rules that make sense until they don't, and then you have to make a really careful re-read of the so-simple 12 rules:
proc a {} {
puts "}"
}
"extra characters after close-brace" ???The regexes are also weird. Not a week goes by I don't have to wrestle with one of my legacy tcl scripts (getting close to replacing them all, after enough of this weirdness).
And don't expect Tk apps to look good anywhere at this point.
BUT....you get used to that stuff eventually. The real problem, though, is that there's just no one left to actually address any of the problems in the language. The core team is there, but they're mostly just keeping things chugging along. Very little in the way of new ideas going around.
It has a very small and shrinking community, though, which leads to a vicious circle of, almost no one uses it for cool new things, almost no one blogs or writes about it in a promotional way, so there's almost no pull for new people to start writing in Tcl. There's no "killer app" and no one doing the leg work about it to introduce anyone new. The community keeps shrinking by attrition.
The online faces of Tcl, the main site and the wiki, have also suffered from probably the worst bikeshedding and, for lack of a better turn of phrase, old fogeyism I've ever seen in any kind of project. Landing on a wiki page and finding 15 year old discussions about long-gone aspects of the language, the place is like a ghost town. Also not going to bring in a lot of new people that way.
Aaaaand...why does any of this matter? Because the standard library is small and missing a lot of useful modern stuff for the generalist. It's often not well-documented, and you won't find any example code on a blog anywhere, so you're on your own. You're going to implement a lot of stuff that, if you'd started your project anywhere else, someone else has already done and posted to Github.
I think it's admirable how the handful of remaining core maintainers have brought the language kicking and screaming into the 2010s. They're squeezing a little more life out of the ecosystem and I commend them.