19 August 2009

Plugin analogies

Plugins suckAs it seems a lot of people totally adore plugins, I thought I'd come up with some ideas if their precious plugins would be used in the same way in the outside world. Then let's reconsider if they're still so cool or if plugins truly suck.

Analogy 1
I am Dutch. I barely speak German. If I'd meet someone from Germany, chances are they don't speak Dutch. Now how would I tell them something I think they should know (like, "go back, there's a dangerous fire over there")? Well, if we think of languages as plugins, I have Dutch installed and they have German installed. The two are only mildly compatible.
Well apparently a software developer would simply use his Dutch plugin and requires from the German to also install it (learn the language). Maybe some people fall for that, but I think it's not going to get you very far.
Isn't the most sensible thing to do to check if we both maybe happen to have the same language plugin? We could check for English, for example. It is a widely used plugin and is an excellent alternative. If that fails, I can try to see what's left of the old German v.1.0 plugin I used to have installed. And if that also fails, let's try the good old Primordial Scream Darwin Extension software which is installed at the very core of every person's brain.
So you see, I, as messenger, attempt to deliver my content to the user in any possible way he understands. The plugins themselves may not suck, it is the way developers force them down your throat that sucks.

"Yes but," the developer says, "Dutch is teh coolest language ever! You can say things with it you can't say in any other language!" That's all cool, but if the German doesn't want to learn it, you can't force them, you'll have to think of a method to say something equivalent in a way they do understand!

Analogy 2a
You buy a car. But it has no windscreen wipers. No, the manufacturer tells you you now have the option to choose whichever wipers you want yourself. So you drive off to any windscreen wiper manufacturer to get the wipers. They do not install them for you, you have to do it yourself. Oh sure, they gave instructions, but they're either incomprehensible (insert Nut A in Blowhole B and tighten it with Screw U) or they are instructions for an older type of car. You attempt to install the wipers as best you can, but they will never really function well.
Well aren't things that are necessary for basic operation already supposed to be bolted on your car! Sure, if there are mechanics that want to take off the basic wipers and install UberWiper 2.0 instead, they are free to do so, but manufacterers should understand that not everybody is a car mechanic. So it would be a stupid idea to just give everybody a car building kit and expect them to properly build the thing themselves.

"But," says the developer, "you can choose your own windscreen wiper! What if you like Wiper X better than Wiper Z, wouldn't you want to have the option?" Maybe so, but just pre-install Wiper Z to at least have something. If I want to use Wiper X instead, I will ask a mechanic to install it for me.

Analogy 2b
Luckily the manufacterers aren't stupid and give you a fully functioning car, with windscreen wipers pre-installed.
Now somebody invents some new type of windscreen, that tones down too bright outside objects (like the sun), so you won't get blinded while driving. This awesome FireBlocks technology is great, but my neighbour doesn't need it as he never drives while the sun is low enough to blind him. Or he just uses the sun blocker thingy you can manually pull down.
The downside of these FireBlocks screens though is that they also tone down traffic lights. This prompts the government to update all traffic lights so they can only be seen through FireBlocks windscreens. Now my neighbour (and 80% of all drivers) are in trouble, because they don't have those windscreens and thus cannot see traffic lights anymore.
I ask you (rhetorically), is that normal? Of course not! A developer should make sure everybody sees the traffic lights! If one method of lighting doesn't work too well everywhere, try to improve it, but you cannot block content just because people don't have or want FireBlocks windscreens! You, as a developer need to give the user an alternative.

"But it blocks the sun," says the developer, "you gotta love a sunblocker. And that's not all, the FireBlocks windscreens are superior in many more ways." Fine, but you have to accept there are people out there who don't want or can't install this new windscreen and you cannot deny them service over that fact alone.

So you see the stupidity? I'm sure you can think for yourself how this applies for software. A lot of developers create content and completely ignore people who don't have a certain plugin installed. Or they get the message "get plugin X here!!1!1". But it is not the user's task to get all the necessary tools to hear your message. You should make sure users can comprehend what you're saying. You cannot ask somebody to learn another language because you don't want to talk to them in a language they can understand; you cannot ask somebody to install another plugin because you don't want to code for a plugin or software the user already has installed.
This simple principle means that plugins, unless natively available or much easier installed and uninstalled than they are now, are completely useless.

18 August 2009

Plugins, and why they suck

Second LifeIn response to the blogpost Introducing the LLMedia API I commented that plugins suck. And they do. Suck donkeys. Big time. Let me tell you why:

