Skip to content

The future of the rust-releases crate #270

@foresterre

Description

@foresterre

Goals

  • Merging and combining sources: sometimes we want to combine multiple sources to come to a better release index. For example, some sources are updated quicker after a release is published than others, some are easier to fetch, but are also incomplete with respect to data they contain. The merged index should have a more complete view than the individual parts.
    • Consider different merging strategies; we don't always have data with timestamps, and not always is later also more correct.
  • A built in source of truth index for releases in the past, baked statically into a crate (this is mostly useful if you can merge it with newer data)
    • A daily ran workflow which updates the crate automatically
    • Consider how to deal with corrections made by humans
  • More metadata: currently we only cared about versions, and let dependencies gather additional metadata themselves, sometimes in an unpure way of getting it from the cache collected by this crate
    • Think: release dates, toolchains and their targets (really everything rustup can manage)
  • More than just stable: so far we only implemented fetching stable releases, but we care also about beta and nightly releases. We will skip the early alpha and other pre-1.0 releases.
    • stable, beta and nightly support

Considerations

  • Clients (i.e. that what fetches the data) will no longer be generic
  • Clients will be responsible for their own caching and incremental data fetching (it turns out that this is often quite different for different data sources)

Output / productivity

  • The project will provide a set of types which describe a Rust release
  • The project will provide a set of client implementations which can the data which describes a Rust release
  • The project will provide a set of transformers which take the intermediate data collected by clients, and transform it into the types describing a rust release
  • The project will proving one or more merge implementations which can be used to merge data collected from different data sources

Metadata

Metadata

Assignees

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions