<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://www.w3.org/Bugs/Public/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4"
          urlbase="https://www.w3.org/Bugs/Public/"
          
          maintainer="sysbot+bugzilla@w3.org"
>

    <bug>
          <bug_id>18436</bug_id>
          
          <creation_ts>2012-07-30 12:32:24 +0000</creation_ts>
          <short_desc>Re-add support for skew()</short_desc>
          <delta_ts>2012-08-30 00:43:07 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>CSS</product>
          <component>Transforms</component>
          <version>unspecified</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>16300</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Aryeh Gregor">ayg</reporter>
          <assigned_to name="Simon Fraser">smfr</assigned_to>
          <cc>ayg</cc>
    
    <cc>cmarrin</cc>
    
    <cc>dbaron</cc>
    
    <cc>dino</cc>
    
    <cc>dschulze</cc>
    
    <cc>eoconnor</cc>
    
    <cc>paul.irish</cc>
    
    <cc>smfr</cc>
    
    <cc>sylvaing</cc>
          
          <qa_contact>public-css-bugzilla</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>71655</commentid>
    <comment_count>0</comment_count>
    <who name="Aryeh Gregor">ayg</who>
    <bug_when>2012-07-30 12:32:24 +0000</bug_when>
    <thetext>Mozilla removed support for skew() from Firefox 14.  We&apos;ve received a number of complaints of broken sites:

https://bugzilla.mozilla.org/show_bug.cgi?id=734953#c20
https://bugzilla.mozilla.org/show_bug.cgi?id=747637
https://bugzilla.mozilla.org/show_bug.cgi?id=771180
https://bugzilla.mozilla.org/show_bug.cgi?id=775046
https://bugzilla.mozilla.org/show_bug.cgi?id=775710
https://bugzilla.mozilla.org/show_bug.cgi?id=775763

There are probably many more that weren&apos;t reported.  All reasonable uses of this function are completely redundant to skewX() and skewY(), but people are using it.  IIUC, some version of Adobe Edge even outputs it.

Mozilla is most likely re-adding support for skew() to Firefox 15, or 16 at the very latest.  We would like the spec updated to require skew() support again, matching all browsers, probably with a note that the feature is retained for compatibility and authors should use skewX/skewY instead.  Any objections?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71659</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser">smfr</who>
    <bug_when>2012-07-30 15:18:46 +0000</bug_when>
    <thetext>Did IE 10 keep skew(x, y) while also unprefixing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71660</commentid>
    <comment_count>2</comment_count>
      <attachid>1165</attachid>
    <who name="Dirk Schulze">dschulze</who>
    <bug_when>2012-07-30 15:27:55 +0000</bug_when>
    <thetext>Created attachment 1165
Test for skew support on not prefixed transforms

