The OP is about envisioning Smalltalk and Unix working together. I'm not following your point of making analogies between Smalltalk and Unix, unless... Are you suggesting Smalltalk could have/should have/was a contender to be the OS, that it would replace unix, that would have been preferable?
IMO, Smalltalk-the-system is best thought of as an OS, yes. (Remember how everyone ridiculed the idea of Smalltalk's images right up until virtual machines became a thing?) It has a runtime and a systems programming language, too: the Smalltalk VM, and Smalltalk-the-language. Analogously, Unix has its kernel and C, respectively. The global variables of Smalltalk are analogous to Unix files. Smalltalk processes to Unix processes. It's not a perfect analogy but I found it surprisingly useful once I stumbled across it.
I think you'd have to burn the disk packs (ie: neither Smalltalk nor Unix as they stand make a suitable foundation), but out of the ashes I think something largely based on Smalltalk taking into account lessons from the forty (!) years that followed it could definitely end up being preferable.
Coming back to OP, and viewing Smalltalk as an operating system on equal footing with Unix: Different operating systems interact best via networks. Which neither Smalltalk-the-OS, Smalltalk-the-language, Unix-the-OS nor C-the-language support particularly well.
OK, so the OP says if smalltalk had worked with files better, maybe smalltalk on unix could have been a thing that would have changed history. Your response is... that's irrelevant because... smalltalk was really making the play to be the OS, not to work with OSs, and it works just fine with files on it's own terms, for that goal. Do I understand your argument correctly?
> Smalltalk-the-system is best thought of as an OS
That is the is that OP is lamenting, the fact that this attitude was a significant (not: sole) cause in Smalltalk's demise. He is talking about the ought, it shouldn't have been this way, and if it hadn't been this way it would have been a LOT better.
Keep in mind that you can still build a pure Smalltalk OS on top of the Smalltalk that's not an OS, if you want to.
> It's not a perfect analogy
It is at best an analogy, and not a particularly good one at that, as whereas Smalltalk can function as an OS (you can port Squeak to bare metal fairly easily, for example), it isn't a very good at it, at least not when it comes to the functions OSes are expected to fulfil these days. And so the analogy stays at most an analogy, and breaks down even at that pretty quickly.
It turns out that what OP was talking about was created, sort of: NeXTstep. Except it substituted Objective-C for Smalltalk. Heck, it even did messaging at the OS layer (Mach).
> ...viewing Smalltalk as an operating system on equal footing with Unix...
That is exactly the problem.
> Different operating systems interact best via networks.
And that turns out to be significantly more difficult than various languages interacting on the same box.
> Which neither Smalltalk-the-OS, Smalltalk-the-language, Unix-the-OS nor C-the-language support particularly well.
True. Objective-S supports REST servers and clients effectively at the language level. And filesystems and Unix pipes. http://objective.st/ And it doesn't insist on being the entire world.
I think he's wrong, both about the "is" and about the "ought".
The reason I posted originally, way upthread, was to respond to OP's claim of "Smalltalk's rejection of the file-system and command-line". I don't believe it rejected either thing. It has an internal file system, as discussed, but it also had and has perfectly reasonable support for reading and writing external, traditional files. And it has various kinds of command-line, as discussed.
I don't think it was anything about Smalltalk's ability to handle JPEGs or email or NFS or even text files that was the problem. I don't believe that appeasing the Unix world is (or would have been) either necessary or sufficient for Smalltalk success. I think the success of Unix is path-dependent; a historical accident. It had momentum and Smalltalk didn't. It blows my mind that people still think Unixisms are somehow some kind of universal apex of computing [†]! I suppose there are, at some level, reasons for Smalltalk's relative lack of success; and while I don't know what they are, I don't think OP gives a good one.
> [Interacting via networks] turns out to be significantly more difficult than various languages interacting on the same box.
I... don't believe this to be the case. At all. In theory or practice. It has certainly not been my experience.
> Objective-S supports [a bunch of Unix stuff]
Sure, OK. So do a million other languages.
What is, to my mind, special about Smalltalk is exactly that it takes the identity between programming language runtime and operating system seriously, and tries to flip the script: what if, instead of dumbing down our languages to fit our operating systems, we raised our ambitions about what an operating system could be, to fit our languages?
Smalltalk as it stands is a poor operating system, of course. You're right that it doesn't come close to covering "the functions OSes are expected to fulfil these days". It is basically a time capsule of 1978. Semi-cooperative scheduling, Monitors and Semaphores for mutexing, flat file system, insufficient internal isolation/namespacing, poorly integrated networking. If even a small fraction of the energy put into making Unix cover those functions had been put into Smalltalk... well. We'll never know unless someone puts in the time.
--
[†] "... an utterly insignificant little blue green planet whose ape-descended life forms are so amazingly primitive that they still think [Unix is] a pretty neat idea"
> I don't believe it rejected either thing. [files/command line]
I understood that you believe that. My point is that you are wrong.
The point of files and the command line is not to have some sort of analogous mechanisms somewhere, no matter how far you had to stretch the analogies, and you had to stretch them pretty much to or slightly beyond the breaking point.
The point is to be integrated into the Unix filesystem and the Unix command line (or the Windows one, doesn't matter). Because they are integration mechanisms.
> It blows my mind that people still think Unixisms are somehow some kind of universal apex of computing
Well, that should blow your mind, because they are not the "apex", they are the lowest common denominator, the minimum that you need to play. But if you don't adhere to this minimum, you can't play. And so Smalltalk got left behind.
> [..] Smalltalk is exactly that it takes the identity between programming language runtime and operating system seriously
The point is that this, while an attractive idea, and a locally productive one, it is not actually a good one, because it creates isolated worlds. And it turns out that not being isolated is more important than being locally optimal.
Just like the image is a great hack, because it provides so many things "for free" that other environments have to work really hard at. But, paradoxically, it turns out the price is still too high. Which doesn't mean that other systems couldn't and shouldn't learn from the image. Just not duplicate it.
What Objective-S is trying to do is combine the two, because I don't think you have to isolate yourself and try to be the OS to achieve the good parts of Smalltalk. And no, GNU-Smalltalk wasn't it, otherwise I would have just used that.
i read it as mpweither arguing that the lack of interoperability is the fault of smalltalk, whereas tonyg points out that the fault might just as well be on the unix side. just as you are not going to blame unix that windows can't read a unix filesystem, it's not clear that smalltalk should be blamed that unix can't access a smalltalk image.
if i want windows to access data on unix, then i write it to a filesystem that windows can read. likewise if i want a unix system to access the data inside a smalltalk image i need to write it from smalltalk to outside the image onto a unix filesystem.
It's not a symmetric situation as these are not at the same level of the stack.
Unix, as an OS, can and, maybe more importantly, does host a plethora of languages and even operating systems (as VMs). Smalltalk does not, and if you take the OS = language idea seriously, cannot.
So Ruby can read Unix directories and files. Ruby cannot read Smalltalk "directories" (the Smalltalk dictionary) or files (objects). And Smalltalk cannot read Ruby objects.
Python can read Unix directories and files. Python cannot read Smalltalk directories or files. And Smalltalk cannot read Python objects.
Java can read Unix directories and files. Java cannot read Smalltalk directories or files. And Smalltalk cannot read Java objects.
etc.
All of these can interoperate fairly trivially (though possibly not particularly well) via the filesystem. They cannot (and could not, without significant effort) interoperate via Smalltalk.
interaction of different system at the object level has been done before though and i think that is an area that could use more research and evolution to become usable.
> interaction of different system at the object level has been done before though
Yes. I have used this (CocoaJava, Tcl/ObjC, Ruby/ObjC, etc.) and also implemented it myself (Squeak/Objective-C, among others). Even though I'd say that Objective-C is probably about as good at this as it gets, the end results are still complicated and fragile.
In the end, what ends up most workable is that one object model is declared "it", and the rest of the languages then just skins on top of that object model. (See the various .NET languages and reimplementations, JVM languages and reimplementations, and now Truffle/Graal).
i think there are three kinds of object level interaction. one is skins where the application is written in a different language than the VM it runs on top of.
the second is some form of object-message passing where two independent applications written in different languages (or also the same language) are able to pass objects back and forth. those objects need not be native objects to either language.
in the third the objects being passed are still connected to the source and calling a method on the object gets sent back to the application it originates from.
i believe CORBA falls into that category.
the one system that i am most familiar with here is bridging pike with php or java and it too is only used one-way in that there are clients written in php, java and pike, but the server is in pike only.
i am mostly interested in the second and third type.
the first type doesn't allow me to write truly native applications because in the end even of i use eg. Clojure, i am still creating and using a java application.
the second type allows me to transport rich data objects, and i see the goal here as replacing the currently text based filesystem with such objects.
one issue is how to transport the objects. xml and json have been used a lot for the second type, but both are to limited.
we need better object formats and interfaces and filesystems that support them.