Skip to content

CLI user experience

Allan Day edited this page Dec 19, 2017 · 8 revisions

Research into CLI user experience for flatpak.

Installing an app - relevant art

Example output when installing something.

flatpak

This is following one of the commands that is given on flathub.com.

$ flatpak install --from https://flathub.org/repo/appstream/org.baedert.corebird.flatpakref
The remote 'flathub', at location https://flathub.org/repo/ contains additional applications.
Should the remote be kept for future installations? [y/n]: y
Installing: org.baedert.corebird/x86_64/stable
Required runtime for org.baedert.corebird/x86_64/stable (org.gnome.Platform/x86_64/3.26) is not installed, searching...
Found in remote flathub, do you want to install it? [y/n]: y
Installing: org.gnome.Platform/x86_64/3.26 from flathub
[####################] 10 delta parts, 74 loose fetched; 207705 KiB transferred in 27 seconds
Installing: org.gtk.Gtk3theme.Ambiance/x86_64/3.22 from flathub
[####################] 1 delta parts, 1 loose fetched; 292 KiB transferred in 1 seconds
Installing: org.gnome.Platform.Locale/x86_64/3.26 from flathub
[####################] 4 metadata, 1 content objects fetched; 14 KiB transferred in 0 seconds
Installing: org.baedert.corebird/x86_64/stable from flathub
[####################] 1 delta parts, 3 loose fetched; 6934 KiB transferred in 1 seconds
Installing: org.baedert.corebird.Locale/x86_64/stable from flathub
[####################] 3 metadata, 1 content objects fetched; 3 KiB transferred in 0 seconds

dnf

sudo dnf install audacity
[sudo] password for ******: 
Last metadata expiration check: 0:00:00 ago on Fri 15 Dec 2017 10:35:19 GMT.
Dependencies resolved.
================================================================================
 Package                  Arch        Version                 Repository   Size
================================================================================
Installing:
 audacity                 x86_64      2.1.3-5.fc27            fedora      5.3 M
Installing dependencies:
 SDL                      x86_64      1.2.15-29.fc27          fedora      216 k
 compat-wxBase3-gtk2      x86_64      3.0.2-32.fc27           fedora      1.1 M
 compat-wxGTK3-gtk2       x86_64      3.0.2-32.fc27           fedora      5.1 M
 libid3tag                x86_64      0.15.1b-24.fc27         fedora       53 k
 portaudio                x86_64      19-26.fc27              fedora       95 k
 vamp-plugin-sdk          x86_64      2.5-11.fc27             fedora      145 k

Transaction Summary
================================================================================
Install  7 Packages

Total download size: 12 M
Installed size: 45 M
Is this ok [y/N]: y
Downloading Packages:
(1/7): compat-wxBase3-gtk2-3.0.2-32.fc27.x86_64 974 kB/s | 1.1 MB     00:01    
(2/7): libid3tag-0.15.1b-24.fc27.x86_64.rpm     590 kB/s |  53 kB     00:00    
(3/7): portaudio-19-26.fc27.x86_64.rpm          920 kB/s |  95 kB     00:00    
(4/7): vamp-plugin-sdk-2.5-11.fc27.x86_64.rpm   834 kB/s | 145 kB     00:00    
(5/7): SDL-1.2.15-29.fc27.x86_64.rpm            1.1 MB/s | 216 kB     00:00    
(6/7): audacity-2.1.3-5.fc27.x86_64.rpm         1.7 MB/s | 5.3 MB     00:03    
(7/7): compat-wxGTK3-gtk2-3.0.2-32.fc27.x86_64. 1.6 MB/s | 5.1 MB     00:03    
--------------------------------------------------------------------------------
Total                                           3.0 MB/s |  12 MB     00:03     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : compat-wxBase3-gtk2-3.0.2-32.fc27.x86_64               1/7 
  Running scriptlet: compat-wxBase3-gtk2-3.0.2-32.fc27.x86_64               1/7 
  Installing       : SDL-1.2.15-29.fc27.x86_64                              2/7 
  Running scriptlet: SDL-1.2.15-29.fc27.x86_64                              2/7 
  Installing       : compat-wxGTK3-gtk2-3.0.2-32.fc27.x86_64                3/7 
  Running scriptlet: compat-wxGTK3-gtk2-3.0.2-32.fc27.x86_64                3/7 
  Installing       : vamp-plugin-sdk-2.5-11.fc27.x86_64                     4/7 
  Running scriptlet: vamp-plugin-sdk-2.5-11.fc27.x86_64                     4/7 
  Installing       : portaudio-19-26.fc27.x86_64                            5/7 
  Running scriptlet: portaudio-19-26.fc27.x86_64                            5/7 
  Installing       : libid3tag-0.15.1b-24.fc27.x86_64                       6/7 
  Running scriptlet: libid3tag-0.15.1b-24.fc27.x86_64                       6/7 
  Installing       : audacity-2.1.3-5.fc27.x86_64                           7/7 
  Running scriptlet: audacity-2.1.3-5.fc27.x86_64                           7/7 
  Running scriptlet: audacity-2.1.3-5.fc27.x86_64                                                                                                                                                              
  Verifying        : audacity-2.1.3-5.fc27.x86_64                                                                                                                                                              
  Verifying        : compat-wxBase3-gtk2-3.0.2-32.fc27.x86_64                                                                                                                                                  
  Verifying        : compat-wxGTK3-gtk2-3.0.2-32.fc27.x86_64                                                                                                                                                   
  Verifying        : libid3tag-0.15.1b-24.fc27.x86_64                                                                                                                                                          
  Verifying        : portaudio-19-26.fc27.x86_64                                                                                                                                                               
  Verifying        : vamp-plugin-sdk-2.5-11.fc27.x86_64                                                                                                                                                        
  Verifying        : SDL-1.2.15-29.fc27.x86_64                                                                                                                                                                 

Installed:
  audacity.x86_64 2.1.3-5.fc27        SDL.x86_64 1.2.15-29.fc27  compat-wxBase3-gtk2.x86_64 3.0.2-32.fc27  compat-wxGTK3-gtk2.x86_64 3.0.2-32.fc27  libid3tag.x86_64 0.15.1b-24.fc27  portaudio.x86_64 19-26.fc27 
  vamp-plugin-sdk.x86_64 2.5-11.fc27 

Complete!

A progress bar is shown beside each step while it is completed. Progress bars look like:

<item>                                   20% [=============-             ] 5.1 MB/s | 9.1 MB   00:30 ETA

snap

$ snap install hello
2017-12-14T18:56:26Z INFO Waiting for restart...
hello 2.10 from 'canonical' installed

Shows a progress bar which is replaced with the installed message when complete. The progress bar is shown by inverting the colour of the background for the line.

flatpak issues

  • Reverse DNS names for apps are a pain
  • You have to state where you want to install from
  • Doesn't confirm installation when complete
  • We're training users to use --from and link to a .flatpakref, rather than doing flapak install flathub <app name>, and the --from is awkward (this is probably an issue with the website).
  • No indication of download sizes before download
  • If there are multiple confirmation steps, they appear sequentially, rather than being grouped together
  • It asks if you want to install some things along with the app (like the runtime), but not others. To the uninitiated this feels inconsistent, but also surprising - I just asked to install the app, not all this other stuff. What is it, anyway?
  • It feels a bit chatty
  • Technical lingo in the progress strings - delta parts, loose fetched, metadata and content objects
  • "Progress bars" don't disappear after completion, resulting in additional visual noise
  • The big block of text is hard to read

Information about an app

flatpak

$ flatpak search corebird
Application ID       Version Branch Remotes Description   
org.baedert.corebird 1.7.3   stable flathub Twitter Client

(Headings are in bold.)

$ flatpak remote-info flathub org.gimp.GIMP
Ref: app/org.gimp.GIMP/x86_64/stable
ID: org.gimp.GIMP
Arch: x86_64
Branch: stable
Date: 2017-10-17 16:39:40 +0000
Subject: Build org.gimp.GIMP at 2f9a3362289727807db5b74d6ebf426d8a1f09a7
Commit: 7bda4b1cadf3d096f849e34f18c5934fa2e6dbe97b3269cabc2176e96e2a25fb
Parent: 64a5dae3bfa8ef3a5c7b7a4e2f497f3e0d5c297c496710998d98846ac3fafcc8
Download size: 47.2 MB
Installed size: 127.2 MB
Runtime: org.gnome.Platform/x86_64/3.24

(Labels are in bold.)

dnf

$ dnf search corebird
======================== Name Exactly Matched: corebird ========================
corebird.x86_64 : Native GTK Twitter client
$ dnf info corebird
Available Packages
Name         : corebird
Version      : 1.7.2
Release      : 1.fc27
Arch         : x86_64
Size         : 596 k
Source       : corebird-1.7.2-1.fc27.src.rpm
Repo         : updates
Summary      : Native GTK Twitter client
URL          : http:https://corebird.baedert.org/
License      : GPLv3+
Description  : Native GTK Twitter client for the Linux desktop.

apt

Sorting... Done
Full Text Search... Done
corebird/artful 1.6-1 amd64
  Native Gtk+ Twitter client for the Linux desktop
apt show corebird
Package: corebird
Version: 1.6-1
Priority: optional
Section: universe/net
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Philip Rinn <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1,682 kB
Depends: gstreamer1.0-plugins-good, dconf-gsettings-backend | gsettings-backend, libatk1.0-0 (>= 1.12.4), libc6 (>= 2.14), libcairo2 (>= 1.14.0), libgdk-pixbuf2.0-0 (>= 2.27.1), libglib2.0-0 (>= 2.44), libgspell-1-1 (>= 1.0.0), libgstreamer1.0-0 (>= 1.0.0), libgtk-3-0 (>= 3.21.5), libjson-glib-1.0-0 (>= 1.2.0), libpango-1.0-0 (>= 1.14.0), libsoup2.4-1 (>= 2.41.90), libsqlite3-0 (>= 3.7.15)
Recommends: gstreamer1.0-plugins-bad
Homepage: http:https://corebird.baedert.org
Download-Size: 502 kB
APT-Sources: http:https://gb.archive.ubuntu.com/ubuntu artful/universe amd64 Packages
Description: Native Gtk+ Twitter client for the Linux desktop
 Corebird is a modern and lightweight Twitter client for the GNOME 3 desktop. It
 features inline image and video preview, creation of lists and favorites,
 filtering of tweets and full text search. Corebird is able to manage multiple
 Twitter accounts.

snap

$ snap search corebird
Name      Version  Developer     Notes  Summary
corebird  1.7.3    snapcrafters  -      Corebird Twitter Client
$ snap info corebird
name:      corebird
summary:   Corebird Twitter Client
publisher: snapcrafters
contact:   https://github.com/snapcrafters/corebird/issues
description: |
  Corebird is a modern and lightweight Twitter client for the GNOME 3 desktop.
  It features inline image and video preview, creation of lists and favorites,
  filtering of tweets and full text search. Corebird is able to manage multiple
  Twitter accounts.
snap-id: jpPjOVJYHmcVHb0EJVC6hVlq6eCEYkZ5
commands:
  - corebird
tracking:    stable
installed:   1.7.3 (65) 36MB -
refreshed:   2017-11-20 08:33:15 +0000 UTC
channels:               
  stable:    1.7.3 (65) 36MB -
  candidate: 1.7.3 (88) 30MB -
  beta:      1.7.3 (88) 30MB -
  edge:      1.7.3 (88) 30MB -

'Errors'

flatpak

$ flatpak remote-info flathub org.gimp.gimp
error: Error searching remote flathub: Can't find ref org.gimp.gimp

(error: is bold and red.)

dnf

$ sudo dnf install croebird
[sudo] password for ****: 
No match for argument: croebird
Error: Unable to find a match

apt

[sudo] password for ***: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package croebird

snap

$ snap install croebird
error: snap "croebird" not found