From: "sirjofri via 9fans" <9fans@9fans.net>
To: 9fans <9fans@9fans.net>
Subject: Re: [9fans] The Big Questioning: Plan 9 everywhere?
Date: Sat, 7 Jun 2025 12:07:45 +0200 (GMT+02:00) [thread overview]
Message-ID: <5e0ad62d-66ee-4f31-911e-fb7cca39c8b1@sirjofri.de> (raw)
In-Reply-To: <0647a4e1-4354-4447-ab79-9b5e3084d57b@app.fastmail.com>
Hi,
Vic, your mail raised many arguments which I didn't agree with. Discussion inline.
As the original mail was already quite long, this response is even longer. If you still want to read it, prepare yourself with a cup of tea or something.
06.06.2025 00:44:39 vester.thacker@fastmail.fm:
> Much of the discussion gives the impression that many
> here are seeking something quite different from what
> Plan 9 was originally designed to provide.
>
> What is being described sounds less like an extension
> and more like the foundation of a new operating system.
I think the first question here would be, what even is an operating system? Is it just the basis of hardware abstraction, a philosophical idea, a strict implementation? Does it involve user interfaces of any kind or is it or technical? I don't think we all agree with every detail about this question, but in this context, it is important to think about that.
> Perhaps that is indeed the intended direction.
> It gives one pause and invites reflection.
Pause and reflection is important. I like that our community is small enough and comes without any strings attached: There's no huge pile of software that the world depends on.
> On Departing from the Plan 9 Model
>
> Let us examine the structural assumptions embedded in Plan 9
> and considers the implications of applying it to desktop-focused
> or single-user environments. While Plan 9 offers compositional
> elegance and architectural clarity, its model is not aligned
> with the requirements of modern graphical desktop systems.
User interface design and human computer interaction are about learning from the human, and applying human capabilities to that interface is the important step. It starts from physical limitations (humans have two eyes and two hands) and goes into depths of how the human thinks.
But even then, most interaction with the computer is just learned behavior. Even using the mouse to move a pointer on the screen is something you need to learn.
I believe that our current "modern" UI designs are modernizations of the same principles we used for many years. That is, windows, icons, buttons, text, and so on. It doesn't have to be like that, but that's what people are used to. If we make a new UI design, we can only choose between (1) following that same principles, and (2) expecting people to learn our new principles, or any mix between those two.
About your statement: what are the requirements of modern graphical desktop environments? And whatever you name: is it really a requirement?
I believe anything there it's a solution to a problem. Many of those problems aren't even problems at all, but evolved from an idea of some developer/designer who thought it would be nice. Other problems aren't problems on a plan 9 system. Both those categories don't need a solution.
The third category are the valid problems we should focus about. But instead of copying the solutions of other systems, we have the option to think about them thoroughly and try to find an elegant solution that fits existing plan 9 principles and the existing architecture. I bet that in most cases we can find solutions that are as simple and elegant as the other plan 9 components.
"But then, the user has to learn them" you might argue. Sure, but is it a bad thing? Plan 9 is a lot about transparency, so a user is expected to learn many things anyway. I'd prefer to give the user a matching and consistent UI solution to learn, than a copy of everything that already exists, but is a foreign thing that doesn't belong here.
And people are able to learn. My mother knows next to nothing about computer, she only uses the programs she needs to fulfill her tasks, both at work and at home. She still had to learn some basic on a c64 back when she became a typewriter teacher. Is argue that anyone who touches a computer has to learn a bit about how to use it. There's no such thing as intuitive design, because every intuition is applied learned behavior. You don't go to a foreign country and just start speaking their language, you have to learn it.
> This is not a critique of intent or capability, but a reflection
> on architectural fit. Understanding the boundaries of Plan 9's
> design helps clarify where adaptation is feasible and where
> reconstruction becomes necessary.
Sure, let's go into it.
> Plan 9 is not a desktop-centric system
Before going into this topic let me clarify one thing first. I believe that every system that is desktop centric is a failure from the beginning. User interfaces are about the user, not machines. That's why we're talking about UI, not API.
A system that focuses about the desktop/UI instead of the user cannot build good solutions for the user.
> Plan 9 was not created for single-machine desktop use.
> Its architecture focuses on distributed coordination.
> Its goal is to unify machines into one namespace.
Sure, that's the underlying components. Plan 9 being about transparency, the user will always be able to see that in their namespace.
But nobody talked about a single-machine use. And yet, there are limitations a user just naturally has. I don't know about you, but I have two hands with 5 fingers each. I am able to coordinate my finger to an extent that I can type with 10 fingers, essentially, but I'll never be able to use two keyboards simultaneously. I might be able to use two mice at the same time, but three mice?
Humans are limited, and while we find elegant solutions to extend our capabilities (also with the help of computers), we will always hit walls at some point.
But even then, who said that we can't build a desktop environment that goes about multiple machines, even a full network of machines? I'd argue that we already have that to some extent. Different namespaces and their view are basically a small form of that. I can have multiple rio windows with their own view on the resources of my network. I can build software that uses these resources, and yes, that also involves so-called "desktop environments", whatever that means. They just don't have to follow current expectations.
> User sessions span file, compute, and authentication servers.
> The 9P protocol manages communication among those parts.
> All user interaction flows through remote interfaces.
I sometimes wish plan 9 would be more like that, but that's a different topic.
> Each user session connects to remote services explicitly.
> These include file service, CPU execution, and authentication.
> This reflects a distributed and multi-terminal model.
>
> Plan 9 does not prioritise graphical interface use.
> There is no window compositor or event manager.
> There are no UI toolkits or persistent notifications.
These are all solutions to problems we don't necessarily have. Why would we need a window compositor? For doing fancy graphics with transparency and effects? Is that important for a desktop environment?
UI toolkits is a point that I can almost agree with. Libcontrol was never finished, and draw is just drawing. There are a few others, but there's no single solution that works for everything. Though here's the question: do we need that? Plan 9 can easily work with multiple different toolkit solutions, as it does today. It just needs solid ones that are easy to use and to work with. Funnily enough, we are working on this[1].
> The Rio window system presents windows but not a desktop.
> It offers no system tray or global graphical shell.
> There is no UI state storage between sessions.
What is a desktop?
Coming from the name, it's a metaphor of the surface of a desk. The common meaning of a desktop also evolved over time. Win3x had a desktop with all the hidden windows only, but no system tray. I also wouldn't count it's graphical shell (the program manager) as "global" in the sense of an omni-present start menu. All that evolved over time as a solution to that problem.
The components you mention are either not relevant in a plan 9 system as we don't have these problems, or just aren't invented yet. For those that don't exist yet, they could still be written in a way that fits the plan 9 philosophy and architecture. As a simple example, many months ago I wrote a notification system for plan 9, which uses the plumber[2].
Regarding rio, I don't think that rio is what makes the plan 9 UI the plan 9 UI, but the other way around: I believe rio is the way it is _because_ of plan 9.
This is important, because if we take away rio, it doesn't take away a core component of plan 9. We can replace it with a different window system that fits equally into plan 9. Rio is just a consequence of plan 9.
> Plan 9 simplicity is not user interface simplicity
>
> Plan 9 is simple in composition and design scope.
> Its core idea is orthogonality of interfaces.
> Every system object is addressed as a file.
>
> Namespaces are assembled per session by the user.
> Services and devices are bound by mounting actions.
> This yields flexibility and minimalism in usage.
>
> Modern desktops hide these actions behind UI layers.
> They abstract system state into persistent sessions.
> They expose GUI settings and graphical tools.
That's what they do, yes, but that's not what makes them modern. If we want to build a modern system for plan 9, that doesn't mean that we should copy that to _become_ modern.
> Systems such as GNOME or i3 use visual conventions.
> These include gestures, layouts, and notification events.
> These conventions do not exist in Plan 9 by default.
Some we do have. We have menus with sweeping actions, swallowing window contents for graphical applications.
Others are questionable if they make sense.
Most people here agree that the system shouldn't be in the way. The first thing I do on a Windows system is, enable the "do not disturb" mode, as I hate those notifications popping up. They are annoying and are in the way.
Why should plan 9 follow bad conventions or conventions that didn't make sense?
Just because the others do that? Maybe because that's what defined a "modern desktop environment". If that's the definition, is rather not have it.
I think we can do better.
> To expect such behaviors from Plan 9 creates mismatch.
> Its assumptions are not built around UI design goals.
Yeah, and that's good.
> Its definition of simplicity is structural, not visual.
The visual simplicity follows the structural simplicity. You have a complex structure? Then everything that visualizes is needs to be complex, too, as well as the implementation, specifically _because_ of that complexity.
You have a simple structure? Then it's much easier to implement a solution that's simple. A plan 9 desktop will this be much simpler than what we know from other OSes.
> Plan 9 assumes trust-separated, multi-user operation
>
> Each user runs in an isolated namespace context.
> Resources are mounted into the session explicitly.
> No global environment exists for all users.
If we see the computer as an extension of the user, there is a global environment: the user.
The user is always the global environment of their own "computing/thinking space". On most systems, the computer itself provides another part of that same global environment in the firm of a single view on the abstractions.
A plan 9 system is different, as each window provides a different local view and is this not part of that global environment.
However, you can argue that the rio background is part of that global environment. And that same environment is often used for the plumber, webfs, factotum, and so on.
> Fonts, window systems, and authentication are per-user.
> They are often delivered by different machines.
> This model supports separation, not convenience.
It still is convenient. In fact, it's so convenient that modern systems use that, too. Password managers are often storing the secrets in the cloud, personal files are often mirrored, user accounts exist on some server, and so on. Because it is convenient.
> A tablet or wrist device uses one user by nature.
> Plan 9 must be reconfigured to avoid multi-user defaults.
> Otherwise, graphical support will remain incomplete.
Why?
My pixel watch is coupled with my phone, so it would naturally get its user settings via that.
Android tablets support multiple users for many years already.
And even then: why restrict a feature when you can just decide not to use it?
Most OSes support multiple users, but most machines are only used by one person.
I don't see why this situation would lead to "incomplete graphical support".
> No touch input, accessibility, or decoration exists.
> These would need to be implemented as external layers.
Sure, these are missing components (besides decoration, which is optional). How they're implemented (external components it not) is a completely different topic. Localization is btw also mostly missing.
> To add those layers means departing from Plan 9’s model.
> The system is not designed to embed them natively.
None of the modern systems supported them massively. The unit systems weren't even designed to support any graphics massively. And windows, originally being an extension to DOS, didn't even have preemptive multitasking!
I'd argue that plan 9 has more native support for graphics in general than all those systems had back then.
I'd also argue that you wouldn't have to depart from the plan 9 model when implementing solutions for the mentioned problems. In fact, I believe you can find more elegant solutions on a plan 9 system.
> Desktop conversion leads to architectural misalignment
>
> The goals described include tabbed windows and input support.
> Also included are gestures, integration, and persistence.
> These needs align with GTK, Qt, or similar stacks.
Why? Because we want to transform plan 9 into a Linux?
If I wanted a Linux, I'd still use it.
People wanting tabbing support doesn't equal them wanting the exact same thing i3 provides.
> Such systems offer abstracted input models and event loops.
> They support theming, drag-drop, and high-DPI layouts.
> These are not present in Plan 9’s design constraints.
/dev/mouse, (/dev/theme), /dev/..., libevent, just to mention a few. And they just work, unlike any word abstractions they have on other systems, that only work under specific circumstances.
And the fact that those systems provide all those features doesn't mean that we want them or have to copy them. I never missed drag and drop, for example, but I miss plumbing and mouse chording on other systems.
> Plan 9 is not incompatible with graphics frameworks.
> However, these do not exist in its environment today.
> Adding them requires constructing new interface layers.
Or, following the plan 9 architecture, new /dev devices or other filesystems.
Like anything on plan 9 does.
> These layers must track state and handle input contexts.
> They must coordinate redraw events and window geometry.
> No such tools are included in the existing distribution.
Yeah, because nobody has done the work yet.
> Bringing these features into Plan 9 changes its scope.
> It introduces code unrelated to its original structure.
> The result will diverge from its operating assumptions.
No. Plan 9 is designed for this.
Otherwise I could argue that every port would diverge from the original plan 9 assumptions, because they introduce new drivers. Even though the filesystem abstraction is the same and this compatible to that in other ports.
Sure, we need to introduce new filesystems with new abstractions that didn't exist yet. But plan 9 is designed for this. I could even say, that is exactly what plan 9 is for!
> Architecture defines outcome more than tools
>
> This is not a question of capability or desire.
> This is a question of alignment with core abstractions.
> An OS is shaped by its target model and constraints.
>
> Plan 9 targets distributed, coordinated systems.
> It does not assume a local screen and local control.
> It assumes named users with private namespaces.
That's why we don't have devdraw, devmouse, devcons, ....
The mentioned components are explicitly designed for a "local screen" and "local control".
"Local" in the sense of astral projection, if you get that reference.
> A desktop OS assumes a single, local, GUI-heavy use case.
I don't agree. Any desktop OS provides capabilities to allow for multiple use cases. Most use cases nowadays are handled in a browser, which means the task is happening on a server (thus not local).
GUI-heaviness is not an argument. Most plan 9 users use rio (or some other window manager) and start graphical applications, btw.
Funnily enough, most Linux users that I know start a terminal emulator at some point.
Putting more functionality into GUIs is also not necessarily good.
> It provides persistence, session memory, and input focus.
> It assumes consistent visual interaction patterns.
All of this exists on a plan 9 system, just in a different way.
> These two models begin with different root structures.
They do in some core aspects, but UI-wise, they logically aren't so different.
> They diverge at the level of system services.
Sure, as that's the point of having a different OS.
> They do not share the same goals or interface paths.
I partly disagree. Of course, plan 9 as a research OS has a different focus, but that doesn't make it incompatible with a user-friendly desktop environment, whatever that is.
> To extend Plan 9 into a desktop OS is to rewrite it.
> Most layers would need to be added or redesigned.
> This is not a continuation but a redirection.
I don't agree here.
A desktop OS is about UI, and UI is about the user. Since the user needs to learn any interaction with a computer, we shouldn't copy things, but research how to integrate the user with the core system. The result of that research can be used to design a system that represents plan 9 and is simple enough for the user to learn.
A few examples in our community show that it is already possible to use plan 9 as a user, as a desktop, to some extent. Following the described path can extend the functionality of the existing UI and make it more usable for a larger user base.
That can involve rewriting a few components, but not in a sense of just copying what exists already. That said, it is fine to copy solutions if they also work for plan 9.
Note that I said "desktops are about UI", not "desktops are about GUI". I believe that a user doesn't necessarily want to do everything graphically. The user wants to use a good user interface.
An example: Everyone I introduced to git, I started with some git gui. And everyone just used the command line at some point. And I wouldn't even count the git CLI as "good".
> Other systems already provide GUI-first design.
> Some of them include Plan 9-inspired structure.
> Haiku and i3 on Linux are notable examples.
>
> These systems begin with graphical interaction in mind.
> They support single-user tasks and desktop workflows.
> They reuse or wrap standard interface abstractions.
Desktop doesn't mean GUI-first, in my opinion. And also, plan 9 was more graphical from the beginning, and they considered graphics at the core.
Standard interface abstractions might be standard, but they are still learned.
> Plan 9 does not.
> That distinction defines what can be built on each base.
So, let's all just throw away plan 9 as it was clearly never designed to be used by an end user?
I don't agree.
In fact, I believe that we have to go to the base of UI research and understand what it means. It's not about copying standards, it's about building new standards based on research. Standards that work for a user of a plan 9 system.
It's a challenge, but that's just what UI design, human interface design, and HCI is.
In that aspect, plan 9 should still be a research OS. And that's a good thing, because we don't have to follow the expectations.
sirjofri
[1]: people like sigrid, adventuresin9, and myself have worked or are actively working on different toolkit solutions.
[2]: https://shithub.us/sirjofri/notif/HEAD/info.html
------------------------------------------
9fans: 9fans
Permalink: https://9fans.topicbox.com/groups/9fans/Tf84d656c78bbda91-Mecad69b25850ee8f1d79295b
Delivery options: https://9fans.topicbox.com/groups/9fans/subscription
next prev parent reply other threads:[~2025-06-07 14:39 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAJCpOFxsQrW5v_jrEPX7tuy+uin2h32ADFchti7Vk1RL=OxxnQ@mail.gmail.com>
2025-06-05 15:35 ` Jacob Moody
[not found] ` <CAJCpOFy=_HNk+hnusKu=TWK2B=kTuhJtCXBw1kB8hJSURh10Qw@mail.gmail.com>
2025-06-05 18:39 ` Jacob Moody
[not found] ` <CAJCpOFwnfDeoCQ1mWQLy_Ntn+2boNxxFSqwf8thY5mDFKXER3g@mail.gmail.com>
[not found] ` <0647a4e1-4354-4447-ab79-9b5e3084d57b@app.fastmail.com>
2025-06-06 6:16 ` adventures in9
2025-06-06 7:20 ` Daniel Maslowski via 9fans
2025-06-07 10:07 ` sirjofri via 9fans [this message]
2025-06-09 6:26 ` Lucio De Re
2025-06-09 16:46 ` adventures in9
2025-06-09 18:09 ` Re[2]: " Alexandr Babic
2025-06-09 18:52 ` sirjofri via 9fans
2025-06-06 4:08 ` Adrian
[not found] <aEN-ycbBHSPdpQdx@nomad3>
[not found] ` <09BE3605-121E-465E-8638-C0457AB66098@dbsystems.com>
2025-06-22 5:37 ` ron minnich
2025-06-22 16:49 ` G. David Butler
2025-06-22 22:29 ` ori
[not found] <9402b1e6-614a-402b-ba6a-885c0bbfc62d@sirjofri.de>
2025-06-30 14:31 ` ori
[not found] ` <aGKpBlIjRiPOIPHq@david.tekk.in>
2025-06-30 19:38 ` Paul Lalonde
2025-06-30 21:28 ` ori
2025-06-30 21:32 ` Paul Lalonde
2025-06-30 21:52 ` arnold
[not found] ` <CAJPCErkD8COCoNsQwkmMLPzSB4R-bO=MXQSxKN6fB914LC+sgg@mail.gmail.com>
2025-07-02 7:33 ` Shawn Rutledge
2025-06-30 21:40 ` arnold
2025-06-30 22:17 ` Jacob Moody
[not found] ` <CAJCpOFxT_pFzQd-WDiJjtw-7+1R8FdFBY-qpT7TJaEK8XUca5g@mail.gmail.com>
[not found] ` <ed379e97-3894-4f01-867b-5758463273ca@posixcafe.org>
2025-07-02 7:44 ` Shawn Rutledge
2025-07-02 12:46 ` Dan Cross
[not found] ` <39cbfc2b-316c-4caa-b2ae-607b998a19ac@posixcafe.org>
[not found] ` <CAG3JMtYPEXNPnt5kL115=OCA6mzA9+bNO_2RNGRzBRJW5sSUUw@mail.gmail.com>
[not found] ` <676a5355158238ee@orthanc.ca>
2025-07-03 23:04 ` Thaddeus Woskowiak
2025-07-04 18:43 ` Ron Minnich
[not found] <147218fc-dd2d-442a-852e-b7dab2d0c80a@sirjofri.de>
2025-06-30 22:21 ` Stanley Lieber
[not found] ` <D98A1F2D-0572-491B-920F-68CF249B3DD4@stanleylieber.com>
2025-07-01 7:51 ` sirjofri via 9fans
[not found] <F179B44C-712E-41D9-B71B-104A2C574FE8@iitbombay.org>
2025-07-01 3:09 ` ori
2025-07-01 5:45 ` Bakul Shah via 9fans
[not found] <1AEB31AA-68C0-4F51-893F-AEDD18152F17@icloud.com>
2025-07-04 21:28 ` Clout Tolstoy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5e0ad62d-66ee-4f31-911e-fb7cca39c8b1@sirjofri.de \
--to=9fans@9fans.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).