I am excited to announce the swift-evolution-metadata-extractor project is now public.
As its name suggests, this command line tool reads the proposals in the swift-evolution repository, extracts the metadata, and generates the JSON file that drives the Swift evolution dashboard.
The project is newly written, taking advantage of modern Swift features. It takes over the duties of a legacy tool which had its origins in the pre-Swift 4 era.
The ‘little tool with the big name’ has been in production since March 2024.
Since migrating to the new tool, the metadata schema has been revised for the first time in many years undergoing a public review process and transition period.
Goals
Extracting metadata from evolution proposals and generating it into a JSON file to drive the evolution dashboard is the primary purpose of the tool.
The package also includes the EvolutionMetadataModel
library, which defines Codable
, Equatable
, Sendable
value types that are suitable for decoding the evolution metadata file in Swift projects.
Versioning
The transition to an updated metadata schema was recently completed and the schema version is now 1.0.0.
The initial version of the package itself is 0.1.0.
The intent is for the package version to be updated to 1.0 soon after the Swift 6.0 release and for the package to require Swift 6.0 or later.
Because the tool and EvolutionMetadataModel
library have just been made public this also provides a period of time for feedback before reaching 1.0.
For more information on versioning of the schema, tool, and package see the Versioning section in the CONTRIBUTING.md
file in the project.
Roadmap
The intent of the project is to remain tightly focused on extracting metadata from evolution proposals. Currently there are two items on the roadmap that maintain that focus:
-
Updates to Foundation in Swift 6.0 should allow the tool to compile for Linux without reverting to older APIs. Compiling for Linux is the next milestone for the project and will coincide with version 1.0 of the package.
-
The tool was designed to be extended to generate validation reports. This would allow the tool to check evolution proposal PRs for correctness of metadata fields and flag issues before they are committed. This is intended to happen after version 1.0 of the package.
Contributing and Feedback
Contributions are welcome, but please propose schema, command line interface changes, or other major changes or additions as an issue first, before submitting a pull request.
Because those changes will need to be discussed and considered, submitting an issue instead of a PR can save considerable contributor time if the change is not accepted.
Please see the CONTRIBUTING.md
file in the project for additional guidelines and details on getting started.
Feedback is also welcome, both here in the forums or as issues in the project.