Extensible web plugin
- Dominant language
- Python
- Stars
- 15.7k
- Forks
- 2.1k
- Avg merge
- 4d 21h
- Merged PRs (30d)
- 31
Description
Following discussion in #456 and on the mailing list [here](https://groups.google.com/d/msg/beets-users/lxj6TZ4bsZk/aNozth-gwBAJ) and [here](https://groups.google.com/d/msg/beets-users/Y0U70pAEFVg/nml6KFr7AcMJ), it's time to get slightly more serious about overhauling the web plugin for extensibility.
Here's my wishlist:
- Start with a clean slate REST API. We should design this with several potential use cases in mind. The old API can stick around for backwards compatibility; perhaps the new one goes under `/v2/` or something. The new API should be standards-worthy: clean and well-documented, potentially even for reuse by other tools.
- Design a new Python API for exposing functionality via the web API.
- This probably means rolling the web API into beets core instead of keeping it in a plugin.
- Accordingly, we should separate the UI from the API itself. As I mentioned on the mailing list, this would all work best if beets core could avoid including the frontend HTML/JavaScript/CSS itself; this should be relegated to pluggable client interfaces. We could provide a simple default interface (perhaps hosted somewhere as static files?) but make it easy to switch to others.
How does all that sound to everyone?
Contributor guide
Assessment
This issue has not been assessed yet.