The Swift programming language has evolved into a versatile and powerful tool
for developers across a wide range of platforms. As the ecosystem continues to
grow, it is essential to establish a clear and forward-looking vision for
platform support. This vision has two main goals:
To establish common terminology and definitions for platform support.
To document a process for platforms to become officially supported in Swift.
The document, co-authored by members of the Platform Steering Group (notably @compnerd, who wrote the original draft), sets out the four different platform support tiers and defines the mechanism by which platform owners can request that their platform be included in a specific support tier.
Please feel free to continue discussing this vision document in this thread.
That is intentional. The first one is Tier 1 (general), and the second is Tier 1 (for toolchain hosts). Perhaps we should have labelled it Tier 1a or something instead.
The point is that you don't need to be a toolchain host to be in Tier 1, but if you are, then some additional requirements apply.
Will each of the linux distros now get an owner? Seems like that would be worthwhile.
It would be nice if an explanation or link were added for what a SBOM or "provenance information to validate the software supply chain" consists of, so this doesn't have to be explained informally through other channels each time.
"Ensure that dependencies beyond the platform SDK can build from source" is a bit vague: these are general Swift packages, like the thousands found in the SPI, or specific dependencies of the SDK, like libcurl->FoundationNetworking for linux?
It is good that the grandfathering of current official platforms is explicitly stated, to forestall complaints that new platforms are unfairly being held to a higher standard otherwise.
The Android workgroup obviously plans to submit it through this process- we are unofficially somewhere between tiers 1 and 2 now- looking forward to other platforms like the BSDs being added too.
Tier 1 toolchain is interesting. OpenBSD has some diverging features between the platform LLVM and the upstream LLVM such that the clang/lld requirements might be potentially problematic depending on how you read the document, but I don't anticipate OpenBSD getting to Tier 1 any time soon. Tier 2 (with swiftc+swiftpm) seems reasonable, however.
I feel like āif applicableā is doing a lot of heavy lifting in the case of Embedded-only platforms. Is it worth making the requirements for Embedded platforms an explicit subset of the requirements for non-Embedded? (easy for me to say, who will not be maintaining this policy)