Test for skew support on not prefixed transforms. It is supported if the rect is skewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71661</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Schulze">dschulze</who>
    <bug_when>2012-07-30 15:30:24 +0000</bug_when>
    <thetext>(In reply to comment #1)
&gt; Did IE 10 keep skew(x, y) while also unprefixing?

Tested it on last IE 10 public preview and it is supported there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71717</commentid>
    <comment_count>4</comment_count>
    <who name="Sylvain Galineau">sylvaing</who>
    <bug_when>2012-07-31 23:05:39 +0000</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #1)
&gt; &gt; Did IE 10 keep skew(x, y) while also unprefixing?
&gt; 
&gt; Tested it on last IE 10 public preview and it is supported there.

Indeed; it was supported in IE9 and remains supported in unprefixed IE10. We have no plans to remove support at this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71718</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Schulze">dschulze</who>
    <bug_when>2012-07-31 23:13:11 +0000</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #1)
&gt; &gt; &gt; Did IE 10 keep skew(x, y) while also unprefixing?
&gt; &gt; 
&gt; &gt; Tested it on last IE 10 public preview and it is supported there.
&gt; 
&gt; Indeed; it was supported in IE9 and remains supported in unprefixed IE10. We
&gt; have no plans to remove support at this time.

If we add skew() again, we won&apos;t be able to remove it again. I don&apos;t have strong feeling on adding it again, but still don&apos;t think that this function makes sense. I don&apos;t think that edge still supports skew() in the latest version, but will check tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71720</commentid>
    <comment_count>6</comment_count>
    <who name="Sylvain Galineau">sylvaing</who>
    <bug_when>2012-07-31 23:19:19 +0000</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; (In reply to comment #1)
&gt; &gt; &gt; &gt; Did IE 10 keep skew(x, y) while also unprefixing?
&gt; &gt; &gt; 
&gt; &gt; &gt; Tested it on last IE 10 public preview and it is supported there.
&gt; &gt; 
&gt; &gt; Indeed; it was supported in IE9 and remains supported in unprefixed IE10. We
&gt; &gt; have no plans to remove support at this time.
&gt; 
&gt; If we add skew() again, we won&apos;t be able to remove it again. I don&apos;t have
&gt; strong feeling on adding it again, but still don&apos;t think that this function
&gt; makes sense. I don&apos;t think that edge still supports skew() in the latest
&gt; version, but will check tomorrow.

If existing content depends on it to a point where implementations suffer from not supporting it then we&apos;re not able to remove it *today*. If by &apos;it doesn&apos;t make sense&apos; you mean &apos;it&apos;s redundant&apos; then sure; I don&apos;t understand what real harm there is in that though. It&apos;s unfortunate but there are worse problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71722</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Schulze">dschulze</who>
    <bug_when>2012-07-31 23:27:33 +0000</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; &gt; (In reply to comment #1)
&gt; &gt; &gt; &gt; &gt; Did IE 10 keep skew(x, y) while also unprefixing?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Tested it on last IE 10 public preview and it is supported there.
&gt; &gt; &gt; 
&gt; &gt; &gt; Indeed; it was supported in IE9 and remains supported in unprefixed IE10. We
&gt; &gt; &gt; have no plans to remove support at this time.
&gt; &gt; 
&gt; &gt; If we add skew() again, we won&apos;t be able to remove it again. I don&apos;t have
&gt; &gt; strong feeling on adding it again, but still don&apos;t think that this function
&gt; &gt; makes sense. I don&apos;t think that edge still supports skew() in the latest
&gt; &gt; version, but will check tomorrow.
&gt; 
&gt; If existing content depends on it to a point where implementations suffer from
&gt; not supporting it then we&apos;re not able to remove it *today*. If by &apos;it doesn&apos;t
&gt; make sense&apos; you mean &apos;it&apos;s redundant&apos; then sure; I don&apos;t understand what real
&gt; harm there is in that though. It&apos;s unfortunate but there are worse problems.
It is not in the spec. It was removed several months ago, even before IE went to feature freeze I guess. And redundant is not quite correct. It is maybe used in a redundant way, but can do things that are hard to describe from a graphical point of view: skew(alpha, beta).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71723</commentid>
    <comment_count>8</comment_count>
    <who name="Sylvain Galineau">sylvaing</who>
    <bug_when>2012-07-31 23:31:36 +0000</bug_when>
    <thetext>&gt; It is not in the spec. It was removed several months ago, even before IE went
&gt; to feature freeze I guess. 
Acknowledged but it&apos;s not that relevant; the relevant fact is that content depends on it. Which means the call we made months ago is no longer valid.

&gt; And redundant is not quite correct. It is maybe used
&gt; in a redundant way, but can do things that are hard to describe from a
&gt; graphical point of view: skew(alpha, beta).
Check. But depending on how it&apos;s used we may be able to narrow its definition down to what overlaps with skewX/skewY and leave the rest undefined. Just a thought.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71730</commentid>
    <comment_count>9</comment_count>
    <who name="Aryeh Gregor">ayg</who>
    <bug_when>2012-08-01 08:50:12 +0000</bug_when>
    <thetext>The function doesn&apos;t make sense, but it&apos;s required for compat.  So require support but note in the spec that it doesn&apos;t make sense and authors shouldn&apos;t use it.  This is no different from tons of web features that are stupid/useless/redundant/bad ideas/etc. but that we spec and keep forever for compat.  Like, say, quirks mode.  This is probably only a handful of lines of code to keep, so it&apos;s not worth trying to get rid of if there are nontrivial compat issues, which there are.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71737</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Schulze">dschulze</who>
    <bug_when>2012-08-01 14:28:39 +0000</bug_when>
    <thetext>I spoke with the Edge team and there is indeed content created with Edge that uses skew(). The skew() support will be removed completely in the next preview for compatibility reasons to FireFox 14 and most skew() usage is already removed in the current version.

(In reply to comment #9)
&gt; The function doesn&apos;t make sense, but it&apos;s required for compat.  So require
&gt; support but note in the spec that it doesn&apos;t make sense and authors shouldn&apos;t
&gt; use it.  This is no different from tons of web features that are
&gt; stupid/useless/redundant/bad ideas/etc. but that we spec and keep forever for
&gt; compat.  Like, say, quirks mode.  This is probably only a handful of lines of
&gt; code to keep, so it&apos;s not worth trying to get rid of if there are nontrivial
&gt; compat issues, which there are.

Even if not happy, I am fine with adding it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71739</commentid>
    <comment_count>11</comment_count>
    <who name="Sylvain Galineau">sylvaing</who>
    <bug_when>2012-08-01 15:38:49 +0000</bug_when>
    <thetext>
&gt; (In reply to comment #9)
&gt; &gt; The function doesn&apos;t make sense, but it&apos;s required for compat.  So require
&gt; &gt; support but note in the spec that it doesn&apos;t make sense and authors shouldn&apos;t
&gt; &gt; use it.  This is no different from tons of web features that are
&gt; &gt; stupid/useless/redundant/bad ideas/etc. but that we spec and keep forever for
&gt; &gt; compat.  Like, say, quirks mode.  This is probably only a handful of lines of
&gt; &gt; code to keep, so it&apos;s not worth trying to get rid of if there are nontrivial
&gt; &gt; compat issues, which there are.
&gt; 
&gt; Even if not happy, I am fine with adding it again.

Aryeh&apos;s suggestion is interesting i.e. we could mark the feature as deprecated; UAs need to implement those for compat but it&apos;d be explicitly called out as &apos;do not use&apos; for authors. It may seeem weird or awkward to come out with a deprecated feature in a new spec but I&apos;d rather be pragmatic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71843</commentid>
    <comment_count>12</comment_count>
    <who name="Aryeh Gregor">ayg</who>
    <bug_when>2012-08-05 08:38:15 +0000</bug_when>
    <thetext>I&apos;d prefer to avoid the term &quot;deprecated&quot;, since that suggests the feature is going to be removed at some point, which isn&apos;t the case.  HTML5 uses &quot;obsolete&quot;.  I&apos;d go for a note like

&quot;&quot;&quot;
skew() with one parameter zero is equivalent to skewX() or skewY(), but if both parameters are nonzero, it does not behave as a skew (despite its name).  Authors might mistakenly think that skew() with two nonzero parameters behaves the same as skewX() followed by skewY() or similar, which it does not, so they are advised not to use skew() at all.  Nevertheless, implementations must support skew() for compatibility with legacy content.
&quot;&quot;&quot;

Does anyone object to me making this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71844</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Schulze">dschulze</who>
    <bug_when>2012-08-05 15:14:03 +0000</bug_when>
    <thetext>(In reply to comment #12)
&gt; I&apos;d prefer to avoid the term &quot;deprecated&quot;, since that suggests the feature is
&gt; going to be removed at some point, which isn&apos;t the case.  HTML5 uses
&gt; &quot;obsolete&quot;.  I&apos;d go for a note like
&gt; 
&gt; &quot;&quot;&quot;
&gt; skew() with one parameter zero is equivalent to skewX() or skewY(), but if both
&gt; parameters are nonzero, it does not behave as a skew (despite its name). 
&gt; Authors might mistakenly think that skew() with two nonzero parameters behaves
&gt; the same as skewX() followed by skewY() or similar, which it does not, so they
&gt; are advised not to use skew() at all.  Nevertheless, implementations must
&gt; support skew() for compatibility with legacy content.
&gt; &quot;&quot;&quot;
&gt; 
&gt; Does anyone object to me making this change?

Can&apos;t you just recover the text and images from the mercurial history (it is not just the text in the 2d transform  function section)? Just add the sentence: &quot;The skew() transform function is obsolete.&quot; Don&apos;t think that we need a reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71845</commentid>
    <comment_count>14</comment_count>
    <who name="Aryeh Gregor">ayg</who>
    <bug_when>2012-08-05 15:20:51 +0000</bug_when>
    <thetext>Yeah, of course I&apos;d bring back the original text.  I can add whatever note people like, doesn&apos;t matter to me.  I prefer more reasoning rather than less in specs, or at least links to reasoning, so that readers understand better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>72349</commentid>
    <comment_count>15</comment_count>
    <who name="Aryeh Gregor">ayg</who>
    <bug_when>2012-08-17 12:02:46 +0000</bug_when>
    <thetext>There have been enough spec changes in the interim that this isn&apos;t trivial to undo.  I&apos;m afraid I don&apos;t have the time anymore, so anyone who does should feel free to pick it up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73037</commentid>
    <comment_count>16</comment_count>
    <who name="Dirk Schulze">dschulze</who>
    <bug_when>2012-08-30 00:43:07 +0000</bug_when>
    <thetext>I re-added skew() with the last commit today.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>1165</attachid>
            <date>2012-07-30 15:27:55 +0000</date>
            <delta_ts>2012-07-30 15:27:55 +0000</delta_ts>
            <desc>Test for skew support on not prefixed transforms</desc>
            <filename>skew.html</filename>
            <type>text/plain</type>
            <size>258</size>
            <attacher name="Dirk Schulze">dschulze</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgogIDx0aXRsZT5za2V3KCkgc3VwcG9ydCBvbiB1bnByZWZpeGVkIHRyYW5zZm9ybSBw
cm9wZXJ0eTwvdGl0bGU+CjwvaGVhZD4KPGJvZHk+CjxkaXYgc3R5bGU9IndpZHRoOiAxMDBweDsg
aGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHRyYW5zZm9ybTogc2tldyg0
NWRlZyk7Ij48L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+
</data>

          </attachment>
      

    </bug>

</bugzilla>