More than 10 years ago I was coding Java applets. They were great at the time because I could reasonably expect them to run the same way in Netscape and Internet Explorer. I could also reliably do asynchronous networking back to the server. But then, Microsoft pulled their native Java runtime from Windows and Internet Explorer. It got a lot harder to get applets running in people’s browsers. So I started writing ActiveX controls for IE and Java applets for Netscape. Then I switched to Flash, not for too long, but it was enough for me to see that it was a capable and curious implementation of animation, multimedia and script. I even wrote a few Silverlight controls, but then I stopped. I stepped back from all of the “richness” and “interactivity” and I thought about things like accessibility and SEO. I wondered how my apps and sites might appear to the greater world. I wondered how the developers I am working with, or who might be inheriting my code down the road, might interact with it. And I thought to myself, What the hell was I thinking? Those embedded controls are not what the web is about, and they run contrary to nearly all of the things that makes the web exciting and fosters innovation within and around. Those plugins or controls, or whatever you want to refer to them as, are only stop-gaps that fill a hole in the basic HTML/Script/CSS specifications, and that’s all they should ever be used for. Full stop. Period. For instance, I still make use of a nifty little flash control called SWFUpload because it lets me check file size before an upload starts. I can do the same thing from a Silverlight control. But rest assured, if I could do this from native javascript, I would in a second. In fact, the only reason I chose SWFUpload over a ton of other alternatives is that it has a great javascript API so I can do (nearly) all of the UI in regular HTML. And I ALWAYS provide a non-flash alternative for uploading, and for the rest of any website where the designer has insisted on some piece of creativity that requires flash (usually because the designer is also the flash developer, but that’s an aside…). The web is about openness, and about exposing that openness in such a way that it can be taken advantage of as a small part of a greater whole. Sure we need security and authentication and ssl and all that stuff, but for me, its something more profound. For me, the majority of what the web is, is about exposing something that delivers meaning. What meaning can we derive from an <object> tag? more later - joel