Pkg.jl: More verbose output for adding, using, and updating packages

Created on 28 Dec 2017  路  3Comments  路  Source: JuliaLang/Pkg.jl

I recently spent a some time with Julia v0.6 and Pkg2 and thinking like a new user to get a sense of usability issue. Forgetting about the actual speed of packages, my general feeling is that the perceived slowness around packages comes down to 3 main things: (1) there is insufficient visual feedback during add/using/update operations; (2) expectations are not properly set that time is required for both the download/installation and the recompilation; (3) user steps are required between installation and pre-compilation.

For problem (1) of perceived slowness, I found myself angrily hitting <Enter> throughout add/using/update operations, because it was unclear if the REPL was stuck, whether I needed to have some input to flush the screen buffer, whether some user input was required for it to go to the next step, etc. I realized this was part of the reason it felt slow, even though there is no reason a user should otherwise expect downloading, installing, and compiling packages to be fast.

So, my suggestion is simple: much more verbose output for add/using/update operations, especially for new users. A few notes on this suggestion:

  • It is especially important at the beginning of the operation, to make sure users understand that the process has started. As with a lot of installation processes, it will make the process feel faster because the user sees the computer working (even if the output itself is meaningless). From the pkg> add output in Pkg3 at this point, it already looks like an improvement on the quantity of output, but I would take it even further.
  • After it figures out the dependency graph of packages, I would love to see output along the lines of downloading package XX of XX, installing package XX of XX, etc. This gives the users a sense of the amount of progress, even if there is no reason to believe thee operation is linear in the number of packages.
  • It may be irritating for advanced users to get too much output text, so it probably makes sense to have a low vs. high verbose option for the add and update operations. Having it as a global setting isn't the worst idea for power users.
  • I strongly suggest that the default is the high verbosity since the newest users are the least likely to play around with options.

Most helpful comment

Regarding visual feedback, the top REPL in the video at https://www.youtube.com/watch?v=s8iRe_pSVYE is from Pkg3. Since we are now using tarballs, almost all downloads (that do not include large binary dependencies) are very fast to download. Do you still feel there needs to be some progress bar after seeing the video. In Pkg2, there is a large initial slowness due to the number of file operations it does, this is much better in Pkg3. There is still some slowness for first time function call when using this package due to precompilation statements not being in place but this will happen for 0.7.

Regarding downloading package XX of XX, I think adding that would be simple and increase the feeling of progress. As a suggestion, perhaps something like:

INFO: Installed [1/2] PkgName1 ---- v0.x
INFO: Installed [2/2] PkgName2 ---- v0.y

As another note, perhaps adding a ... to Resolving package versions would highlight that this is something that is progressing.

All 3 comments

Regarding visual feedback, the top REPL in the video at https://www.youtube.com/watch?v=s8iRe_pSVYE is from Pkg3. Since we are now using tarballs, almost all downloads (that do not include large binary dependencies) are very fast to download. Do you still feel there needs to be some progress bar after seeing the video. In Pkg2, there is a large initial slowness due to the number of file operations it does, this is much better in Pkg3. There is still some slowness for first time function call when using this package due to precompilation statements not being in place but this will happen for 0.7.

Regarding downloading package XX of XX, I think adding that would be simple and increase the feeling of progress. As a suggestion, perhaps something like:

INFO: Installed [1/2] PkgName1 ---- v0.x
INFO: Installed [2/2] PkgName2 ---- v0.y

As another note, perhaps adding a ... to Resolving package versions would highlight that this is something that is progressing.

That output looks like it is much closer to the experience that would help users feel like it is faster (and it is great that it actually is faster!). I am happy to give feedback on the features in a beta state, but all of your suggestions look great to me.

I see what you mean about not really needing a progress meter, and your suggestion works great.

I think this can be closed now. Git fetches shows a progress bar, the resolve step is quite fast, downloading tarballs is fast. Shouldn't really be any time where things are stalled with the exception of building stuff, but then you can tail the log file.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

StefanKarpinski picture StefanKarpinski  路  3Comments

dpsanders picture dpsanders  路  3Comments

jaabadi picture jaabadi  路  3Comments

timholy picture timholy  路  4Comments

oxinabox picture oxinabox  路  3Comments