Skip to content

Drop support for iOS 12, tvOS 12, watchOS 5, and macOS 10.13/14 #255

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

Closed
4 tasks done
cbaker6 opened this issue Oct 8, 2021 · 6 comments · Fixed by #254
Closed
4 tasks done

Drop support for iOS 12, tvOS 12, watchOS 5, and macOS 10.13/14 #255

cbaker6 opened this issue Oct 8, 2021 · 6 comments · Fixed by #254
Labels
type:feature New feature or improvement of existing feature

Comments

@cbaker6
Copy link
Contributor

cbaker6 commented Oct 8, 2021

New Issue Checklist

Issue Description

Original discussion began here: #13 (comment)

The current OS's to be removed (iOS 12, tvOS 12, watchOS 5, and macOS 10.13/14) are currently in limbo as the Swift SDK should work well with them with the exception that ParseLiveQuery cannot be used. This is due to native websocket additions in iOS13+. Any OS before the aforementioned OS's already have to resort to the Obj-C SDK.

The Swift SDK leverages modern Swift: value types, Combine, web sockets, and with modification; SwiftUI. The minimum requirements for the aforementioned modern features is iOS 13. In addition, the Swift SDK indirectly supports the Identifiable protocol (if the developer adds the id property themselves) which simplifies using ParseObject's as models for SwiftUI. iOS 13 supports devices as old as 6+ years (2015).

Supporting the "limbo" OS's requires additional code (as seen in PR #254) and require extra care with maintaining. There were massive changes added by Swift 5.1 with minimum OS support for iOS13, tvOS 13, watchOS 6, and macOS 10.15. Dropping the "limbo" OS's allow for easier app development for developers as ParseObject's natively conform to Identifiable and simplifies maintenance and addition of features.

What can happen next is next version of the Swift SDK, 1.11.0 (which should include #238 and #248) will be the last release supporting the "limbo" OS's. After, 2.0.0 will drop support.

Steps to reproduce

Try to use Identifiable, Combine, natively on an older OS.

Actual Outcome

Won't compile.

Expected Outcome

Environment

Client

  • Parse Swift SDK version: 1.10.4
  • Xcode version: Xcode 13
  • Operating system (iOS, macOS, watchOS, etc.): iOS 15
  • Operating system version: Big Sur

Server

  • Parse Server version: 4.10.3
  • Operating system: linux
  • Local or remote host (AWS, Azure, Google Cloud, Heroku, Digital Ocean, etc): self host

Database

  • System (MongoDB or Postgres): Postgres
  • Database version: 13
  • Local or remote host (MongoDB Atlas, mLab, AWS, Azure, Google Cloud, etc): self host
@cbaker6 cbaker6 linked a pull request Oct 8, 2021 that will close this issue
6 tasks
@mtrezza
Copy link
Member

mtrezza commented Oct 8, 2021

After, 1.11.0 will drop support.

What versioning system is used for the Parse Swift SDK? Shouldn't a breaking change make a major version jump?

@cbaker6
Copy link
Contributor Author

cbaker6 commented Oct 8, 2021

I was using SemVer, but didn't think of moving to 2.0.0. I'm fine with this type of change.

@mtrezza
Copy link
Member

mtrezza commented Oct 8, 2021

Yes, we're using semver across most (all?) Parse repos, so I think that would be good.

@mtrezza
Copy link
Member

mtrezza commented Oct 8, 2021

Regarding this issue, I think a good indicator for making a decision whether to drop SDK support is the distribution. We can see that 7% of devices run on <=iOS 12, which I think is acceptable for dropping support, considering that this number includes all prior versions, not just iOS 12. Does this also drop iPadOS 12 support?

In general we should be mindful that the device and OS distribution in industrialized regions differs considerably from developing regions. The stats we see in most articles do not reflect that. Dropping iOS 12 support has a larger impact on users in developing regions. In the sense of "inclusive product design", we should hold back with SDK support dropping if there are not considerably high costs related to it. Or alternatively adopt a LTS strategy to allow developers to stretch the support period, like we do with Parse Server.

@cbaker6
Copy link
Contributor Author

cbaker6 commented Oct 8, 2021

We don't know how many developers use the Swift SDK. In addition, out of the total number, we don't know how many use it for targeting apps for iOS 12.

We do know that the first release of the Swift SDK was in 2021, after iOS 14 was released. When opening a new Xcode project, it defaults to the latest OS available, so by default, developers have been creating apps for iOS 14+. Of course, developers could have manually changed their project settings to iOS 12 (or its siblings). Before the first release and definitely before I took over coding in 2020, the SDK was unusable (didn't have enough features), so there's no way anyone could have used the Swift SDK to develop apps before 2020.

If there are developers using the Swift SDK for iOS 12 and its siblings, they can still use <= 1.11.0 (when it's released). This allows them to take advantage of almost all of the latest features the server has to offer (excluding LiveQuery). My guess is that most developers who still support <= iOS 12 use the Objc SDK.

@mtrezza
Copy link
Member

mtrezza commented Oct 8, 2021

yes, makes sense

@mtrezza mtrezza added type:feature New feature or improvement of existing feature and removed type:improvement labels Dec 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type:feature New feature or improvement of existing feature
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants