Live data from Hacker News

A dream of an ultimate OS (1995)

okmij.org

171–180 of 188 posts

Re: A dream of an ultimate OS (1995)

#171
post #160
post #152

The perfect OS is no OS. An OS is just specialized software that provides services, but by providing those services and only those services, you're locked into that OS, and all those services whether you want them or not. And we have to do that because we don't want all our software to have to provide the basic services, but we don't really get that: we still have to provide all the libraries it needs, some of which…

What do you think of what we are building @ https://github.com/nanovms/nanos ? We are all about taking things away from the general purpose operating system and only focusing on what is needed to run a given service in prod.

That's definitely in the spirit of what I was getting at.

I'll have to give it a spin, not sure when that will be, but I'd love to explain to a security audit that we don't patch an instance because there's nothing on it but the application.

Re: A dream of an ultimate OS (1995)

#172
post #144

Earlier quoted context omitted.

This. The Nvidia drivers are getting there, but they're nowhere close to Windows. Tend to mess with audio, have to restart to use a dual monitor setup (yes, I've googled). It's a real hassle for anything but a basic setup.

> The Nvidia drivers are getting there, but they're nowhere close to Windows...have to restart to use a dual monitor setup I have a desktop with a discrete Nvidia card, and on Linux I'm easily able to turn on my second monitor after the system is already booted and have it be recognized. I'm super curious to hear what issues you ran into with this sort of thing, because it all works without hassle for me.

The issue I'm having is that Nvidia driver 418 doesn't support my HDMI out (still haven't figured out why), but 390 has atrocious power management. So when I'm mobile, I switch to 418 (restart), and at my desk back to 390 (restart again).

Re: A dream of an ultimate OS (1995)

#173
post #165

Earlier quoted context omitted.

> Things like: Forced updates in Windows 10, certain lack of hardware, application, and game support in Linux, and MacOS "requiring" Apple hardware I'm pretty sure you've discovered a simplex (a thing like a CAP triangle) here! These all trade off against one-another: 1. highly-integrated first-class hardware support 2. support for all third-party components under the sun 3. low security-vulnerability surface (and th…

Is linux really 2 and 3 at the expense of 1? I've had several issues where hardware doesn't work on windows, but does work on linux.

I think "highly-integrated" and "first class" are the key terms here.

Linux supports much more consumer hardware out of the box than it did a decade ago, but if you ever do encounter a driver issue, you'll need to know your way around the terminal and be able to google-fu your way around some forums. The people on this site might be able to get through it without too much pain, but we're in the minority.

Windows definitely supports more hardware out of the box, and even when something doesn't work, it gives you some nice GUIs to manage the drivers. At the end of the day writing drivers sucks, and it's tough to provide support for the virtually endless supply of components and periphs without paying people to write those drivers.

Re: A dream of an ultimate OS (1995)

#174
post #78
post #15

Earlier quoted context omitted.

You can already run a substential amount of Windows software natively on Linux with Wine, there is also Darling working on bringing MacOS to linux. With that being said, my ultimate distro is Linux with a Desktop Environment that is less braindead than Gnome. https://www.winehq.org/ https://www.darlinghq.org/

My ultimate distro is very similar to Linux but with a desktop environment similar to OS X, but more open and configurable.

ElementryOS is heading that way, if you haven't heard of it yet. But the ecosystem is no where near close to MacOS. Sadly, for me, cause I mostly run Linux. :P

Re: A dream of an ultimate OS (1995)

#175
post #119

All I want is an OS that has as few of the weaknesses as possible and all the best things about all the current major operating systems; examples: Flagship gaming support from Windows, Stability and flexibility from Linux, and Design principles from MacOS. Each of those three operating systems have some weaknesses that makes me jump between them quite often. Things like: Forced updates in Windows 10, certain lack of…

Well, this is very similar to the Haiku project's goals, though of course on many of these fronts we're only partway there. Care to come join us? :)

I’ll be happy to give it a go in a VM to start :)

Re: A dream of an ultimate OS (1995)

#176
post #109

Earlier quoted context omitted.

You raise a point - we have a bunch of small operating systems running on top of our existing operating systems. DBMSes, editors (emacs), browsers, and more. There's a great amount of inefficiences being added because everyone is re-inventing OSes and/or DBMSes at every layer.

