Because Willow aims to support as many forges as possible while providing a smooth and seamless user experience, I think changing project addition might be a good idea. Right now, it's a step-wise form that blocks loading the next form page while the backend fetches the project's details. The larger a project or the more obscure a forge is, the longer fetching might take. I don't want Willow's load time to depend on external variables, so an asynchronous queue might be best.
When load time depends on grabbing external info, we want to do so as quickly as possible so the load time is as low as possible. When doing it more asynchronously, we could actually grab more info and have the user provide even less up-front.
This is the workflow I'm thinking of.
Clicking Track a new project
opens a modal using popover, just like
we plan to do with projects' release notes. In the popover is a form
with a single field for the project URL and a button labeled Add to queue
. There's help text saying the user should provide the URL to the
project's webpage, its RSS feed, or its git repo. Examples using
Willow's pages, feeds, and repos are behind a <details>
element.
Clicking the button loads the same page, but there's a dismissable
message at the top saying the project is queued for tracking and the
user will get a notification with a link to the project's config page
when it's ready. The config page lets the user change the project's name and webpage and swap between detected sources and a custom source that must clone as a repo or parse as a feed. Saving this page does block if the user has set a custom source. If cloning the repo or parsing the feed fails, the page should tell the user.
This overhaul has some sub-tasks I can already see. I'll create todos that don't exist yet and edit this to link them.
Implementing this workflow would obsolete #12, as well as some other tickets.