Re: [whatwg] HTML6 proposal for single-page apps without Javascript

2015-04-04 Thread Joshua Cranmer

On 4/1/2015 9:59 PM, Bobby Mozumder wrote:

On Mar 31, 2015, at 12:43 PM, Joshua Cranmer pidgeo...@verizon.net wrote:

On 3/30/2015 10:02 PM, Bobby Mozumder wrote:

One thing I’m interested in is to see more technical discussions   around this 
idea.  Like, very specific issues that show a design or
concept flaw.  It’s only been about 10 days since I proposed this and  I haven’t 
received much in that area.  (I did change one thing to  split MREF from HREF based 
on feedback about people wanting backwards  compatibility.)

Technical discussion is the last step of the process. The reason why people 
haven't provided technical feedback is because you have failed to motivate your 
proposal.

I gave a limited one-page idea for now, so design faults should be obvious.
No. Simple examples don't make design faults obvious, they hide all but 
the most obvious design faults. My experience with designing APIs is 
that they can't be fully evaluated until you've tried to use them in 
their intended scenarios and discover the pain points.



   This will take years, but right now it’s looking like there aren’t 
fundamental problems with the proposal.  Most of the unnecessary arguments 
against it boil down to people just stuck in their comfort-zone, and those 
people aren’t the target audience for this proposal anyways.  Javascript people 
are going to be happy with their existing selection of MVC frameworks, so why 
would they want anything new like this?

The mistake Javascript developers are making is that they make the assumption 
that everybody else is a Javascript developer.


Instead, I’m mostly getting a lot of “I’m scared!” or “Everyone   should get a 
PhD in Javascript like I did!” which obviously isn’t 

going to happen. So, if there are technical faults with the proposal  here, 
definitely list them.  (or preferably in the Github, where I  can keep track of 
issues directly)
Attacking your detractors with ad hominems is a great way to get yourself 
ignored. People aren't saying those things--they're questioning the utility of 
your proposal in the first place. You take it for granted that HTML needs a 
complex, SQL-based MVC framework. You take it for granted that JS is the devil 
and should be avoided. You appear to take it for granted that using JS 
frameworks is a problem that needs to be solved. These views are not commonly 
held on this mailing list, and you're completely ignoring the feedback which 
is, in effect, questioning these assumptions.

Not ad hominem.  I’ve literally had developers tell me everyone should learn 
Javascript.  Example: https://twitter.com/yoavweiss/status/582490158496419840


You said, and I left your original quote, wveryone should get a PhD in 
Javascript whereas your detractor said [everyone] should all learn 
JS. There is a big difference between the two statements, and 
belittling that difference makes you seem petty.



That's obviously a horrible idea.  Why would anyone encourage millions of other 
people to do more work?   Everyone’s time is limited.  Why should a 
fashion-blogger spend time to learn JS to get a responsive high-speed site?  
They have other things to worry about, like next season’s collections.

The best experience should be on by default, and you need a built-in MVC 
framework in HTML for that to happen.


Years ago, when I first learned HTML in a class, one of the assignments 
had us make a table of links. I decided to make the links all point to 
different sites than their text indicated--and realized that the http: 
link in the status bar would give the game up. After asking around, I 
was told how to change the status bar text using JS, and then proceeded 
to copy-paste-tweak that into my desired goal. At that time, I didn't 
know how to program, and certainly never knew JS.


I bring this example up because it shows that people who are motivated 
to solve a problem will take the time to figure out how to do so--even 
if it requires technologies they never learned.

You’re asking people to learn Javascript, an MVC framework, and its associated 
templating system, to fix a basic user experience problem with the web.

I was talking with a Tumblr power user a couple of days ago about this and she 
confirmed that all Tumblr kids pretty much know the basics of HTML, somewhat 
fewer people know CSS, and nobody knows Javascript.  Tumblr maintains about 200 
million sites.


Pay attention to your quote. They know the basics of HTML, not they 
know most of HTML nor they know the complex bits of HTML. The 
central fallacy of your argument is that you're arguing that translating 
a complex design pattern from JS to HTML will automatically make people 
learn it, and your own quote disproves that fallacy.