I often wonder how much more efficient computers would be if we were capable of writing optimal machine code for whatever task we wanted to accomplish. No layers, just efficient code written at the lowest level for everything. It obviously wouldn't be worth the effort, but how many times faster would our computers be?

I think it'd be possible to automate that at some level, generatively code just the minimum needed at the machine level for the task, and no extra fluff.

Re: A dream of an ultimate OS (1995)

#177
post #175

Earlier quoted context omitted.

Well, this is very similar to the Haiku project's goals, though of course on many of these fronts we're only partway there. Care to come join us? :)

I’ll be happy to give it a go in a VM to start :)

Please do! You can find us in Freenode#haiku; feel free to join there and send us feedback, etc. :)

Re: A dream of an ultimate OS (1995)

#178
I do like the idea of weaving database functionality into the OS, but I also have concerns. Oracle has, on a few occasions, taken to extending their database technology to areas like this and the result was obtuse and perverse. I am thinking of a large system I worked on forged in early Oracle Forms and Reports. Each form (window) would have trigger procedures stored in the package that represented it, and you were left with the kludged-in features of PL/SQL for basic things like looping and control flow. SQL was never intended to define software. And attempting to take it and mutate it in that direction is starting from a false premise I think. Sure, with anything that is Turing Complete you can build anything. But that doesn't mean you should.

If that danger is avoided, the broad concept itself might have merit, most especially in replacing the way we deal with filesystems which should have changed decades ago. I believe that storage should be separated into mutable and immutable categories. Immutable data (software packages and the like) should be managed by a universal networked content-addressable versioned immutable data store. Something like Perkeep mixed with the Internet. If you did something like 'apt-get install firefox', it would lookup the current versions GUID from a DNS-esque service and check the local store, then the local network store, and then hit the Internet store of data if necessary to pull down the content. It could be thought of like extending storage from registers, L1 cache, L2 cache, L3 cache, main memory, disk outward to the network, with data traversing each level only when necessary as a kind of overgrown cache control. Very storage-constrained contexts could purge anything immutable with confidence that it would be able to pull it back in when necessary. Call it 'swap to the cloud' if you're a marketer who doesn't realize how horrific that sounds to technical folks.

Mutable storage would be handled as a local database, it would be all of your personal content and similar, stored and indexed with ways that are efficient for data which can change rapidly and which must be preserved as it may be the only copy. Individual disks should, ideally, be presented to the user as a unified whole with reliability information baked in and managed by the OS in the background. Whether and which data is replicated, striped, etc should just be something people set with their hardware providing maximums (if you have 3 drives, you can choose 300% reliability as its max and based on the drive reliability, age, SMART status, etc, the system will rebalance what is stored where in order to best preserve the users desires, only bothering the user when things cross a certain threshold of uncertainty). Data is important. Not just for corporations, but for everyone.

Software Transactional Memory should be built into the hardware level and supported at the OS level, and can be supported at the OS level before hardware has a chance to catch up and accelerate it.

The OS should present itself sort of like Smalltalk "images" operate to the user, albeit with most of the moving pieces covered by a thin veil unless you launch a 'system edit' sort of mode which would make the running objects editable and present live development tools. Code editors should not simply be text editors, but tools which know they are operating on code and treat it as such, allowing one to operate on an AST or syntax tree view for certain operations.

Vector graphics and the concept of graphics 'surfaces' rather than a simple framebuffer should be the 'step 0' of supporting moving to a more modern system. Take advantage of modern pixel densities on high-resolution screens.

Re: A dream of an ultimate OS (1995)

#179
post #165

Earlier quoted context omitted.

