-
Notifications
You must be signed in to change notification settings - Fork 420
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[discussion] Deprecating "SwiftGRPC" / switching to the NIO version #526
Comments
Sounds good to me. From my point, we could start mentioning the new branch in the README right now; at this point, the new API should be sufficiently usable. It might make sense to have the "switching guide" ready before that, though. @timburks @rebello95, do you agree? We could also cut a new 0.x release that introduces a temporary compiler warning asking users to switch to the NIO branch. That could be removed a month later to not offend users who need to stay on the
I guess we could just list 10 old/new examples for the following use cases:
Additional blockers for 1.0 might be CocoaPods, though. I haven't seen a Podspec in the SwiftNIO repo; if they had that, our own Podspec would probably easy enough. We should also reach out to our Carthage users (@JonasVautherin, @WilliamIzzo83, @byuarus) whether they are interested in getting Carthage to work on the |
Fine with me, although it's not ideal for users who have warnings as errors enabled. Not sure if dependency warnings count here or if there's a mechanism to disable a particular warning. Pinning the dependency to release without the warning is a temporary fix if nothing else suffices, however.
Do you mean a side-by-side example for each? I think we have most examples covered in the README so we can just pull those out and add whatever is missing.
They have a script to generate podspecs. I'll add providing Podspec that to the checklist. |
So with the NIO version removing the dependency on CgRPC, I'm wondering if we should not move to |
I've heard that Xcode 11 will make it easy to add SwiftPM packages to any Xcode project, including iOS ones. Maybe at that point we wouldn't need Carthage support at all? |
I think this should be the natural evolution. With xcode support I think carthage and cocoapods support can be safely interrupted. |
Swift Package Manager UI in Xcode 11:With the advent of Swift Package Manager in Xcode 11, I personally don't know of a reason to use Carthage. The grpc-swift NIO client just works with SwiftPM, and is even easier than dealing with custom Podspec necessary with grpc-objc client. |
Can't we just merge nio onto master? This way we know that up until a certain commit hash we have the "old" version, and from then on there is the new one. |
Well, I'd say all the legacy projects relying on Carthage? 😄 |
The NIO switch will require huge changes, anyway. What would stop them from switching to including SwiftGRPC as a SwiftPM dependency while at it? |
BTW, I'd also suggest to apply as a Swift Server Working Group Project, either shortly before or after releasing 1.0. Before would have the advantage of gathering feedback while we can still make breaking changes. |
Yep definitely think this is a good idea.
I am also concerned about the |
Some projects don't have a choice, and rely on more dependencies than only SwiftPM. Supporting Carthage means "having an xcodeproj on the repo" and "having a Cartfile declaring the dependencies". If you drop that, projects relying on Carthage won't be able to use gRPC-Swift anymore. I can believe that SwiftPM is the best and all, but it doesn't mean that all the Carthage projects online will magically move to SwiftPM when gRPC-Swift-NIO 1.0 gets released 😅. Such a process will take time, and I believe good libraries should continue supporting legacy systems during the transition period. |
What would stop them from using SwiftPM for SwiftGRPC and Carthage for old dependencies?
Also, they could keep using the legacy version indefinitely with Carthage.
… On 25. Jul 2019, at 01:16, Jonas Vautherin ***@***.***> wrote:
The NIO switch will require huge changes, anyway. What would stop them from switching to including SwiftGRPC as a SwiftPM dependency while at it?
Some projects don't have a choice, and rely on more dependencies than only SwiftPM. Supporting Carthage means "having an xcodeproj on the repo" and "having a Cartfile declaring the dependencies". If you drop that, projects relying on Carthage won't be able to use gRPC-Swift anymore. I can believe that SwiftPM is the best and all, but it doesn't mean that all the Carthage projects online will magically move to SwiftPM when gRPC-Swift-NIO 1.0 gets released 😅. Such a process will take time, and I believe good libraries should continue supporting legacy systems during the transition period.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.
|
I don't think it's a problem: the Cartfile will specify the version, which point to a certain commit, where the xcodeproj and everything else is set up as expected. Also by introducing a legacy branch where bug fixes on legacy are addressed, the cartfile can point to that branch. I don't see much of a problem if master goes forward with nio |
Exactly.
That makes sense, let's log an error at startup instead. |
Alright, let's not debate it here. I'll see what I can do when the time comes. |
Can any give a status update on this, especially @glbrntt? We plan to start a project in the coming weeks and knowing an expected timeline would help deciding what to do. Thanks! |
@glerchundi we’ve been using the |
Thanks fo the feedback!
…On Thu, 31 Oct 2019 at 19:48, Randy Reddig ***@***.***> wrote:
@glerchundi <https://github.com/glerchundi> we’ve been using the nio
branch in our iOS app via Swift Package Manager for a couple months. So
far, so good.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#526?email_source=notifications&email_token=AARA7FWP2XVASB6ZSA6XS2DQRMR7RA5CNFSM4IGONCF2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECY3PNI#issuecomment-548517813>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AARA7FQAYBHCMJ5L2CZPSETQRMR7RANCNFSM4IGONCFQ>
.
|
Thanks for the ping on this @glerchundi - I definitely dropped the ball on updates, sorry about that! Here's the current status of things:
In terms of timelines it's very hard to say, but I'd be very disappointed if we didn't manage to tag 1.0.0 in 2019! |
Really appreciate you taking the time for keeping us updated so nothing to sorry about!
Sounds like a really good strategy in order to have as stable as possible API before it lands in master.
Good to know, will told you something once we make progress on using it!
Now that nobody is listening, thanks for sharing your expected timeline ;) |
I would like to ask about the new NIO version, now that Am I missing something? Is the old (current) version not getting any support after 1.0.0 is released? |
The old version will not receive any new features after 1.0 is released. Also, I'm not sure whether it handles backpressure much better than the new version. Also, I think SwiftNIO has or had a backpressure channel handler; maybe @Lukasa can comment on that. But besides that, you still provide a closure that is called when a new message is received, and if desired, send new messages in that closure. That should be somewhat equivalent to calling |
NIO has an extremely simple backpressure handler, but it’s usually better to construct backpressure handling at a higher level if possible. In this case it absolutely should be possible to do that, as the relevant NIO components can propagate the backpressure, but we probably do need to design something that would affect the gRPC API. @glbrntt, thoughts? |
Most likely, yes. I'm not sure how backpressure is implemented for other languages, I'll have a look into this. |
We have officially moved to the NIO version now 🎉 |
We need to a more concrete plan on how we are going to support SwiftGRPC and switch to the NIO based version going forwards and when we will release a v1.0.0 of the NIO version.
I believe the general consensus so far is:
nio
branch with pre-release tags (1.0.0-alpha.1
, ...) until we are happy with the content and API (and have resolved the issuesin ☂️ Issue Checklist for GRPC v1.0 #492below)master
branch to give users some time to switch (~1 month ahead of time)master
branch tocgrpc
nio
branch tomaster
cgrpc
branchcgrpc
branchcgrpc
will remain on the0.x
series (the NIO variant will take1.y
)EDIT: Inlining the contents of #492:
GRPCNIO
helper enumEventLoop
inClientConnection
after a reconnect (depends on: Lower EventLoopGroup requirements for creating bootstraps apple/swift-nio-transport-services#49)master
The text was updated successfully, but these errors were encountered: