Skip to content
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

Add Xcode support policy #1836

Closed
3 of 5 tasks
mtrezza opened this issue Jan 13, 2025 · 6 comments · Fixed by #1835
Closed
3 of 5 tasks

Add Xcode support policy #1836

mtrezza opened this issue Jan 13, 2025 · 6 comments · Fixed by #1835
Labels
state:released Released as stable version type:docs Only change in the docs or README

Comments

@mtrezza
Copy link
Member

mtrezza commented Jan 13, 2025

New Feature / Enhancement Checklist

Current Limitation

This repo has no Xcode support policy, the CI currently runs a job for Xcode 14, which has been deprecated in Sept 2023. Maintaining the CI for older Xcode versions created additional efforts and its unclear how long we will and how long it makes sense to support older versions.

Feature / Enhancement Description

Policy context:

  • Xcode major release every year in Sept.
  • Every Xcode major release adds support for new Swift and iOS versions.
  • Simulators for newest devices only available in new Xcode version

Historic Xcode release schedule:

  • Xcode 14: Sept 2022
  • Xcode 15: Sept 2023
  • Xcode 16: Sept 2024

Historic iOS release schedule:

  • iOS 16: Sept 2022
  • iOS 17: Sept 2023
  • iOS 18: Sept 2024

We can assume that developers adopt the newest Xcode version quickly after release, to test their app on newest device simulators and iOs versions.

I believe running the CI in the current and previous Xcode version is sufficient.

Tasks:

References:

Copy link

parse-github-assistant bot commented Jan 13, 2025

Thanks for opening this issue!

  • 🎉 We are excited about your ideas for improvement!

@mtrezza mtrezza added the type:docs Only change in the docs or README label Jan 13, 2025
@mtrezza
Copy link
Member Author

mtrezza commented Jan 13, 2025

@dplewis What do you think?

@dplewis
Copy link
Member

dplewis commented Jan 17, 2025

@mtrezza It's kinda hard to keep track because the github macos runners can update at anytime. Removing old Ruby versions, update default iOS SDK version, default Xcode version etc.

I believe we should support the latest version of the last Xcode version in our case 15.4 (default for macos-14-arm64 image).

For newer versions of Xcode is tricky because they would require you to download SDK that are missing which we couldn't do in the CI. This is the reason why I'm using 16.1 instead of 16.2 in #1835

Feel free to do a PR for Xcode support policy.

@mtrezza
Copy link
Member Author

mtrezza commented Jan 17, 2025

Good, the policy would only specify how long we support a Xcode major version, it wouldn't mandate which feature / patch version we use in the CI. I don't think it's important that we run on the latest Xcode feature or patch version, e.g. Xcode 16.1 vs. 16.2, we can choose whatever works. I'll ping you in the PR for review.

@mtrezza
Copy link
Member Author

mtrezza commented Jan 17, 2025

I've opened #1838 in an attempt to define a support policy for Xcode, iOS, macOS and watchOS. Apple doesn't have an official, published support schedule. I inferred the support dates from the Xcode support policy, assuming yearly releases.

The resulting table looks like this:

Xcode Version iOS Version macOS Version macOS Version Release Date End-of-Support Date Parse Apple SDK Support
Xcode 13 iOS 15 macOS 12 watchOS 8 September 2021 October 2022 >= 1.19.3 <2.7.2
Xcode 14 iOS 16 macOS 13 watchOS 9 September 2022 October 2023 >= 2.7.2
Xcode 15 iOS 17 macOS 14 watchOS 10 September 2023 October 2024 >= 3.0.0
Xcode 16 iOS 18 macOS 15 watchOS 11 September 2024 tbd >= 4.2.0
Xcode 17 iOS 19 macOS 16 watchOS 12 tbd tbd tbd

Which means we would run a total of 6 CI jobs. For example as of today:

  • Xcode 15:
    • iOS 17
    • macOS 14
    • watchOS 10
  • Xcode 16:
    • iOS 18
    • macOS 15
    • watchOS 11

@dplewis Do you think it's easily possible to run these jobs? Or do you see any obstacles - it seems that PRs for CI jobs in this repo are often quite complex.

@parseplatformorg
Copy link
Contributor

🎉 This change has been released in version 5.0.0

@parseplatformorg parseplatformorg added the state:released Released as stable version label Jan 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
state:released Released as stable version type:docs Only change in the docs or README
Projects
None yet
3 participants