Debate: HTTP/2 Support #565

Open
kataras opened this Issue Dec 21, 2016 · 2 comments

Projects

None yet

1 participant

@kataras
Owner
kataras commented Dec 21, 2016 edited

I'm always open for discussion and community knows that, nowadays many people take leverage of my opinion-sharing and experience. They find me and asking me different things, some of them are Iris-relative.

Don't misunderstood me, but I don't want to post private conversations without the agreement of the person, in the other hand I am willing to share some of the public comments about Iris and I will try to combine them(private+public) into one in the next paragraph

I will try to combine into one:

Iris is the best framework I have ever worked in my whole career (not only golang), it makes my life so easy, feels like I coded with Iris before, it has an easy API and I can understand what a function does without navigating to the source code, it supports different template engines out-of-the-box, has fast session support and websocket support with extremely easy API as well, it can combine my files to one binary and serve them very fast, I can now public my app without nginx. Ideally If you compare with its (golang) alternatives it's a Goddess BUT why no http/2 support as well?

At first I thanks them/you for the nice words about Iris but also I try to answer with my own way (and my bad english) to their 'Why' (it is a complaint): http/2 is not fully established in the real-world scenarios. Τhe majority of the http clients are not fully upgraded to http/2, yet (I am NOT talking about web browsers only, in the real industry and most business apps you will need a custom http client), so if you have a http/2 server it will act like http/1 for those clients.

In most cases I did continue with an explanation of what is http/2 and how differs from http/1 versions. You should really read here, if you didn't so far.

I am in the industry for a decade++, I believe that, I know when is the best season to really change something in order to make it better.

I am guessing that things will change and the majority of clients will be ready for http/2 in the mid of 2017, so my answer to you will change.

I want to be prepared and start coding the changes as soon as possible. 2017 is near so I am asking you ( the community) about your opinion of Iris to be aligned with the net/http/ go's standard subprotocol library which supports both http/1 versions and http/2. Go v1.8 introduces the Server Push support, this is fantastic and can help you make your apps even faster. Iris is well-designed so don't worry about big API changes.

  • Vote up if you're waiting for this and you're willing to make some internal changes to your apps.
  • Vote down if you do not approve the http/2 support announcement and want things to stay as they are.
  • or comment below your opinion

The future commits for http/2 support will target this thread, I'll try to complete this until the end of this year, no Christmas for me this year :)

@kataras kataras added a commit that referenced this issue Dec 30, 2016
@kataras HTTP/2 big commit all tests passed - not completed yet. #565
Sessions, websocket, templates, ~80% of context, 95% for server(s) and
much more
4f34173
@kataras kataras added a commit that referenced this issue Dec 31, 2016
@kataras Yeees transactions works better than before too! we are close to the …
…end, I can push the full http/2 but book is not ready yet

#565
11c1253
@kataras kataras added a commit that referenced this issue Dec 31, 2016
@kataras We are close to my birthday(01/01) :P So I have to make a break and c…
…ontinue later. Almost complete #565
d6142e8
@kataras kataras referenced this issue Jan 2, 2017
@kataras Ok almost finish, examples, middleware & plugins refactored, book is …
…not refactored at all, iris' readme almost done(?)
21e5335
@kataras kataras referenced this issue in iris-contrib/examples Jan 2, 2017
@kataras Add the Iris v6 examples to the master branch, the default branch cha…
…nged to 5.0.0 until tomorrow
53172a9
@kataras kataras referenced this issue in iris-contrib/examples Jan 2, 2017
@kataras Last touches for iris v6 455f71c
@kataras kataras referenced this issue in iris-contrib/plugin Jan 2, 2017
@kataras Convert to new iris v6 a11b9c8
@kataras kataras referenced this issue in iris-contrib/middleware Jan 2, 2017
@kataras Convert the previous middleware for iris v6 BUT iris is compatible wi…
…th all net/http middleware now, so you can skip these too :)
b4c14ef
@kataras
Owner
kataras commented Jan 2, 2017 edited

report so far:

Most of the v6-http/2 support code has been finished.
I lost the holidays but I hope to win the community!

All features are in on the new version too!! Some cool things were implemented too :)

  • Book/readme is not updated yet but don't expect for huge changes to the public API, keep the things you knew, nothing crazy changed(except the HTTP/2 support :) )

  • 'old' v5 book already saved and lives on https://docs-v5.iris-go.com.

  • Examples , updated & refactored with small but many changes (mostly ctx.Write to ctx.Writef) [master branch], 'old' v5 branch.

  • Middleware(you can use any third-party middleware you want now), updated & refactored with small changes [master branch], 'old' v5 branch.

  • Plugins , updated & refactored with small changes [master branch], 'old' v5 branch.

All other iris-relative packages (20+) didn't need refactoring at all.

5.0.0 branch is still there for those who want to use them with iris v5 (no http/2 support).

  • The core github repo is defaulted to development branch in order to be go get-able. It will be changed to master branch when I or we (if you're willing to help) finish the new gitbook.
@kataras kataras added a commit to iris-contrib/gitbook that referenced this issue Jan 2, 2017
@kataras Refactoring the book - part 1 kataras/iris#565 746564b
@kataras kataras added a commit to iris-contrib/gitbook that referenced this issue Jan 2, 2017
@kataras Refactoring the book - part 2 kataras/iris#565 656a63d
@kataras kataras added a commit to iris-contrib/gitbook that referenced this issue Jan 2, 2017
@kataras Refactoring the book - part 3 kataras/iris#565 668aefd
@kataras kataras added a commit that referenced this issue Jan 2, 2017
@kataras Happy new year! Update to 6.0.0 | HTTP/2 full support. #565
full commit from development branch.

Examples, book, middleware, plugins are updated to the latest iris
version. Read HISTORY.md for more.

The 'old' v5 branch which relied on fasthttp exists for those who want
to use it navigate there: https://github.com/kataras/iris/tree/5.0.0
8bbd9f8
@kataras
Owner
kataras commented Jan 2, 2017 edited

Iris HTTP/2 based on net/http just released. Thanks for your 12-days patience!

All relative repos are updated to the latest Iris version, book also.

For those who need the old version: https://github.com/kataras/iris/tree/5.0.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment