11 ms·
Yes and no. One problem is that it is kind of hard to describe: most features sound like something Linux sort-of has, and whenever you try to describe them peop
by agent327 5y ago
Yes and no. One problem is that it is kind of hard to describe: most features sound like something Linux sort-of has, and whenever you try to describe them people tend to disregard them as something that has been incorporated into Linux, and thus of little interest. What they can't know is just how much more convenient those things generally were on the Amiga, how much easier it all worked. You really have to experience that to know.
The nr. one thing any new OS should learn from the Amiga is its motto: "simple things should be easy, complex things should be possible." Not "Simple things should be possible, complex things should be Dark Souls"!
The next biggest thing would be the use of pervasive inter-process scripting. ARexx (I wouldn't choose it today but it worked) gave you amazing power to combine applications and automate various tasks - a bit like the Linux command line does, except it works everywhere. To illustrate, there was an ARexx script that combined a mail application with a chess playing game to create a chess-playing robot: you could mail it a board and it would make the next move, and mail it back. You could get two Amigas to play chess against each other, and thus avert nuclear annihilation.
"Screens", we would now call them virtual desktops, were way better than virtual desktops because applications are aware of them, and can be configured to run on a specific screen. Thus you don't waste time setting up new virtual desktops, moving windows across, etc., it's all automatic.
Assigns let you add globally valid short names for directories and devices. An assign can refer to multiple directories, and it can be deferred, meaning it is hidden until you refer to it. I really miss those on other OSes. Yes, you get links. No, they aren't the same. You don't have to create an assign in a location (they are always global), you don't need weird syntax for creating links, and you can delete them without fearing for your data.
The OS is essentially a microkernel that uses message passing for asynchronous communication, and that uses dynamically loaded drivers for things like devices and file systems. For modern usage you would really have to add memory protection (it wasn't available on the hardware of the time), and resource tracking (it wasn't finished in time for the Amiga launch).
And its culture was just different. The Amiga had so many small, simple productivity tools (it also lacked big, complex productivity tools, but that's another story). You had simple, yet powerful programming languages, music creation tools, drawing tools, etc. The tools of today are orders of magnitude better, but that power has come at the cost of considerable complexity. DPaint 2 can't hold a candle to the Gimp, but at least I knew how to draw lines with it. And is there even a single music creation tool for modern OSes that isn't either a sample arranger or a fullblown score editor?
So it can certainly be done. The question is, will you end up with the same joyful platform and the same joyful culture? I sort of doubt that: without a captain on that particular ship, odds are it will quickly turn into a Linux reskin. The world already has enough of those, and even if that weren't to happen, part of its magic was in the applications it ran. Just ports of existing Linux tools wouldn't have that. So I'd love to see a proper AmigaOS port to modern PC hardware, and it would totally rock - but I just can't see it gain the same momentum it had back in the day.
- icedchai 5y agoThat neat message passing design is also what made memory protection impossible, even on later versions of the OS. Sending a message from one task to another was really just sending a pointer, giving the receiver permission to use some of the sending task's memory temporarily. That's why it was so fast. Nothing was actually being sent. Still, it was cool stuff.
- agent327 5y agoPointers and (library) code were shared all over the place, not just in the message passing system. Still, on a modern CPU you could certainly do an implementation that either copies small messages, or just passes an entire page for a longer message. You'd need some kind of special AllocMsg function that takes the size of the message you want to send, let the OS decide if it should be sent by remapping a page or by copying.
- chris_j 5y agoUsing an OS with memory protection between processes doesn't make it impossible to use shared memory regions to pass messages between processes efficiently. Around twenty years ago, I worked on a project that built support for various telephony protocols on AIX. Amongst other things, we used System V IPC and shared memory to send signalling information and voice data between processes. We were able to achieve fairly low latencies using this approach; I don't remember the precise numbers but this was the sort of system where a few 10s of ms of latency would give the user a noticeably worse experience. Admittedly, this was on much more powerful hardware than the original Amiga (by this time, we had PowerPC CPUs running at hundreds of MHz) but I don't see why it couldn't have worked on older hardware.