For example I use plugins in webbrowsers, because I think that is what's most commonly known.
1. They kill your content.
So you spent hours of creating the perfect Flash banner + menu + navigation bar. It looks great, has some minor sounds that people can turn off by simply screaming "Shut Up!" at their screen and it works. And because you are uber-1337, you coded it entirely in the experimental Flash version 11.
But then, my mother wants to visit your website and she has no knowledge of computers. And she does not have the latest Flash installed and she has no idea what it is and how to work with it. The only thing she sees on your webpage, which you spent hours on, is a large, white block of nothingness. My mother is not impressed. (Alternatively, if you really are a proper coder, you presented her an alternative no-flash version of your site, but as it is not as cool, my mother still is not impressed)

2. They cause malfunctions.
My mother asks me why your page is so terrible. I quickly spot the problem and to solve it, I install the even more experimental Flash 12 plugin for her. However, now her favorite website mothersarecool.com doesn't work anymore! How come? They have hired somebody's father who thinks he knows something about websites to make the site for them and he used the old version Flash 8 and lets the page check if you have Flash 8 installed. Since Flash 12 != Flash 8, the script returns false and the page does not load. Well congratulations on making my mother sad!
In addition, because the ultra-experimental Flash 12 is designed with 128bit in mind, and my mother has a 32bit system, something that in 1337 circles is considered stone age. Therefor, when my mother wants to see videos of the grandchildren on YouTube, she can now only see the first 5 seconds of the videos.

3. They cause headaches.
The father who made the mothersarecool.com website reads on Wikipedia there already is a Flash version 10, so he decides to update his work. However, he notices the new page doesn't load anymore on his neighbour's computer (who obviously still has 8 installed), so the poor man has to think of ways of making sure his website works for everybody. So he has to check on people's installed Flash versions and writes regexes on dynamic pages to serve the right version content to the right computer. And some don't even have Flash, they use Silverlight instead! Oh, the humanity.
Oh of course, other people simply display the message 'update to Flash 10, you dumbass' instead of actual content, but since forcing 250 visitors who have no clue how their computer works to install a new version is highly anti-social, the father rather codes his pages so to not bother the mothers.
The father is sad, because he has to spend too much time on this, during which he cannot be with his family.

4. They more easily allow malicious content.
My mother now is happy again, because the father did such great work (and the grandchildren's videos now come on dvd). But then! An e-mail from an unknown Nigerian secret admirer millionaire who has left her 15 messages lures her onto some weird Russian site. And from then on, weird enough, her computer starts to slow down, her ISP blocks her outgoing e-mail because she sent millions of mails in several minutes, her bank stops all transactions since her account is drained and the machine won't shut down properly anymore. You guessed it, the admirer, who actually turned out to be from India, had found a security hole in the experimental Flash 11 you coded your awesome site in. And now he took control of my mother's computer! Needless to say, she is very sad.

5. Local Shared Objects kill your privacy.
Well, it took a team of 8 experts to fix my mother's computer again. But now she wonders why some webpages seem to know it's her! Whenever she comments on YouTube, it always says that "your_mom47" actually wrote that comment. And when she misclicks on another webpage, they always know it was her who bought another freezer. So I tell her, "yeah, those are cookies" and I disable them for her. But still, she finds webpages know her! Especially sites like chinesemothers.nowearenotthechinesegovernment.gov.cn greet her with Flashy banners saying "welcome back, mom, muhahaha!", which she finds scary. Is it clear yet what's happening here? If not, let Wired help you out there.

So from this experience we've built over the years using plugins in webpages, shouldn't we already agree that plugins suck? Then why does LL think it's a good idea to implement this demented system?

Would you want to spend hours on creating the perfect video installation on your land, only to find nobody uses it, simply because they don't have the plugin you require them to have? They might not want that plugin (like Silverlight, who wants that crap?), or they don't know how to install it, or they can't, because maybe they have an unsupported OS.

If it's a problem that Flash for example doesn't work in the viewer's built-in browser, then the solution is to either keep it that way or to fix it in the viewer. It is never a solution to just let the users figure it out on their own. As I've said, it's anti-social.

But, you say, plugins offer so much good too! Someone can make a plugin that allows you to use the extra colour squant and someone can make a plugin that plays RealMedia content (oh please no, I'll be forced to quit SL if someone ever thinks that would be a good idea) and someone can make a plugin that plays Flash 12 and and...
Yes, but if there's a need, a true need to play unsupported media, it is either up to the creator to convert that media to a supported format or it is up to LL to implement the stupid plugin (obviously without any LSOs plzkthx) directly into the viewer, without me knowing it. It is anti-social to bother me with the request to please install plugin "stupidplugin" just because they want me to show their work. It's like sending me a letter with the request to please first learn French because they sent me the letter in French only. It is stupid.

So in conclusion, I say: plugins; suck; donkeys; big time.