-
Notifications
You must be signed in to change notification settings - Fork 730
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
Decision Record - Defer support of SQLite.swift 0.13.0+ #1943
Comments
How many of these problems would go away if we dropped iOS 12 support and used (note: I don't mean this to propose doing so immediately, just to gauge how much work we'd save when we eventually do it) |
The Security APIs in question were deprecated in both macOS 10.15 and iOS 13 so doing the work for one, or both is the same. Rewriting the WebSocket module using a modern networking API (
Rewriting the WebSocket module in v2.0 aligns with the larger networking overhaul (Apollo Link, async/await, etc.) and given our current objective (Swift codegen), frankly the timing is better. As for how much work we'd save; I think fixing the rest of the deprecations is non-trivial and we'd still be rewriting the WebSocket module later too. |
Marking this as accepted after agreement within the team. |
The was a PR recently (#2015) that was impacted by this decision. In debugging that there are a couple observations that should be noted.
How do we resolve this:
|
With the release of SQLite.swift 0.13.1 the minimum macOS deployment target has been reverted 10.10 which means we can update our dependency of SQLite.swift without the impacts outlined in this decision log. #2015 does the update and that closes out this decision log. |
Status
Summary
SQLite.swift 0.13.0 was recently released and one of the changes included is an increase of the macOS minimum deployment target to 10.15 - diff.
PR #1925 began the work of bumping our own macOS minimum deployment target to 10.15, enabling us to support SQLite.swift 0.13.0. Dropping macOS 10.14 results in a number of warnings about deprecated APIs within the Apple Security.framework API. Note that the code in question is in the Starscream source code that we absorbed in PR #1906.
Replacing
SecTrustEvaluate
withSecTrustEvaluateWithError(_:_:)
is easy enough - c0523d0.The other "No longer supported." warnings are a bit more complicated:
SSLSetEnabledCiphers
insec_protocol_options_append_tls_ciphersuite
but the number of supported ciphers is dramatically reduced (SSLSettings vs. tls_ciphersuite_t). There are no tests of the Starscream source code to validate this logic.We may be able to make the above changes and get the two frameworks working together but would have to invest in building a robust test suite for these changes; Starscream's test suite is not enough to rely on.
I've come to the conclusion that the effort to fix the warnings is non-trivial and without an immediate compelling reason to support a minimum of macOS 10.15 we should defer the work. Recently we have discussed excluding any networking stack changes from release 1.0. This decision would work in favour of that new timeline; including this change in release 2.0 would provide ~6 months post macOS 12/iOS 15 release, during which many apollo-ios users will hopefully drop their own support of macOS 10.14 and iOS 12.
Decision
Defer dropping support for macOS 10.14 and iOS 12 until release 2.0. This will very likely require writing our own WebSocket implementation using Apple's native WebSocket classes.
Consequences
Applications that have both apollo-ios and SQLite.swift as dependencies would be limited to SQLite.swift release 0.12.x and below (< 0.13.0). This is because we cannot support the required macOS minimum deployment target of 10.15 without fixing the deprecated API warnings.
The text was updated successfully, but these errors were encountered: