dart-lang / pub-dev

The pub.dev website
https://pub.dev
BSD 3-Clause "New" or "Revised" License
774 stars 145 forks source link

Make it easy to find unendorsed implementation of federated plugins #5545

Open stuartmorgan opened 2 years ago

stuartmorgan commented 2 years ago

Currently there's no good way, in general, to find unendorsed implementations of a federated plugin. As an example, https://pub.dev/packages/just_audio currently has unendorsed Windows and Linux implementations, which are in a sort of pre-release/evaluation stage. The only way for someone to know that right now is because the developer of just_audio actually added information to the README about it.

Some things we could do:

  1. Add a sidebar entry when a plugin is federated (which we could heuristically define as "has at least one default_package entry in its plugin section"), listing all unendorsed packages that implement it (which is detectable using the implements entry in the implementation packages).
    • A less convenient but more spam-resistant option would be just to have a link to a search for implementations, if any unendorsed implementations exist.
  2. An explicit search option to find implementations of a package.
  3. Some kind of special handling in the supported platform section, to address the issue that searching by platform will currently exclude things without endorsed implementations for that platform. For instance, searching for audio packages that support Windows won't turn up just_audio. It might be interesting to augment the metadata with information about unendorsed implementations such that it would turn up in searches but be indicated in some way. E.g., PLATFORM: [ANDROID] [IOS] [MACOS][WEB] (Unendorsed: [LINUX] [WINDOWS]), where the word "unendorsed" is a link to a search for unendorsed implementation packages.

(/cc @mit-mit @jonasfj filed per recent discussion)

jonasfj commented 2 years ago

I like the idea that an implementation-package gets listed in the sidebar of the package it implements.

But to mitigate spam we should probably consider: