Oh, sure, I build a slide show system specifically because of a bug in Opera 7.5, and despite that I go fairly far out of my way to make sure that Opera will still be able to display the slide show using its unique and groundbreaking feature, OperaShow, and now I’m the bad guy.
When I tossed S5 out to the public, I figured maybe twelve other people in the world would be interested. It was one of those, “Hey, this is something I hacked together, look how geeky I am!”
And the crowd, against all expectations, went wild.
So the list of things I thought would be interesting to add some day suddenly took on extra weight. There were people out there who actually wanted to use S5, and wanted things like font scaling and incremental display of slide content. Furthermore, there were people contributing code to improve the system. Out of nowhere, a little open source project erupted in the comments of my posts.
In order to keep things from bogging down, I defined a feature list for S5 1.0 and shipped it out. All along, I made sure that the slide show would fall back to OperaShow in Opera. To do so, I had to write a routine (called
notOperaFix() because it had to fix things for browsers that aren’t Opera) that swapped around the media values for various linked style sheets, among other things. I also had to define the S5 format so it was compatible with the OperaShow Format specification. That meant changing some things from my original file format, and in my opinion not always for the better.
Despite a few people telling me to just drop OperaShow and OSF support because it wasn’t worth the effort, I kept those mechanisms in place as we moved to version 1.1. I figured that since Opera had a slide show system, I’d let people use it. Besides, any time I created a test copy of S5 that didn’t let Opera drop back to OperaShow, it completely failed to display the slide show.
Now S5 1.1 is out, and it has more features that people asked for—font scaling based on window size changes, incremental display, more keyboard commands, and so on. Throughout it all, I made sure OperaShow would still work. And it does. It doesn’t get the keyboard commands, or the font scaling, or the incremental display. I did try. I couldn’t figure it out.
Now, there are those who apparently think that this means I’m a liar when I say S5 is cross-browser. I admit it—S5 doesn’t work in Mosaic 1.0. It also quite likely fails in IE5.0/Win. Actually, I think it fails in IE5/Mac, which is ironic since my starting point for S5 was a rudimentary slide show system written by Tantek Çelik. But it does not fail in Opera, because it’s quite intentionally designed to be OperaShow compatible. It isn’t feature-identical, but then, the features in (and version number of) Opera for the Mac usually lag behind Opera for Windows.
After all, it’s not like I sprang this on the world. The last eight beta and release candidate versions of S5 were published here. Comments and contributions were solicited and welcomed, and many were received. The state of Opera support has not changed one iota in all that time. There were several months in which anyone could have stepped up to the plate and contributed fixes for Opera. Did anyone? No.
I’d do it myself, except I’m not sure I can. For example, I just a few hours ago made a copy of the S5 package, unpacked it, and edited the JS file so it did no Opera detection: the scripts all ran on Opera the same as they do for any other browser. I loaded it into both Opera 7.5 and 8.02 for OS X, which is what I have right now. You know what happened? Nothing. The slide show didn’t happen. The outline view came up, changed slightly, and then sat there. And do you know why? Because Opera defaults to identifying itself as Internet Explorer.
So here’s the deal. Want S5 to be feature-equivalent in Opera? Fine. Take the S5 1.1 package and fix it for Opera—preferably version 6 or later, but I’ll take what I can get. Liberally comment your code so I know what you did, and why, or else post fixes here. I promise that, if this is done in such a way as to not degrade behavior in any other browser—because, remember, they don’t have anything like OperaShow on which they can fall back—and so that the code is maintainable, I’ll roll the changes into my version of S5, and release it as 1.1.1 or 1.1o or something. (The same is true for any other browser, in fact.)
I’ll help out where I can, if anyone has questions about this bit of JS or that bit of CSS in the S5 directory. Post them here and I’ll do my best to answer. If I get hit with a bolt of genius and can suddenly fix the problems myself, I’ll do so, but odds are that won’t happen. It will therefore be up to the community to help out. This isn’t just me, as the credits page makes clear; S5 has long been a community effort.
Put another, more succinct way: don’t complain, contribute. It’s more satisfying in the long run, and it’s more constructive.