[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
User-Friendlyness of Guix and non-scaryness, printing messages
From: |
Danny Milosavljevic |
Subject: |
User-Friendlyness of Guix and non-scaryness, printing messages |
Date: |
Sun, 28 May 2017 20:44:44 +0200 |
Hi,
so bug#26941 (which is only tangentially related) has made me think about a
long-standing usability wart of Guix:
The verbosity of Guix messages is really off-putting for regular users.
Ideally, a successful build & installation of a package should look like this:
$ guix package -i foobar
$
Nothing else. If you can't help it, then:
$ guix package -i foobar
Package foobar in version 2.3.2 has been successfully installed into your
profile.
$
For a successful installation it should *never* print (as it does now):
$ guix package -i foobar
...aphics/opentype
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/graphics/transforms
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/mediastream
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/mediastream/libwebrtc
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/mock
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/mock/mediasource
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/network
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/sql
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/text
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/text/icu
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/plugins
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/
Source/WebCore/rendering
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/rendering/line
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/rendering/mathml
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/rendering/shapes
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/rendering/style
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/rendering/svg
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/replay
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/storage
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/style
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/svg
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/svg/animation
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/svg/graphics
-I/tmp/guix-build-webkitgtk-2.16.3.drv
-0/webkitgtk-2.16.3/Source/WebCore/svg/graphics/filters
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/svg/properties
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/websockets
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/workers
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/xml
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/xml/parser
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/build/DerivedSources/WebCore
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/build/DerivedSources/ForwardingHeaders/ANGLE
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/graphics/gpu
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/ThirdParty/woff2/src
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/mediastream/openwebrtc
-I/tmp/guix-build-we
bkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/graphics/gstreamer
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/graphics/gstreamer/mse
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/graphics/gstreamer/eme
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/audio/gstreamer
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/image-decoders
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/image-decoders/bmp
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/image-decoders/gif
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/image-decoders/ico
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/image-decoders/jpeg
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/image-decoders/png
-I/tm
p/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/image-decoders/webp
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/linux
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/graphics/texmap
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/page/scrolling/coordinatedgraphics
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/graphics/texmap/coordinated
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/ThirdParty/ANGLE
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/ThirdParty/ANGLE/include/KHR
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/accessibility/atk
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/editing/atk
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/page/gtk
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Sour
ce/WebCore/platform/cairo
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/gamepad/glib
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/geoclue
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/gtk
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/graphics/cairo
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/graphics/egl
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/graphics/glx
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/graphics/gtk
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/graphics/freetype
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/graphics/opengl
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/graphics/wayland
-I/tmp/guix-build-web
kitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/graphics/x11
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/mediastream/gtk
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/network/gtk
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/network/soup
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/platform/text/gtk
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/bindings/gobject
-isystem
/gnu/store/0wps368gx0cn3ynrkbhzq5pxf75rng7y-glib-2.50.3/include/glib-2.0
-isystem
/gnu/store/0wps368gx0cn3ynrkbhzq5pxf75rng7y-glib-2.50.3/lib/glib-2.0/include
-isystem
/gnu/store/228dcbvw787gbz1kslwjcaz5qnfcgn2v-gstreamer-1.12.0/include/gstreamer-1.0
-isystem
/gnu/store/jkx9mkw8j34jfnv0dqdbbzxdcx3mlfdg-atk-2.22.0/include/atk-1.0 -isystem
/gnu/store/i0bjwdqvn0wixcwfpw254w0az17iysga-cairo-1.14.8/include/cairo -isystem
/gnu/store/92scvk1jj5fnsbw
y4nichgg0hdl235dz-enchant-1.6.0/include/enchant -isystem
/gnu/store/b837wr8ffw2ppbx1744a2xll70bh8h4c-freetype-2.7.1/include/freetype2/freetype
-isystem
/gnu/store/b837wr8ffw2ppbx1744a2xll70bh8h4c-freetype-2.7.1/include/freetype2
-isystem
/gnu/store/0wps368gx0cn3ynrkbhzq5pxf75rng7y-glib-2.50.3/include/gio-unix-2.0
-isystem
/gnu/store/k6jkr6p94xlsddgiy8abicm2b36gkdh6-harfbuzz-1.4.3/include/harfbuzz
-isystem
/gnu/store/iclywgva6yjrxyblxrxcisrpqc2x8m5s-libsecret-0.18.5/include/libsecret-1
-isystem
/gnu/store/4wr3mq3n7wvgkpy6384rsrrq5kiwwihq-libsoup-2.56.0/include/libsoup-2.4
-isystem
/gnu/store/8h3gg0hj7lwimcdn2r912vv2mnh6yx0n-libxml2-2.9.4/include/libxml2
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/..
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/API
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/Forwardin
gHeaders
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/assembler
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/b3
-I/tmp/guix-build-webkitgtk-2.16
.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/b3/air
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/bindings
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/builtins
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/bytecode
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/bytecompiler
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/dfg
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/disassembler
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/disassembler/udis86
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/disassembler/ARM64
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/domjit
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/ftl
-I/tmp/guix-build-webkitgtk-2.16.3.d
rv-0/webkitgtk-2.16.3/Source/JavaScriptCore/heap
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/debugger
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/inspector
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/inspector/agents
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/inspector/augmentable
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/inspector/remote
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/interpreter
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/jit
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/llint
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/parser
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/profiler
-I/tmp/guix-build-webkitgtk-2.16.3.
drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/replay
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/runtime
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/tools
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/wasm
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/wasm/js
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/JavaScriptCore/yarr
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/build/DerivedSources/ForwardingHeaders
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/build/DerivedSources/JavaScriptCore
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/build/DerivedSources/JavaScriptCore/inspector
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/bmalloc
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WTF
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/build/DerivedSources
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/
ThirdParty
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/PAL
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/PAL/pal
-I/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/PAL/pal/crypto
-fno-exceptions -fno-strict-aliasing -fno-rtti -std=c++1y -O3 -DNDEBUG
-Wall -Wextra -Wcast-align -Wformat-security -Wmissing-format-attribute
-Wpointer-arith -Wundef -Wwrite-strings -fPIC -o
CMakeFiles/WebCore.dir/svg/SVGFEImageElement.cpp.o -c
/tmp/guix-build-webkitgtk-2.16.3.drv-0/webkitgtk-2.16.3/Source/WebCore/svg/SVGFEImageElement.cpp
[... 20 pages of cryptic text]
Package foobar has been successfully installed into your profile.
$
I think that a line containing something like
"36pqsgbqi7kkkkn89sqrp2hyk3gxm8zv" (like install-file would print, too) should
never appear in front of the user in normal operation.
Some programmer (!) colleagues of mine actually remarked something like "what
is THAT? Looks scary" when they looked at what guix prints when I install
something in Guix.
Really, printing that much noise is an usability bug.
Arun mentioned that he wants to see that something is still happening and
therefore wants something printed. I agree - but it should only print and
update one line total.
For example, if we wanted a progress monitor, that could look like this (this
should include all the dependencies in the same progress display):
$ guix package -i foobar
Installing... [20%] \
^ Spinner that spins, say, every time a line is added to
the log file.
And later when progress is 100%, changing to
$ guix package -i foobar
Installation successful
$
I think that the detailed messages are good to have in the event that an
installation fails. But even then it should just print a message like this
(and here, it really should print it):
$ guix package -i foobar
Installation failed. For more details, you can invoke "guix build --log-file
`guix build -d foobar`" (without double quotes). In order to report a bug,
please send a message to <address@hidden>.
$
Or it could invoke "guix build --log-file `guix build -d foobar`" on its own
and just print the resulting name.
It should NOT print the detailed messages automatically.
So all in all I'd really like much less verbosity on the console. I actually
use guix behind a wrapper script of mine that supresses all non-error messages
for common cases (it redirects stdout to /dev/null) - and it's *still* pretty
bad. I think that's because all the build output is printed to stderr by
build.scm , regardless of whether the container printed it to stdout or stderr.
Is that correct?
Could we please make "guix package -i" use "guix build -q" to make stdout and
stderr go into the log files only?
Furthermore, I think even the guix download lines are too noisy in the
successful case. Guix should really just update one line for the entire thing,
downloading, building, profile updating, everything.
The usual UNIX design, too, is that if everything works, UNIX prints nothing.
As soon as something is printed my first feeling is that it's something bad
(especially with 20 pages :P). And really, no one cares what the current gcc
command is - as long as it works.
If UNIX printed everything it did it would look very noisy and be very slow
(printing takes time).
I think "guix pull" is nice in this regard. It just shows a progress bar.
Nothing else. Because a normal user doesn't care that now it compiles
gnu/foo/bar.scm into e5y35334436743987463464363-foo/lib/afrewtew/tw/teww.
WDYT?