stage-1: Add progress tracking in splash #233
This adds a progress bar to stage-1 loading:
It is a "proper" GUI to show the status of the boot. Right now tasks that have opted-in will show a label while they are working. This may be useful for e.g. resizing a filesystem.
In a future update, already planned, dependencies that are "hung", or "seemingly not resolving" are going to end up showing up on that, too. When that future update lands, not having a filesystem to mount will be quite obvious.
There is one big caveat: display initialization happens so late that we often are at 80+% of the tasks done. That means that for many devices the splash looks a bit dumb.
Ideally, we would figure out why it takes so long to get the display init going.
Though maybe we want to instead not show a progress bar, but something more indefinite? Then add messages when relevant? Or maybe always print the task that just finished, so you get a flurry of text changing!
The text was updated successfully, but these errors were encountered:
This is to ensure "UX-friendly" tasks gets run ASAP. Quickly explained, this makes sure that the top tasks (e.g. Splash) gets ran as soon as possible. Given the list: - Splash - Graphics - AAA - BBB - CCC If `Graphics` ends up running, and AAA, BBB and CCC can too, Splash will have to wait until all those tasks got ran once! Not ideal for UX, if e.g. BBB takes time to *run* and we can't show the progress to users! The added cost of restarting the queue is minimal with tests I ran. It was not more than a tenth of a second, and could even be rounding errors.
The splash is now an application that should be started and forked from. Once started, it will listen for messages on a ZeroMQ socket reporting progress. The current protocol is extremely simple, reporting (optional) label, and reporting a progress amount. Additionally, it responds to a string commant ("quit") to quit as needed.