Startup Disk Creator redesign & renaming proposal
Why the Startup Disk Creator (SDC) schould be redesigned
The SDC in its current form has a suboptimal work flow, displays too much unimportant information to the user and requires too many steps to actually create a startup USB stick. The SDC is kind of a semi-public face of Ubuntu and an important tool to spread it, therefore it should be as straightforward and simple to use as possible – some people even don't have an optical drive anymore.
What the new SDC should do for the user
It should be really easy to create a startup USB stick, therefore the SDC should automate as many tasks as possible and hide all non-essential or technical information from the user. The aim should be to allow the creation of a startup USB without the need to leave the program (to download an ISO), with the lowest amount of user interaction (clicks), in the most polished way.
Getting the iso
The first barrier to remove is the need to find and download a Ubuntu ISO image. The SDC should be able to download with a few clicks all current Ubuntu ISOs that get support updates as well as the ISOs of Ubuntu official derivates. Also already downloaded and supported ISOs should be auto-detected without any user interaction. Use locate, Zeitgeist, find or whatever, but find the ISOs for the user (remember: only the ISOs of Ubuntu versions that get updates and its official derivates).
If the SDC needs to download an image it should use something like zsync -i path-to-existing-iso url-new-iso.zsync to download only a bin-diff if there is another ISO already available → faster download + bandwidth gets saved.
User Workflow & Main Functionality
The user starts the SDC.
- Auto-detect all connected USB sticks and display them on the drop-down. If there is none, display a warning instead of the drop-down.
[nio]Unetbootin has an option/toggle to show also other devices (with a warning), not only USB. I have used that feature not only in Virtualbox. It is worth considering in the general mockup.
It is also very important to show very clearly which is the target device, when there are more than one (more than one USB device, not only when other devices are displayed and possible to select. [/nio]
Run locate, Zeitgeist and find to find ISOs (search with find in the $ISO_AND_DL_DIR).
- If a valid ISO is found in max 300ms, open the main view (mock-up below).
Auto-select the latest LTS - if present - or the newest release of $MY_DISTRO.
Check if a USB stick is available, if yes make the Make Startup USB button clickable.
- No ISO found, but Internet available → open the download view.
Else (no Internet and no local ISO) → open the error view, make the Download image button non-clickable.
- If a valid ISO is found in max 300ms, open the main view (mock-up below).
A right click on a ISO row should allow the user to open the folder containing the ISO file (nice litle gimmick) and to delete it. Mouse-over an ISO row should show the months / years of support left for the distribution.
300ms should be enough to find ISOs on the user system and not to slow down the application startup too much (locate takes on my system 20ms to return). If locate, Zeitgeist and find return before 300ms → show the main view. If some of the search methods return, but not all within 300ms, show the main view and update the UI when the remaining methods have finished (in most cases find will be the slowest).
[nio] I think that 300 ms is too short time for ageing computers [/nio]
Extra space on the stick for user files... option should be default to 0 MB.
- Download the newest list of available ISOs from the Net and, if available, a small distribution description for all entries.
Highlight the last LTS from $MY_DISTRO or the daily build of $MY_DISTRO, if the Show daily builds option has been set in the preferences.
The Operating System drop-down should show the size of the download to the right of the distribution name, but only for the open drop-down list, not after the selection has been made.
Set the drop-down defaults to $MY_DISTRO, 64-Bit and the latest LTS or to the daily build of $MY_DISTRO, if the Show daily builds option has been set in the preferences.
Main View - ISO download
The user has selected a distribution and clicked on the Download image button.
- Create a new row in the distribution ISO list, showing a download bar and a cancel button. Change the visual appearance of the download row title as in the mock-up to allow better distinction bettwen the two row types.
When the download is done, notify the user (notify-send) and auto-select the downloaded ISO.
The error view is displayed when the SDC can't find an ISO and no Internet connection is available.
- Check within a certain time period if Internet becomes available. If yes → switch to the download view.
If the user selects a new ISO image search and download folder search again the OS for ISOs (as on the application start-up). Show the main view, if a valid ISO is found.
Show only ISO images of the last release and LTS:
Limits the shown distributions in the main view list to the latest released and the last LTS version (checked by default). If unchecked, show all available Ubuntu distribution images and Ubuntu derivates.
Show daily builds
If activated, shows the latest daily build of $MY_DISTRO(unchecked by default) instead of the latest LTS in the various places.
[nio] If daily builds should be downloaded this way, it should also use zsync. Otherwise it is better to download/update outside the SDC and let the SDC find it in the computer/LAN. [/nio]
ISO image search and download folder
The default folder to search with the find command for valid ISOs is ~/Downloads.
find $XDG_DOWNLOAD_DIR -follow -type f -size +500M -iname "*buntu*.iso" 2>/dev/null
SDC renaming and other thoughts
1. The current SDC name is a bit too generic for my taste. It would be better to rename it to something more descriptive like: Ubuntu USB Startup Creator, or just USB Startup Creator.
2. It would be nice if the SDC could be used on other platforms too (same code, same functionality, same design).
3. The SDC 'Store in reserved extra space' doesn't work too often for me, it would be better to create the startup USB with the 'Discarded on shutdown...' option.
- [Comment by sudodus alias nio-wiklund at launchpad]
- If persistence is not necessary, it is more straight-forward to clone/flash a hybrid iso file instead of creating a partition, file system, copying the files and installing a boot-loader. A disadvantage is that the installer will be read-only, when made from an iso file with the read-only iso file system. (When made from a compressed image file a cloned/flashed system can have any file system, for example ext4 with read/write permissions.)
- If the bugs are squashed, persistence should work well, particularly if a casper-rw partition (rather than a file) are used. When the Startup Disk Creator works, it is better than Unetbootin, because Unetbootin does not show the first screens about languages and options (in syslinux so with BIOS (not UEFI)). But Unetbootin is definitely an alternative to recommend or even install automatically when a user wants to create a persistent USB boot device. So I think of a choice with two alternatives
- 'default': a read-only USB boot device (ISO 9660 file system cloned/flashed directly from the iso file)
- 'advanced': a read-write USB boot device (FAT32 or ext file system with or without persistence (made by SDC or Unetbootin))
- [end comment]
4. Display the path of an iso on-mouse-over and allow to open the iso folder through a right click on the iso list row by selecting the 'Show in Folder' option.
Current (saucy) version of the SDC
Unetbootin – Alternate Approach
Unetbootin does everything we need to do (and are trying to do ~ Downloads) and supports plugins/customizations. Including to limit the number of distros that will be shown. I'm thinking we install unetbootin, and then have another package called unetbootin-showubuntuonly, which disables showing other distros and customizes the interface more if needed.
They appear to use Qt4 which could be a blocker.. Other than that, it seems like a win-win.
[nio] Is it possible to do what we want with an own wrapper on top of Unetbootin, or does it require rewriting the whole user interface? Is the feasible alternative to make some customizations around the present GUI and take what is available? That might be good enough, but it might not look like the nice mockups of the new SDC. [/nio]
https://launchpad.net/unetbootin Their FAQ: http://unetbootin.sourceforge.net/#faq How to do a plugin: http://sourceforge.net/apps/trac/unetbootin/wiki/createplugin
- auto set root for needed UNbootin actions
- Main - set 'Type' to USB-Drive and hide menu
- Main - show device name instead of mount path
- the file browser is somewhat crappy
- new icon (default one is really ugly)
- change displayed text (simplify it - less info is needed)
Create Startup USB - Overwrite Dialog (not allways shown):
Create Startup USB - Running:
Create Startup USB - Done:
related bug tickets & other links