#1 it's a burden of knowledge to shift from the Unix filesystem to the Smalltalk runtime. There... are no files.
#2, quite honestly Pharo Smalltalk has only gotten good in the last 3-4 years. And even then, it has 1-2 really noticeable bugs and what I'd argue are extremely subpar default keybindings, due to it being such a small community.
For 30+ years, the only really decent run-times were paid ones you bought for $1k per developer in 1980s dollars. No FOSS.
IMO the programming language ecosystem we have today was heavily cemented in the 2005-2010 period. These days the JVM/Python/Javascript/C ecosystems are huge juggernauts.
They're not about the programming languages themselves. They're about the massive integration with their underlying compilers, and massive library of tools available.
#3, it's a dynamic language for obvious reasons. It's hugely beneficial for applications development, but it's still a slow dynamic language for backend work.
And #4. The elephant in the room:
End users are divided between Windows, MacOS/BSD, and locked down phone platforms, nobody makes native applications.
Everything is a webapp, because an HTML page is truly cross platform.
I don't think engineers are wrong to congregate towards webapps. SwiftUI is still extremely amazing after all, but it only produces native MacOS apps. Which is rubbish.
But it's important to know your tools, deeply, and understand the context behind the application development industry.
> End users are divided between Windows, MacOS/BSD, and locked down phone platforms, nobody makes native applications.
This is probably gonna end up being a dumb question, but isn't this point a pro for Smalltalk (or at least Pharo - I forget how far upstream the VM comes from) because each application runs in a VM, which should be platform-agnostic?
Also, there is still a nonzero amount of asset porting.
Even if the code is portable, making the buttons for MacOS involves changing the art and everything. Apple only allows rounded corners etc. Plus supporting a new keyboard etc.
Essentially nobody gave a damn and just went for websites.
My guess is you mean something like — usually, Smalltalk software is written in a Smalltalk IDE (editor, code browser, incremental compiler, debugger, cache), instead of being written by editing plain text files with a text editor?
Of course, if you really wanted, you could edit a plain text file with a text editor, compile and run. I wrote fact.st with GNU nano.
$ cat fact.st
Stdio stdout
nextPutAll: 100 factorial printString;
nextPut: Character lf.!
SmalltalkImage current snapshot: false andQuit: true!
$ bin/pharo --headless Pharo10-SNAPSHOT-64bit-502addc.image fact.st
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000