This points to an obvious meta-design flaw: you're constructing a 
proposal based on intermediate programming principles (MVC and database 
query), motivating it based on perceived utility (not usability) to 
non-programmers, and finally resisting any

Re: [whatwg] HTML6 proposal for single-page apps without Javascript

2015-03-31 Thread Joshua Cranmer

On 3/30/2015 10:02 PM, Bobby Mozumder wrote:
One thing I’m interested in is to see more technical discussions   around this idea.  Like, very specific issues that show a design or 
 concept flaw.  It’s only been about 10 days since I proposed this and 
 I haven’t received much in that area.  (I did change one thing to  
split MREF from HREF based on feedback about people wanting backwards  
compatibility.)
Technical discussion is the last step of the process. The reason why 
people haven't provided technical feedback is because you have failed to 
motivate your proposal.


Instead, I’m mostly getting a lot of “I’m scared!” or “Everyone   should get a PhD in Javascript like I did!” which obviously isn’t  
going to happen. So, if there are technical faults with the proposal  
here, definitely list them.  (or preferably in the Github, where I  can 
keep track of issues directly)
Attacking your detractors with ad hominems is a great way to get 
yourself ignored. People aren't saying those things--they're questioning 
the utility of your proposal in the first place. You take it for granted 
that HTML needs a complex, SQL-based MVC framework. You take it for 
granted that JS is the devil and should be avoided. You appear to take 
it for granted that using JS frameworks is a problem that needs to be 
solved. These views are not commonly held on this mailing list, and 
you're completely ignoring the feedback which is, in effect, questioning 
these assumptions.


We need to be able to advance the web without going through   Javascript.  It’s a mistake to assume that JS is a fundamental part 
 of the web.  The web is optimized for hypertext document processing, 
 and most people use it to read content online.  This proposal fixes a 
 remaining issue with that.
Serious question: why? What benefit does it bring? That JS is bad is not 
a self-evident proposition.


--
Beware of bugs in the above code; I have only proved it correct, not 
tried it. -- Donald E. Knuth




Re: [whatwg] Proposal: navigator.cores

2014-07-02 Thread Joshua Cranmer

On 7/2/2014 8:31 AM, Rik Cabanier wrote:
That thread concluded with a let's see how this feature is going to 
be used before we commit. Blink and WebKit certainly are in favor. 


I went back and looked at the later messages in that thread. Your 
argument implies that a plurality of engines implementing this feature 
would mollify the detractors, and that is certainly not my reading. 
People brought up serious concerns about the utility and wisdom of this 
API, and summaries like yours very much feel like an attempt to avoid 
addressing those concerns by creating facts on the ground instead.


The concerns I recall off the top of my head, to wit:
1. Fingerprinting
2. Use of the API is implicitly assuming that the browser uses only one 
thread, which is not a safe assumption.
3. The existence and probable eventual takeover of asynchronous multiple 
core architectures.

4. There are better ways to achieve the desired use cases.

I've personally mused that the usual motivation for this feature is 
essentially predicated on the notion that there is too much work to be 
assigned for a weak computer, yet the advocates of this API respond to 
comments about the problems involved with high dynamic usage of the 
computer with the scheduler can solve it--the same scheduler whose 
inability to cope with too much work is the basis for the API in the 
first place.


--
Beware of bugs in the above code; I have only proved it correct, not tried it. 
-- Donald E. Knuth



[whatwg] More URL spec feedback

2014-05-06 Thread Joshua Cranmer
Hi, I'm back with more questions on the URL spec after poking at it a 
bit more for various purposes.


