Skip to content

Registry feature wishlist #291

@christoph-dfinity

Description

@christoph-dfinity

Here's a laundry list of features I'd like for the Mops registry. My goal is to have a discussion here. Once we've decided which of these we'd like to have I'm happy to contribute/help with implementation efforts.

The first four would be a pre-requisite for implementing a dependency version solver, while the latter are QoL improvements (the reporting feature is the kind of thing you want to have in place before you need it).

  1. Manifest support for version ranges, maybe a more restricted version of the cargo version requirement syntax
    I'd recommend not messing with pre-releases. If we really want them, they can be allowed later on.
  2. Store compressed tarballs instead of individual files, with a single integrity hash per package version
  • Pro
    • Saves storage through compression, and by only requiring a single integrity hash
    • Downloads a dependency in a single request
    • Much cheaper to verify for integrity
    • Enables easier mirroring
  • Con
    • Requires decompressing on the registry side to compute the content hash
    • Would break the file viewer on the Mops website until we also implement unpacking the tar-balls
  1. Downloading a full index of package versions (with incremental updates)
    I'd recommend copying either the cargo registry index or the purescript registry index format and storing them as a Git repository to get incremental updates for free
    Not sure how easy/hard this would be to do with HTTP outcalls, or if it would require a periodic off-chain runner
  2. Uploaded packages should only be allowed to reference other published packages, meaning no Git or Path dependencies. Could consider weakening this for dev-dependencies

Miscellaneous missing capabilities:

  1. Ability to report a package (Copyright, illegal content, etc)
  2. Yank/Deprecate command
  3. Unpublish command

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions