-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
User experience issues #684
Comments
For starters, i feel like haskell infrastructure commands are too verbose( Also it's a minor thing, but i find subcommands(something in the lines of |
Would you feel having a basic tutorial for such caveats and most common flags would help? |
I've voiced this elsewhere, but I'd be for nix having no special handling of package names, and then probably move them to meta too. Everything it does with them I view as broken or at least sketchy. (e.g. update should really remember what expression was used for the build and substitute new nixpkgs for old nixpkgs---remembering attribute path and using that is a special case.) |
Hell, I'd even deprecate user imperative pkg management and just have like a |
@Ericson2314 for imperative package management it's problematic if attribute name changes. But same is true for package names. |
@Ericson2314 +1 from me for removing imperative package management. |
Sure, and if the attribute path changed, there's probably been enough of a refactor so what that one wanted before doesn't quite map to what's there now. Basically I find much of |
@domenkozar I feel like UX is hard to use(and i use plenty of CLI tools every day of my life), lots of concepts unique to nix are partially to blame for this. As a user, i don't feel a way to anchor some nix commands to the things i've used, so i feel that some work should be done on UX instead of extensive documentation of the current state. As a beginner i want to be introduced to the new concepts gradually, so when i have to type 5 or more options to the every command i use from the get-go, it's getting hard to grasp. What i'm trying to say is: cli UX should introduce new users to the concepts of nix, not scare them away: links to the relevant documentation can be added to the error output. "you're trying to do something weird by calling this command this way, this tutorial may be of help to you: " |
I doubt people actually want a GUI though. The target audience is people On Fri, Nov 6, 2015 at 12:41 PM, John Ericson [email protected]
|
@copumpkin aren't the issue about command-line UX - the "porcelain" part of it? |
+1 for making it purely declarative. I think it would make things clearer / easier for newcomers like me. also, removing channels and sticking to a simple nixpkgs repo with branches as described in http://anderspapitto.com/posts/2015-11-01-nixos-with-local-nixpkgs-checkout.html is much easier to grok, I believe |
I guess I felt mock-imperative GUI and declarative expr language were good extremes to try to satisfy the broadest audience, but fair point traditional sysadmins would probably be lost in the gap between those too. GUI and/or CLI for "mock imperative" management by editing and rebuilding config files sounds good to me. |
@dredozubov I was responding to @Ericson2314's suggestion to replace |
@rened channels seem like a great concept to me. Part of the UX could probably be improved, but the concept seems pretty solid. Any particular reason you want to kill them altogether? |
@rened I remember i was very frustrated when i tried to add a channel, i had no idea where to get the url for it - still have no clue how to look it up. Had to go to the IRC, then the bunch of wizards threw some incantations at me. |
@rened @copumpkin I have faith between using branches as the source of truth on channels, and copumpkin's ideas in #520 that there is a way to dramatically simplify the current implementation of channels. |
@copumpkin Basically the first thing I tried was to overlay/add/mix the unstable channel with custom packages. For a git repo with an "unstable" upstream branch I would know what to do out of the box, simply add my expression where I want them. Updating becomes a simple rebase. |
Impure expression that is periodically/manually re-evaluated can grab latest commit hash from channel branch. Boom! |
Further suggestion / wish: an install script for non- |
+1 for IMPERATIVE management... I don't want to update chromium because I only want to update tmux. Then chromium doesn't build for some reason, and I cannot update tmux. But no problem I can reimplement it by myself. Being declarative is not the solution to the whole world of problems. Yet, the current nix-env command ALREADY has the possibility to use nix-env declaratively, see: https://nixos.org/wiki/FAQ#How_can_I_manage_software_with_nix-env_like_with_configuration.nix.3F and it's quite friendly already. Also DO NOT hardcode nixpkgs stuff into nix-env, ever. It's a low-level tool, please create higher-level commands and perhaps make them the default for installations, like |
@lethalman I acknowledge the need (though keep in mind dependency duplication bloat), but I don't think imperative is the best/only solution for that. We should really keep channels around for all gc roots. Say there was a way to update the channel so that it did this to one's config: let todayPkgs = ...;
yesterdayPkgs = ...; Then one can decide what they want to rebuild or not pkg by pkg, declaritively. This is related to the general issue of channel updates and generation rollback not being friends. |
I'd also like to see ecosystem-specific commands (venv-haskell, venv-python, ...) with a nicer UI but I tried a few times and couldn't quite get something that felt right. |
Attribute names should be set up the same on nixos and non-nixos systems by default. Currently, on nixos attributes are There are too many |
I like and use both imperative and declarative, with different goals. I think one of the major drawback of
|
|
nix-shell could use some love too:
|
As a new user I'm still confused on the inconsistencies between These things have been very confusing for me when just getting started playing around. The examples show Hiding the package names and focusing on paths would be a great start, but also the inconsistency between the |
Well, these two might be more about missing documentation:
|
@vcunat The name of the channel is
|
what about |
@garbas I don't think the cli should change just for those who don't read the manual at all before running commands. I find that rather ridiculous, no one should run a command they don't understand. Maybe people expect that, but nix should not remove functionality because of it. Conventions are good though, e.g. nearly all commands have |
The error message: " should have SHA256 X instead of Y" is confusing since this can be interpreted to mean that in order for Nix to build the package it should have SHA256 X, when e.g in the case where fetching from an updated git repo the correct SHA is actually Y. Something more explicit / clearer would be great. |
@et4te: perhaps suggest some (supposedly) better formulation. I can't imagine it. BTW, in nixpkgs we consider it a bug to fetch sources that change. |
Nix expects package to have SHA256 X but the derivation failed as a consequence of it being Y ? |
A UX issue I'm having a lot of trouble with is adding custom packages. I managed to get burp into nixpkgs unstable, but how do I actually install it on my nixos-15.09 system?
|
@tokudan: I picked the new packages to 15.09 in NixOS/nixpkgs@28e333d60fd. |
I used burp only as an example. My main issue is that for a newcomer it's really complicated to get a random software into his/her own nixos system, fully integrated into /etc/nixos/configuration.nix. Including it through imports causes errors about function arguments that I don't really understand. Since the time I've written the burp/default.nix I've used google a lot, but all descriptions I've found either were for getting the packages into github NixOS/nixpkgs (which is important, but not suitable for every software package) or threw some error on me that I wasn't able to resolve yet. |
I'm afraid such general threads will soon become unreadable. Perhaps it's better to create separate issues from outstanding problems and e.g. add a UX label. @tokudan, this should work well enough, though I've never used anything like it: { # somewhere in configuration.nix
systemPackages = [ (pkgs.callPackage /your/path/to/burp.nix {}) ];
} Another way is to add it to
Packages are functions (from their dependencies to the resulting paths). That's also why "just adding" some package.nix files isn't a full specification of what you want. |
@vyp I sort of think it should. I'm thinking of all those times I've written "git remote list"/"git remote delete", or having to look up the manual for dpkg (again) to find out how to list files owned by a certain package, or looking up 'test' to see how you tested for integer equality. It's not that we don't read the manual, but compared to "nix-env -qa pkg" - "nix search pkg" is easier to remember, friendlier, more intuitive, pretty, and generally more 'likeable'. |
@dbeecham I still think it's "ridiculous" as I said earlier to run commands without knowing what they do. I was slightly wary of following pre-existing package manager cli conventions because nix is special. However, now that I've actually used nix a lot more, I agree that the cli could probably be overhauled as @garbas said in his talk. Time to time on irc, I see people asking for what would seem like pretty basic questions about the cli, but I realise that for a newcomer it is probably bit of strange interface (I actually found myself in a lot of those situations too). At the end of the day, I'm all for making things easier to remember => productivity boosts all round. (edit: also, it should help more with world domination hopefully) |
@domenkozar: the third task can be checked-off. |
@vcunat done. I do plan to go trough this issue and make a proper list. If someone is faster, I won't complain. |
I've made a design for a 3-letter Nix UI replacement: https://gist.github.com/edolstra/efcadfd240c2d8906348. Comments welcome! |
@edolstra awesome, thanks! I left some comments on the gist |
I was unable to get NixOS to boot at all after spending a whole evening fighting with EFI and messing around with partitions and boot flags. This sort of thing was a fun hobby in 1998, but these days people expect a linux distro to be capable of installing itself after saying "yes" to a bunch of reasonable defaults. Thanks so much for your hard work, and I look forward to trying nixos again after seeing some installer related news! |
Closing this ticket because there hasn't been any substantive activity for 2+ years. |
Not sure why lack of activity would be a reason for closing the issue. This is even specifically meant to be a long-running thread for collecting UX issues (per the description in the first post), and unless an issue is either resolved or declared invalid, I don't think it should be closed at all. If the issues have been resolved (eg. by the Nix 2.0 interface), then the closure notice should at least include information on how/where things have been solved or made obsolete. Right now, it's totally unclear what the status of this ticket is. This kind of "close issues when they go quiet" policy - which unfortunately seems to be getting more and more popular lately, in many projects - just results in a revolving door of tickets being reopened about the same issue over and over again, but always without the previously collected context and feedback, and without the long-running issues ever getting fully fixed (because they take longer to fix than a ticket can stay open for). It's a really, really bad idea. I certainly hope it isn't the new |
It's also not clear to me why closing issues really helps in any way. |
Can we reopen this? |
I think it's better to open individual issues and tag them with the UX label. |
I'm not sure that that's a good approach. UX aspects are a lot more interconnected than logic bugs, and addressing each UX issue in its own thread will likely just lead to duplication of discussion and solutions that don't integrate well with solutions to other UX issues, because the desired user experience as a whole has not been considered. |
…-2.5.1 chore(deps): bump sphinx-sitemap from 2.5.0 to 2.5.1
I've heard so many complaints around UX that I'll start collecting them. I'll maintain a list of possible concrete improvements/complaints/issues here.
-A
flag vs. default behavior)nix-build --check
fails if derivation doesn't exist already0 channels updated
The text was updated successfully, but these errors were encountered: