fluttercommunity / fluttercommunity/community

Package Proposal: QUIC and HTTP3 plugin

Open
#59 16 comments 36 reactions 1 assignee Claimed by @jeroen-meijer View on GitHub
package proposal
Dominant language
No language data
Stars
1.7k
Forks
128
PR merge metrics
No merged PRs in 30d

Description

Given that
- [http/3 draft](https://tools.ietf.org/html/draft-ietf-quic-http-31) has been published last month
- chrome is [deploying it](https://blog.chromium.org/2020/10/chrome-is-deploying-http3-and-ietf-quic.html)
- on safari is even enabled by default ([source](https://en.wikipedia.org/wiki/HTTP/3))

[HTTP3](https://en.wikipedia.org/wiki/HTTP/3) [QUIC](https://en.wikipedia.org/wiki/QUIC) are very [promising](https://blog.cloudflare.com/last-call-for-quic/),
but Flutter Team has, legitimately, [too much on its plate](https://github.com/dart-lang/sdk/issues/38595#issuecomment-712857906) to take craft a dart package (references [1](https://github.com/grpc/grpc-dart/issues/374), [2](https://github.com/dart-lang/sdk/issues/22657), [3](https://github.com/dart-lang/sdk/issues/38595))
and even react native approach seems to be through native clients ([source](https://medium.com/the-react-native-log/using-cronet-in-your-mobile-app-7dda3a89c132
))

It would be great if the community could come out with a [plugin](https://flutter.dev/docs/development/packages-and-plugins/developing-packages#federated-plugins) to support this feature,
I don't have the brain muscles or the expertise to deal with it myself, but I'd be happy to help.

I believe there are 2 possible strategies to support `QUIC` :

1. CRONET on the native side for [android](https://developer.android.com/guide/topics/connectivity/cronet) and [ios](https://chromium.googlesource.com/chromium/src/+/master/components/cronet/ios/Cronet.h)

2. [QUICHE](https://github.com/cloudflare/quiche) + [dart:ffi](https://dart.dev/guides/libraries/c-interop) (resource for [rust + dart:ffi](https://medium.com/flutter-community/finally-running-rust-natively-on-a-flutter-plugin-here-is-how-6f2826eb1735)) could work from both android, ios, desktop and maybe in the future for [web](https://github.com/dart-lang/sdk/issues/37882)

there will be probably some js package to use for web, but I haven't located it

Do you think such plugin could be useful for the community?

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.