3 ms·
I made an analogy in another comment that I think is a really great expression of this problem: Programs are like houses. They are made of walls. Traditional
by thomastjeffery 6y ago
I made an analogy in another comment that I think is a really great expression of this problem:
Programs are like houses. They are made of walls.
Traditional UI gives users doorways and windows, but users are not allowed to pass through walls.
Even the most liberal programs that allow users to redecorate or even move walls do not give the user ultimate and immediate freedom.
Say a user wants to make a new room. They can move some walls around and shove the room in the space left over, but where do the doors in that room lead?
In order to make deep refactoring UI changes, the user must undo the careful design that developers gave them.
The ultimate freedom would be for the user to rebuild from scratch, but that's too much work, right?
What if the house was entirely configuration? What if every wall was optional? What if our program was fundamentally just an empty floor with an optional example house built on it?
That's what we almost get with shell commands. That's what we almost get with web browsers. That's what we almost get with Emacs. That's what we almost get with tiling window managers.
I've never seen an ultimate instance of this. I have, however, seen a trend away from it, and that trend is frustrating.
This topic is something that is vitally important to software design, and yet we don't even talk about it. We just keep rolling with the status quo until someone breaks down a wall and becomes a hero.