| 01:11 | <caitp> | nah, you're an ideographic or phonetic language, where you don't need two+ characters for every consonant and vowel, even with utf8 where your average cjk character is 3 bytes, it still doesnt make utf16 massive savings |
| 01:12 | <caitp> | whether it's used or not is besides the point, it's still not heavily used for interchange |
| 01:12 | <caitp> | we use it internally because it's slightly easier to work with, but for interchange it doesn't make a whole lot of sense |
| 01:13 | <caitp> | slightly bigger characters, but fewer characters used |
| 01:15 | <caitp> | i'd attribute the fact that actual documents use it more to the nature of tools than anything else |
| 01:21 | <caitp> | but it's not really a storage size win, it's not a network traffic performance win |
| 01:21 | <caitp> | not that any of it really matters a whole lot |
| 01:50 | <MikeSmith> | caitp: so I've been wondering how things will end up evolving with the big js mvc frameworks once web components actually becomes a cross-browser-implemented part of the platform |
| 01:50 | <MikeSmith> | if it ever does |
| 01:51 | <caitp> | well, we're hoping it does, but these frameworks aren't just about drawing pretty widgets |
| 01:51 | <caitp> | they're about application structure, right |
| 01:51 | <MikeSmith> | sure yeah I realize that |
| 01:52 | <caitp> | so I guess the thing that happens is, ideally, web components and other parts of the framework are easy to test, and it makes it nice and easy for us to help people structure applications, large and small |
| 01:52 | <MikeSmith> | it's not clear to me how much of, e.g., angular is handling the bits that web components does natively |
| 01:52 | <MikeSmith> | ok |
| 01:52 | <caitp> | s/framework/platform/ |
| 01:55 | <caitp> | well, a good answer to that question is "look at the angular 2.0 prototype stuff", a big issue that they're dealing with is fitting the web component model into an application framework, IE fitting them into the dependency injection model, and making them aware of their surrounding DOM nodes |
| 01:55 | <caitp> | it's pretty interesting, and it's not a super easy problem to solve as web components exists currently |
| 01:56 | <MikeSmith> | so that's another question I had |
| 01:56 | <MikeSmith> | which is, what's lacking in web components as it exists currently |
| 01:57 | <MikeSmith> | I mean, what have you seen that angular could use that web components should ideally provide but doesn't yet |
| 01:58 | <MikeSmith> | I was thinking about this today after seeing abarth's message about his <marquee>-in-js implementation |
| 01:58 | <MikeSmith> | in particular https://groups.google.com/a/chromium.org/d/msg/blink-dev/sQndrT36l1A/b9fJoUK3RAUJ |
| 01:59 | <MikeSmith> | "There were a couple things that I couldn't implement correctly because they're magic pieces of the platform we haven't explained yet..." |
| 02:02 | <caitp> | I've been following that thread a bit, but I'm not sure of the magic necessary for marquee --- but I guess what we're dealing with is, custom elements are always instantiated asynchronously (as far as I'm aware), and you can't really do any magic like inject some parameters into their "constructors", if such a thing were to exist. the hack around it is to do the dependency injection logic in the attach callback |
| 02:03 | <caitp> | so in other words the platform doesn't enable that natively, and that's our mechanism for making controls aware of their relationship to the application |
| 02:03 | <caitp> | and the whole asynchronous "upgrading" of elements has other issues WRT testability, which I think have been raised with the test-the-web-forward people |
| 02:06 | <MikeSmith> | as far as the testing issue goes, the subset of the test-the-web-forward people working on writing tests for web components and reviewing those tests are actually the same people from Google who implemented web components in blink |
| 02:07 | <MikeSmith> | so I think we're planning on them to also come up with some solution to any special testing issues it creates |
| 02:07 | <caitp> | i expect so |
| 02:09 | <caitp> | there are some other things that are sort of frustrating, but I only really hear about it during meetings, since I'm working on other areas at the moment. might be some of it available in the meeting notes |
| 02:12 | <caitp> | yeah, looks like a lot of the discussion is recorded |
| 02:16 | <MikeSmith> | caitp: I guess I'll trust that that folks from angular are getting the feedback to dglazkov and hayato and others working on the web-components implementations and specs |
| 02:17 | <caitp> | i've suggested it, but I don't know if it's getting there. have to ask dglazkov if he's heard anything |
| 02:56 | <abarth> | MikeSmith: that's one of the reasons to use web components internally in the engine: you discover what's missing |
| 02:56 | <abarth> | MikeSmith: One thing I didn't mention on the list is I haven't figured out how to do inline event handlers properly |
| 02:57 | <abarth> | <marquee onbounce="...">Foo</marquee> |
| 02:57 | <abarth> | setting up the right JS environment for the ... is a bit subtle |
| 02:57 | <MikeSmith> | oh |
| 02:57 | <abarth> | the engine does that all the time, but it's not clear how to authors can do precisely the same thing |
| 02:57 | <abarth> | I think I've got the script version working right |
| 02:57 | <abarth> | foo.onbounce = ... |
| 02:58 | <abarth> | but the attribute version is subtly different |
| 02:58 | <MikeSmith> | it's cool to see these gaps getting exposed |
| 02:59 | <MikeSmith> | though I guess in the short term you'd just like to have a way to make it work |
| 03:01 | <MikeSmith> | also incidentally I guess this could be added to the list of reasons why inlining event handlers is not a best practice |
| 03:02 | <abarth> | I'm not really injecting much opinion |
| 03:02 | <abarth> | just trying to make thing A work the same way as thing B |
| 06:10 | <annevk> | krit: ah okay, guess I have some time to read up on SVG then :-) |
| 06:12 | <annevk> | gsnedders: utf-16 is the only encoding that's not ASCII-compatible |
| 06:38 | <MikeSmith> | hsivonen: about https://bugzilla.mozilla.org/show_bug.cgi?id=1024447#c12 I don't think the EME spec specifies the "keysystem" content attribute for the source element sufficiently, and it would be better to have it defined properly in the HTML spec -- provided that the attribute is actually suppored in UAs. |
| 06:38 | <MikeSmith> | hsivonen: I mean, for one thing, the relevant text in the EME spec reads in whole just, "The keysystem content attribute is added to HTMLSourceElement." |
| 06:39 | <annevk> | MikeSmith: did you file a bug on that? |
| 06:40 | <annevk> | MikeSmith: you should really file bugs :-) |
| 06:40 | <SamB> | MikeSmith: what, no "TODO: flesh out"? |
| 06:55 | <annevk> | JakeA: Headers is now defined in more detail |
| 07:00 | <JakeA> | annevk: cool. Will review in detail tomorrow. Stupid I/O deadline today. |
| 07:01 | <annevk> | JakeA: I'll mostly be working on SVG this week so that seems fine |
| 07:01 | <annevk> | JakeA: you already in SF? |
| 07:06 | <JakeA> | annevk: nah, heading out on Friday |
| 07:33 | annevk | finds out jungkees has been busy |
| 07:51 | <mathiasbynens> | zcorpan: you called it! (re: DnD/picture) |
| 08:10 | <zcorpan> | mathiasbynens: what do you mean? |
| 08:14 | <jungkees> | annevk: https://github.com/slightlyoff/ServiceWorker/issues/235 |
| 08:15 | <jungkees> | annevk: with this particular thread, what should be fixed more? |
| 08:17 | <annevk> | jungkees: looking at https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#default-method |
| 08:17 | <annevk> | jungkees: step 3.2 needs to be removed |
| 08:18 | <annevk> | jungkees: if response is a network error you need to reject with a TypeError |
| 08:18 | <annevk> | jungkees: and you need to explain how this relates to the overall lifecycle |
| 08:23 | <jungkees> | annevk: alright |
| 08:31 | <annevk> | jungkees: I think the spec still does not do a great job of explaining the overall model and how all the various pieces interact with it |
| 08:32 | <annevk> | jungkees: e.g. what is .default() plugging into that makes "handle a fetch" return the correct thing? |
| 08:32 | <jungkees> | annevk: will add them after sorting out the hooks to Fetch this week |
| 08:34 | <annevk> | jungkees: ah yeah, Nikhil opened an issue for that |
| 08:37 | <jungkees> | annevk: I'll add informal sections to explain the overall hook model and the use of fetch API in SW context xref to Fetch esp. Request/Response/Fetch part |
| 08:38 | <annevk> | jungkees: I'm not talking non-normative |
| 08:38 | <annevk> | jungkees: my concern is with the normative model |
| 08:38 | <annevk> | jungkees: the current setup is not sufficient |
| 08:38 | <mathiasbynens> | zcorpan: i assumed it would be simple & a no-brainer but you realized logic doesn’t necessarily apply in the world of Web Standards |
| 08:38 | <jungkees> | annevk: as I'll remove the Request/Response interfaces from SW |
| 08:39 | <zcorpan> | mathiasbynens: ah. yeah |
| 09:22 | <krit> | annevk: am back… back online |
| 09:24 | <krit> | zcorpan: hi. I uploaded a couple of DOMRect,DOMPoint and DOMQuad tests. If you have time, please review them. https://github.com/w3c/csswg-test/pulls #551-#553 |
| 09:24 | <zcorpan> | krit: ok nice |
| 09:26 | <annevk> | krit: okay, how to best do this? |
| 09:26 | <smaug____> | heycam: would you need some ["foo", "bar"] defaults values for the dictionary/eventinit ? |
| 09:26 | <annevk> | krit: it seems your best bet is assuming the model HTML has outlined |
| 09:26 | <krit> | annevk: we could switch to #svg on w3c irc server… it is recorded as well IIRC |
| 09:27 | <krit> | annevk: we can discuss it here. Just not sure if we produce to much noise |
| 09:27 | <annevk> | krit: here is fine, this channel is known to be noisy |
| 09:27 | <krit> | annevk: ok |
| 09:27 | <krit> | annevk: agree that we should start from the HTML model |
| 09:28 | <krit> | annevk: For standalone SVG’s the model should be identical |
| 09:28 | <krit> | annevk: not much different to inline SVG |
| 09:28 | <annevk> | krit: given that, it's not clear why https://svgwg.org/specs/integration/ is needed, it seems the text should just be in https://svgwg.org/svg2-draft/ |
| 09:28 | <krit> | annevk: Problem comes with fetching further resources… more specifically, SVG as fetch resource |
| 09:29 | <krit> | annevk: I think the SVG WG wanted to produce an anchor for specs using SVG |
| 09:29 | <krit> | annevk: something light weighted that provides all reference modes |
| 09:30 | <krit> | annevk: also, it would apply to all SVG specs, regardless of the version W3C status as REC and so on |
| 09:30 | <annevk> | krit: I think that's the wrong way to think about SVG. The way I see it is that we have some new elements (elements in the SVG namespace) and a special processing mode for XML with an "image/svg+xml" MIME type loaded as image |
| 09:31 | <krit> | annevk: I think for the security model, the WG would be open to put it back to SVG2. |
| 09:31 | <krit> | annevk: that doesn’t seem to be the biggest issue :) |
| 09:32 | <annevk> | krit: so you'd need to define the processing model for these new elements and you need to define a special algorithm for the "image" case that disables scripting and such |
| 09:32 | <krit> | annevk: there might be more modes…. SVG OpenType fonts could have a different set |
| 09:33 | <annevk> | krit: fair, that might be a third |
| 09:33 | <annevk> | krit: although I think fonts and images have roughly similar security characteristics |
| 09:33 | <krit> | annevk: At least for SVG images and SVG external resources (<pattern>, <filter>) we already agreed on the same policy |
| 09:33 | <krit> | annevk: agree, just that SVG as font gets context information to color the font |
| 09:34 | <krit> | annevk: but I am fine with keeping SVG as font as a special case that we handle later. |
| 09:35 | <krit> | annevk: so far there is just one implementer willing to implement SVG OpenType fonts |
| 09:35 | <krit> | annevk: back to SVG as document and SVG as image/svg+xml |
| 09:35 | <annevk> | krit: https://etherpad.mozilla.org/fixing-svg-processing |
| 09:39 | <annevk> | krit: so <svg:image> is like <img> these days? |
| 09:39 | <krit> | annevk: it ought to be |
| 09:39 | <annevk> | krit: if it loads SVG that SVG cannot execute script? |
| 09:39 | <annevk> | krit: sounds good |
| 09:39 | <krit> | annevk: still need to add cross origin attribute |
| 09:39 | <krit> | annevk: yes, same model as <img> |
| 09:39 | <annevk> | krit: that's fine, as long as the security model is equivalent |
| 09:40 | <annevk> | krit: do you know why CSS was seen as a risk? is it the fetching? |
| 09:41 | <krit> | annevk: the WebAppsSec WG wanted to disable styling in general… they feared that some data could be used to trick the user |
| 09:41 | <krit> | annevk: example is coloring the image dependent on viewport size |
| 09:42 | <krit> | annevk: by using media queries and selectors |
| 09:42 | <annevk> | krit: ah okay, so the attack vector would be anything that can read from the environment |
| 09:42 | <krit> | annevk: that was the strongest argument, yes |
| 09:43 | <krit> | annevk: while “read” does not mean that the attacker can read |
| 09:43 | <annevk> | hmm yeah, need better word |
| 09:43 | <krit> | annevk: just a different display behavior dependent on context |
| 09:44 | <annevk> | krit: so https://svgwg.org/svg2-draft/linking.html#processingIRI has a long list of things that can fetch |
| 09:45 | <krit> | annevk: let me check if it is accurate |
| 09:45 | <annevk> | krit: for each of those we need to figure out what happens with the resources retrieved |
| 09:45 | <krit> | annevk: a view elements can’t anymore: mask, filter.. otherwise correct |
| 09:46 | <annevk> | few? |
| 09:46 | <krit> | annevk: yes :) |
| 09:47 | <krit> | annevk: I think with the exception of script, a, (cursor?) the policy can be the same for all elements |
| 09:47 | <annevk> | krit: can they all reference externally too? |
| 09:47 | <krit> | annevk: yes |
| 09:47 | <annevk> | krit: but they're a bit different from the SVG as image case right? |
| 09:47 | <krit> | annevk: I don’t think so... |
| 09:47 | <krit> | annevk: actually they can'y |
| 09:47 | <krit> | t |
| 09:48 | <annevk> | krit: you basically extract some elements to act as a paint server or some such? |
| 09:48 | <krit> | annevk: they must be treated the same |
| 09:48 | <krit> | annevk: <use>, <text> and a couple of other elements reference elements for drawing, other elements are pain sources…. to differ here is not necessary |
| 09:49 | <krit> | s/pain/paint/ |
| 09:49 | <annevk> | well it seems good to make a difference since you'd invoke different algorithms |
| 09:49 | <krit> | annevk: in this case there are 4: |
| 09:50 | <annevk> | one is draw an image given a response object and some height/width criterea |
| 09:50 | <annevk> | the others would be not that :) |
| 09:50 | <krit> | annevk: image, as paint source(gradients patterns), as operator (mask, clipPath, filter) |
| 09:50 | <krit> | annevk: and referenced (external) elements that are drawn in the context of the current document |
| 09:51 | <krit> | annevk: example for the last: <use xlink:href=“other.svg#path/> |
| 09:51 | <krit> | annevk: A <path> element is “copied” from the document other.svg and added in the place of <use> |
| 09:52 | <annevk> | krit: but you don't actually change the DOM, correct? |
| 09:52 | <annevk> | krit: this is some kind of shadow DOM thingy? |
| 09:52 | <krit> | annevk: no, it is implemented with shadow DOM |
| 09:52 | <krit> | annevk: right |
| 09:52 | <annevk> | same-origin restriction? |
| 09:52 | <krit> | annevk: none defined yet |
| 09:53 | <krit> | annevk: part of the new security model :) |
| 09:53 | <annevk> | do scripts execute? |
| 09:53 | <annevk> | I see |
| 09:53 | <annevk> | please start calling it processing model ;) |
| 09:53 | <annevk> | security is just one aspect of the many things that are not defined here :) |
| 09:53 | <krit> | annevk: that was brought up recently : <use xlink:href=“other.svg#g”/> that references <g><script></script></g> |
| 09:53 | <krit> | annevk: and it is not executed |
| 09:54 | <annevk> | okay, so potentially less volatile than HTML imports |
| 09:54 | <krit> | annevk: if implemented correctly :) |
| 09:56 | <annevk> | krit: does <use> have an object model? |
| 09:56 | <krit> | annevk: it was removed |
| 09:56 | <annevk> | krit: what about hit testing on <use> does that return the <use> element? |
| 09:57 | <krit> | annevk: so hit testing applies in general to <use>… do you mean event handlers? |
| 09:57 | <annevk> | krit: what would elementFromPoint() return? |
| 09:57 | <krit> | annevk: something like onmouseover may apply… need to check |
| 09:57 | <annevk> | krit: but yes, event handlers, :hover, etc. |
| 09:58 | <annevk> | krit: note that hit testing can return different things depending on who is asking |
| 09:58 | <krit> | annevk: elementFromPoint would not go into the <use> tree |
| 09:58 | <annevk> | krit: hit testing not being defined is of course problematic for that... |
| 09:59 | <krit> | annevk: there are no restrictions to hit testing for <use>… think that is defined |
| 10:00 | <krit> | annevk: “The event handling for the non-exposed tree works as if the referenced element had been textually included as a deeply cloned child of the ‘use’ element, and events are dispatched according to the shadow tree event dispatching algorithm [SHADOWDOM]." |
| 10:01 | <annevk> | krit: so basically this is defined in terms of shadow DOM, except shadow DOM does not actually provide encapsulation at the moment |
| 10:02 | <annevk> | krit: only Chrome has such a thing |
| 10:02 | <krit> | annevk: yes |
| 10:03 | <annevk> | mkay, I guess you guys can clean that up at some point, hit testing should prolly follow from that |
| 10:03 | <krit> | annevk: is there an example in HTML? |
| 10:03 | <krit> | annevk: how HTML defines hit testing? |
| 10:03 | <annevk> | krit: nobody defines hit testing |
| 10:04 | <annevk> | krit: it's a big problem |
| 10:04 | <krit> | annevk: that sounds like a meme |
| 10:04 | <annevk> | might be something about anne and being a broken record on hit testing |
| 10:08 | <annevk> | krit: so is <use> non-isolated or isolated? |
| 10:09 | <krit> | annevk: not isolated for styling, isolated for DOM |
| 10:09 | <annevk> | hmm |
| 10:09 | <krit> | annevk: hooking up <use> on shadow DOM is new… there might potentially be changes |
| 10:10 | <annevk> | krit: so <use> fetches a resources, parses it as XML, then locates node by ID and deepclones it into the shadow tree? |
| 10:10 | <annevk> | krit: and when it parsers it does so with scripting disabled |
| 10:11 | <krit> | annevk: so, what happens in implementations is that we fetch the document and run it though the parser… then we look for the id and deep clone it (some implementations just create the render tree) |
| 10:12 | <krit> | if you just create the render tree, you exclude Scripting already |
| 10:12 | <annevk> | well the render tree is created from the shadow tree |
| 10:13 | <annevk> | and the parser is what executes script |
| 10:15 | <krit> | annevk: animations can not be disables=d by author ATM. This is one problem with Canvas’s drawImage() “first frame” doesn’t really apply for SVG… in this case the UA indeed disables the animation |
| 10:17 | <annevk> | okay |
| 10:18 | <annevk> | krit: "(result of rendering to a bitmap or something else?)" is about how we'd define it; how it's implemented is immaterial |
| 10:18 | <krit> | annevk: ok, defining it by bitmap is the easiest |
| 10:19 | <krit> | annevk: (resolution depends on the device of course) |
| 10:23 | <krit> | annevk: xref == xlink:href ? |
| 10:23 | <annevk> | krit: cross-reference |
| 10:23 | <krit> | annevk: makes sense :P |
| 10:25 | <krit> | annevk: beside elementFromPoint() we have CSSOM calls like getClientsRect() and so on… which of course don’t look into the shadow tree |
| 10:25 | <krit> | annevk: not sure if there is a common expression for these kind of interfaces |
| 10:25 | <annevk> | krit: layout APIs? |
| 10:26 | <krit> | annevk: maybe |
| 10:26 | <annevk> | krit: render tree APIs I suppose, as they operate on that |
| 10:26 | <krit> | annevk: basically all APIs in http://dev.w3.org/csswg/cssom-view/ :P |
| 10:28 | <krit> | annevk: CSS WG refuses to deifne render tree. so layout actually sounds good |
| 10:28 | <annevk> | krit: is there anything in particular with getClientsRect()? |
| 10:29 | <annevk> | krit: it seems if you use it on <use> it would reveal the render size of the shadow tree? |
| 10:30 | <krit> | annevk: <use> it would |
| 10:31 | <krit> | annevk: *it would |
| 10:31 | <annevk> | krit: seems like <use> should be same-origin / CORS |
| 10:31 | <krit> | annevk: yes… it is in Firefox |
| 10:32 | <krit> | annevk: In FF the same for paint sources and operators |
| 10:33 | <krit> | annevk: And it shouldn’t be a problem to add this requirement in the spec. External references are just implemented in Firefox so far. |
| 10:33 | <krit> | annevk: and Opera <= 12 |
| 10:33 | <annevk> | krit: I remember there was a problem with CSS and SVG together? |
| 10:34 | <annevk> | krit: where for CSS we did not want to have that restriction and so we ended up making the distinction through fragment identifiers? |
| 10:34 | <krit> | annevk: you probably mean the mask-image: url() problem, where url() can reference an image or an SVG resource? |
| 10:34 | <krit> | annevk: well, we went away from present fragment switching and required the same policies for both |
| 10:35 | <krit> | annevk: this indeed seems critical with same origin requirement for SVG resources :/ |
| 10:36 | <annevk> | krit: okay, so if that's always same-origin that's great |
| 10:36 | <krit> | annevk: hm… need to think about it |
| 10:36 | <krit> | annevk: well, for use definitely |
| 10:36 | <krit> | annevk: for paint sources/operators maybe not so much because if the url() CSS function issue |
| 10:36 | <krit> | s/if/of/ |
| 10:37 | <annevk> | I think I remember what I proposed to roc |
| 10:37 | <krit> | annevk: Ah! FF added the restriction because the resource was allowed to fetch more data |
| 10:37 | <krit> | annevk: IIRC |
| 10:38 | <krit> | annevk: and with the new model, operators and paint sources are not allowed to fetch anything no matter what |
| 10:38 | <annevk> | That we would make the cross-origin fetch, but if the resulting document was SVG, we would treat it as an error |
| 10:38 | <annevk> | krit: I thought you could still do some amount of discovery based on what gets masked on the page |
| 10:39 | <krit> | annevk: for clipPath yes, it affects hit testing |
| 10:39 | <krit> | annevk: that wasn’t seen as issue by the CSS WG when I brought it up |
| 10:39 | <annevk> | krit: yeah, so I'm thinking that blocking tainted SVG is probably the way to go (while allowing tainted images) |
| 10:40 | <annevk> | I'm not sure the CSS WG is the best place for security issues |
| 10:40 | <annevk> | It's not like CSS' processing model is very clear |
| 10:40 | <krit> | annevk: well, atm implementations fetch resources with certain policies… there is no checking for further policies after fetching |
| 10:41 | <annevk> | I'm not sure what that means |
| 10:41 | <krit> | annevk: you fetch a resource with same origin requirement, or you fetch it without any requirements… (to make it simple just the two cases) |
| 10:42 | <annevk> | sure |
| 10:42 | <krit> | annevk: once the implementation has the resource, it is assumed that everything is ok IIRC |
| 10:42 | <annevk> | but you can make a check once you get something back to see whether you want it |
| 10:42 | <annevk> | similarly to doing a content-type check as we sometimes do |
| 10:42 | <krit> | annevk: so if we fetch SVG without policies… then we do not check it a second time |
| 10:42 | <annevk> | yes, but we could, to make this work |
| 10:42 | <krit> | annevk: but do we do that today? |
| 10:42 | <annevk> | without the ridiculous check the url's fragment nonsense |
| 10:43 | <krit> | annevk: I mean somewhere? |
| 10:43 | <annevk> | well, SVG introduced this image or SVG problem |
| 10:43 | <krit> | annevk: true |
| 10:44 | <annevk> | and the way it was initially solved was by trying to distinguish them upfront by checking if the url had a fragment |
| 10:44 | <annevk> | which is broken |
| 10:44 | <krit> | annevk: yes |
| 10:44 | <annevk> | so either we create separate properties for the two cases or we distinguish after the fetch |
| 10:44 | <annevk> | and if you distinguish after the fetch between image and SVG, you can still discard one or the other if there's a problem |
| 10:45 | <annevk> | such as the response being tainted and being SVG |
| 10:45 | <krit> | annevk: to step back… masking does affect the visual output but does not contribute to hit testing |
| 10:45 | <krit> | annevk: it is just clip-path which does it |
| 10:45 | <krit> | annevk: so maybe we can limit it to clip-path only? |
| 10:45 | <krit> | annevk: clip-path property does not fetch images |
| 10:46 | <annevk> | my memory of the public-fx thread was that this was bigger |
| 10:46 | <krit> | annevk: bigger? |
| 10:48 | <annevk> | krit: http://lists.w3.org/Archives/Public/public-fx/2013AprJun/0046.html |
| 10:48 | <krit> | annevk: there is just one thing that could be exposed: rendering time… it take more time to render a mask than no mask |
| 10:48 | <krit> | annevk: so it could have affect on rAF |
| 10:48 | <annevk> | was about mask |
| 10:49 | <annevk> | http://lists.w3.org/Archives/Public/public-fx/2013AprJun/0021.html |
| 10:50 | <krit> | annevk: the first link still assumes that the document with the <mask> element can reference images from the same origin… which we don’t allow anymroe |
| 10:51 | <krit> | annevk: it must be in the document itself… no fetching |
| 10:52 | <annevk> | krit: so if you put a data URL there it'll always fail? |
| 10:53 | <krit> | annevk: dataURLs do not fetch by default, do they? they could have elements within that would try to fetch… which always fails. |
| 10:55 | <annevk> | krit: okay, I guess I see what you meant with respect to <mask>, you guys changed the model to be as "SVG as image" since that email exchange and now you think you can allow tainted responses |
| 10:55 | <annevk> | krit: does Firefox no longer do special casing for fragments then? |
| 10:55 | <krit> | annevk: hehe, right |
| 10:55 | <krit> | annevk: I don’t think it ever did? |
| 10:55 | <krit> | annevk: mask still just allows SVG resource in Gecko |
| 10:56 | <annevk> | okay, so it might be same-origin restricted at the moment? |
| 10:56 | <krit> | annevk: I think it is ATM |
| 10:58 | <annevk> | krit: okay, I want to take a break for a bit; I guess when we come back we should enumerate all the places that fetch |
| 10:58 | <krit> | annevk: ok, will be here |
| 10:59 | <annevk> | krit: prolly hour and a bit |
| 11:00 | <krit> | annevk: ok, thanks for looking into this! |
| 12:25 | <annevk> | krit: https://svgwg.org/ Streaming Draft link is broken |
| 12:26 | <krit> | annevk: doesn’t work for me too |
| 12:28 | <krit> | annevk: very strange, it is in the repository |
| 12:30 | <krit> | annevk: reported it to heycam, all I can do at the moment |
| 12:30 | <annevk> | krit: k |
| 12:30 | <annevk> | krit: https://etherpad.mozilla.org/fixing-svg-processing |
| 12:30 | <annevk> | krit: trying to complete the list of elements that fetch |
| 12:31 | <annevk> | krit: then I guess we can collect them into buckets somehow |
| 12:40 | <annevk> | krit: <style> does external references right? |
| 12:40 | <krit> | annevk: yes |
| 12:41 | <krit> | oh |
| 12:41 | <krit> | mistaken |
| 12:41 | <annevk> | krit: so can <cursor> be defined in terms of 'cursor'? |
| 12:41 | <annevk> | krit: as in, it might be good to remove the elements that can be described in terms of CSS |
| 12:42 | <krit> | annevk: old content might use it, but let me bring it up to SVG WG conf |
| 12:42 | <annevk> | krit: I mean spec-wise |
| 12:42 | <annevk> | krit: e.g. HTML defines <font> in terms of CSS |
| 12:43 | <krit> | annevk: needed to check, but yes |
| 12:43 | <krit> | annevk: cursor property might even be more powerful |
| 12:45 | <annevk> | krit: is the same true for other elements? |
| 12:45 | <krit> | annevk: looks like SVG has <cursor> to get the cursor position |
| 12:45 | <annevk> | o_O |
| 12:45 | <krit> | annevk: we have <font> in SVG which is the treated the same as in HTML |
| 12:46 | <annevk> | krit: <cursor> does not seem to be about getting the cursor position |
| 12:46 | <krit> | annevk: the x and y attributes are described about that + cursor image of course |
| 12:46 | <annevk> | yes |
| 12:46 | <krit> | http://www.w3.org/TR/SVG/interact.html#CursorElement |
| 12:47 | <annevk> | no, x and y are about where the image is to be placed relative to the mouse pointer |
| 12:47 | <annevk> | krit: see http://dev.w3.org/csswg/css-ui/#cursor |
| 12:49 | <krit> | annevk: for the property yes, but the SVG text implies otherwise |
| 12:49 | <annevk> | krit: that seems like one of the SVG's many bugs |
| 12:50 | <hsivonen> | MikeSmith: moving the keysystem attribute from EME to the HTML spec is a whole can of worms politically |
| 12:50 | <annevk> | because it doesn't actually make sense |
| 12:51 | <krit> | annevk: not even sure if we implement it in WebKit/Blink |
| 12:51 | <hsivonen> | MikeSmith: I'd rather have it better defined in EME itself as a first step |
| 12:51 | <annevk> | krit: can <feImage> be expressed in CSS? |
| 12:53 | <krit> | annevk: it does the same as <image> with the exception that it can reference an element |
| 12:54 | <krit> | annevk: which is than drawn in an offscreen buffer |
| 12:54 | <krit> | annevk: (maybe <image> can do the same? unsure) |
| 12:54 | <annevk> | is that observable somehow? |
| 12:55 | <krit> | annevk: observable how? |
| 12:56 | <krit> | annevk: I mean what do you want to observe? |
| 12:57 | <annevk> | nm |
| 12:58 | <annevk> | krit: do you know for all of these what the default fetching mode is? |
| 12:58 | <annevk> | krit: e.g. which are no CORS, which are CORS, and which are same-origin? |
| 13:00 | <krit> | annevk: again, definition is as <image> in general… added the cross origin attribute even http://dev.w3.org/fxtf/filters/#element-attrdef-crossorigin |
| 13:00 | <krit> | annevk: so it is no CORS by default, but can CORS can be set |
| 13:00 | <annevk> | what's the benefit of CORS in that case? |
| 13:02 | <krit> | annevk: http://dev.w3.org/fxtf/filters/#security |
| 13:02 | <annevk> | :( |
| 13:03 | <krit> | annevk: hehe, I guess I will never see a smile :) |
| 13:03 | <annevk> | heh |
| 13:04 | <annevk> | Okay, so feImage is tainted if the response's type is opaque |
| 13:05 | <annevk> | krit: I guess what I'm really interested in is whether the elements and properties we listed are same-origin or no-CORS by default |
| 13:05 | <MikeSmith> | hsivonen: ok I guess I'll do as annevk suggested and raise a bug against the EME spec |
| 13:06 | <annevk> | MikeSmith: please copy Chris Pearce and maybe me |
| 13:06 | <MikeSmith> | k |
| 13:06 | <krit> | annevk: all no-CORS since CORS didn’t existed when SVG 1.1 was speced |
| 13:07 | <krit> | annevk: (specification wise of course) |
| 13:07 | <annevk> | krit: nothing was same-origin restricted? |
| 13:07 | <krit> | annevk: and CSS doesn’t handle CORS yet either |
| 13:07 | <krit> | annevk: no |
| 13:07 | <krit> | annevk: nothing |
| 13:07 | <annevk> | can we talk implementation-wise now? |
| 13:08 | <krit> | annevk: CSS is still no-CORS |
| 13:08 | <krit> | annevk: same as in HTML |
| 13:08 | <annevk> | even clip-path? |
| 13:08 | <krit> | annevk: clip-path, mask, fill, stroke are same origin in Firefox |
| 13:09 | <krit> | annevk: they don’t fetch in WebKit and Blink yet |
| 13:09 | <annevk> | mask is mask-image? |
| 13:09 | <krit> | annevk: with the exception of -webkit-mask and -webkit-filter and -webkit-clip-path |
| 13:09 | <krit> | annevk: yes |
| 13:09 | <annevk> | ah, and -webkit- properties load images, not SVG, and do so no-CORS? |
| 13:09 | <krit> | annevk: remove -webkit-mask from the list |
| 13:10 | <krit> | annevk: -webkit-filter and -webkit-clip-path do load external resources as well. IIRC no self origin at the moment |
| 13:11 | <krit> | annevk: talking for general documents of course… not for SVG images |
| 13:11 | <annevk> | yeah |
| 13:11 | <krit> | annevk: the SVG elements do not fetch in Blink at all |
| 13:12 | <annevk> | krit: no SVG element? |
| 13:12 | <krit> | annevk: in WebKit we have the <use> element that did fetch. Think it is broken again |
| 13:12 | <krit> | annevk: In Firefox elements fetch same origin |
| 13:12 | <annevk> | krit: as in <svg><image xlink:href=...></svg> is broken? |
| 13:12 | <krit> | annevk: Opera <=12 fetches for CSS and elements without any restrictions |
| 13:13 | <krit> | annevk: I am unspecific |
| 13:13 | <krit> | annevk: operators and paint source elements don’t fetch |
| 13:13 | <krit> | in Blink and WebKit |
| 13:13 | <annevk> | in no context? |
| 13:13 | <krit> | annevk: right |
| 13:13 | <annevk> | but they support inline references? |
| 13:14 | <krit> | annevk: yes |
| 13:14 | <annevk> | okay, so lets figure out the algorithm to get to an SVG element |
| 13:14 | <annevk> | how is it established that you have an inline reference? |
| 13:14 | <krit> | annevk: I am not aware of restrictions for <script>, <?…stylesheet…?>, <image>, <feImage> specification wise |
| 13:15 | <krit> | annevk: we parse URL but just use the fragment identifier and search in the same document |
| 13:16 | <krit> | annevk: This caused a bug where the URL is a different document but we still search for the fragment ID in the same document |
| 13:16 | <krit> | annevk: might still be broken |
| 13:17 | <annevk> | given a document /doc and a base URL /a/ and a fragment in /doc that reads #text where should we look? |
| 13:17 | <annevk> | what if the fragment/reference reads /a/#text |
| 13:18 | <krit> | annevk: exclusively speaking for WebKit/Blink: we do not resolve the URL… we just take the string specified by the user and use the fragment identifier of it…. no resolving of URL yet |
| 13:18 | <annevk> | krit: what if the string does not start with a #? |
| 13:19 | <krit> | annevk: well, the parsing process looks for the fragment identifier exclusively… example: “other.svg#test”… we do not resolve the base address of other.svg |
| 13:20 | <annevk> | krit: what is this "parsing process"? |
| 13:20 | <annevk> | krit: you just try to find a #? |
| 13:20 | <krit> | annevk: let me check, but that is what I remember |
| 13:22 | <krit> | annevk: the parsing algorithm is 350 loc |
| 13:23 | <krit> | annevk: I can say that we do not “simply” search for #… the algorithm does a lot more… just say we extract the fragment identifier from the string |
| 13:23 | <krit> | let me find the link |
| 13:24 | <krit> | annevk: http://trac.webkit.org/browser/trunk/Source/WebCore/platform/URL.cpp#L1088 |
| 13:27 | <annevk> | krit: oh okay, so it seems to properly parse a URL, but then ignore all the good bits |
| 13:28 | <annevk> | seems to warrant a :( |
| 13:29 | <krit> | annevk: actually, it was a security pro caution and is limited to SVG |
| 13:30 | <annevk> | if you ignore the path and such that's not a security procaution, that's a bug |
| 13:31 | <krit> | annevk: this way we didn’t need to look into when we allow external resources. In the first days of SVG integration in WebKit this seemed wise. And then we never actually came to implement it correctly and there wasn’t a huge demand either |
| 13:31 | <annevk> | sure, I'm not advocating that we support Fetch |
| 13:31 | <krit> | annevk: it is a bug, true |
| 13:31 | <annevk> | but not properly parsing the URL and making sure it actually is relative to the document before proceeding is a huge forward compat issue |
| 13:31 | <krit> | annevk: I know, but implementations are ramping up and now it gets important |
| 13:32 | <krit> | annevk: agree, that was a bug we didn’t thought about at the time |
| 13:32 | <annevk> | o_O |
| 13:32 | <annevk> | okay, lets move on, I started drafting an algorithm |
| 13:37 | <gsnedders> | Hixie: ping; can you give me both your code, how to build it, and how to run it, then I'll try? |
| 13:39 | <annevk> | krit: data URLs and blob URLs will work due to the fetching algorithm |
| 13:39 | <annevk> | krit: though for data URLs we'd need explicit opt in |
| 13:39 | <krit> | annevk: which section is that in URL spec? |
| 13:39 | <annevk> | krit: it's in the fetch spec |
| 13:40 | <krit> | annevk: looking |
| 13:43 | <krit> | annevk: still, your algorithm compares document URL with parsed URL… if they are equal and the URL has a frag id, then we search for an element in the same document OTHERWISE: 1)return network error if fetch is disabled… |
| 13:43 | <krit> | annevk: or do we not quit at 1)? |
| 13:44 | <annevk> | krit: ah |
| 13:45 | <annevk> | krit: no, blob and data URLs would just proceed to step 3 |
| 13:45 | <krit> | annevk: right. Just mean that 3.1) says return on fetching disabled |
| 13:46 | <krit> | annevk: so dataURL and blob would return with negative result at 3.1 |
| 13:46 | <annevk> | yes |
| 13:46 | <annevk> | if fetching is disabled |
| 13:46 | <krit> | annevk: for SVG image it is… and we should still allow blob and dataURL |
| 13:46 | <annevk> | how can an "SVG image" contain a blob URL? |
| 13:47 | <krit> | annevk: dholbert had a weird example |
| 13:47 | <krit> | annevk: I’ll ask him about the example again |
| 13:48 | <krit> | annevk: Asked him. He is in PSD timezone and should be awake in a couple of hours |
| 13:49 | <krit> | s/awake/online/ |
| 13:49 | <annevk> | krit: okay, we could maybe make it a flag on Fetch |
| 13:49 | <annevk> | krit: "no networking flag" or some such |
| 13:50 | <krit> | annevk: ok, what about dataURLs and base64? |
| 13:50 | <annevk> | krit: I guess it might be okay to allow those yes |
| 13:50 | <krit> | annevk: it is important! :) People embed there PNGs in SVG files today |
| 13:51 | <krit> | annevk: External fonts seems to be the biggest problem for SVG Images… not sure how Firefox handles that today… not even sure how webkit does |
| 13:52 | <krit> | annevk: think WebKit doesn’t fetch web fonts today |
| 13:52 | <krit> | annevk: for SVG images |
| 13:52 | <annevk> | krit: "SVG images" is ambiguous |
| 13:53 | <krit> | annevk: indeed. In SVG WG we refer to image/svg+xml usually |
| 13:53 | <annevk> | krit: what is important for now is to define a model that's somewhat realistic, once we have that we can address various features |
| 13:55 | <krit> | annevk: yes |
| 13:56 | <annevk> | krit: so no scripting seems reasonably solid |
| 13:56 | <krit> | annevk: you refer to blobs? |
| 13:56 | <annevk> | krit: no, lets leave blob/data URLs alone for now, not important |
| 13:57 | <annevk> | krit: not doing scripting for an external resource is straightforward |
| 13:57 | <annevk> | krit: you simply don't invoke the parser with scripting enabled |
| 13:57 | <annevk> | krit: not doing fetching however, is processing layer |
| 13:58 | <annevk> | krit: so somewhere there's an algorithm that takes an SVG element and does something with it; use it as a mask/image/paint server/clip |
| 13:58 | <annevk> | krit: might be various such algorithms |
| 13:58 | <annevk> | krit: those need to be allowed to process elements, but also need to ensure no fetching is done |
| 13:59 | <annevk> | krit: for the CSS part of that CSS will need to gain a flag of "no fetching" |
| 13:59 | <annevk> | krit: which suggests maybe that flag should be passed all the way down to the fetching layer |
| 13:59 | <annevk> | krit: which then can decide whether to allow certain URLs, such as data URLs |
| 13:59 | <annevk> | in that mode |
| 14:00 | <krit> | annevk: another idea was to flag document |
| 14:00 | <krit> | annevk: and look at the status of document. So in general yes, fetching must pass the mode |
| 14:00 | <annevk> | yeah that seems equivalent |
| 14:00 | <krit> | annevk: fetchingEnables |
| 14:00 | <krit> | d |
| 14:02 | <annevk> | so for HTML most fetching is disabled if there's no browsing context |
| 14:02 | <annevk> | but it seems that wouldn't work here |
| 14:05 | <krit> | annevk: right |
| 14:05 | <krit> | annevk: sorry, need to take care of kids… slow in responce |
| 14:05 | <krit> | se |
| 14:09 | <krit> | annevk: could we continue tomorrow morning? |
| 14:09 | <annevk> | yeah sure, thanks for the help |
| 14:09 | <krit> | annevk: wrong way around ;) |
| 14:09 | <annevk> | need to think a bit how to proceed here |
| 14:10 | <annevk> | I'll let some Gecko people know we're trying to lock these things down |
| 14:14 | <krit> | annevk: cool! roc , bz and dholbert might be the right ppl to talk too |
| 14:51 | <jgraham> | annevk: I might just be very stupid, but your response about why .to() is preferred over .toX() didn't make any sense to me |
| 14:54 | <annevk> | *waves magic wand to make jgraham understand unstated things* |
| 14:56 | <Ms2ger> | The "state them" wand? |
| 14:57 | <annevk> | Ms2ger: unclear |
| 14:57 | <jgraham> | annevk: Erm. You posted the mail, I kind of assumed you already knew what you had stated |
| 14:57 | <annevk> | jgraham: you assumed I would understand what part didn't make sense to you? |
| 14:57 | <annevk> | sorry |
| 14:57 | <jgraham> | All of it didn't |
| 14:57 | <jgraham> | Hence "any sense" |
| 14:57 | <jgraham> | :) |
| 14:58 | <annevk> | seems pretty clear to me |
| 14:58 | <annevk> | anyway, I have to do something else |
| 14:58 | <jgraham> | I don't think it's at all clear conceptually (wihout reading the spec) why you can only call to() once, or why it would be worse with toX() |
| 14:59 | <jgraham> | Neither seems more complicated than the other to implement, really |
| 15:00 | <jgraham> | But the concerns about feature detection seem legitimate |
| 15:04 | <gsnedders> | Does anyone know if Google use Dart for anything significant? |
| 15:04 | <gsnedders> | (presumably in dart2js form) |
| 15:07 | <caitp> | the greentea stuff, at least |
| 15:10 | <caitp> | i guess it depends how you define "significant", though |
| 15:48 | <annevk> | jgraham: yeah, I guess we can look into it again |
| 16:37 | <annevk> | Is anyone trying this? https://loop.services.mozilla.com/calls/kfsTnuhULV9QzkcMbR4Xu1vJVV2hi-lQ4blJD1JVxcVlQ5lmH6isvyOI9iroY09PmTtX8hxuXCdeT-D4dXMwswZRId7DvBBEF728FxUOa0uS80v_TAt-pyak6A_Kubg0HU9qpbeQawu8KlEGuxcXYB9cpUPfAtoTWC6OJTMbx4YzxMnSnR0WfJwGJo41VsAVH_gC5W3lSIxArBE9V2-WG-CJ9fA |
| 18:42 | <estellevw> | The <output>, even those with a name, never have their value sumbitted along with the associated form, right? |
| 18:49 | <zcorpan> | estellevw: right |
| 18:49 | <estellevw> | thanks |
| 18:52 | <Domenic> | annevk: do you have that list of stream concepts that would be nice to define? |
| 18:57 | <Hixie> | gsnedders: ok here now |
| 18:58 | <gsnedders> | Hixie: you could just email me ;P |
| 18:58 | <Hixie> | that sounds like crazy talk |
| 18:58 | <Hixie> | ok |
| 18:58 | <Hixie> | so |
| 18:58 | <Hixie> | tests |
| 18:59 | <Hixie> | let's see |
| 18:59 | <Hixie> | git diff gives me a 1653 line diff |
| 19:00 | <Hixie> | how do you want them, one file at a time? |
| 19:01 | <gsnedders> | Hixie: related changes together |
| 19:01 | <Hixie> | how do i do that? |
| 19:01 | <gsnedders> | Hixie: you can use git add -p to select what to commit at each time |
| 19:01 | <gsnedders> | Google or prod someone else as to how, I need to phone my sister before I go out ;P |
| 19:01 | <Hixie> | k |
| 19:04 | <Hixie> | man git makes no sense to me at all |
| 19:05 | <Hixie> | what's the equivalent of "svn commit", meaning, the thing that sends my change upstream? |
| 19:05 | <Hixie> | everyone on the web is talking about multi-step processes involving web pages |
| 19:06 | <caitp> | `git push`? |
| 19:07 | <Hixie> | and waht does that push? all my commits? |
| 19:07 | <SamB> | hmm, anyone know a reference for the term "tofu"? |
| 19:08 | <Hixie> | SamB: context? |
| 19:09 | <SamB> | that stuff you see when you don't have the right font |
| 19:09 | <SamB> | usually little boxes, sometimes with hex codes in them |
| 19:09 | <Hixie> | oh the little squares? |
| 19:09 | <caitp> | Hixie: it will push the objects needed for the local refs to make sense remotely |
| 19:10 | <Hixie> | caitp: i've no idea what that means |
| 19:10 | <Hixie> | caitp: do i run git add, then git push? or git add, then git commit, then git push? |
| 19:10 | <SamB> | you have to commit before you can push changes |
| 19:10 | <Hixie> | how do i get several patches up to gsnedders? |
| 19:10 | <SamB> | commit each patch |
| 19:11 | <SamB> | then push the lot of them somewhere and inform him of where |
| 19:11 | <Domenic> | branch per patch, if they are independent |
| 19:11 | <caitp> | it's easier to explain with a chalkboard, but for the most part it's not worth worrying about the specifics of what gets pushed --- the simple case is, you have a branch, and you want to update a remote branch to match it |
| 19:11 | <caitp> | so you push your branch to the remote, and if it's a fast-forward commit, it will just work |
| 19:12 | <caitp> | and if it's not a fast-forward commit, then you should think carefully about it :d |
| 19:12 | <Hixie> | ok so with subversion, all i have to do is "svn diff", then i have the patch for review, then "svn commit", then it's upstream. |
| 19:13 | <SamB> | Hixie: in git you can commit first and review second |
| 19:13 | <Hixie> | you can do that in subversion too. svn commit, then svn diff with the revision numbers. |
| 19:13 | <Hixie> | i don't understand why git has to be so much more complicated. |
| 19:13 | <SamB> | yes, but without it being upstream |
| 19:13 | <Hixie> | i want it upstream |
| 19:13 | <Hixie> | what's the point of it not being upstream :-P |
| 19:14 | <caitp> | it's pretty simple, but there's a bit of a learning curve maybe. once you get the hang of it, it is totally natural |
| 19:14 | <SamB> | Hixie: git is used by many who don't have write access to upstream |
| 19:14 | <Hixie> | anyway |
| 19:14 | <Hixie> | so you're saying i should git add, then git commit, then git push, then git add, then git commit, then git push, etc? |
| 19:14 | <Hixie> | until i've got no more local changes? |
| 19:15 | <caitp> | you don't have to commit -> push -> commit -> push |
| 19:15 | <caitp> | you can commit -> commit -> commit -> push |
| 19:15 | <caitp> | if it's easier =) |
| 19:16 | <Hixie> | and that results in multiple patches on gsnedders' side? |
| 19:16 | <Hixie> | separate "pull requests" or whatever they're called? |
| 19:17 | <Domenic> | it results in separate commits, but not separate patches |
| 19:17 | <Domenic> | for separate patches, you should make separate branches |
| 19:17 | <Domenic> | Has anyone gotten Anolis + Travis-CI up and running? |
| 19:17 | <Hixie> | separate _branches_? |
| 19:17 | <Domenic> | Alternately, TabAtkins, how do I switch to Bikeshed? |
| 19:18 | <Hixie> | just to commit two separate files? |
| 19:18 | <Domenic> | branches are basically equivalent to commits in git |
| 19:18 | <Domenic> | they are not heavyweight as in svgn |
| 19:20 | <Hixie> | Domenic: i'm not finding anything online that leads me to that conclusions :-) |
| 19:20 | <Domenic> | Branches are pointers to commits |
| 19:21 | <Domenic> | literally if you look in the .git directory there will be files saying something like "branch_name: deadb33f" |
| 19:22 | <Hixie> | maybe i should just send gsnedders diffs |
| 19:23 | <SamB> | branches are *names* for commits |
| 19:23 | <SamB> | Hixie: you can use "git send-email" for that ;-P |
| 19:23 | <SamB> | after committing everything |
| 19:23 | <SamB> | or get format-patch |
| 19:23 | <Hixie> | is there no real documentation got git? i'm not finding anything sane on the web. |
| 19:23 | <Hixie> | for git |
| 19:23 | <Hixie> | not got git |
| 19:24 | <SamB> | you could try the manpages |
| 19:24 | <TabAtkins> | Domenic: What are you switching from? |
| 19:24 | <TabAtkins> | git manpages are terrible. |
| 19:24 | <Domenic> | TabAtkins: Anolis. Not too much complicated stuff yet. https://github.com/whatwg/streams/blob/master/index.html |
| 19:24 | <Hixie> | the man pages are impenetrable |
| 19:24 | <SamB> | hmm |
| 19:24 | <Domenic> | http://git-man-page-generator.lokaltog.net/ |
| 19:24 | <TabAtkins> | Domenic: That's pretty easy to switch from, since it's similar to the old CSSWG preprocessor, and Bikeshed is a spiritual descendent. |
| 19:25 | <TabAtkins> | I can convert for you, or you can just follow the docs and ask me questions. |
| 19:25 | <Domenic> | Hixie: http://git-scm.com/book is probably the best |
| 19:25 | <SamB> | Hixie: anwyay, the nice thing is that anything you screw up before you push, you can still fix |
| 19:26 | <Hixie> | Domenic: i don't even know where to begin with that |
| 19:26 | <Hixie> | Domenic: (i've been trying to read that for the past half hour) |
| 19:26 | <TabAtkins> | Ugh, there's a super-great visual guide to git I'm trying to find. |
| 19:26 | <Domenic> | TabAtkins: hmm documentation has gotten much better since I last saw. I'll give it a shot and ask questions if I get stuck. Thanks! |
| 19:26 | <TabAtkins> | Domenic: It's been stable for like a year, so you must have looked at it a *long* time ago. ^_^ |
| 19:26 | <TabAtkins> | https://marklodato.github.io/visual-git-guide/index-en.html |
| 19:26 | <SamB> | Hixie: maybe http://eagain.net/articles/git-for-computer-scientists/ will help? |
| 19:27 | <TabAtkins> | Hixie: ^^^ this was super informative to me. |
| 19:27 | <SamB> | Hixie: you aren't scared of DAGs are you? |
| 19:27 | <Hixie> | i'm not _scared_ of them, i just find the idea that i need to know about hashes and branches and DAGs and so forth just to submit some small diffs to be absurd |
| 19:28 | <Hixie> | TabAtkins: thanks, loking |
| 19:28 | <Hixie> | [24~looking |
| 19:28 | <Hixie> | l o o k i n g |
| 19:28 | <TabAtkins> | Hixie: The link I gave gives you a great, easy visual guide to the commands and what effect they have on the working directory, the index, and the history. |
| 19:28 | <TabAtkins> | Hahahaha |
| 19:28 | <SamB> | Hixie: well you don't have to know much about hashes to use it |
| 19:28 | <TabAtkins> | The hardest part of getting into git is (a) learning, intuitiveyl, what the index is for and why it's exposed, and (b) what commands interact with what thing. |
| 19:29 | <SamB> | call it the staging area |
| 19:29 | <TabAtkins> | Hard when you're used to a VCS that doesn't expose an index, at least. |
| 19:29 | <TabAtkins> | Yeah, same deal. |
| 19:29 | <Hixie> | TabAtkins: that explains the local stuff, but my real problem here is i don't care about the local stuff and just want to upload stuff to a remote server |
| 19:29 | <SamB> | the chief virtual of calling it an "index" is that that is less misleading than "cache" |
| 19:29 | <SamB> | er. |
| 19:29 | <Hixie> | i literally have zero use for the fact that git stores anything locally |
| 19:29 | <SamB> | s/virtual/virtue/ |
| 19:30 | <TabAtkins> | Hixie: Pushing to a remote is just (1) get the stuff into your history, then (2) git push. |
| 19:30 | <SamB> | Hixie: you do it locally and then upload when you've got all the things locally that you want remotely |
| 19:30 | <Hixie> | TabAtkins: but what does it push? |
| 19:30 | <SamB> | just pretend you are the server for the moment |
| 19:30 | <TabAtkins> | Your history. |
| 19:30 | <Hixie> | i only want to push one diff |
| 19:30 | <SamB> | Hixie: all it needs to push to keep the dag in one piece |
| 19:30 | <TabAtkins> | (Using the "visual guide" terms.) |
| 19:30 | <SamB> | you can't push a diff |
| 19:30 | <SamB> | git has no diffs |
| 19:30 | <TabAtkins> | Hixie: You're already tracking the server, right? |
| 19:31 | <TabAtkins> | So you pulled from the server, then made changes and committed them, and want to push? |
| 19:31 | <Hixie> | "tracking"? |
| 19:31 | <TabAtkins> | Sorry, I keep using terms of art. ^_^ |
| 19:31 | <SamB> | Hixie: you have it in the output of "git remote -v"? |
| 19:31 | <TabAtkins> | Point is: how did you get the code you were hacking on? |
| 19:31 | <TabAtkins> | With a `git pull`? |
| 19:31 | <Hixie> | i've no idea how i got my working directory, at this point, it's scrolled off the top of my .bash_history :-) |
| 19:31 | <TabAtkins> | Or `git clone`, whatever? |
| 19:32 | <SamB> | Hixie: so what says "git remote -v"? |
| 19:32 | <TabAtkins> | You probably cloned it. There a `.git` folder in the top-level folder? |
| 19:32 | <Hixie> | git remote -v says "origin https://github.com/html5lib/html5lib-tests (fetch)" (and origin) |
| 19:32 | <TabAtkins> | Okay, cool. |
| 19:32 | <Hixie> | er, and push |
| 19:32 | <SamB> | so yeah, you're tracking it |
| 19:32 | <Hixie> | now i have several changes in this direcory, and i'd like to submit them as separate patches. pull requests. whatever. |
| 19:32 | <TabAtkins> | Ah, you wanna do PRs. |
| 19:32 | <SamB> | hmm, separate pull requests means you'll need a branch for each |
| 19:32 | <TabAtkins> | That makes things a touch more complex. |
| 19:33 | <TabAtkins> | Want a walkthrough? |
| 19:33 | <Hixie> | if you're happy to give me one i would be much obliged, but i'd happily settle for documentation :-) |
| 19:33 | <TabAtkins> | Github's docs are okay for this, but it'll be compolicated since you've already made your changes all together. |
| 19:34 | <SamB> | "git gui" is your friend, I think |
| 19:34 | <Hixie> | they're in different files, fwiw |
| 19:34 | <TabAtkins> | Okay, that's easier. |
| 19:34 | <SamB> | oh, then "git add" is all you need |
| 19:34 | <TabAtkins> | Have you committed them yet? "No" is okay. |
| 19:34 | <Hixie> | (if they're not we'll pretend they are and then apologise to gsnedders later) |
| 19:34 | <Hixie> | nope |
| 19:34 | <TabAtkins> | Okay, cool. |
| 19:34 | <TabAtkins> | So you've got a lot of new files added, and none of them have had `git add` or `git commit` run on them yet, right? |
| 19:34 | <SamB> | ("yes" would have been okay too) |
| 19:35 | <Hixie> | no new files iirc, just edits to existing files |
| 19:35 | <Hixie> | (these are changes to the html5lib tests) |
| 19:35 | <TabAtkins> | SamB: (Yeah, but I was trying to head off a "No, but I'm doing it now"). |
| 19:35 | <TabAtkins> | Hixie: Okay. |
| 19:35 | <SamB> | Hixie: "git add" isn't just for new files |
| 19:35 | <TabAtkins> | So for each PR you wanna do, you'll need a fresh branch. |
| 19:35 | <Hixie> | ok |
| 19:35 | Hixie | grabs some wood |
| 19:35 | <TabAtkins> | So run `git checkout -b my-new-branch-name`. |
| 19:35 | <TabAtkins> | That'lll make a new branch and switch you to it. |
| 19:35 | <Hixie> | is that going to create new directories or anything? |
| 19:36 | <TabAtkins> | No. |
| 19:36 | <Hixie> | or just change the local directory to be in a branch? |
| 19:36 | <TabAtkins> | Branches are a magic git concept, not reflected in your directory structure. |
| 19:36 | <TabAtkins> | They're just a way of naming commits. |
| 19:36 | <Hixie> | so this is basically a way of naming the next commit(s)? |
| 19:36 | <TabAtkins> | The Yeah. |
| 19:36 | <SamB> | it switches which branch git considers to be your current branch |
| 19:36 | <TabAtkins> | Once you're in a new branch, `git add` the files you changed that you want to submit in a single PR, and `git commit`. |
| 19:37 | <TabAtkins> | Then make a new branch, and repeat. |
| 19:37 | <Hixie> | are these branch names local only, or should i take care to make them relevant in the future? |
| 19:37 | <TabAtkins> | Your uncommited files will follow you around as yous witch branches. |
| 19:37 | <SamB> | TabAtkins: shouldn't he switch back to "master" or whatever before he makes the next one? |
| 19:37 | <TabAtkins> | They'll go away as soona s the PR is merged. |
| 19:37 | <TabAtkins> | SamB: Oh yeah, right. |
| 19:37 | <Hixie> | ok |
| 19:37 | <SamB> | Hixie: the branch names don't have to last |
| 19:37 | <TabAtkins> | Do `git checkout master` after each commit, or your history'll be weird. |
| 19:37 | <TabAtkins> | And github will be unhappy. |
| 19:38 | <SamB> | I mean, probably the branches will be around forever but nobody will care once they've been merged up |
| 19:38 | <TabAtkins> | SamB: GH's UI lets you delete the branches. |
| 19:38 | <SamB> | well, sure |
| 19:38 | <Hixie> | where do i put the commit message? |
| 19:38 | <TabAtkins> | At least, remotely, and then that'll sync down. |
| 19:38 | <Hixie> | git commit -m"" ? |
| 19:38 | <TabAtkins> | Hixie: `git commit -m ""` |
| 19:38 | <Hixie> | k |
| 19:38 | <SamB> | but most people don't seem to bother to actually delete them ;-) |
| 19:38 | <Hixie> | and that gets sent to gsnedders somehow as part of the pull request? |
| 19:38 | <SamB> | Hixie: yes |
| 19:38 | <TabAtkins> | Not quite. |
| 19:38 | <TabAtkins> | Heh. |
| 19:38 | <TabAtkins> | This is preparing them for that. |
| 19:39 | <TabAtkins> | There are ways to do the PR from teh command-line, but I've never learned them. |
| 19:39 | <TabAtkins> | I do it through github's UI. |
| 19:39 | <zcorpan> | Hixie: you will want to checkout master (or gh-pages or whatever is the default branch) before doing the next git checkout -b foo |
| 19:39 | <Hixie> | TabAtkins: github can see my server? |
| 19:39 | <SamB> | TabAtkins: well, it does get included in the PR more-or-less |
| 19:39 | <TabAtkins> | Hixie: It can after you push. |
| 19:40 | <TabAtkins> | You'll be pushing the branches individually, and then you can tell GH to turn each branch into a PR. |
| 19:40 | <TabAtkins> | Like I said, there are more direct ways to do this last part, but I ahven't learned them yet. |
| 19:40 | <Hixie> | ok, so i've done git checkout -b format-changes; git add README.md; git commit -m"Update README file to include new and recent changes to the format" |
| 19:41 | <TabAtkins> | Now checkout master. |
| 19:41 | <TabAtkins> | Then repeat those steps for each other change. |
| 19:41 | <Hixie> | ok |
| 19:41 | <TabAtkins> | This'll clear out your working directory, which'll make things simpler if you have to resolve conflicts or whatever. |
| 19:41 | <zcorpan> | not push first? |
| 19:41 | <zcorpan> | git push origin -u format-changes |
| 19:42 | <TabAtkins> | zcorpan: Yeah, I'm just worrying about merge conflicts, though I guess that can be handled later. |
| 19:42 | <TabAtkins> | There won't be any conflict with the initial push. |
| 19:42 | <TabAtkins> | So yeah, do what zcorpan says. |
| 19:43 | <Hixie> | k |
| 19:44 | Hixie | wonders what his username is |
| 19:44 | <TabAtkins> | Is it asking for that? |
| 19:44 | <TabAtkins> | It's your github username/pw. |
| 19:44 | <zcorpan> | (if you want to make more commits to the same PR later, you can just checkout that branch and make your change, git add <file>; git commit -m "..."; git push ) |
| 19:45 | <zcorpan> | (to fix review comments or rebase etc) |
| 19:45 | <Hixie> | hm |
| 19:45 | Hixie | tries to log in via the web site |
| 19:45 | <Hixie> | i thought i knew my credentials... |
| 19:46 | <zcorpan> | Hixie: did you clone with https: URL? |
| 19:46 | <Hixie> | "The requested URL returned error: 403 while accessing https://github.com/html5lib/html5lib-tests/info/refs" |
| 19:46 | <Hixie> | so i guess yes? |
| 19:46 | <Domenic> | if you have two-factor auth on you get screwed and have to generate a new per-machine password |
| 19:47 | <Hixie> | looks like chrome knows my password |
| 19:47 | <Domenic> | good old chrome |
| 19:47 | <Hixie> | now i just need to get chrome to tell it to me :-) |
| 19:47 | <TabAtkins> | That's in your settings page. |
| 19:47 | <Hixie> | yeah, chrome i know how to use. :-P |
| 19:47 | <Hixie> | ok well it's what i thought it was |
| 19:47 | <Hixie> | weird |
| 19:48 | <Hixie> | wtf |
| 19:49 | <Hixie> | no two factor auth... |
| 19:49 | <TabAtkins> | Oooh! |
| 19:49 | <TabAtkins> | You may have used your keys, and it's asking for your key password. |
| 19:49 | <TabAtkins> | Though, if it's asking for username, that's not right. |
| 19:49 | <Hixie> | it's asking for my username first, yeah... |
| 19:50 | <TabAtkins> | Oh wait, that might still be right. |
| 19:50 | <Hixie> | my .gitconfig has different information |
| 19:50 | <Hixie> | i wonder if that's the problem |
| 19:50 | <TabAtkins> | Maybe your key password for whatever key you gave to github? |
| 19:50 | <Hixie> | TabAtkins: i have no ssh keys set up |
| 19:50 | <TabAtkins> | Okay, then never mind that. |
| 19:50 | <Hixie> | though maybe i should just do that |
| 19:51 | <TabAtkins> | It means no un/pw, so that's what I do. |
| 19:52 | <Hixie> | yeah |
| 19:52 | <Hixie> | ok done |
| 19:52 | <Hixie> | let's try git push again |
| 19:52 | <Hixie> | still asking for username |
| 19:52 | <Hixie> | wtf |
| 19:54 | <Hixie> | https://help.github.com/articles/https-cloning-errors is unhelpful... |
| 19:55 | <Hixie> | i've just discovered you can use svn with github |
| 19:55 | <Hixie> | that's rather tempting |
| 19:55 | <TabAtkins> | Haha, you'll have to learn git someday! |
| 19:56 | <caitp> | I think it just uses git-svn behind the scenes, but it's probably not as tempting as you think |
| 19:56 | <TabAtkins> | (Though, learning GitHub is somewhat harder than just learning git.) |
| 19:56 | <Hixie> | ok seriously, why is github not letting me login |
| 19:56 | <Hixie> | i can ssh to github fine |
| 19:57 | <TabAtkins> | annevk: Which spec was it that I offered to Bikeshed for you? Was it DOM? |
| 19:58 | <caitp> | Hixie: which remote url are you using? if its your own repository, and you aren't using the secure url, you should be able to login with your github user/pass |
| 19:58 | <Hixie> | https://help.github.com/articles/why-is-git-always-asking-for-my-password seems likely to be what's going on, but i don't understand the words on that page |
| 19:58 | <caitp> | if it's the secure url, you should associate a key with your account and make sure git knows where to find it |
| 19:58 | <Hixie> | caitp: i'm trying to push to https://github.com/html5lib/html5lib-tests |
| 19:58 | <Hixie> | caitp: and i have the key set up such that ssh -T git⊙gc works fine |
| 19:58 | <caitp> | if it's not an account you have write access to, you're out of luck regardless |
| 19:58 | <jamesr_> | you can push to the ssh url if you want to use ssh key to auth |
| 19:59 | <caitp> | i'm guessing you have write access to html5lib |
| 19:59 | <caitp> | actually, I don't see you in the members list for that org |
| 19:59 | <Hixie> | caitp: i'm just trying to upload a pull request, presumably i don't need any rights to do that |
| 19:59 | <TabAtkins> | Oh yeah, that's probably it. |
| 19:59 | <caitp> | for a pull request, you'd upload to your own account |
| 20:00 | <TabAtkins> | To do a PR without commit right, you need to fork the repo to your own account. |
| 20:00 | <TabAtkins> | Then you push to your fork, and issue a PR from that. |
| 20:00 | <Hixie> | (seriously, what was wrong with the way we did it five years ago) |
| 20:00 | <SamB> | TabAtkins: is there a quick way to delete all the branches then? |
| 20:00 | <TabAtkins> | The main account can then accept the PR to integrate the change into themselves. |
| 20:00 | <caitp> | defunkt's `hub` tool makes this workflow pretty nice |
| 20:00 | <caitp> | so you might want to look into that |
| 20:00 | <Hixie> | so... |
| 20:00 | <TabAtkins> | Hixie: If you have commit rights its easier. |
| 20:00 | <Hixie> | how do i do that |
| 20:00 | <Hixie> | i thought i had already done my own fork |
| 20:00 | <TabAtkins> | Go into GitHub, and click the "fork" button. |
| 20:00 | <Hixie> | isn't that the whole point of git |
| 20:00 | <TabAtkins> | Then we can change your remote. |
| 20:00 | <Domenic> | TabAtkins: what metadata can I use to get something like the headers on http://fetch.spec.whatwg.org/ et al? |
| 20:00 | <TabAtkins> | And push your branches there instead. |
| 20:01 | <caitp> | cloning and forking are distinct |
| 20:01 | <TabAtkins> | Domenic: We don't have WHATWG boilerplate yet, but you can add that yourself really easily. |
| 20:01 | <Domenic> | TabAtkins: sounds good, will do later. |
| 20:01 | <TabAtkins> | Hixie: "forking" is a GH concept, not a git one. |
| 20:01 | <Hixie> | ok https://github.com/Hixie/html5lib-tests exists, whatever that is |
| 20:02 | <TabAtkins> | Hixie: All of these instructions are *way* more complicated than they have to be, because you're working within the GH model, but didn't *start* that way. |
| 20:02 | <Hixie> | TabAtkins: i'd be happy to work in some other model if it's simpler |
| 20:02 | <TabAtkins> | Hixie: Easiest model is to ask gsnedders to give you commit rights, and just push your changes. ^_^& |
| 20:02 | <Hixie> | i just want to have gsnedders review my changes and then have them committed to the repo |
| 20:02 | <TabAtkins> | Then you can set up cleanly with the GH model. |
| 20:03 | <TabAtkins> | In the GH model, you do all your work in your own fork, and throw PRs at the main repo. |
| 20:03 | <caitp> | the GH model is typically, you have your organization with a canonical repository, which is considered upstream, you have your own fork on your own account, and you have your local clones on however many machines |
| 20:04 | <Hixie> | TabAtkins: so in the GH model, you have a local repo, and then you push to a GH repo, and then you push from there to another GH repo? |
| 20:04 | <Hixie> | man |
| 20:04 | <caitp> | so all of your pushes should be against your fork on your github account, and you can submit those pushes for review in the canonical repository, it's pretty elegant |
| 20:04 | <Hixie> | again |
| 20:04 | <TabAtkins> | You push from your local repo to your fork, then PR over to the main fork, yeah. |
| 20:04 | <Hixie> | life was so much easier back in the subversion days |
| 20:04 | <Hixie> | but whatever |
| 20:04 | <TabAtkins> | Hixie: Depends on what you mean by "easier". |
| 20:05 | <Hixie> | is there some way to change my local working copy to point to https://github.com/Hixie/html5lib-tests instead? |
| 20:05 | <TabAtkins> | The GH model is designed for easy collaboration with strangers without allowing them to stomp on everything. |
| 20:05 | <TabAtkins> | And it works, once you know how to use it. |
| 20:05 | <caitp> | this model really grows on you, I am looking forward to chromium fully switching to git so that it's less crazy |
| 20:05 | <TabAtkins> | Yes, `git remote set-url origin <url-here>` |
| 20:05 | <Hixie> | caitp: so far this model has only grown on me like a disgusting fungus :-P |
| 20:06 | <TabAtkins> | You'll have to do this for each branch, I think? I'm not super-sure, haven't done that before. |
| 20:06 | <TabAtkins> | Hixie: You're just experiencing change aversion due to trying to apply your SVG mental model on top of git. |
| 20:06 | <TabAtkins> | They're close, but not exact, so the friction feels like errors. |
| 20:06 | <Hixie> | no, i'm pretty sure it's not change aversion :-) |
| 20:06 | <TabAtkins> | Adn then having to deal with GH's structure on top of it is makign it worse. |
| 20:06 | <TabAtkins> | Having used both SVG and git extensively, I know it's not just "git is fucked up and hard". ^_^ |
| 20:07 | <TabAtkins> | It's a little bit more complex, but most of the time you don't see that, and the complexity is actually quite worthwhile. |
| 20:07 | <TabAtkins> | Hixie: You may be able to make changes directly to .git/config |
| 20:08 | <Hixie> | so .git/config has no mention of the old url at all anymore |
| 20:08 | <caitp> | the basics are super simple, and intermediate stuff like complicated rebasing and refactoring stuff across multiple commits is actually really straight forward, but I guess I should focus on meetings and do less git-evangelism |
| 20:08 | <Hixie> | but i'm still getting prompted for my username |
| 20:08 | <Domenic> | TabAtkins: what if I have <dfn>Chunks</dfn> and want to (auto?) link to it from the word "chunk" |
| 20:09 | <TabAtkins> | Domenic: That happens automatically. |
| 20:09 | <Domenic> | such magic :O |
| 20:09 | <TabAtkins> | When it doesn't, use the title attribute to provide alternate text. |
| 20:09 | <Domenic> | Is there any difference between <a> and '? |
| 20:10 | <jgraham> | Hixie: We can make this easier |
| 20:10 | <TabAtkins> | (Bikeshed automatically accounts for common plurals, possessives, and -ing for both definitions and auotlinks.) |
| 20:10 | <TabAtkins> | Domenic: Big diff. Single quotes are for CSS property autolinks. |
| 20:10 | <jgraham> | Hixie: The GitHub model is broken for cases like this |
| 20:10 | <TabAtkins> | <a> by itself is a dfn autolink. |
| 20:10 | <Domenic> | ah k |
| 20:10 | <TabAtkins> | That is, a definition of type "dfn". |
| 20:10 | <TabAtkins> | A normal term, in other words. |
| 20:10 | <jgraham> | You should push to a branch of the main repo |
| 20:10 | <jgraham> | Then gsnedders or whoever can make pushes to fix your commits if needed |
| 20:11 | <TabAtkins> | jgraham: He just needs commit right for that, which he currently doesn't have. |
| 20:11 | <jgraham> | TabAtkins: That seems like a solvable problem |
| 20:12 | <TabAtkins> | That's what I said. ^_^ |
| 20:12 | <Hixie> | ok, i've changed my password and now it lets me use that to push |
| 20:13 | <jgraham> | TabAtkins, Hixie: OK, now you have push access |
| 20:13 | <Hixie> | still isn't using ssh |
| 20:13 | <Hixie> | but whatever |
| 20:13 | <Hixie> | jgraham: ah |
| 20:13 | <TabAtkins> | Hixie: Okay, so just pushing to the main repo should be good now. |
| 20:13 | <Domenic> | General question (not Bikeshed specific): when should I use a normative vs. informative reference? |
| 20:13 | <Hixie> | does "push" affect my local repo at all? |
| 20:13 | <Hixie> | or can i just change the remote url and push again |
| 20:13 | <TabAtkins> | Domenic: Will a change in the reference cause your spec to need to change? If so, normative. |
| 20:13 | <Domenic> | In this case I am using the reference in an example, so it is presumably informative, but curious what the dividing line is. |
| 20:13 | <TabAtkins> | Hixie: Don't bother with remote urls now. |
| 20:13 | <Domenic> | TabAtkins: nice, that's a pretty clear line. thanks. |
| 20:14 | <Hixie> | Domenic: normative reference means that implementations of your spec need to read and implement the other spec or your spec won't make sense |
| 20:14 | <TabAtkins> | Hixie: But no, a push does nothing to your local repo. It just copies commits from your history to the remote repo's history. |
| 20:15 | <Hixie> | Domenic: non-normative means that the other document could be deleted from the world, and your spec would be unaffected |
| 20:15 | <Hixie> | Domenic: but that readers might still want to see that other spec for context |
| 20:15 | <Hixie> | TabAtkins: k |
| 20:15 | <Domenic> | Thanks Hixie. |
| 20:15 | <TabAtkins> | Hixie: Just like how "add" just copies changes from your working area to your staging area, and "commit" just copies changes from your staging area to your history. ^_^ |
| 20:16 | <Domenic> | TabAtkins: well, that was pretty darn easy; impressive tool. |
| 20:17 | <jgraham> | Hixie: You want to do something like git remote add github git⊙gc:html5lib/html5lib-tests.git; git push --set-upstream github HEAD:hixie/new_tests |
| 20:17 | <TabAtkins> | Starting from Anolis makes some things easy. It's also possible that your dfns aren't typed correctly yet. ^_^ |
| 20:17 | <Domenic> | TabAtkins: what's the best way to get WHATWG boilerplate in? Pull request bikeshed, or can I have it take a boilerplate from external? |
| 20:17 | <TabAtkins> | I'll give it a lookover if you want. |
| 20:17 | <Hixie> | TabAtkins: there sure are a lot of different stages in the git/gh model |
| 20:17 | <Hixie> | what is whatwg boilerplate? |
| 20:17 | <TabAtkins> | Domenic: PR bikeshed - the /include directory has all the boilerplate files. |
| 20:17 | <Hixie> | there shouldn't be any whatwg boilerplate |
| 20:17 | <TabAtkins> | Just make new ones for whatever you need. |
| 20:17 | <TabAtkins> | Hixie: The entire header and footer are boilerplate. |
| 20:17 | <Domenic> | TabAtkins: Eek, that means I have to get it running locally on Windows... wheeee |
| 20:18 | <Hixie> | there's no standard header and footer for whatwg specs |
| 20:18 | <Hixie> | unless you mean the DOCTYPE |
| 20:18 | <TabAtkins> | You should make one. ^_^ |
| 20:18 | <Domenic> | Hixie: "boilerplate" in this case includes <script> and <link> files |
| 20:18 | <TabAtkins> | But also, the Group can be as granular as needed. |
| 20:18 | <Hixie> | TabAtkins: no, i mean, there's no standard. it's whatever the spec writer wants. |
| 20:18 | <Hixie> | e.g. whatwg/html and whatwg/dom are quite different |
| 20:19 | <TabAtkins> | HTML's a special case. Everyone else is mostly different just because of the lack of a standard. |
| 20:19 | <TabAtkins> | Crafting a stadnardized header would be fine for most of them. |
| 20:19 | <Hixie> | noooooo |
| 20:19 | <Hixie> | no bureaucracy |
| 20:19 | <Hixie> | no boilerplate |
| 20:19 | <Hixie> | the spec author should be responsible for all spec content |
| 20:20 | <TabAtkins> | It's nothing to do with "bureacracy". |
| 20:20 | <TabAtkins> | It's just that the header is pretty formulaic. |
| 20:20 | <Hixie> | it shouldn't be |
| 20:20 | <TabAtkins> | And so typing it all out yourself is dumb. |
| 20:20 | <Hixie> | it should be compelling |
| 20:20 | <Hixie> | it should draw the reader in |
| 20:20 | <Hixie> | if it's formulaic then we're doing something wrong |
| 20:20 | <Hixie> | different specs have different needs |
| 20:21 | <TabAtkins> | Those needs are much less unique and special than I think you're indicating. Case in point: most WHATWG specs have nearly identical-looking headers. |
| 20:22 | <Hixie> | and they all suck |
| 20:22 | <TabAtkins> | And I'll bet that whenever Anne makes a new one, he copy/pastes from an old one. |
| 20:22 | <Hixie> | seriously they're ugly headers right now |
| 20:22 | <Hixie> | we shouldn't create new specs that look like that |
| 20:23 | <TabAtkins> | Then figure out what they *should* look like, and standardize on that. |
| 20:23 | <Hixie> | it will surely change regularly |
| 20:23 | <Hixie> | as different spec authors experiment |
| 20:23 | <TabAtkins> | Then change it regularly. |
| 20:23 | <Hixie> | there shouldn't be an "it" |
| 20:23 | <TabAtkins> | This is far easier to do when it's generated by the tool. |
| 20:24 | <Hixie> | it should just be part of the spec source |
| 20:24 | <Hixie> | there's nothing to generate |
| 20:25 | <TabAtkins> | Welp, most of it is repetitive garbage no matter what you do, so I guess I totally disagree. |
| 20:26 | <Hixie> | there shouldn't be anything repetitive about it |
| 20:26 | <Hixie> | if it's repetitive it shouldn't be in the spec |
| 20:27 | <Domenic> | I *would* be happier right now if I could just port over the existing parts of the spec source, and have Bikeshed only touch the main body of the spec... there's like 15 lines that I'm going to spend the next few hours duplicating |
| 20:28 | <TabAtkins> | Domenic: If you do that, you'll lose the auto-genned index, refs, issues index, etc. |
| 20:28 | <TabAtkins> | But you can trick Bikeshed into not doing the header generation by including a doctype. |
| 20:28 | <TabAtkins> | If the first line is the html doctype, Bikeshed assumes you're providing your own header. |
| 20:28 | <TabAtkins> | Hm, I can't remember if it still includes the footer in that case. Lemme see... |
| 20:29 | <Hixie> | um, so i broke something with this git stuff i'm doing |
| 20:29 | <TabAtkins> | Ah, it does not. |
| 20:29 | <Hixie> | i tried to be clever and use git add -p to add just one part of a change |
| 20:29 | <Hixie> | and now it's saying "error: You have local changes to 'tree-construction/template.dat'; cannot switch branches" when i try to checkout master |
| 20:30 | <SamB> | Hixie: "git stash" now |
| 20:30 | <TabAtkins> | Hixie: You need to commit them first. |
| 20:30 | <SamB> | then "git stash pop" after you switch back |
| 20:30 | <Hixie> | i did commit them |
| 20:30 | <Hixie> | i'm following the same steps you gave before :-) |
| 20:30 | <TabAtkins> | Oh, but they're to the file that's also commited. |
| 20:30 | <Hixie> | git checkout -b BRANCHNAME; git add FILES; git commit -m"MESSAGE"; git push origin -u BRANCHNAME; git checkout master |
| 20:30 | <TabAtkins> | Okay, yeah, stash. |
| 20:30 | <Hixie> | what does git stash pop do? |
| 20:30 | <TabAtkins> | `git stash` now will save and undo all the remaining uncommitted local changes. |
| 20:30 | <TabAtkins> | pop throws them away, don't do that. |
| 20:31 | <Hixie> | it says "nothing to apply" |
| 20:31 | <SamB> | hmm |
| 20:31 | <SamB> | I thought pop applied them first, THEN threw them away if that worked |
| 20:31 | <Hixie> | how do i see my "local changes"? |
| 20:31 | <Hixie> | and what are they local to? |
| 20:32 | <TabAtkins> | So, back to the visual guide. ^_^ |
| 20:32 | <Hixie> | since there's three levels just in my own repo... |
| 20:32 | <TabAtkins> | working directory is the current state of your files. |
| 20:32 | <TabAtkins> | What you actually see. |
| 20:32 | <SamB> | Hixie: once committed, they don't count as "local" according to git |
| 20:32 | <TabAtkins> | staging area is what's getting ready for a commit. |
| 20:32 | <Hixie> | so which are the local changes? staged or working? |
| 20:32 | <TabAtkins> | (This exists for a few reasons, one of which is so that `git add -p` can exist and make sense) |
| 20:33 | <TabAtkins> | It usually means "not committed". |
| 20:33 | <Hixie> | git diff looks at working vs current comitted state of the branch? |
| 20:33 | <jgraham> | Hixie: git status shows the files with changes |
| 20:33 | <TabAtkins> | git diff looks at lots of things depending on the args. |
| 20:33 | <TabAtkins> | Visual guide explains that. |
| 20:33 | <jgraham> | Split into staged / unstaged / untracked |
| 20:33 | <TabAtkins> | Better than I'd be able to. |
| 20:33 | <jgraham> | git diff shows the unstaged changes |
| 20:33 | <jgraham> | git diff --staged shows the staged changes |
| 20:33 | <Hixie> | git diff --staged is empty |
| 20:34 | <Hixie> | git status shows everything under "On branch newtemplatetest" "Changed but not updated" |
| 20:34 | <Hixie> | presumably this is because i commited just one bit of one of these changed files |
| 20:34 | <Hixie> | and it doesn't know how to throw just that change away when going back to the earlier branch |
| 20:34 | <Hixie> | while keeping my other changes |
| 20:35 | <Hixie> | so i guess i do git diff > foo.patch; git reset; patch < foo.patch ? |
| 20:35 | <jgraham> | Hixie: Can you pastebin the output somewehre |
| 20:35 | <Hixie> | output of what? |
| 20:35 | <jgraham> | No, if you're using patch files you're doing it wrong |
| 20:35 | <jgraham> | Hixie: git status |
| 20:36 | <Hixie> | damowmow.com/temp/git-output |
| 20:36 | <Hixie> | http://damowmow.com/temp/git-output |
| 20:36 | <Hixie> | $ git checkout master |
| 20:36 | <Hixie> | error: You have local changes to 'tree-construction/template.dat'; cannot switch branches. |
| 20:36 | <Hixie> | template.dat is the file for which i commited just one chunk |
| 20:36 | <Hixie> | on the current branch |
| 20:36 | <jgraham> | Hixie: Just to make sure I know, what are you trying to achieve |
| 20:37 | <jgraham> | The scrollback was quite hard to follow |
| 20:37 | <Hixie> | trying to get gsnedders a bunch of patches |
| 20:37 | <Hixie> | one for each related change |
| 20:37 | <Hixie> | (brb getting food, back in 5 min) |
| 20:37 | <jgraham> | OK, and you have committed one patch and want to make more |
| 20:39 | <TabAtkins> | jgraham: And specifically, he's commited part of a changed file with add -p, and wants the rest of the file's changes in another branch. |
| 20:39 | <jgraham> | OK |
| 20:40 | <jgraham> | Hixie: So the advice from everyone about git stash was correct |
| 20:41 | <jgraham> | git stash basically commits all the changes in your working directory to a temporary branch |
| 20:42 | <jgraham> | These temporary areas are notionally arranged as a stack |
| 20:42 | <jgraham> | so git stash; git checkout master; git stash pop |
| 20:42 | <annevk> | TabAtkins: yeah, DOM I think |
| 20:42 | <Hixie> | back |
| 20:43 | <Hixie> | jgraham: ok cool, thanks |
| 20:43 | <Hixie> | jgraham: that's basically the same as what i said about with diff and patch |
| 20:43 | <annevk> | Domenic: hmm "tee", push x to stream, read from stream (and read until empty or read current buffer) |
| 20:45 | <annevk> | Domenic: if stream is closed/open I guess |
| 20:45 | <annevk> | (I currently use "is fully read" for closed) |
| 20:47 | <Hixie> | if i added something to my staging area in error, how do i remove it? |
| 20:48 | <Hixie> | git reset? |
| 20:49 | <Hixie> | yeah that seems to be it |
| 20:49 | <Hixie> | how about a way to diff the working directory against the staged stuff? |
| 20:49 | <Hixie> | so i can tell what i haven't staged? |
| 20:49 | <TabAtkins> | Hixie: VISUAL GUIDE |
| 20:49 | <TabAtkins> | It has all of these questions in beautiful diagram form. |
| 20:50 | <Hixie> | it claims "git diff" does what i want |
| 20:50 | <Hixie> | but it's not clear that that is true |
| 20:50 | <TabAtkins> | It hasn't lied to me yet, so shrug. |
| 20:51 | <Hixie> | k |
| 20:51 | <Hixie> | part of the problem is that things that seem symmetric have entirely different names |
| 20:51 | <Hixie> | e.g. look at the diff diagram on that page |
| 20:51 | <TabAtkins> | Yes. |
| 20:51 | <Hixie> | diff maint, diff HEAD, diff, diff --cached, wtf |
| 20:51 | <Hixie> | it's all over the place |
| 20:52 | <TabAtkins> | Note that "maint" is just a branch name there, not a command. |
| 20:52 | <TabAtkins> | And HEAD is a magic commit name that always refers to the tip of your branch. |
| 20:53 | <Hixie> | yeah |
| 20:53 | <TabAtkins> | So `diff` is WD against SA, `diff <commit/branch/etc>` is WD against history, `diff <commit/etc> <commit/etc>` is commit against commit. |
| 20:53 | <TabAtkins> | The --cached one is weird, but it's also rare to have to diff staging area against history. |
| 20:53 | <Hixie> | basically i think git suffers from two fundamental problems (both made orders of magnitude worse by github): it's over-engineered, and it has a horrible inconsistent ui |
| 20:54 | <TabAtkins> | Ignore the GH parts right now. They have a simple and consistent model that is terribly confusing if you come at it piecemeal and trying to slowly adapt your working process to it. |
| 20:54 | <TabAtkins> | Once you actually learn it and use it proper, it's fairly easy and simple. |
| 20:55 | Hixie | accidentally types git checkout -p foo instead of -b foo and hopes that didn't break anything |
| 20:55 | <TabAtkins> | I can't make the same argument as strongly for git itself, because it does have some weird edges, but its core is pretty simple and elegant. |
| 20:56 | <TabAtkins> | Though again, piecemeal changing your process from SVG to git is confusing, and it burned me too. |
| 20:56 | <TabAtkins> | Once I found the visual guide everything made way more sense. |
| 20:56 | <Hixie> | i'm not trying to change my process at all |
| 20:56 | <Hixie> | i'm just trying to commit this one set of changes |
| 20:56 | <Hixie> | :-) |
| 20:56 | <TabAtkins> | Your process being "make changes, commit them". ^_^ |
| 20:57 | <TabAtkins> | Domenic: Point me to a spec that you want to use the heading portion of, and I'll make boilerplates for you to use. |
| 20:57 | <TabAtkins> | Domenic: If you and annevk can agree on what heading stuff to use, all the better. |
| 20:58 | <TabAtkins> | Domenic: Also, I'm happy to review your bikeshedded file, to make sure you're using the right dfn types (so Shepherd will be happy when it starts parsing your spec). |
| 20:59 | <Hixie> | jgraham: (btw, thanks for setting me up with access) |
| 20:59 | <Domenic> | TabAtkins: excellent. i am very close to being done with a bikeshed draft that repros my current stuff, will ping you in 10 minutes probably |
| 20:59 | <TabAtkins> | kk |
| 21:01 | <TabAtkins> | annevk: Is "dom-core.html" an important filename to maintain for the generated file? |
| 21:01 | <TabAtkins> | Totally fine if it is, just making sure what you want. |
| 21:02 | <Hixie> | TabAtkins: ok i've committed everything |
| 21:02 | <Hixie> | TabAtkins: is there somewhere i can review these changes? |
| 21:02 | <Hixie> | pushed everything ,rather |
| 21:02 | <TabAtkins> | In the github UI, you can change what branch you're looking at. |
| 21:03 | <TabAtkins> | And if you need to make changes, `git checkout my-branch-name`, make changes, commit, push. |
| 21:04 | <Hixie> | then i hit "create pull request"? |
| 21:05 | <TabAtkins> | PRing from a branch to another branch in the same repo is fiddly. |
| 21:05 | <TabAtkins> | Better to just ping gsnedders about it and let him deal with it. |
| 21:05 | <TabAtkins> | He can pull the branch and merge it himself. |
| 21:06 | <Hixie> | ah ok these are all publicly viewable already? good |
| 21:06 | <Hixie> | https://github.com/html5lib/html5lib-tests/branches |
| 21:06 | <TabAtkins> | Yeah. |
| 21:06 | <Hixie> | gsnedders: ok dude, https://github.com/html5lib/html5lib-tests/branches |
| 21:06 | <Hixie> | TabAtkins: thanks so much for the help |
| 21:06 | <Hixie> | and to everyone else also |
| 21:06 | <Hixie> | but mainly tab :-) |
| 21:06 | <TabAtkins> | Now in the *future*, this can be much easier. |
| 21:07 | <TabAtkins> | Because you can do it right from the start. |
| 21:07 | <TabAtkins> | Clone your fork instead. |
| 21:07 | <Domenic> | heh, Python doesn't like Unicode |
| 21:07 | <TabAtkins> | Then make branches whenever you want to submit something. |
| 21:07 | <TabAtkins> | *Then* the "create PR" button in GitHub is easy and does the right thing. |
| 21:07 | <TabAtkins> | Domenic: Bikeshed errors? Plz let me know, everything should be clean by now. |
| 21:11 | <TabAtkins> | annevk: Would it annoy you if I converted your indentation to tabs? |
| 21:11 | <jgraham> | TabAtkins: No it isn't |
| 21:12 | <TabAtkins> | jgraham: What isn't? |
| 21:12 | <jgraham> | Fiddly to create PRs from branches in the same repo |
| 21:12 | <jgraham> | There is like a big green button for that |
| 21:13 | <jgraham> | Working from a fork is *much* harder |
| 21:13 | <jgraham> | Because there are 3 repos to worry about rather than two |
| 21:13 | <jgraham> | and it's much harder for anyone else to help you out |
| 21:13 | <jgraham> | because they can't push commits |
| 21:13 | <TabAtkins> | jgraham: In my experience with picture-element, it was really annoying. |
| 21:14 | <TabAtkins> | But maybe that was because we used a non-master main branch. |
| 21:14 | <jgraham> | Perhaps |
| 21:14 | <TabAtkins> | The GH UI was just super-unfriendly for this. |
| 21:14 | <TabAtkins> | And defaulted to doing some crazy shit when trying to specify what branch you were PRing against. |
| 21:14 | <jgraham> | In all the situations where I use GH I vastly prefer working with one upstream rather than a fork and a master |
| 21:14 | <jgraham> | s/master/origin/ |
| 21:15 | <Hixie> | i have no experience of this, so my opinion is worthless, but what jgraham is saying makes more sense to me. :-) |
| 21:15 | <jgraham> | TabAtkins: For example https://github.com/html5lib/html5lib-tests/tree/newtemplatetest seems to be one of Hixie's branches |
| 21:15 | <jgraham> | and the green button to the left of the branch name creates a PR from that branch against master |
| 21:16 | <TabAtkins> | I've worked with several repos in the "fork and PR" model, and it's always worked well for me. |
| 21:16 | <TabAtkins> | jgraham: Okay, so my difficulty may have mainly been from the non-master main branch. |
| 21:16 | <TabAtkins> | Stupid gh-pages bullshit. |
| 21:16 | <TabAtkins> | In Anolis, does <span> by itself do anything? |
| 21:17 | <jgraham> | If you then want to make a PR against another branch, you can do it using the "pick a branch |
| 21:17 | <jgraham> | " UI after you select "create pull request" |
| 21:17 | jgraham | wished he knew that a few hours ago |
| 21:17 | <TabAtkins> | jgraham: Yeah, that UI *completely bugged out* when I last used it in the picture-element repo. |
| 21:18 | <Domenic> | TabAtkins: https://github.com/whatwg/streams/tree/bikeshed |
| 21:18 | <Domenic> | index.html is the old Anolis source; output.html is the bikeshed output. |
| 21:18 | <Domenic> | In the future will have Travis run bikeshed on gh-pages branch and not commit the output at all. |
| 21:18 | <TabAtkins> | Okay. |
| 21:19 | <Domenic> | Haven't started using implicit paragraphs yet but I think I got most other things like references and definitions updated. |
| 21:19 | <Domenic> | https://rawgit.com/whatwg/streams/bikeshed/output.html is the rendered output |
| 21:20 | <TabAtkins> | Domenic: OH man, use them. They're so good! |
| 21:20 | <TabAtkins> | Also: Markdown headings should work now. |
| 21:20 | <Domenic> | Ooooh |
| 21:20 | <TabAtkins> | But they're still technically experimental. |
| 21:20 | <TabAtkins> | Have I updated the docs yet? Hm... |
| 21:20 | <Domenic> | Can I use them for no-num no-toc or similar? |
| 21:20 | <Hixie> | <span> is just a cross-ref source (<a>) |
| 21:20 | <Hixie> | in anolis |
| 21:20 | <TabAtkins> | I have not. |
| 21:21 | <TabAtkins> | Domenic: Not quite yet. |
| 21:21 | <TabAtkins> | Domenic: I have a shorthand for adding an id, but not for marking them no-num or no-toc. |
| 21:21 | <TabAtkins> | Hixie: Thanks. |
| 21:22 | <Domenic> | TabAtkins: any other markdown features to know about? E.g. links? |
| 21:22 | <TabAtkins> | Domenic: No inline markdown yet. |
| 21:23 | <TabAtkins> | Still slightly unsure if I want to do them or not. |
| 21:23 | <Domenic> | ya |
| 21:23 | <TabAtkins> | But code blocks work. |
| 21:23 | <TabAtkins> | And I'm working on lists. |
| 21:23 | <Domenic> | oooh |
| 21:23 | <Domenic> | fenced code blocks? dare i ask, with syntax highlighting?? |
| 21:23 | <TabAtkins> | Plan to add syntax highlighting to code blocks a la gfm |
| 21:24 | <Domenic> | yessss will make these examples so much better |
| 21:24 | <TabAtkins> | Oh, I haven't added the code block support quite yet! |
| 21:24 | <TabAtkins> | I'll do that today, it's easy. |
| 21:25 | <Hixie> | ok so now that i have an html parser i need to figure out what features i need in my pipeline |
| 21:26 | <Hixie> | TabAtkins: what does bikeshed do that's critical? |
| 21:26 | <TabAtkins> | Hixie: Biggest one is cross-spec cross-references. |
| 21:26 | <Hixie> | ok, got that one |
| 21:26 | <Hixie> | outline, also |
| 21:26 | <TabAtkins> | Totally automagic unless there's a conflict. |
| 21:26 | <Hixie> | not so worried about the magic aspect, i like being explicit |
| 21:26 | <TabAtkins> | Bleh, okay. |
| 21:27 | <TabAtkins> | Railroad diagrams seem to be a lot of people's favorite feature. ^_^ |
| 21:27 | <Hixie> | i also need spec splitting, and back-references from <dfn> |
| 21:27 | <TabAtkins> | IDL auto-markup, too. |
| 21:27 | <TabAtkins> | (That is, inserting <dfn> or <a>, as appropriate, on all the things in an IDL block.) |
| 21:28 | <Hixie> | interesting |
| 21:28 | <Hixie> | i'll just stick to using <span>s for now |
| 21:28 | <Hixie> | i need to get this up and running before i start making it clever :-) |
| 21:28 | <TabAtkins> | Yeah, those were all nice-to-haves that I added later. |
| 21:29 | <TabAtkins> | cross-spec refs were the actual reason I started Bikeshed. |
| 21:29 | Hixie | adds that to the "v2" list |
| 21:44 | <Domenic> | TabAtkins: When I do "<dfn>Some term</dfn> means ..." at the start of a paragraph, it gets capitalized in the index, which seems silly. |
| 21:45 | <TabAtkins> | Domenic: You can manually specify the linking test with title='', just like Anolis. |
| 21:45 | <TabAtkins> | I don't want to tweak any capitalization normally, as that will often be wrong. |
| 21:46 | <Domenic> | niiice |
| 21:51 | <TabAtkins> | annevk: Is your definition of "throw" supposed to be the same as WebIDL's, or something different? |
| 21:56 | <TabAtkins> | annevk: Hmmmm, the version of DOM on GitHub is different from the version on whatwg.org. Where's the canonical source? |
| 21:56 | TabAtkins | is going to stop working on Bikeshedding this until figuring this out, in case he has to redo anything. |
| 22:09 | <TabAtkins> | Domenic: So it sounds like you were encountering unicode errors in Bikeshed? |
| 22:09 | <TabAtkins> | That's very strange, because unicode *definitely* works when run on linux and mac. |
| 22:10 | <TabAtkins> | So there's something wrong with your setup on Windows that is screwing things up. |
| 22:11 | <Domenic> | TabAtkins: I was actually using just the curl version |
| 22:11 | <Domenic> | albeit, via Windows curl... |
| 22:11 | <TabAtkins> | There's something getting fucked up in the middle, then. |
| 22:11 | <TabAtkins> | Hmmmm |
| 22:12 | <TabAtkins> | (The apostrophe thing is because Bikeshed automagically converts apostrophes to curly aposes when it can.) |
| 22:12 | <Domenic> | Totally willing to believe it's Windows' fault |
| 22:12 | <Domenic> | well, it shouldn't do that inside comments ;) |
| 22:13 | <TabAtkins> | Possibly, but it's done as a source-level hack, before parsing occurs. |
| 22:13 | <TabAtkins> | And comments are stripped out, too, so shrug. |
| 22:38 | <zewt> | close-quote-as-apostrophe is terrible |
| 22:38 | <TabAtkins> | Tell that to people who care about typography. |
| 22:39 | <zewt> | quotes are quotes, apostrophes are apostrophes, and ' is apostrophe |
| 22:39 | <TabAtkins> | Or a quote. |
| 22:39 | <TabAtkins> | You know, depending. |
| 22:39 | <zewt> | close-single-quote is a quote; using it as an apostrophe is just making *it* ambiguous too |
| 22:41 | <zewt> | it's absurd that unicode introduced a set of characters that are unambiguously quotes, then proceeded to recommend that everyone use them as ... apostrophes |
| 22:42 | <TabAtkins> | Unicode defines it as the preferred form. |
| 22:42 | <TabAtkins> | So shrug. |
| 22:46 | <Domenic> | Hixie: bad security cert on https://resources.whatwg.org/logo-streams.svg ? |
| 22:47 | <TabAtkins> | If you follow the link, there's a server error anyway. |
| 22:47 | <Domenic> | i was too scared of the hax0rs |
| 22:48 | <Domenic> | My Travis auto-build is working pretty awesomely though |
| 22:48 | <Hixie> | Domenic: there's no cert at all, is there? |
| 22:49 | <Domenic> | Hixie: it says there's one issued to sni.dreamhost.com |
| 22:49 | <Hixie> | odd |
| 22:49 | <Hixie> | i'm surprised there's even an https server at that domain |
| 22:49 | <Domenic> | I kind of thought we fixed this somewhat recently and got resources working over https |
| 22:49 | <Hixie> | oh |
| 22:49 | <Hixie> | of course there is |
| 22:49 | <Hixie> | it's the same IP as whatwg.org |
| 22:49 | <Hixie> | we got a cert for www.whatwg.org for one year |
| 22:49 | <Domenic> | gtg grab food before kitchen closes, bbiab |
| 22:49 | <zewt> | missing intermediate CAs? |
| 22:49 | <Hixie> | but didn't get any other certs |
| 22:50 | <Hixie> | and i don't expect to renew the one in one year, either, given how much of a pain that was |
| 22:50 | <Hixie> | if anyone wants to take charge on this, be my guest :-) |
| 22:50 | <zewt> | it's pretty simple, but it's definitely lame to have to pay the SSL Tax, heh |
| 22:51 | <Hixie> | i found some free provider |
| 22:52 | <zewt> | the only free certificate providers i tried were a huge pain in the ass |
| 22:52 | <Hixie> | see above. :-) |
| 22:52 | <zewt> | but that's the fault of the shtity provider |
| 22:52 | <zewt> | also shitty |
| 22:53 | <zewt> | i think the one I tried wanted users to create client certificates to log in and didn't have passwords at all, which is a nice option but given the actual level of security certs provide, absurd to require |
| 22:54 | <Hixie> | yep, that's the one |
| 22:54 | <zewt> | yeah. better off just paying the $20 or whatever on a real provider |
| 22:55 | <Hixie> | send me the $20 and i'll get right on that :-) |
| 22:55 | <Hixie> | i'm already paying plenty to actually host the server |
| 22:55 | <Hixie> | that seems to me to have a higher benefit-per-dollar ratio |
| 22:56 | <zewt> | my SSL cert off of godaddy was $13/year for a 5-year |
| 22:56 | <zewt> | (single domain, not wildcard; those are the ones they want stupid money for) |
| 22:56 | Hixie | mumbles something about "." and ".." messing up his "is this directory empty" logic |
| 22:56 | <Hixie> | given how many domains whatwg.org has, it might be best to go wildcard |
| 22:57 | <zewt> | of course, the "xhr.spec.whatwg.org" hostname layout will screw you there, too |
| 22:57 | <zewt> | never use hostnames more than one deep |
| 22:58 | <Hixie> | it's not really clear to me why we care about encryption here anyway |
| 22:58 | <Hixie> | they're specs |
| 22:58 | <Hixie> | we _want_ people to read them |
| 22:58 | <Hixie> | and it's not like some encryption is going to stop people from inserting random crap into them |
| 22:58 | <Hixie> | the w3c already does that in broad daylight |
| 22:58 | <zewt> | heh godaddy wants $300/year for wildcard |
| 22:59 | <zewt> | (but they also want $70/year for regular--you have to search out coupon codes to get the real prices, I guess there's no avoiding some form of stupid crap) |
| 23:00 | <zewt> | which is probably why I renewed for 5 years, I probably found a good coupon (also it means I don't have to screw with it for a long time) |
| 23:00 | <zewt> | i suppose it's unlikely that somebody would bother initiating an MITM attack on whatwg.org that randomly changes the word "must" to "should" |
| 23:01 | <Hixie> | not only is it unlikely, it'd be pretty hilarious |
| 23:13 | <Hixie> | hm |
| 23:13 | <Hixie> | doing those commits and stuff seems to have removed some of the changes from my local copy |
| 23:13 | <Hixie> | TabAtkins: is there some way to fetch all the changes back somehow? |
| 23:14 | <Hixie> | i'm not sure i even know what question i should be asking |
| 23:14 | <TabAtkins> | Hixie: You probably ruined everything at some point, so... no. |
| 23:14 | <TabAtkins> | But... maybe. |
| 23:14 | <TabAtkins> | Probably no. |
| 23:14 | <Hixie> | it ssays i'm "ahead by two commits" |
| 23:15 | <Hixie> | is there some way to see what those are? |
| 23:15 | <Hixie> | ("it" being sgit status) |
| 23:15 | <Hixie> | git |
| 23:15 | <TabAtkins> | That means you've got two commits more than your remote repo. |
| 23:15 | <jgraham> | git log @{u}.. |
| 23:15 | <TabAtkins> | I have no idea what that means. |
| 23:15 | <jgraham> | @{u} is short for @{upstream} |
| 23:16 | <jgraham> | Which is the upstream branch that the current branch is tracking |
| 23:16 | <Hixie> | how do i get a diff though? |
| 23:16 | <jgraham> | git dif @{u}.. |
| 23:16 | <jgraham> | *diff |
| 23:16 | <Hixie> | that didn't show me anything |
| 23:16 | <Hixie> | (i tried that) |
| 23:17 | <Hixie> | the log gives two checkins from march |
| 23:17 | <Hixie> | which seems unlikely? |
| 23:17 | <jgraham> | Well what does git show HEAD show? |
| 23:17 | <Hixie> | it gives a commit id |
| 23:17 | <Hixie> | and a couple of merge ids |
| 23:17 | <Hixie> | and then says me, and march |
| 23:17 | <Hixie> | no idea what to do with that |
| 23:18 | <jgraham> | You have a merge in your history? That sounds pretty odd |
| 23:19 | <Hixie> | it's the way that git diff gives no content that baffles me |
| 23:19 | <caitp> | what is the git diff command you're using? |
| 23:19 | <caitp> | just git diff BASE HEAD? |
| 23:20 | <Hixie> | git diff <blabla> where blabla is the id of any of the last three checkins in git log |
| 23:20 | <Hixie> | git diff BASE HEAD says "fatal: ambiguous argument 'BASE': unknown revision or path not in the working tree" |
| 23:20 | <caitp> | I should have said <BASE> |
| 23:21 | <caitp> | and <HEAD>, like, the base revision and the head revision you want to check against it |
| 23:23 | <Hixie> | assuming these commits were just me messing about, and are in fact empty |
| 23:23 | <jgraham> | Hixie: If it's a merge commit and there are no conflicts there wouldn't be any |
| 23:23 | <Hixie> | how do i throw them away and just be at tip of tree? |
| 23:23 | <Hixie> | i just want to be at whatever html5lib is, then i want to pull in all my changes i uploaded earlier |
| 23:23 | <Domenic> | <Hixie> the w3c already does that in broad daylight // literal lol'ing happened |
| 23:26 | <jgraham> | Hixie: You have just seperated out all your changes into seperate branches |
| 23:26 | <Hixie> | yes |
| 23:26 | <jgraham> | It's not terribly easy to get into a state where you have the changes from all of those branches at the same time |
| 23:27 | <jgraham> | I mean you can |
| 23:27 | <jgraham> | But you probably don't want to |
| 23:27 | <Hixie> | my code won't compile until i do... |
| 23:27 | <Hixie> | well, it'll compile, but it won't pass its tests |
| 23:27 | <TabAtkins> | You really want to wait until they're accepted, then just pull the main repo again. |
| 23:28 | <TabAtkins> | That'll have everything in it at that point. |
| 23:28 | <Hixie> | i really want to run my code right now :-) |
| 23:28 | <Hixie> | i presumably have these branches locally |
| 23:28 | <Hixie> | i wonder if i can stash each one and pop it on my main branch |
| 23:28 | <TabAtkins> | Nothing to stash, as they're all committed up. |
| 23:29 | <TabAtkins> | You can make a separate branch, rebase all the other branches over it. That might work? |
| 23:29 | <TabAtkins> | Or just merge them all, possibly simpler. |
| 23:29 | <TabAtkins> | (Merge on a separate branch.) |
| 23:29 | <jgraham> | You can make a branch and cherry-pick all the changes onto it |
| 23:29 | <Hixie> | no idea what "rebase" means, but ok? |
| 23:29 | <caitp> | rebase is fun, you'll love it |
| 23:29 | <jgraham> | Don't try to use rebase |
| 23:29 | <caitp> | haha |
| 23:29 | <caitp> | aw. |
| 23:30 | <jgraham> | It's an awesome tool, but not what you want in this case |
| 23:30 | <Hixie> | how do i find a list of all my branches? |
| 23:30 | <jgraham> | git branch |
| 23:30 | <jgraham> | then create a new branch |
| 23:30 | <caitp> | git branch -a or -v, to list branches |
| 23:30 | <jgraham> | git checkout -b all_hixie_changes origin/master |
| 23:30 | <jgraham> | Just git branch in this case |
| 23:31 | <caitp> | ah I guess branch on its own does list them, without remotes |
| 23:31 | <jgraham> | (the second argument to git checkout means that the branch starts off at origin/master) |
| 23:31 | <jgraham> | And then for each branch that you have created |
| 23:31 | <jgraham> | git cherry-pick my_other_branch_name |
| 23:32 | <jgraham> | Which will take the topmost commit from the other branch and put it onto your combined branch |
| 23:32 | <Hixie> | cool, thanks |
| 23:32 | <jgraham> | I am assuming that there is only one commit on each of the other branches |
| 23:32 | <Hixie> | let's assume that for now |
| 23:32 | jgraham | -> slep |
| 23:32 | <jgraham> | *sleep |
| 23:33 | <Hixie> | nn! |
| 23:33 | <jgraham> | Hixie: I strongly recommend reading something that explains the git data model |
| 23:33 | <Hixie> | and thanks for the help |
| 23:33 | <Hixie> | the data model isn't really the source of my confusion |
| 23:33 | <jgraham> | Once you basically understand that everything becomes much simpler |
| 23:33 | <caitp> | the workflow? |
| 23:33 | <Hixie> | i mean, i get the model, it's the just UI for manipulating the model makes no sense to me |
| 23:33 | <caitp> | yeah |
| 23:34 | <jgraham> | My experience is once you understand the data model the manipulation of it makes a lot more sense |
| 23:34 | <Hixie> | you use IDs here, branches there, weird punctuation in the other place, or arguments, all depending on... some black magic logic |
| 23:34 | <Hixie> | i mean why "origin" but "@{u}" ? |
| 23:34 | <jgraham> | http://wildlyinaccurate.com/a-hackers-guide-to-git |
| 23:34 | <Hixie> | instead of @{o} and @{u} or origin and upstream? |
| 23:34 | <jgraham> | Probably not the best guide, but I saw it recently and it |
| 23:35 | <jgraham> | 's not inaccurate |
| 23:35 | <Hixie> | and fundamentally imho it's just over-engineered. but then i don't want distributed version control... |
| 23:36 | <zewt> | i have no idea what @{u} is and i've used git for a couple years now |
| 23:36 | <caitp> | i'm not sure what "@{u}" is supposed to be either, and I'm pretty good with git |
| 23:36 | <zewt> | there are tons of things you just don't need to know in git |
| 23:36 | <Hixie> | that's pretty much the problem |
| 23:36 | <Hixie> | and a pretty clear sign of something being over-engineered |
| 23:37 | <Hixie> | personally i think _svn_ is too complicated |
| 23:37 | <jgraham> | It's really not over-engineered |
| 23:37 | <jgraham> | If anything it's too simple |
| 23:37 | <gsnedders> | Hixie: you can use names of branches as aliases for the commit at the top of the branch |
| 23:37 | <gsnedders> | Hixie: likewise tags |
| 23:37 | <jgraham> | Most of the things that confuse people are because the data model is poking through |
| 23:37 | <zewt> | there are definitely things which are weird and unobvious which suggests questionable design to me |
| 23:37 | <gsnedders> | git's data model is /really, really, really/ simple. And arguably the problems are lack of absractions on it. |
| 23:38 | <caitp> | add, rm, commit, rebase, push, pull, checkout, remote cherry-pick, format-patch, am, log, and maybe rev-parse for scripting, and not necessarily in that order |
| 23:38 | <caitp> | most of those commands are simple and self-explanatory |
| 23:38 | <jgraham> | e.g. origin/master is literally the path .git/refs/origin/master |
| 23:38 | <jgraham> | Which is a file containing a SHA1 |
| 23:38 | <jgraham> | Which points to the head of the origin/master branch |
| 23:39 | <jgraham> | caitp: ref-log is also useful |
| 23:39 | <Hixie> | i just want a remote file system that's versioned |
| 23:39 | <Hixie> | no branches, tags, local repos, etc |
| 23:39 | <zewt> | different workflows need different thing |
| 23:39 | <Hixie> | just a way to commit, a way to diff, a way to revert |
| 23:39 | <jgraham> | Yeah, but that's not what we want in order to share work with you |
| 23:40 | <zewt> | i've never once needed format-patch |
| 23:40 | <Hixie> | i'm not really looking to share work with anyone :-P |
| 23:40 | <jgraham> | Well here you are |
| 23:40 | <jgraham> | But your needs are strange because you usually work alone |
| 23:40 | <caitp> | format-patch made working on mozilla-central from git a lot easier |
| 23:40 | <jgraham> | That is very much the 0.1% case |
| 23:40 | <jgraham> | caitp: moz-git-tools |
| 23:40 | <caitp> | this was from a while back |
| 23:40 | <zewt> | the whole "patch sets to mailing lists" workflow seems pretty terrible to me, heh |
| 23:41 | <jgraham> | Yeah, it is |
| 23:41 | <jgraham> | The whole patches attached to bugzilla workflow is also terrible |
| 23:41 | <zewt> | the #1 biggest thing open source has gained from git is being able to send patches *without* having to send patches |
| 23:41 | <Hixie> | i think people working alone is more like the 99.999% case, but sure |
| 23:41 | <Hixie> | i agree that other people have other needs |
| 23:41 | <caitp> | in some ways, I think bugzilla's model kind of beats rietveld. _. |
| 23:42 | <zewt> | fork github project, make changes in a branch, send a PR, and the whole "sending a patch" thing is invisible--which has lowered the bar for sending patches massively |
| 23:42 | <Hixie> | alright, my tests pass again |
| 23:42 | <Hixie> | excellent |
| 23:42 | <caitp> | horray |
| 23:42 | <Hixie> | jgraham: thanks again, btw, especially for putting up with my whining |
| 23:42 | <jgraham> | zewt: Yeah, it's pretty amazing that forms the central value proposition of github |
| 23:43 | <jgraham> | Especially when their implementation is so halfassed |
| 23:43 | <gsnedders> | jgraham: thanks for putting up with Hixie's whining so I could go and drink cider |
| 23:43 | <jgraham> | Hixie: np |
| 23:43 | <zewt> | oddly i tend to make a comparison between git and twitter--twitter has essentially zeroed the cost for sending a message to someone else (even if those messages are excessively limited) |
| 23:43 | <Hixie> | gsnedders: https://github.com/html5lib/html5lib-tests/branches |
| 23:44 | <gsnedders> | Hixie: aye, I saw in the backlog |
| 23:44 | <gsnedders> | tomorrow's problem, assuming I don't kill someone and end up in jail during driving lesson :) |
| 23:44 | <jgraham> | gsnedders: I doubt the cider will help</protip> |
| 23:44 | jgraham | really is going to sleep now |
| 23:45 | <Hixie> | gsnedders: roger, good luck |
| 23:45 | <TabAtkins> | Ooh, yeah, "Hacker's Guide to Git" works quite well as an explanation of the data model. |
| 23:45 | <gsnedders> | jgraham: I'm pretty sure I can cope with one bottle ten hours before. |
| 23:46 | <zewt> | git is one of those things that you sort of have to both 1: read a bunch and then 2: suck up and use it for a couple months to get past the curve |
| 23:46 | <zewt> | which isn't an indicator of great design, but worth it in its case |
| 23:48 | <TabAtkins> | I think it's easier if you didn't learn a previous VCS. |
| 23:49 | <TabAtkins> | But yeah, intuitively getting what commits/tags/branches represent, and how they're different from files and folders, is a little hard. |
| 23:49 | <zewt> | rebasing can be a bit tricky too |
| 23:49 | <gsnedders> | most of git makes sense if you understand the underlying model |
| 23:49 | <TabAtkins> | Super-easy once you understand cherrypicking. |
| 23:49 | <gsnedders> | but only if you understand the underlying model |
| 23:49 | <TabAtkins> | Because rebase is just "automatically cherry-pick everything from the common ancestor to here for me". |
| 23:49 | <zewt> | what helped me a lot was to peek into .git while it was rebasing; once you see a directory with a couple dozen numbered patch files, it's pretty clear what it's doing |
| 23:51 | <zewt> | i guess one of the weaker points is force pushing |
| 23:51 | <zewt> | because explaining it goes like this: "you should never ever ever do this, except when you should" |
| 23:52 | <zewt> | that might be more due to the github pull request model that was layered on top (where you have to force push over the PR branch to update it); in the original linux kernel model maybe there was no normal workflow reason to ever do it |
| 23:53 | <gsnedders> | you should always assume others have cloned your repo and have things based on that branch |
| 23:53 | <gsnedders> | hence getting rid of that is bad |
| 23:55 | <TabAtkins> | What *&is* a good reason to force push? |
| 23:55 | <TabAtkins> | I've never had to do so. |
| 23:56 | <gsnedders> | A good reason? You committed your password to the repo and want to entirely remove it from history. |
| 23:56 | <gsnedders> | However, note anyone who already has a clone still has it |
| 23:57 | <TabAtkins> | Right, you can't amend othe rpeople's histories. |
| 23:57 | <gsnedders> | The typical case in the GitHub case is when rebasing a PR |