GNOME's architecture is rubbish: MDI, singleton-itis, cross-document intra-application interference

I just opened a picture using eog.  Then I opened a different picture using another eog, or so I thought.  It was impossible to interact with the second eog, including moving the window.  This turned out to be because the first eog had a blocking modal dialog open about printing.  Can you see how wrong this is?

This is cross-document intra-application interference, and it is bad.  Very bad.  

Similar problem in Apple's OS X when you switch to a window, and all windows "owned" by that application come to the foreground.  Only one of the dozen documents you have open with that application is relevant to the task you're doing, and the foregrounding of the other 11 block out the other information, in other applications, relevant to your task.  You thought you were using a windowing system so you could see the information relevant to your task together, but Apple have arranged that it doesn't work like that.

True to GNOME's raison-d'être as a very poor rip-off of Apple, GNOME, along with libreoffice, and other crapplications of the ilk, makes the same mistake.

Cross-document intra-application interference seems to be one bad effect of the slightly more general anti-pattern of crapplication singleton-itis.  A singleton is something like when the consumer of an interface gets a single instance of something scoped more widely than what they really asked for.  In OO, it might be when a class manages one instance of itself per program or process, something like that, that most of the time sloppily gets called "global", and the constructor returns that instance.  If that sounds like a terrible design approach, that's because it is, always.  Within a user session on a computer (or sometimes just a user on a computer, never mind session), a singleton is similar.  Instead of doing what the user asked for, it fancy-pantses around behind your back, being "clever" and "smart", and does something wrong.  firefox foo.html & firefox bar.html does not give you two good firefoxes.  It gives you one bad firefox.  And later, a problem with one will be a problem with the other.

And why the FUCK does GNOME, like chromium, think it can draw its own window decorations, and not fit in with the user's window manager?  Then suffering from all the problems of old Windows systems, of being unable to use the window frame to kill a misbehaving application.  Apart from just things being handled at the wrong level, it's just so obviously wrong.  Why do debian allow crapplications like this in, without making them behave well within the overall system? (I genuinely don't know if this is a resourcing issue in debian, or if they don't care about such crapplications).

Back to cross-document intra-application interference.  You know when you open a file with an application, and instead of opening the file you asked to open, it takes you on a "rescue" journey about a COMPLETELY DIFFERENT FILE.  That's also cross-document intra-application interference.  You were trying to do one thing, and because the basic MDI abstraction is wrong, and application-centric, it decides that when you open NOT THAT FILE, that would be the ideal time to take you on a long, confusing, scary, and ultimately futile journey about "rescuing" a COMPLETELY DIFFERENT FILE.  I'm pleased to say, this idea has really caught on.  Again, you can see it in every C++ hairball crapplication, from libreoffice to gimp.


Comments

Popular posts from this blog

the persistent idiocy of "privileged ports" on Unix

google is giving more and more 500 errors

7 minute workout: a straightforward audio recording (and two broken google web sites)