The first thing window compositors that care about performace do, is use shared memory, then there are a couple of other tricks that don't fit into everything is a file with a stream of bytes.
Try to imagine how a Vulkan driver could be done on top of a plain file system interface.
Not one that kind of works, one that can match the performance of existing implementations.
> The first thing window compositors that care about performace do, is use shared memory, then there are a couple of other tricks that don't fit into everything is a file with a stream of bytes.
Then don't use "everything is a file" to do it. I already said that. Use shared memory, I don't care. I'm not talking about implementing anything on Plan9, I'm talking about implementing something new on Linux, instead of implementing Wayland.
> one that can match the performance of existing implementations
pretty easy if we're not talking about Linux anymore. FreeBSD can run Linux programs faster than Linux can, and given Plan9's size, if we wanted to do it there, we could perform even better than that.
I was talking about taking what Plan9 and Rio had done, with virtual devices for every window and using that kind of a system in Linux as a starting point.
Wayland is certainly smaller than Plan9 but it is not smaller than Rio, and Rio is already designed and working. It might have been a great starting place and a real opportunity to rethink how Linux UIs work on a fundamental level. Putting syscalls in place of some of the files would not have been challenging. Changing how the mouse works would not have been challenging.
And if none of it worked, maybe we’d have a better idea about how to do the next thing. Software needs to change more. As software people, we get to define our own reality, and make reality benefit us rather than get in our way.
The people who wrote Plan9 knew that. Our industry has forgotten that. We keep working on old systems in old ways because that’s what we know. Because it’s easier than thinking about a new paradigm where the old rules don’t apply. I don’t care if it’s harder to do things in a smarter way. I care that things get better, and the only way to make things better is to do things in new ways. But we won’t do it and I don’t understand why we won’t.
Our industry certainly did not forgot that, people putting UNIX on a pedestal did.
It is no accident that many of the most successful graphical technologies that originated in UNIX world, came from UNIX vendors that went beyond being yet another UNIX clone, like NeXT and SGI.
Try to imagine how a Vulkan driver could be done on top of a plain file system interface.
Not one that kind of works, one that can match the performance of existing implementations.