Objects Have Not Failed (2002)
dreamsongs.com
dreamsongs.com
I saw the other post (Objects have failed, https://news.ycombinator.com/item?id=34995359) and just so happen to know that these two are connected, they were the two starting positions of a panel discussion.
Presenting one without the other seemed...incomplete.
While Javascript is usually maligned fairly, in this case I think it's unfair. The JS design learned from Self that one of Smalltalk's accidental sources of complexity was having classes as an object-like piece of syntax when they can be built out of objects themselves. JS has a more object-oriented design than some of the other examples of "object-oriented languages" presented without comment in the article.
[As an aside: I don't think programming languages can be functional, object-oriented, or otherwise paradigmatic. I think program designs can have those properties, and programming languages can support or hinder expressing those properties clearly.]
It was almost universally thought of as a toy language that wasn't even as good as VBScript.
It took David Flanagan's JavaScript: The Definitive Guide and Douglas Crockford's JavaScript: The Good Parts for people to begin taking it seriously. Prior to that, any serious client-side code was authored as a Java applet or in Flash.
You're giving developer.mozilla.org (and the existence proof that is/was Firefox and other Mozilla toolkit applications) short shrift.
The wider world began taking JS even more seriously when the iPhone launched with the imprimatur that Safari was its SDK (even if that detail was eventually reversed and largely forgotten).
Also: thought of as a toy language, sure, but being considered one that "wasn't even as good as VBScript" is highly exaggerated.
That kind of chicanery isn't unique to JS, by the way, which I mention because of the unfair malignment of JS in the original article. Smalltalk-80 syntactically has blocks, but the code in a block is just compiled into the surrounding method and the block invocation is a fancy GOTO statement.
Surely you would agree that if a language hinders one of such properties to extreme extent, then it would make sense to call such language "definitely non-[paradigm-name]"? For example, take Pascal without procedural/functional parameters: you can write functional programs, by manually applying defunctionalization and lambda-lifting... but it's so cumbersome that I'd argue such a dialect of Pascal is definitely not a functional language.