00:57
<Hixie>
AlexNRoss: did you mean "nofollow"?
01:03
<AlexNRoss>
No, I meant "dofollow".
01:03
<Hixie>
oh
01:03
<Hixie>
never heard of it
01:04
<AlexNRoss>
http://www.inlineseo.com/dofollowdiver/
01:05
<AlexNRoss>
It encourages bots to follow the link.
01:05
<AlexNRoss>
nofollow discourages them. However, they can still go to the link.
01:06
<AlexNRoss>
It is a SEO initiative that started months ago. It's irritating that it hasn't been implemented into the spec yet; I even submitted it to the spec to be added.
01:07
<eightfold>
i'm here for the pseudo-class action
01:08
<eightfold>
a:visited:after { content: "(you've been here before)"; }
01:08
<eightfold>
should be valid?
01:09
<heycam>
jgraham, re your test, I did some similar testing recently for array index properties http://www.w3.org/mid/20110503052431.GN2576⊙wmia
01:09
<heycam>
jgraham, and I think the answer should depend on what comes out of that thread
01:10
<heycam>
the current way that named/indexed properties are handled sucks a bit
01:10
<heycam>
it's a little awkward having to look at what own properties already exist on the object, whether they're configurable or not, etc., so that they can be explicitly overwritten
01:11
<heycam>
having a [[Get]] & [[Put]] layer over the top of the object seems cleaner and easier to understand
01:12
<heycam>
I did change the spec to this "looking at what properties exist on the object and having real properties set on the object when collection elements are added" way because TC39 folks were unhappy with the custom [[Get]]/[[Put]] semantics that used to exist in the spec
01:12
<heycam>
but now they seem to be ok with it
01:12
<heycam>
(with the Proxy proposal moving forward)
01:13
<kevogod>
eightfold, Is valid code according to http://jigsaw.w3.org/css-validator/validator at least
01:13
<heycam>
jgraham, so to answer a slightly different question: what I want that test to log is true, [object HTMLImageElement], true
01:14
<Philip`>
AlexNRoss: That page says "DoFollow doesn't technically exist, instead, it is the absense of the "nofollow" tag in a link."
01:14
<Philip`>
AlexNRoss: Bots follow all links anyway (and sometimes follow things that aren't even links), there's no point explicitly marking any as followable
01:15
<AlexNRoss>
Philip`: I'm aware of this, but using "dofollow" is basically putting a big "follow this link" sign right on it.
01:16
<Philip`>
AlexNRoss: Since bots have no reason to ever care about such a sign, why put it up?
01:17
<AlexNRoss>
Philip`: It's an initiative, if people start using it, bots will use it more widely.
01:17
<Philip`>
Why would bots use it, instead of just following all links (like they do already)?
01:17
<AlexNRoss>
Philip`: https://encrypted.google.com/search?q=google+dofollow&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-CA:official&client=firefox-a
01:18
<Philip`>
That doesn't seem to be answering any questions :-p
01:20
<AlexNRoss>
Google already acknowledges it. That is what I was showing.
01:20
<AlexNRoss>
So, if it becomes official in the spec, more search engines are likely to make use of this.
01:20
<Philip`>
Where do they acknowledge it?
01:20
<AlexNRoss>
Read the search findings.
01:21
<kevogod>
...
01:21
<AlexNRoss>
http://www.verticalmeasures.com/miscellaneous/googles-take-on-nofollow-vs-dofollow-2/
01:21
<AlexNRoss>
Perfect example.
01:22
<Philip`>
That's just a load of people using it as a kind of pun for a phrase meaning not-nofollow
01:22
<Philip`>
i.e. for <a href>
01:22
<Philip`>
which happens to be a perfectly good way of marking up links that bots should follow
01:52
<Hixie>
AlexNRoss: nofollow doesn't actually mean "don't follow the link", it means "don't give this link any credibility"
01:52
<Hixie>
AlexNRoss: i can't find anything that suggests "dofollow" would do anything useful
02:00
<erlehmann>
nofollow is a pretty bad choice for that kind of attribute value
02:01
<Hixie>
no argument from me there
02:01
<Hixie>
heycam: btw i really think we should reconsider this foo? syntax in WebIDL
02:02
<Hixie>
heycam: having to put question marks in every IDL block is going to take me weeks
02:02
<kevogod>
Hixie, To answer eightfold's question, is a:visited:after { content: "(you've been here before)"; } valid? I do not see anything in the spec saying pseudo-elements can work with pseudo-classes.
02:02
<Hixie>
heycam: can't we do it the other way around? have an exclamation mark for the opposite case?
02:02
<Hixie>
kevogod: which spec?
02:02
<erlehmann>
kevogod, history sniffing, do you know it? i believe this will not work.
02:03
<kevogod>
Hixie, http://www.w3.org/TR/CSS2/
02:03
<Hixie>
good lord
02:03
<Hixie>
CSS2 is over 13 years obsolete
02:03
<Hixie>
don't look at that
02:03
<erlehmann>
kevogod, i had that same trick (with a check mark :after :visited links) ruined by the history sniffing countermeasures.
02:03
<heycam>
Hixie, weeks? of course it is possible to do it the other way around for types that previously had "null" as part of them. I chose this way to avoid having both "?" and "!".
02:03
<Hixie>
kevogod: :hover::after { content: '<has hover!' } should work fine
02:03
<heycam>
Hixie, let me take a look at the html spec and determine how many "?"s would really be needed
02:03
<erlehmann>
kevogod, i believe :visited changes can only affect color.
02:04
<Hixie>
kevogod: with :link it's a bit more dodgy because of the history thing as erlehmann says
02:04
<erlehmann>
but i am too lazy looking it up. have to work on a minecraft clone.
02:04
<erlehmann>
:3
02:04
<Hixie>
kevogod: but anyway, http://dev.w3.org/csswg/selectors3/ is where you want to go for selectors
02:04
<Hixie>
heycam: i think i would want it everywhere
02:05
<erlehmann>
kevogod, oh well. read this <http://dbaron.org/mozilla/visited-privacy>;
02:05
<heycam>
Hixie, there are really no cases where you want to throw if null is passed as an argument where an object is expected?
02:05
<Hixie>
heycam: since that's what was assumed until now, so all the prose assumes null is always allowed
02:05
<Hixie>
heycam: i'm sure there's lots of cases. but they already throw.
02:05
<heycam>
Hixie, I see
02:05
<Hixie>
i could see slowly one-by-one moving them to using IDL instead of prose to require it
02:06
<heycam>
which you could do with "!"...
02:06
<Hixie>
right
02:06
<heycam>
ok, I'll think it over :)
02:06
<dbaron>
Hixie, follow the CSS2 link, it's updated
02:07
<heycam>
Hixie, do you mind to file a bug on it?
02:07
<erlehmann>
hey, dbaron, nice job ruining our :visited selector ;D
02:07
<Hixie>
dbaron: the css2 link should point to http://www.w3.org/Style/Group/css2-src/cover.html :-P
02:07
<Hixie>
heycam: sure
02:07
<heycam>
thanks
02:08
<kevogod>
Hixie, http://dev.w3.org/csswg/selectors3/#gen-content refers to the CSS 2.1 spec so it does not necessarily clarify that ::before or :after can be applied to pseudo-classes.
02:09
<Hixie>
heycam: reopened http://www.w3.org/Bugs/Public/show_bug.cgi?id=10640
02:10
<heycam>
k
02:10
<Hixie>
heycam: if you do want to give me a diff (against the .../source file) then i probably wouldn't complain either
02:10
<Hixie>
heycam: (per your comment in there)
02:10
<Hixie>
heycam: you're one of hte few people i'd trust to not screw something like that up :-)
02:10
<heycam>
:)
02:11
<heycam>
if even with prose changes most types still get a "?", then changing to "!" would be better
02:11
<kevogod>
Nor do I see where it says a pseudo-element can be applied to a pseudo-class in http://dev.w3.org/csswg/selectors3/#pseudo-elements
02:11
<heycam>
so I will check that first
02:11
<Hixie>
there's 183 idl blocks in the spec
02:12
<Hixie>
kevogod: it's not applied to a pseudo-class
02:12
<Hixie>
kevogod: every selector can have one pseudo-element
02:12
<Hixie>
kevogod: and any number of combinators, pseudo-classes, normal classes, ids, attribute selectors, etc
02:12
<Hixie>
kevogod: (and one type selector per "chain")
02:12
<kevogod>
OK, that clears it up. Thanks Hixie.
02:13
<Hixie>
np
02:13
<The_8472>
too bad we can't style with xpath
02:13
Hixie
shudders
02:14
<The_8472>
think about it. absolutely position -> not in the flow -> i have to give the container some extra class/id just to give it dimensions
02:14
<The_8472>
with xpath that would go away
02:15
<The_8472>
but i guess that would be too expensive to parse
02:15
<Hixie>
how would you do it with xpath?
02:15
<The_8472>
ancestor axis
02:16
<Hixie>
oh well we can add that to selectors too
02:16
<Hixie>
that's not an xpath vs selectors thing
02:16
<Hixie>
selectors has intentionally avoided having such a feature because it's a perf nightmare
02:16
<The_8472>
i thought things are only supposed to go downwards/forwards in CSS
02:16
<Hixie>
right, i'm just saying that if that's what you're missing, it'd be easier to add it to selectors than replace selectors with xpath
02:17
<The_8472>
yeah, but that's just one example. i might want to do something with previous siblings instead... sibling axis
02:17
<Hixie>
my :matches(...#...) proposal handles all of that
02:17
<The_8472>
m'kay
02:18
<TabAtkins>
The_8472: Both of those are perfectly compatible with CSS, we've just avoided them for performance reasons, like Hixie said.
02:18
<Hixie>
a:matches(#+b) matches an a followed by a b sibling
02:18
<TabAtkins>
The downwards/forwards restriction means you can match selectors against an element *while* parsing a document, using only the information you've already parsed.
02:18
<Hixie>
a:matches(#>b) matches an a followed by a b child
02:18
<The_8472>
also, someone slap google for putting w3schools ontop of the results for anything web standard related
02:18
<The_8472>
their site is horrible
02:19
<zewt>
at least google finally added an "ignore this site forever" thing, heh
02:19
<Hixie>
The_8472: when you get a result, click it, hit back, then hit "block this site"
02:19
<zewt>
been wanting that for years
02:19
<The_8472>
mhm... but then i have to allow cookies for google
02:19
<zewt>
(now if only they'd stop fuzzing searches to death so i have to +prefix +every +word +of +every +search +to +make +it +not +add +typos +for +me)
02:19
<TabAtkins>
Google is your friend. Do what Google says.
02:19
<Hixie>
you really should log in to google anyway, it makes your results way better
02:20
<Hixie>
(disclaimer, tab and i work for google)
02:20
<kevogod>
Google tricks me into searching while logged in due to their universal log-in.
02:21
<kevogod>
:)
02:26
<The_8472>
Hixie, so... i could use that to select the previous sibling of a specific type too?
02:27
<The_8472>
ah, yeah. neat
02:27
<The_8472>
<TabAtkins> The downwards/forwards restriction means you can match selectors against an element *while* parsing a document, using only the information you've already parsed. <- just like C was designed to for a single-pass compiler. and we're all using multi-pass ones today ;)
02:28
<The_8472>
imo the runtime complexity class is more important than having to wait for the document to finish to load for (some) selectors.
02:29
<The_8472>
but it doesn't look like one can construct NP-hard statements with that ^^
02:29
<Hixie>
it's not so much to allow single-pass (you already can't do that with e.g. :last-child)
02:30
<Hixie>
it's to allow you to style the document without having to do a full crawl of the entire document for each element
02:30
<TabAtkins>
The_8472: That's why there isn't any inherent restriction against that sort of thing. It's just not possible with currently-defined syntax, is all.
02:30
<Hixie>
consider *:matches(.foo) { }, for example, which would match any element if the document had a class=foo element in it
02:30
<Hixie>
for every element, you'd have to walk the entire document (modulo caching)
02:31
<The_8472>
well, but that is traversing the entire document once
02:31
<The_8472>
you could try to evaluate all those conditions at once
02:32
<TabAtkins>
Which isn't really a problem once the entire document is present, but it means that you can't determine if that selector matches until the entire document loads.
02:32
<Hixie>
or :matches(.foo .bar ~ .baz #) which for every element would require crawling huge parts of the dom and would be very difficult to cache efficiently
02:32
<TabAtkins>
...Hixie, that's equivalent to just omitting :matches().
02:32
<The_8472>
TabAtkins, that should be acceptable i think. fancy javascript stuff doesn't load either until the dom is there
02:32
<Hixie>
TabAtkins: that's not such a big problem, document load is just like dynamic changes to the dom
02:32
<TabAtkins>
The_8472: It's not acceptable.
02:33
<Hixie>
er, i had my example backwards
02:33
<Hixie>
i meant :matches(# .foo ~ .bar .baz)
02:33
<TabAtkins>
The_8472: You want to be able to display a page *as* it loads.
02:33
<TabAtkins>
And preferably as complete as possible, to minimize visual jank.
02:33
<The_8472>
so just display it based on the the forward-evaluateable rules
02:34
<The_8472>
you already have to do that, think of nth-last-child
02:34
<TabAtkins>
Those are *very* rarely used.
02:34
<TabAtkins>
And they do indeed slow the document down when you use them.
02:34
<The_8472>
should do that on a separate thread
02:34
<Hixie>
they don't slow the document down anywhere near as much as :matches() would :-)
02:34
<The_8472>
snapshot the graph and do some traversing to match the selectors
02:35
<TabAtkins>
Doesn't help. You're still doing multiple layouts over the same tree. Once a new selector is found to match, you have to throw away most of your progress over the subtree and start again.
02:35
<The_8472>
of course nobody designed/implemented dom with multithreading in mind :/
02:35
<TabAtkins>
Because one value changing can percolate down via inheritance, etc.
02:35
<The_8472>
TabAtkins... same when JS does dynamic stuff on dom ready
02:36
<The_8472>
simple sites won't need it and complex sites will already be... complex
02:36
<The_8472>
but yes, it'll certainly not work well with naive implementations
02:37
<TabAtkins>
The problem is that people don't think of CSS as complex. We'd prefer that the performance impact be small before adding them.
02:37
<Hixie>
bbl
02:37
<TabAtkins>
s/naive/all current/
02:40
<The_8472>
the loops that this combined with calc() might create are far more interesting
02:40
<The_8472>
mh, nvm
02:41
<The_8472>
it would just override it
13:24
<karlcow>
http://forums.silverlight.net/forums/p/230502/562113.aspx :D
16:07
<MikeSmith>
Hixie: I reverted the Overview.html copy in cvs to a version which you should be able to commit over without conflicts
16:08
<MikeSmith>
but if you do get conflicts, then, yeah, please do feel free to just blow it away and replace it
16:48
<gsnedders>
CSSOM View defines offsetTop giving the offset to the body element (in the case where there's no position properties). How do you find the offset of the body element to the viewport? (Or the offset of an arbitrary element to the viewport?)
18:41
<AryehGregor>
So Google's finally come out behind microdata instead of RDFa for search results, it seems.
18:42
<AryehGregor>
Apparently Microsoft and Yahoo! too, if they're backing schema.org, although I notice the whois goes to Google.
18:43
<AryehGregor>
(they clearly are backing schema.org, they've got blog posts announcing it too)
18:44
<AryehGregor>
http://schema.org/docs/faq.html#14
18:44
<AryehGregor>
"Focusing on microdata was a pragmatic decision. Supporting multiple syntaxes makes documentation for webmasters more complex and introduces more overhead in terms of defining new formats. Microformats are concise and easy to understand, but they don't offer an open extensibility mechanism and the reuse of the class tag can cause conflicts with website CSS. RDFa is extensible and very expressive, but the substantial complexity of the language
18:44
<AryehGregor>
has contributed to slower adoption. Microdata is the most recent well-known standard, created along with HTML5. It strikes a balance between extensibility and simplicity, and is most suitable for building the schema.org. Google and Yahoo! have in the past supported both microformats and RDFa for certain schemas and will continue to support these syntaxes for those schemas. We will also be monitoring the web for RDFa and microformats adoption
18:44
<AryehGregor>
and if they pick up, we will look into supporting these syntaxes. Also read the section on the data model for more on RDFa."
18:44
<AryehGregor>
Ack, too long. I do that too often.
18:45
<AryehGregor>
The discussion group is also a Google Group.
18:46
<erlehmann>
AryehGregor, didn't hixie tell us that microdata was easier to author and understand than RDFa?
18:47
<erlehmann>
i wonder what CC is doing now for licensing information, i did my wordpress plugin for GSoC with RDFa.
18:47
<AryehGregor>
Well, yes, but until recently, Google's rich snippets mostly focused on RDFa, or at least as much as microdata.
18:50
<AryehGregor>
Awesome, a PAM update on Ubuntu a couple of days ago broke cron and at. How many systems will that wind up completely wrecking, I wonder?
19:18
<AryehGregor>
Hmm.
19:18
<AryehGregor>
In the execCommand() use-case, is there really any notable difference between <div align=right> and <div style="text-align: right">?
19:19
<AryehGregor>
The only obvious differences I can think of involve things like fixed-width block descendants, which you can't really get in a normal contenteditable setup.
19:21
<Ms2ger`>
Tables?
19:21
<AryehGregor>
There's no way to make those with execCommand() either, actually, that I've seen. Although you'd think there should be.
19:21
<AryehGregor>
Seems like a pretty obvious feature to add.
19:23
<AryehGregor>
I guess I'll spec it as text-align across the board for now, and change it if any problems arise.
19:56
<erlehmann>
AryehGregor, it is ubuntu. whoever runs that should know that updates break stuff, even deliberately, see unity.
19:56
<AryehGregor>
That's a major version upgrade, not a security update.
19:59
<zewt>
heh, i stopped using ubuntu after yet another major update totally hosed my system ... don't think I've ever had one go well
20:14
<Philip`>
I always mix up "microformats" and "microdata" when reading
20:14
<Philip`>
Probably would have been good if they'd had distinct prefixes
20:23
<Hixie>
"microdata" wasn't really ever intended to be a brand
20:24
<Hixie>
that one just kinda got away from me
20:24
<Hixie>
it was just meant to be descriptive, the same way that the html spec uses "microsyntax"
21:44
<linclark>
can itemprop take multiple values?
22:07
<The_8472>
mhhh... do border images support gradients instead of url() images?
22:13
<The_8472>
i guess not
22:15
<The_8472>
well, the css3 border spec and the css3 images spec contradict each other
22:16
<The_8472>
i see , they use the css2.1 definition
22:26
<Hixie>
linclark: "The itemprop attribute, if specified, must have a value that is an unordered set of unique space-separated tokens that are case-sensitive, representing the names of the name-value pairs that it adds. The attribute's value must have at least one token."
22:26
<Hixie>
linclark: in other words, "yes"
22:27
<linclark>
Hixie: thanks!
23:02
<zcorpan>
Hixie: how would you name microdata had you intended to give it a brand?
23:13
<Hixie>
zcorpan: i dunno, that's one of those things that takes careful thought
23:13
<jgraham>
Not die-rdfa-die-data then? :)
23:15
<AryehGregor>
Am I the only one who thinks it's crazy whenever people say how bad localStorage is and imply everyone should use IndexedDB instead?
23:15
<AryehGregor>
IndexedDB is *horrifyingly* complicated.
23:16
<AryehGregor>
And there's no persistent storage either implemented, specced, or planned other than IndexedDB and localStorage, that I know of (leaving aside WebSQL, since it has no future).
23:17
<Hixie>
cookies? :-)
23:17
<Hixie>
zewt: implementation complexity does matter
23:17
<AryehGregor>
Fine, no persistent storage that a) actually persists, b) does not have to be sent on every HTTP request, c) can be more than a few KB.
23:18
<zewt>
other than the annoying global lock problem, i don't think there's anything bad about localStorage; it's very natural to the platform
23:18
<AryehGregor>
zewt, it's synchronous. That's bad if you need to do a bunch of disk access.
23:18
<AryehGregor>
Because it freezes the UI.
23:18
<zewt>
well, that and the fact that everything's forever stuck at 5MB, because when you say "we'll set it at 5MB and increase it later", that apparently means "we'll set it at 5MB and then never change it"
23:18
<AryehGregor>
I don't know if that's a big problem, though.
23:18
<AryehGregor>
Yeah, but that's probably going to be true for IDB and everything else too.
23:18
<zewt>
5MB is just patently absurd, heh
23:20
<zewt>
that can still be fixed, though, it's nothing baked in--just nobody's bothering to do so (as far as I know)
23:20
<AryehGregor>
It should really be more flexible.
23:20
<AryehGregor>
It would be better if there were no guarantees that the storage would be permanent, then you could be much more generous up front.
23:21
<AryehGregor>
There realistically aren't any guarantees that the storage is permanent anyway.
23:22
<zewt>
and there's pushback from implementors from exposing whether it is (eg. chrome's porn mode)
23:22
<zcorpan>
AryehGregor: flash cookies?
23:22
<zewt>
i don't think making it bigger but nonpersistant is much of a win, though; the entire point is persisting
23:23
<zewt>
50MB would be a saner default than 5MB, though, really
23:23
<AryehGregor>
zewt, it only persists until the user clears cookies, or uses a different browser or whatever.
23:23
<AryehGregor>
So typical uses can't rely on it persisting anyway.
23:23
<pdr3>
Persisting? Or caching? :)
23:23
<zewt>
depends on what you mean by "persist", but yeah
23:23
<AryehGregor>
It really depends how many sites use it.
23:24
<AryehGregor>
Twenty sites all using close to the 50 MB limit would make users quite unhappy.
23:24
<Hixie>
localStorage, IndexDB, and Cookies had better all have the same lifetime
23:24
<zewt>
i really don't see every site filling up 50MB (or even 1MB) of localStorage if 50MB is given by default
23:24
<AryehGregor>
At least some users.
23:24
<AryehGregor>
Realistically, most wouldn't notice, but . . .
23:24
<Hixie>
otherwise you get cookie resurrection
23:24
<AryehGregor>
You don't need every site to do it, you just need a small percentage.
23:24
<zewt>
i mean, I get the concern of not wanting every site a user visits taking up 50MB (for example) of space, but I don't think that's a likely end result
23:24
<Hixie>
zewt: the problem isn't hte good sites
23:24
<Hixie>
zewt: the problem is the hostile sites
23:24
<AryehGregor>
Even if you visit the site only once, it will persist forever, after all.
23:24
<Hixie>
zewt: the good sites you can grant GBs of access to
23:25
<AryehGregor>
I'm not even considering DoS here.
23:25
<AryehGregor>
Just accumulation over time.
23:25
<zewt>
sure, I just don't see giving 50MB to all sites as something likely to blow up
23:25
<Hixie>
my point is the 5MB isn't intended to be used by the good sites
23:25
<Hixie>
it's just supposed to be enough to do minor stuff that isn't problematic
23:25
<Hixie>
like storing prefs
23:25
<Hixie>
if you're serious about using the site, you grant it more
23:25
<Hixie>
much more
23:26
<zewt>
that would be fine, except as far as I know implementations don't implement the "grant it more" path
23:26
<Hixie>
file bugs
23:26
<zewt>
yelling out my window feels as likely to help :)
23:30
<zewt>
is localStorage sync per spec? doesn't seem like it needs to be--would make more sense to only guarantee atomicity, and to make updates async
23:31
<AryehGregor>
Well, it's sync in the JavaScript sense.
23:31
<AryehGregor>
Just because the API is sync.
23:31
<AryehGregor>
Of course browsers don't have to do sets synchronously.
23:31
<AryehGregor>
I assume they don't.
23:31
<AryehGregor>
They probably write it and return immediately without fsync()ing. Or I'd hope they do, anyway.
23:31
<Hixie>
filing bugs does help
23:32
<AryehGregor>
But for gets, kind of hard to avoid synchronous disk reads if the API is synchronous.
23:32
<zewt>
could just read the whole thing in on the first read--which is still sync, but just once
23:32
<zewt>
(given that, even putting aside the 5MB thing, localStorage is not going to be huge)
23:33
<zewt>
my experience with filing bugs on Firefox is that I get annoying bugzilla mails for years and that's about it, heh
23:33
<zewt>
i find it amusing that when I unsubscribe from a bug because it emails me too much, it emails everyone else on the bug telling them that I unsubscribed
23:35
<Hixie>
what if there's more data stored than memory available?
23:35
<Hixie>
it only e-mails them if they opted in to getting mails about changed to the cc list
23:36
<zewt>
having that much data doesn't seem like a case for localStorage (but of course browsers can decide whether to pre-cache localStorage heuristically)
23:39
<zewt>
i guess there are also the more complex structured clone cases, like File, where you may have to cross-check mtimes or whatever--so even in 5MB, you may have thousands of File objects that would need to be verified synchronously