One thing I've noticed is that the specification currently aggressively 
fails IPv6 address matching, so, e.g., new URL(http://[::1::];) would 
fail. (Although it allows http://[1:2:3:4:5:6::8]/ to go through whereas 
RFC 5952 advises that :: MUST NOT be used to shorten just one 16-bit 0 
field.) However, it doesn't apply this same logic to IPv4: new 
URL(http://192/;) is parsed as a perfectly valid URL. Is this intentional?


--
Joshua Cranmer
Source code archæologist


--
Beware of bugs in the above code; I have only proved it correct, not 
tried it. -- Donald E. Knuth


[whatwg] URL spec and IDN

2014-02-19 Thread Joshua Cranmer
I've noted that the URL specification is currently rather vague when it 
comes to IDN, and has some uncertain comments about issues related to 
IDNA2003, IDNA2008, and UTS #46.


Roughly speaking, in my experience, there are three kinds of labels: 
A-labels, U-labels, and displayable U-labels. A-labels are the 
Punycode-encoded version of the labels used for DNS (normalized to ASCII 
lower-case, naturally). U-labels are the results of converting an 
A-label to Unicode. Displayable U-labels are A-labels converted to 
U-labels only if they do not contain a Unicode homograph attack. My 
drawing a distinction between the displayable U-label and the regular 
kind is out of concern that the definition of displayable may change 
over time (e.g., certain script combinations are newly 
permitted/prohibited), whereas the U-label derived from an A-label 
should be constant.


Given these three kinds of labels, it ought to be possible (IMO) to 
convert a generic domain in any (i.e., unnormalized) format. The 
specification currently provides for a domainToASCII and a 
domainToUnicode function which naturally map to producing A-labels and 
U-labels, but contains a note suggesting that they shouldn't be 
implemented due to the IDNA clusterfuck. The way to a displayable 
U-label would seem to me to come most naturally via |new URL(http://; + 
domain).host|.


Looking at the spec, it's not clear if the host, href, and other methods 
are supposed to return U-labels or A-labels (or some potential mix of 
the two). Running some tests appears to indicate that Firefox, Chrome, 
and IE actually all do different things:
* Firefox appears to use displayable U-labels (i.e., the result 
matches what is seen in the address bar)

* Chrome appears to always use A-labels
* IE appears to always use U-labels (on http://☃.net, the address bar 
displays http://xn--n3h.net but location.href returns http://☃.net).


I'm guessing the reason why the domainTo* methods are unspecified are 
due to inconsistent handling of IDNA2008 by current web browsers, 
although it appears to me that a consensus has emerged on 
implementation. Chrome and IE appear to roughly implement UTR #46 
transitional mode:

* Uses Unicode $RELATIVELY_NEW for case folding/mapping
* Processes eszett, final sigma, ZWJ, and ZWNJ according to IDNA2003 
(UTR #46's transitional) instead of IDNA2008

* Symbols and punctuation are allowed, in violation of IDNA2008.
* The BiDi check rules appear to follow IDNA2008 instead of IDNA2003. 
Neither Chrome's documentation nor IE's documentation are explicit about 
the changes (sufficiently so, at least, for someone like me who doesn't 
know all that much about how IDNA* is implemented but rather wants to 
make sure things work correctly and safely).
* They do not appear to enforce IDNA2008's contextual rules (again, the 
documentation is slightly unclear).
* Chrome's documentation calls out ignoring STD3 rules (i.e., permitting 
more ASCII characters) and disallowing unassigned code points. IE's 
documentation does not suggest what they do here.
Firefox still implements IDNA2003, but this is only because the person 
who would be implementing IDNA2008 lacks the time.


Given these facts, I'd like to propose changes to the URL spec to better 
specify and more reliably reflect IDN processing as is currently done:
1. Expressly identify how to normalize and process an IDN address under 
IDNA2008 + UTR #46 + other modifications that reflects reality. I'm not 
qualified to know what happens at precise edge cases here.
2. Resolve that URL should reflect U-labels as much as possible while 
placing the burden of avoiding Unicode homograph attacks on the browser 
implementors rather than JS consumers of the API.
3. The comments about avoiding implementation on domainTo* methods 
should be dropped.
4. Tests should be added to ensure that domain labels are processed 
correctly. There is already a testsuite for UTR #46 processing available 
at http://www.unicode.org/Public/idna, which I suspect could be adapted 
into a testsuite for processing domain labels.
5. Browser vendors should implement domainToASCII and domainToUnicode to 
at least as well as they internally implement these methods, even in 
lieu of precise definitions on how to handle IDN. In any case, I'd 
rather have IDN handling that matches how my browser implements it 
internally than one that matches an official, blessed spec, if the two 
diverge. Note that this includes handling deciding when U-labels are 
safe to display (assuming that browsers are competent to enough to 
already think about this).


--
Beware of bugs in the above code; I have only proved it correct, not tried it. 
-- Donald E. Knuth



Re: [whatwg] BinaryEncoding for Typed Arrays using window.btoa and window.atob

2013-08-07 Thread Joshua Cranmer

On 8/7/2013 5:28 AM, Anne van Kesteren wrote:

On Tue, Aug 6, 2013 at 9:48 PM, Chang Shu csh...@gmail.com wrote:

But it appears to me we have to introduce
another pair of coders, say BinaryDecoder/BinaryEncoder, in addition
to TextDecoder/TextEncode since the signatures of the decode/encode
functions are different.

So TextDecoder is bytes to string and TextEncoder is string to bytes.
If we always represent the base64-variant as a sequence of bytes the
signature seems fine. If you want to get a string out of those bytes
again you could utf-8 decode it for instance.

I'd be interested in knowing what the level of interest is outside of
Google for this feature.


There are enough places in my code where being able to decode/encode 
base64 from a typed array is a necessary step that I added helper 
functions to do this locally, particularly when I am about to shove it 
through charset conversion as well. Eliminating a copy step would be 
useful, although I don't think I'm pushing enough data through this 
functions to make a noticeable performance difference.


--
Beware of bugs in the above code; I have only proved it correct, not tried it. 
-- Donald E. Knuth E



Re: [whatwg] StringEncoding: Allowed encodings for TextEncoder

2012-08-07 Thread Joshua Cranmer

On 8/7/2012 12:39 AM, Jonas Sicking wrote:

Hi All,

I seem to have a recollection that we discussed only allowing encoding
to UTF8 and UTF16LE, UTF16BE. This in order to promote these formats
as well as stay in sync with other APIs like XMLHttpRequest.

However I currently can't find any restrictions on which target
encodings are supported in the current drafts.

One wrinkle in this is if we want to support arbitrary encodings when
encoding, that means that we can't use insert a the replacement
character as default error handling since that isn't available in a
lot of encoding formats.


I found that the wiki version of the proposal cites 
http://dvcs.w3.org/hg/encoding/raw-file/tip/Overview.html as the way 
to find encodings.


--
Beware of bugs in the above code; I have only proved it correct, not tried it. 
-- Donald E. Knuth



Re: [whatwg] StringEncoding: Allowed encodings for TextEncoder

2012-08-07 Thread Joshua Cranmer

On 8/7/2012 12:48 PM, Joshua Bell wrote:
When Anne's spec appeared I gutted mine and deferred wherever possible 
to his. One consequence of that was getting the other encodings for 
free as far as the spec writing goes. If we achieve consensus that we 
only want to support UTF encodings we can add the restrictions. There 
are use cases for supporting other encodings (parsing legacy data file 
formats, for example), but that could be deferred. 


My main use case, and the only one I'm going to argue for, is being able 
to handle mail messages with this API, and the primary concern here is 
decoding. I'll agree with other sentiments in this thread that I don't 
particularly care about encoding to anything other than UTF-8 (it might 
be nice, but I can live without it); it's being able to decode $CHARSET 
that I'm concerned about. As far as edge cases in this scenario are 
concerned, it pretty much boils down to I want to produce the same JS 
string that would be output if I looked at the text content of the 
document data:text/plain;charset=charset,data.


When encoding, I think it is absolutely necessary to enforce a uniform 
guidelines for the output. When decoding, however, I think that most 
differences (beyond concerns like the BOM) are a result of buggy 
content creators as opposed to the browser media. Given that HTML 
display has apparently tolerated differences in charset decoding for 
legacy charsets, I suppose it is possible to live with a difference of 
exact character decoding for various charsets--in other words, turning 
the charset document into an advisory list of both minimum charsets to 
support and how to do so.


--
Beware of bugs in the above code; I have only proved it correct, not tried it. 
-- Donald E. Knuth



Re: [whatwg] Specs for window.atob() and window.btoa()

2011-02-05 Thread Joshua Cranmer

On 02/05/2011 08:29 PM, Jonas Sicking wrote:

So my first question is, can someone give examples of sources of
base64 data which contains whitespace?
The best guess I have is base64-encoding MIME parts, which would be 
hardwrapped every 70-80 characters or so.


--
Beware of bugs in the above code; I have only proved it correct, not tried it. 
-- Donald E. Knuth



Re: [whatwg] HTML6 Doctype

2010-08-29 Thread Joshua Cranmer

 On 08/29/2010 11:33 AM, David John Burrowes wrote:

As I see it, if I'm developing for other major platforms (java, osx, windows, 
...) I have a fair degree of certainty which versions of those platforms 
support what features, and that's really useful in situations where I'm 
targeting (either for development or support) the non-current version.  So, I 
have some trouble understanding why it is good to put (what I hope will be) a 
lot of innovation in just the HTML spec into one undifferentiated definition. 
(and, presumably similar stories for the other standards specs)
OS X and Windows both pretty much have one implementation (WINE is not 
sufficiently complete or important to count in this regard), and Java is 
largely driven by a single implementation. So you can delineate support 
primarily by what this version supports.--you don't have to worry 
about differences between different implementations.


HTML and CSS have at least four major independent implementations 
(Gecko, Webkit, Trident, Presto, and there are other notable but not 
quite so heavy market share implementations). That means that features 
are implemented and experimented on at four different rates; the exact 
level of support for a particular version would be different for all of 
them, at least until they all fully implemented it (leaving aside the 
exact definition of full implementation).


Most authors don't care about whether or not an implementation supports 
an entire, full specification; they just want to know Can I use this 
feature in this browser? So saying that all major implementations 
support much of CSS 2 to a high degree of correctness is useless for 
knowing if, say, the author can use display: run-in. In other words, the 
feature tables that you think are indicative of a problem are what web 
authors would actually use in real life.


--
Beware of bugs in the above code; I have only proved it correct, not tried it. 
-- Donald E. Knuth



Re: [whatwg] Dates BCE

2009-07-30 Thread Joshua Cranmer

David Singer wrote:
Against that, one has to realize that the label of the day before X 
is well-defined for the day before the introduction of the Gregorian 
calendar, and iteratively going back to year 1, year 0, year -1, and 
so on.
In neither the Gregorian nor the Julian calendars is there a year 0, as 
used in conventional speech (formats designed for machine computation 
treat the issue a little differently).



--
Beware of bugs in the above code; I have only proved it correct, not tried it. 
-- Donald E. Knuth



Re: [whatwg] A New Way Forward for HTML5

2009-07-23 Thread Joshua Cranmer

Manu Sporny wrote:

form consensus: fail (but that's what the W3C is for, right?)

From what I've read, there's only one issue of major importance where
consensus has failed to form, namely the Great Codecs Debate. And as
representatives have decried the other's positions as complete
non-starters (Mozilla and Opera will not license the H.264 codec, and
Apple will not accept the Theora codec) for reasons beyond the scope of
the WG, there's really nothing that can be done about it.

Ian is really the only one that is actively allowed to produce anything
of significance in WHAT WG. In general, if he doesn't agree with you, it
doesn't go in.
  

If you can't convince him, how would you convince the browsers whose
implementations are ultimately important? Browser vendors have in the
past shown a willingness to not implement part of the spec if it is
untenable.

To understand why this is viewed as an issue, we can look to the
Microformats community, which has roughly 1,300 mailing list members.
Everyone is able to contribute to the main product of that community:
The Microformats wiki. Why isn't it the same in this community -- a
community that prides itself on being open to everyone?
  

Microformats (AIUI) is easy to implement on top of browser APIs, whereas
much of HTML 5 has to be implemented by the browsers themselves. Since
the cost of a feature in HTML 5 is much greater than the cost of a new
feature in Microformats, why should we expect the two to accept as
easily new features?

To approach the issue from another angle, we have roughly 1,000 members
on this mailing list and could have close to 1 billion people[1] that
could be using some form of HTML by 2012, a number of those are web
developers (read: a huge developer base).
  

I think it is fairer to compare the number of people who actually come
into contact with HTML: those who write it (or those who write tools to
write it) and those who write tools to display it. It is probably a
stretch to say that even 1 million of those people will use HTML to a
sufficient degree to be impacted by the specification. Most of those 1
billion people would be at an utter loss to even name the format which
is carrying their data.

I can git clone the Linux kernel, mess around with it and submit a patch
to any number of kernel maintainers. If that patch is rejected, I can
still share the changes with others in the community. Using the same
tools as everybody else, I can refine the patch until there is a large
enough group of people that agree, and implementation feedback to back
up the patch, where I may have another chance of resubmitting the patch
for re-review. This mechanism is a fundamental part of the community.
  

There is /the/ implementation to the Linux kernel, but there is no
implementation of HTML that can be called /the/ implementation. HTML and
Linux are incomparable; you'd be much better off comparing HTML and
POSIX: they are both descriptions of requirements for implementations.

--
Beware of bugs in the above code; I have only proved it correct, not 
tried it. -- Donald E. Knuth





Re: [whatwg] Chipset support is a good argument

2009-07-06 Thread Joshua Cranmer

Kartikaya Gupta wrote:

I'm not sure whether specs can create demand, and frankly, I find it somewhat 
irrelevant to the point at hand. The fact is there is already demand for a 
single encoding format that will be compatible with as many browsers as 
possible. The only question is what that format will be. In this case, the spec 
doesn't need to create demand for anything, it just needs to tell people what 
that format is.
  
The key point I think you've missed is that putting Theora (or H.264) as 
THE format in a specification won't make it so. One or the other codec 
is completely untenable under present circumstances to at least one 
major browser vendor. It is better that the specification reflect 
reality--that there is no such format, and there will not be one in the 
foreseeable future, than that it reflects a mythical utopia.


Perhaps what could break the deadlock would be Apple conceding to 
implementing Theora, or Mozilla conceding to implementing H.264. In 
either case, the decision to implement would most likely be a result of 
market pressure, not some arcane specification. Browser vendors can and 
will ignore specifications if the burden of implementation does not 
match the value of having it.

A lot of those authors (not major publishers like YouTube, but the long tail 
that includes everybody else) will not bother to read the details of the 
decision; they will simply assume that since it is in the standard it will soon 
be supported by all the major browsers, and they will make their choices and 
start publishing content with that in mind.
I think you have a misconceived notion of the world here, too. Most of 
the HTML is not manually written by authors, it is automatically 
generated from programs, be it a Wiki-style generator, or a discrete 
utility like Dreamweaver. For the most part, those who write these 
programs--the people who will truly be writing and using the video 
tags--will be driven by what works in practice, not a statement in a 
specification that everyone ignores.

1) Do you agree with my view that specifying Theora for the video element would 
result in a self-fulfilling prophecy?
  

In short, no.

2) Do you think that it is better to sit on the fence and not specify anything, 
thereby forcing authors to either (a) be incompatible with some browsers or (b) 
re-encode their content in multiple formats? Or do you think it is better to 
pick a side that has a good shot at winning, even if it means that some vendors 
may be non-compliant with the spec?
  
