What are you seeking to clarify? Hard to tell if you are inquiring as to how that happened, quibbling with the word choices, or disagreeing completely.
The actual current of things is that HTTP 2.0 is what we want in the end, and SPDY is a toy to see what could be cool to add. When something that was tested with SPDY looks right, it is moved to the HTTP2 spec. I think the long-term goal is to deprecate SPDY in favor of HTTP2.
This way of development is very interesting because it enables not only to change rapidly, but also to try completely new things on a different "namespace" (ie without polluting the whole HTTP stacke already deployed)
I think nginx and Chrome support SPDY which HTTP 2.0 was based on, so that performance should be able to be tested and be fairly representative of what we can expect.
No, because a communication protocol has to handle all the types of problems HTTP and TCP solve. A transfer protocol is concerned with moving data and meta data, not the problems TCP solves.
Since the semantics of 1.1 and 2.0 are the same (besides push) you can choose which encoding you prefer based on your requirements and constraints. In fact, maybe we should rename HTTP/1.1 to "HTTP/2.0 Textual Encoding" or something so that people can feel like they're not missing out on anything. It worked for USB 2.0.
I've never understood this sentiment. Its not like we can know what is passing through the boxes by watching the blinkenlights - this isn't paper tape anymore.
You have to use tcpdump to break up the binary bits - and since its likely encrypted, set up the appropriate certificates if you want to decipher arbitrary traffic anyway.
If its your own app, you know what requests are going where and can hex dump them any way you choose.
The whole "its binary so its bad" thing is a complete non-issue. I've heard people complaining "netcat doesn't work anymore" but there's no reason why netcat2 can't be used to talk to arbitrary HTTP/2.0 endpoints.
Sorry, I lost some mates in the SOAP wars of the late 90s and I'm still bitter.
Personally, my issue with HTTP 2 is that it seems to be designed from the assumption that Google-scale is the common or even only use case, and that optimizing Google's bandwidth use is the sole purpose of HTTP.
To me, the real reason is that we want to get to the point where all traffic is secure, and since the cost of establishing that secure connection is high we should do more with the secure connections we've got before letting it drop!
* non-text portions embedded within the text protocol (ever tried to parse HTTP with a Java InputStreamReader? you can't properly switch back to binary mode at the end of the headers...)
* variable end-of-content markers that cannot occur in the content
Of course, HTTP 1.x uses ALL of the above (see possible values for Transfer-Encoding). It's a horribly complicated mess that is only surpassed by MIME email.
Binary protocols usually just specify the length of the data, followed by a binary blob with the data. MUCH simpler!
Binary protocols usually just specify the length of the data, followed by a binary blob with the data. MUCH simpler!
It is possible to have the same simplicity with a textual protocol, it is just that most text protocol designers don't bother with explicit prefixed lengths:
Are you really implying it doesn’t? So many Web “best practices” are working around the limitations of HTTP and the web 1.0 legacy we still carry around. See:
1. Concatenating resources (1 CSS file is worlds better than 50. Need it be?)
2. Inlining resources (see above)
3. Scaling, yes, is very hard! Look at all the techniques for deploying updates to web apps without breaking users' experiences.
I’m not saying HTTP2.0 will or won't solve all these problems, but clearly there is much room for improvement over HTTP 1
1. We do that for other reasons too, anyway, like minifying and optimization. For other things, keepalive has worked fairly well.
2. Sure.
3. This has nothing to do with the protocol.
I don't really disagree vehemently with your points--I'm just pointing out that claiming HTTP doesn't scale is completely ludicrous, given that it literally powers nearly everything of scale.
Comments
The complexity difference between HTTP1 and HTTP2 is pretty huge. Not sure if they're even remotely the same protocol anymore.
Agreed. This spec reads more like a brand new and complex transport protocol than an application one.
Is it HTTP 2.0's plan to completely replace "middleware" like SPDY with a full featured protocol?
HTTP 2.0 started with the SPDY spec and has been smoothed and refined during the IETF process, so yeah, it is planned to completely replace SPDY.
"Smoothed and refined" by the IETF?
What are you seeking to clarify? Hard to tell if you are inquiring as to how that happened, quibbling with the word choices, or disagreeing completely.
Looks to me that it was an expression of 'quizzical sarcasm' in the form of a question.
I should probably have explained further, but there is a certain amount of irony in that statement.
See ietf@ietf.org for more details: http://www.ietf.org/mail-archive/web/ietf/current/maillist.h...
The actual current of things is that HTTP 2.0 is what we want in the end, and SPDY is a toy to see what could be cool to add. When something that was tested with SPDY looks right, it is moved to the HTTP2 spec. I think the long-term goal is to deprecate SPDY in favor of HTTP2.
This way of development is very interesting because it enables not only to change rapidly, but also to try completely new things on a different "namespace" (ie without polluting the whole HTTP stacke already deployed)
The complexity is not horrible as far as communications protocols go.
Anyone know what working implementations exist currently?
Ideally, it'd be nice to see actual real world data showing the benefits over http 1.1.
There's a C++ implementation here, but I'm not sure how complete it is: https://github.com/http2d/core
I think nginx and Chrome support SPDY which HTTP 2.0 was based on, so that performance should be able to be tested and be fairly representative of what we can expect.
But that's the thing...it's _not_ a communication's protocol. It's a transfer protocol...
To-may-to, to-mah-to..
No, because a communication protocol has to handle all the types of problems HTTP and TCP solve. A transfer protocol is concerned with moving data and meta data, not the problems TCP solves.
https://github.com/http2/http2-spec/wiki/Implementations
Yes, and about time too.
The old Unix model (simple, do one thing, text formats, etc.) is dead. The world has come to prefer code and protocols which perform well at scale.
Since the semantics of 1.1 and 2.0 are the same (besides push) you can choose which encoding you prefer based on your requirements and constraints. In fact, maybe we should rename HTTP/1.1 to "HTTP/2.0 Textual Encoding" or something so that people can feel like they're not missing out on anything. It worked for USB 2.0.
Or we can call SPDY^WHTTP 2.0 "binary barf kitchensink internet multiplex protocol" instead.
Let's not taint good, old HTTP in the process please.
I've never understood this sentiment. Its not like we can know what is passing through the boxes by watching the blinkenlights - this isn't paper tape anymore.
You have to use tcpdump to break up the binary bits - and since its likely encrypted, set up the appropriate certificates if you want to decipher arbitrary traffic anyway.
If its your own app, you know what requests are going where and can hex dump them any way you choose.
The whole "its binary so its bad" thing is a complete non-issue. I've heard people complaining "netcat doesn't work anymore" but there's no reason why netcat2 can't be used to talk to arbitrary HTTP/2.0 endpoints.
Sorry, I lost some mates in the SOAP wars of the late 90s and I'm still bitter.
Personally, my issue with HTTP 2 is that it seems to be designed from the assumption that Google-scale is the common or even only use case, and that optimizing Google's bandwidth use is the sole purpose of HTTP.
To me, the real reason is that we want to get to the point where all traffic is secure, and since the cost of establishing that secure connection is high we should do more with the secure connections we've got before letting it drop!
Let's not pretend that HTTP 1.1 was simple. Text formats break down whenever they need to contain arbitrary (possible non-text) data.
You get one of:
* complex escaping rules (and assorted inefficiencies)
* non-text portions embedded within the text protocol (ever tried to parse HTTP with a Java InputStreamReader? you can't properly switch back to binary mode at the end of the headers...)
* variable end-of-content markers that cannot occur in the content
Of course, HTTP 1.x uses ALL of the above (see possible values for Transfer-Encoding). It's a horribly complicated mess that is only surpassed by MIME email.
Binary protocols usually just specify the length of the data, followed by a binary blob with the data. MUCH simpler!
It is possible to have the same simplicity with a textual protocol, it is just that most text protocol designers don't bother with explicit prefixed lengths:
For example, see: http://cr.yp.to/proto/netstrings.txt
When people say "text protocol" I think they really mean "something I can type into telnet"; stuff like netstrings and BEEP don't really count.
I'm sorry, but are you really implying that HTTP doesn't scale?
Are you really implying it doesn’t? So many Web “best practices” are working around the limitations of HTTP and the web 1.0 legacy we still carry around. See:
1. Concatenating resources (1 CSS file is worlds better than 50. Need it be?)
2. Inlining resources (see above)
3. Scaling, yes, is very hard! Look at all the techniques for deploying updates to web apps without breaking users' experiences.
I’m not saying HTTP2.0 will or won't solve all these problems, but clearly there is much room for improvement over HTTP 1
Am I implying that it does? Yes.
1. We do that for other reasons too, anyway, like minifying and optimization. For other things, keepalive has worked fairly well.
2. Sure.
3. This has nothing to do with the protocol.
I don't really disagree vehemently with your points--I'm just pointing out that claiming HTTP doesn't scale is completely ludicrous, given that it literally powers nearly everything of scale.
SPDY wouldn't be a thing if HTTP were sufficient at the massive scales we're talking here.
Nonsense. This is the same mentality that prefers EJBs and other complexity for its own sake.
At scale .. Wait - You're trolling, right? Nice try - Almost fell for it.
Pulling up the drawbridge.