> Things like: Forced updates in Windows 10, certain lack of hardware, application, and game support in Linux, and MacOS "requiring" Apple hardware I'm pretty sure you've discovered a simplex (a thing like a CAP triangle) here! These all trade off against one-another: 1. highly-integrated first-class hardware support 2. support for all third-party components under the sun 3. low security-vulnerability surface (and th…

Is linux really 2 and 3 at the expense of 1? I've had several issues where hardware doesn't work on windows, but does work on linux.

I'd argue that Linux is moreso 1 and 2 ("highly-integrated first-class hardware support" and support for all third-party components under the sun").

You rarely have to install any drivers. The kernel comes with drivers for almost every driver under the sun.

On the other hand, there are a lot of CVEs for Linux, and while they do get fixed quickly, the security vulnerability surface area is quite large. Especially considering the sheer size of kitchen sink kernel that is.

Re: A dream of an ultimate OS (1995)

#180

Earlier quoted context omitted.

Is linux really 2 and 3 at the expense of 1? I've had several issues where hardware doesn't work on windows, but does work on linux.

I'd argue that Linux is moreso 1 and 2 ("highly-integrated first-class hardware support" and support for all third-party components under the sun"). You rarely have to install any drivers. The kernel comes with drivers for almost every driver under the sun. On the other hand, there are a lot of CVEs for Linux, and while they do get fixed quickly, the security vulnerability surface area is quite large. Especially cons…

Re: #1, when I said “highly-integrated”, I was referring to base-OS features that depend tightly on things (maybe third-party) drivers do. I.e., having more kernel or userland code, on the OS side of the fence, that calls into untrusted driver code through specialized (rather than generic “device-class” API) interfaces. Things like kernel serial-debugger-over-USB support, or how Windows elevation prompts interact with screen-reader software. Another example, not from desktop OSes, is how Android/iOS treat being plugged into a car.

In all these cases, a third-party driver is essentially being given the the reins to the system, intentionally, as part of the user’s expected workflow. Windows and macOS (and, I would suspect, any OS solving for enterprise requirements) both have places where they allow third-party drivers to participate in these elevated APIs; while Linux doesn’t really (Linux only has third-party driver-blobs that fit to specific isolated in-kernel sandboxes.)

My thought re: #3 was that:

• with Linux (and disregarding the few large corporate binary blobs for wi-fi and GPU), mostly corporate-sponsored FOSS devs write PRs for the kernel, and then the kernel maintainers “take receipt” of that code by merging it, taking all further responsibility for that merged code, making it essentially equivalent to code they wrote themselves (and at that point, the code is now owned by the kernel project, such that new development should not occur out-of-tree against the original development, but as in-tree patches against the merged code);

• with Windows, corporate third-parties (but often fly-by-night Shenzhen ones, if that’s the hardware you buy) maintain most drivers, and Microsoft just certifies them, like apps in an app-store (which ensures mostly that they don’t crash Windows, and isn’t a security audit);

• with macOS, Apple writes most drivers. Of the drivers third-parties do write, Apple takes ultimate control and responsibility for QAing that code and customizing it for macOS—Apple does their own builds, hardware-matrix testing, packaging/deployment, etc., essentially making each particular point-release of a driver into a part of the base OS. However, they don’t take ownership of this code; the driver will rot unless the third-party sends them a new version to start integration on all over again.

• with Hackintosh’ed macOS, random FOSS hobbyist developers write the (extra required-for-your-build) drivers, and nobody is guaranteed to be maintaining or QAing them.

A security-vulnerability surface isn’t just about surface area, but also about how much control and visibility—essentially, trust—the OS maintainer has into that surface area.

Windows forces updates as often as it does, because Microsoft doesn’t have good visibility into which third-party drivers will be affected by which updates (which they could use to bunch together all driver updates addressing a particular CVE); nor do they have control of those third-party drivers enough to structure them such that their updates can be woven into a seamless, non-restarting update process. Security-critical updates just... show up, on their doorstep, coded in arbitrary silly ways (to deal with the arbitrary silliness of the original background services and/or tray utilities that talk to the driver) and they have to deal with that.

Linux—at least where the base OS is concerned—doesn’t have any such “opaque-to-the-maintainers” surface area, so Linux can get away with fewer “restart required” conditions. They have both visibility and control.

macOS—because Apple demands ultimate control of all macOS drivers (to the chagrin of companies like Nvidia)—can demand that drivers take a particular form (i.e. microkernel daemon servers with activation ports) where Apple are easily able to just in-place upgrade many drivers as part of a package installation, without restarting the OS. The fact that they’re already in relationships with these driver developers also gives them visibility into the progress of addressing CVEs.

(macOS does want to restart for point-release updates pretty often, but that’s down more to Apple’s BSDish philosophy of “the base OS is a whole that should be replaced with a new whole, rather than getting into a state where both old and new components are running.”)

Post reply on HN