{"id":453,"date":"2008-04-25T20:43:32","date_gmt":"2008-04-26T01:43:32","guid":{"rendered":"http:\/\/blog.codedread.com\/archives\/2008\/04\/25\/apples-web-inventions\/"},"modified":"2008-04-25T20:43:32","modified_gmt":"2008-04-26T01:43:32","slug":"apples-web-inventions","status":"publish","type":"post","link":"https:\/\/www.codedread.com\/blog\/archives\/2008\/04\/25\/apples-web-inventions\/","title":{"rendered":"Apple&#8217;s Web Inventions"},"content":{"rendered":"<p><object type=\"image\/svg+xml\" width=\"100\" height=\"100\" align=\"right\" hspace=\"10\" data=\"http:\/\/codedread.com\/clipart\/apple.svgz\"><span\/><\/object>The last two years have been explosive for <a href=\"http:\/\/webkit.org\/\">WebKit<\/a> development - the project has really accelerated, moving at a much faster perceivable rate than the other notable open-source web platform, <a href=\"http:\/\/mozilla.org\/\">Mozilla<\/a>.  I've been noticing more and more innovations that affect web developers from <a href=\"http:\/\/webkit.org\/blog\/\" title=\"Surfin' Safari weblog\">the Safari blog<\/a>.  <!--more--><\/p>\n<ul>\n<li><ins>2008-04-29 - <a href=\"http:\/\/webkit.org\/blog\/182\/css-reflections\/\">CSS Reflections<\/a><\/ins><\/li>\n<li>2008-04-24 - <a href=\"http:\/\/webkit.org\/blog\/181\/css-masks\/\">CSS Masks<\/a><\/li>\n<li>2008-04-17 - <a href=\"http:\/\/webkit.org\/blog\/176\/css-canvas-drawing\/\">CSS Canvas Drawing<\/a><\/li>\n<li>2008-04-14 - <a href=\"http:\/\/webkit.org\/blog\/175\/introducing-css-gradients\/\">CSS Gradients<\/a><\/li>\n<li><ins>2008-04-08? - <a href=\"http:\/\/webkit.org\/specs\/CSSVisualEffects\/CSSTransitions.html\">CSS Transitions<\/a><\/ins><\/li>\n<li>2007-10-31 - <a href=\"http:\/\/webkit.org\/blog\/138\/css-animation\/\">CSS Animation<\/a> <ins>(<a href=\"http:\/\/webkit.org\/specs\/CSSVisualEffects\/CSSAnimation.html\">spec proposal<\/a>)<\/ins><\/li>\n<li>2007-10-26 - <a href=\"http:\/\/webkit.org\/blog\/130\/css-transforms\/\">CSS Transforms<\/a> <ins>(<a href=\"http:\/\/webkit.org\/specs\/CSSVisualEffects\/CSSTransforms.html\">spec proposal<\/a>)<\/ins><\/li>\n<li>2006-12-21 - <a href=\"http:\/\/webkit.org\/blog\/85\/introducing-text-stroke\/\">Text Fill and Stroke<\/a><\/li>\n<li>2004? - <a href=\"http:\/\/www.whatwg.org\/specs\/web-apps\/current-work\/#the-canvas\">HTML Canvas<\/a> - thankfully this was quickly reviewed and thrown into HTML5 so that Opera and Mozilla could get into the act<\/li>\n<li><a href=\"http:\/\/developer.apple.com\/documentation\/AppleApplications\/Reference\/SafariCSSRef\/Articles\/StandardCSSProperties.html\">Others<\/a> -webkit-border-horizontal-spacing, -webkit-border-vertical-spacing, -webkit-margin-bottom-collapse, -webkit-margin-collapse, -webkit-margin-start, -webkit-margin-top-collapse, -webkit-padding-start, background-position-x, background-position-y, -webkit-tap-highlight-color (iPhone only), -webkit-text-security, -webkit-text-size-adjust (iPhone only), -webkit-line-break, -webkit-nbsp-mode, -webkit-rtl-ordering, -webkit-user-drag, -webkit-user-modify, -webkit-user-select, -webkit-dashboard-region (Dashboard only)<\/li>\n<\/ul>\n<h3 id=\"is-this-a-problem\"><a href=\"#is-this-a-problem\">Is this a problem?<\/a><\/h3>\n<p><object type=\"image\/svg+xml\" width=\"100\" height=\"100\" align=\"right\" hspace=\"10\" data=\"http:\/\/codedread.com\/clipart\/svg.svgz\"><span\/><\/object>What's troubling me is not that many of these inventions could have been done using <a href=\"http:\/\/www.w3.org\/Graphics\/SVG\" title=\"Scalable Vector Graphics\">SVG<\/a> (which WebKit now supports quite nicely).  I understand that <abbr title=\"eXtensible Markup Language\">XML<\/abbr> is not for everyone and that a few <abbr title=\"Cascading Style Sheets\">CSS<\/abbr> properties are easier to pick up to do what you want.<\/p>\n<p>No, what troubles me is that <ins>a few of<\/ins> these innovations are not yet proposed as formal specifications so that they can be interoperably implemented in other browsers (Firefox, Opera).  <strong>[Update:  Correction - as <a href=\"http:\/\/blog.codedread.com\/archives\/2008\/04\/25\/apples-web-inventions\/#comment-12535\">Mark points out<\/a> below, several of these <em>have<\/em> indeed been proposed as formal specifications - Bravo!]<\/strong>  <del>The point of the WHATWG effort was both to evolve HTML and to specify it in sufficient detail so that future browser vendors would not have to reverse engineer de facto browser behavior.  Will the WHATWG eventually have to churn out CSS5?!? \ud83d\ude09<\/del><\/p>\n<h3 id=\"on-the-other-hand\"><a href=\"#on-the-other-hand\">On the other hand...<\/a><\/h3>\n<p><object type=\"image\/svg+xml\" width=\"100\" height=\"100\" align=\"right\" hspace=\"10\" data=\"http:\/\/codedread.com\/clipart\/tools.svgz\"><span\/><\/object>... Apple has a perfect right to introduce WebKit-specific CSS properties.  WebKit is more than just a single web browser.  WebKit is a <em>platform<\/em> and Apple obviously wants to put as many cool web development tools into the hands of its developers as possible.  They're already doing a good job at meeting existing open web standards - why not innovate on the side?  Also, using CSS ensures that things can degrade gracefully, so you can't quite fault Apple for 'anti-competitve behavior' like you could Microsoft and Netscape's efforts during <a href=\"http:\/\/en.wikipedia.org\/wiki\/Browser_war#The_first_browser_war\">the First Browser War<\/a>.<\/p>\n<h3 id=\"unfortunately\"><a href=\"#unfortunately\">Unfortunately...<\/a><\/h3>\n<p>Unfortunately these inventions might have the same secondary effect:  Forcing the other browser vendors to spend resources on <em>reverse-engineering<\/em> efforts in order to remain competitive.  This could realistically happen before Apple gets a chance to <a href=\"http:\/\/webkit.org\/blog\/181\/css-masks\/#comment-24401\" title=\"Dave Hyatt states that these innovations will be proposed to the W3C eventually\">propose these things<\/a> formally to the <abbr title=\"World Wide Web Consortium\">W3C<\/abbr>.  <strong>[Update: See <a href=\"http:\/\/blog.codedread.com\/archives\/2008\/04\/25\/apples-web-inventions\/#comment-12535\">Mark's comment<\/a> below]<\/strong>.  It is much more likely to happen if WebKit were to become the dominant force on the open web.<\/p>\n<p>WebKit is not yet the dominant web browser technology, but it's fast on the rise.  From all accounts, it is much easier to pick up and hack on than the Mozilla codebase.  Let's take a look at where it is being used:<\/p>\n<ul>\n<li>MacOS Dashboard<\/li>\n<li>Safari on MacOS<\/li>\n<li>Safari on iPhone<\/li>\n<li>Google's Android<\/li>\n<li>Adobe's Integrated Runtime (AIR)<\/li>\n<li>Qt 4.4+<\/li>\n<li>Nokia S60 Browser<\/li>\n<\/ul>\n<p>I'm sure readers can help me add to the above list too.  I believe there is a plan for WebKit to ultimately take over Konqueror's KHTML guts one day too, isn't there?  Ironic since WebKit evolved from KHTML in the first place.<\/p>\n<h3 id=\"so-when-will-it-be-a-problem\"><a href=\"#so-when-will-it-be-a-problem\">So when will it be a problem?<\/a><\/h3>\n<p>Are we seeing any signs of a trend towards a WebKit-dominated web yet?  There are already <a href=\"http:\/\/www.tuaw.com\/2007\/07\/18\/the-strange-case-of-made-for-iphone-websites\/\">iPhone-specific websites<\/a>.  How long before Opera Mobile and Mozilla Minimo want to get in on that action and are forced to reverse-engineer?  And I'm sorry, but <a href=\"http:\/\/ajaxian.com\/archives\/css-gradients-in-webkit#comment-262861\" title=\"Trevor suggests that all browser vendors have to do is look at the WebKit source to figure out how a feature was implemented\">looking at the source<\/a> is not an acceptable alternative to a well-defined specification.<\/p>\n<h3 id=\"conclusion\"><a href=\"#conclusion\">A tentative conclusion<\/a><\/h3>\n<p>After typing up this entry and proof-reading it, I tried to discern if I had any coherent conclusion and if I could figure out just what the heck I was saying:<\/p>\n<ul>\n<li>Apple is not in the wrong for introducing WebKit-specific CSS properties, I think they <a href=\"http:\/\/ln.hixie.ch\/?start=1089635050&count=1\">learned their lesson<\/a> from the HTML Canvas experience.<\/li>\n<li>You also cannot fault Apple for its adherence to web standards.  They are definitely doing their job here<\/li>\n<li>It seems like they <a href=\"http:\/\/webkit.org\/blog\/181\/css-masks\/#comment-24401\">plan to propose these things<\/a> as standards eventually, which is also a good thing.<\/li>\n<li>I guess the only thing I can say is that I hope these proposals happen sooner rather than later, for the other browsers' sake.  <strong>[Update: As mentioned below, Apple has <em>already<\/em> proposed many of these things to the W3C as specifications, thereby alleviating most of my concern]<\/strong>.  Apple should take a page from what happened to DOM Events:  The fact that Netscape and Microsoft had two different event models resulted in the W3C proposing yet a <a href=\"http:\/\/www.w3.org\/TR\/DOM-Level-2-Events\/events.html\">third incompatible Event Model<\/a>, which Microsoft <em>still<\/em> has not implemented <em>eight years later<\/em>.  Those type of things just hurt web developers in the end.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>The last two years have been explosive for WebKit development &#8211; the project has really accelerated, moving at a much faster perceivable rate than the other notable open-source web platform, Mozilla. I&#8217;ve been noticing more and more innovations that affect web developers from the Safari blog.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17,44,25,11,28],"tags":[182,64,74,156],"class_list":["post-453","post","type-post","status-publish","format-standard","hentry","category-apple","category-safari","category-software","category-technology","category-web","tag-apple","tag-browser","tag-css","tag-webkit"],"_links":{"self":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/posts\/453","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/comments?post=453"}],"version-history":[{"count":0,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/posts\/453\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/media?parent=453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/categories?post=453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/tags?post=453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}