Well, pursuant to the answer to question 1, the choice is either between 
lying about the reality in claiming something works when it does not or 
admitting that there is no right answer. Since one of the intents of 
HTML 5 is to codify the status quo, I think it would be living up to its 
goal in following the latter steps.


--
Beware of bugs in the above code; I have only proved it correct, not tried it. 
-- Donald E. Knuth



Re: [whatwg] [rest-discuss] HTML5 and RESTful HTTP in browsers

2008-11-18 Thread Joshua Cranmer

Mike wrote:
The benefits? Oh I don't know.. a markup language that supports the 
transfer protocol it runs on?!
Who says you have to serve HTML over HTTP? I see it served via email 
(and newsgroups), local filesystems, and FTP on a regular basis. Indeed, 
making HTML depend on HTTP-specific features sounds like A Bad Idea™ 
(and if you retort XMLHTTPRequest, let me point out that I personally 
would have objected to injecting HTTP specifics into that interface, had 
I been around during the design phases).


To follow your arguments to the logical conclusion, HTML would have to 
have special attributes to deal with circumstances within email 
messages, specific attributes to handle certain filesystem-specific 
abilities, or quirks of the FTP protocol. I think you'll find such a 
position untenable; ask yourself then, why limit it to HTTP?


--
Beware of bugs in the above code; I have only proved it correct, not tried it. 
-- Donald E. Knuth