Comment by badsectoracula
1 day ago
Well, yeah, it doesn't fit all applications and web browsers are a case where MDI doesn't really work. The linked site is more of a gimmick, at least as far as the documents go.
But my response was about calling MDI an anti-pattern in general. Just because it doesn't fit all cases, it doesn't mean it is an anti-pattern.
Oh no I get that the in-site MDI is a funny stylistic choice, and I've no problem with it. But the thing it's poking fun at is in-browser MDI, hence the comment.
I stand by the anti-pattern comment. I think there are very, very few cases where ‘MDI’ is appropriate, and I put it in quotes because the things being managed in that case are almost never ‘documents’ in any meaningful sense (rather they're some kind of graph node). Functionality apps build with MDI is basically always independent of the actual app and would be better implemented in the window manager — and more often than not there's actually no additional functionality over even the lowest common denominator of window managers.
Well, i already mentioned an example: image editors. IMO image editing is one of the perfect cases for MDI because not only you can have multiple images visible at the same time, but also multiple views of the same image (useful for pixel art, for example). Most MDI applications allow you to dock and/or float stuff in the edges/over the windows which is useful to avoid repeating the same chrome at every window (which is what a lot of applications that support multiple documents with toplevel windows do).
In theory you can have multiple toplevel windows with separate windows for the control stuff (tool window, tool options, panels, etc like GIMP has) but in that case you really need a virtual desktop dedicated to the application itself. Personally i prefer to dedicate virtual desktops to tasks (i have a fixed number of virtual desktops and their shortcut keys have become muscle memory over the years), so e.g. anything graphical goes into the same virtual desktop, but -say- GIMP in multiwindow mode feels awkward to use alongside Blender. Krita having an MDI mode is much better IMO, even if Qt's MDI support is primitive at best.
There's nothing stopping a window manager from supporting docking windows to each other, or the more common option in tiling window managers of having nested tiling groups so you can arrange your editor windows however you like and manipulate them together. Metisse [1] takes it even further, letting you slice a ‘palette’ out of one window and put it in another. In practice I, like you and I suspect a lot of other people, use workspaces in lieu of task groups, which works fine for simple use cases and small monitors.
The only applications that really need MDI are those that do something with their windows other than window management, which (loosely) implies that those things are something other than windows.
[1]: https://en.m.wikipedia.org/wiki/Metisse
1 reply →