guix-devel
[Top][All Lists]
Advanced

[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?



reply via email to

[Prev in Thread] Current Thread [Next in Thread]