Has anybody ever done a usability study on the Linux CLI interface?



  • I'm not kidding, I'd love to read the results of such a beast if it exists. Here's my experience trying to install mongodb on a ubuntu (cloud) server:

    I started by trying to follow these directions on mongodb's official website. (As it turns out, this was apparently the incorrect thing to do, but I don't have the weird mental illness that tells Linux users to never follow the official directions for a product on the product's official website.)

    Now I hate a snag.

    @mongodb directions said:

    Create a the /etc/apt/sources.list.d/10gen.list file and include the following line for the 10gen repository.

    Guess what the following line is?

    @mongodb directions said:

    If you use an Ubuntu version with “Upstart” (i.e. any since version 9.10 “Karmic,”) or are running with Upstart on Debian, use the following line:

    What the fuck? Did they not even READ their own directions? Because it's fucking gibberish, and I'm like one step in. Christ. Anyway, you're going to probably not believe me, but I when I was going through this, I genuinely didn't make the connection that when they said "a the following line" they meant "a line described in one of the two text boxes below this one" or something sane, so I got stuck at this point.

    But hey whatever, I know you can use apt-get to install software, so let's figure that out:

    @ubuntu said:

    ubuntu@domU-xx-xx-xx-xx-xx-xx:~$ apt-get

    {snip}

    This APT has Super Cow Powers.

    Oh what a professional message to put in your installation software, now I know I'll have a well-tested and bug-free product made by mature developers and not aspie 13-year-olds.

    @ubuntu said:

    ubuntu@domU-xx-xx-xx-xx-xx-xx:~$ apt-get install mongodb-10gen

    E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)

    E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

    These errors are 100% unsolvable except to the geekiest of geeks, but I happen to know what "permission denied" means, what "root" means, and how you're supposed to magically decorate commands like this that require administrative permissions. So I can fix it. But anybody with less knowledge than me? Would be totally, totally, totally lost at this point if he hadn't already been lost.

    BTW, why the fuck is the error asking if I'm root? Doesn't the OS know what fucking user is running the program? Can't it fucking just check itself? And what's the point of asking "are you root?" instead of telling me I need to be root! Because that latter piece of information is actually the clue to solving the mystery; if you took it literally you'd just answer, "no I'm not root" and be no closer to figuring out how to solve the error. And fuck, if I'm not root, why can't it just fucking ask me to run it anyway? It didn't require a password or anything to type in "sudo" in front of the command, so obviously there's no authentication involved in running a program as root, so why the shit doesn't it just DO THAT and save everybody headaches?! Oh and there's nothing saying "error", BTW, you just have to know using your psychic powers what "E:" means.

    Anyway, so I use the magic word:

    @ubuntu said:

    ubuntu@domU-xx-xx-xx-xx-xx-xx:~$ sudo apt-get install mongodb-10gen

    Reading package lists... Done

    Building dependency tree

    Reading state information... Done

    E: Unable to locate package mongodb-10gen

    Here's the point where I hit the Twitters and got the advice: don't use mongodb-10gen even though that is what the official installation instructions written by the company that wrote the software says to do, instead just look for the package with the extremely intuitive command "apt-cache search mongodb". Because obviously when you're searching for something, you want to cache...? it first...? I dunno whatever.

    So that finds it, now I need to know what version it installs. Because for all I know it's 3 years out-of-date and useless to me. My Twitter contact says, "well try installing it, it'll tell you the version, and you can hit yes or no." Ok:

    @ubuntu said:

    ubuntu@domU-xx-xx-xx-xx-xx-xx:~$ sudo apt-get install mongodb

    Reading package lists... Done

    Building dependency tree

    Reading state information... Done

    The following extra packages will be installed:

    binutils cpp-4.4 g++-4.4 gcc-4.4 gcc-4.4-base libboost-dev

    libboost-filesystem1.46.1 libboost-program-options1.46.1

    libboost-system1.46.1 libboost-thread1.46.1 libboost1.46-dev libc-dev-bin

    libc6-dev libgomp1 libmpfr4 libpcrecpp0 libstdc++6-4.4-dev linux-libc-dev

    manpages-dev mongodb-clients mongodb-dev mongodb-server

    Suggested packages:

    binutils-doc gcc-4.4-locales g++-4.4-multilib gcc-4.4-doc libstdc++6-4.4-dbg

    gcc-4.4-multilib libmudflap0-4.4-dev libgcc1-dbg libgomp1-dbg

    libmudflap0-dbg libcloog-ppl0 libppl-c2 libppl7 libboost1.46-doc

    libboost-date-time1.46-dev libboost-filesystem1.46-dev

    libboost-graph1.46-dev libboost-iostreams1.46-dev libboost-math1.46-dev

    libboost-program-options1.46-dev libboost-python1.46-dev

    libboost-random1.46-dev libboost-regex1.46-dev

    libboost-serialization1.46-dev libboost-signals1.46-dev

    libboost-system1.46-dev libboost-test1.46-dev libboost-thread1.46-dev

    libboost-wave1.46-dev xsltproc doxygen docbook-xml docbook-xsl default-jdk

    fop glibc-doc libstdc++6-4.4-doc

    Recommended packages:

    gcc c-compiler

    The following NEW packages will be installed:

    binutils cpp-4.4 g++-4.4 gcc-4.4 gcc-4.4-base libboost-dev

    libboost-filesystem1.46.1 libboost-program-options1.46.1

    libboost-system1.46.1 libboost-thread1.46.1 libboost1.46-dev libc-dev-bin

    libc6-dev libgomp1 libmpfr4 libpcrecpp0 libstdc++6-4.4-dev linux-libc-dev

    manpages-dev mongodb mongodb-clients mongodb-dev mongodb-server

    0 upgraded, 23 newly installed, 0 to remove and 0 not upgraded.

    Need to get 52.7 MB of archives.

    After this operation, 180 MB of additional disk space will be used.

    Do you want to continue?

    Ok, note a few things about that output:

    1) NONE of the information in it is anything I need to know. It's all implementation details I don't give a fuck about. (Wow you used libstdc++6-4.4-dev SO EXCITING.)

    2) It tells me the version number of everything EXCEPT the one product I need to know the version number of, the one I'm ACTUALLY INSTALLING

    Who wrote this output? What the FUCK were they thinking? What's the point of it? It's simultaneously useless (except the last couple lines), confusing, and intimidating. Jesus. I knew this would task would be bad, but I didn't anticipate it would be this fucking awful.

    Another bounce to Twitter and Google, and I find out the correct way of finding the version number is to type in the incredibly intuitive command "apt-cache show".

    Anyway, I finally have the fucking thing installed, and the version is new enough, but fuck. This is the typical Linux user experence? I'd have a more pleasant experience if you just hired a midget to kick me in the crotch for an hour.



  • Oh shit it doesn't end there, it didn't actually install because ONE OF THE FILES WAS A 404 ERROR!!!

    @ubuntu said:

    Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_3.2.0-25.40_amd64.deb 404 Not Found [IP: 91.189.92.190 80]

    E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

    All this fucking pain and it doesn't fucking work.

    Oh and by the way? When it says "run apt-get update" it really means "run sudo apt-get update" because GOD FORBID YOU LEAVE OFF THE MAGIC WORD fuck you fuck you fuck this fuck everything



  • And of course since I didn't end up using the official instructions, I know have absolutely no clue whether I still need to do the post-install stuff or not...

    @ubuntu said:

    ubuntu@domU-xx-xx-xx-xx-xx-xx:~$ sudo service mongodb start

    start: Job is already running: mongodb

    Ah ok, I guess not. There's something at least.


  • ♿ (Parody)

    @blakeyrat said:

    This is the typical Linux user experence?

    No. Most Linux users use what their distro provides. MongoDB is in the Ubuntu repo. There are few things that I install from sources other than my distro's repositories that exist within the repo. But WTF instructions from a WTF DB are probably to be expected.

    Note that there are GUIs to do all of this, but since you're doing this remotely (presumably through a CLI-only ssh session), you've already gone beyond the typical desktop user's experience.

    You bitch about the extra information, and how you don't need it. I guess not, but some people do. And since you're using the lowest level tool to do the job, it's probably not a huge surprise that you're getting information that you don't really care about. I mean, if you REALLY don't care what sort of stuff gets installed on your servers...OK...but then probably you shouldn't be touching servers like this.

    I was able to use the standard --version and -v for apt-get to see its version information. This seems pretty similar to finding the Help -> About menu to check a GUI program's version.

    tldr; MongoDB and their instructions are TRWTF.



  • @blakeyrat said:

    instead just look for the package with the extremely intuitive command "apt-cache search mongodb". Because obviously when you're searching for something, you want to cache...? it first...? I dunno whatever.
     

    apt pulls down and caches metadata about the repos, so it can search local caches for info, rather than do another repo hit.

    When you do "apt-get update" it refreshes your caches.

    "apt-cache search SOMETHING" just does a quick trawl through the caches to see if anything matches.

    Yes, it's a shit name. No, it's not obvious what its doing. But that's an explanation, anyway.

    @blakeyrat said:

    1) NONE of the information in it is anything I need to know.

    Slightly unfair. As you say, the interesting stuff is at the bottom - how big a download it is. The GUI tool takes your viewpoint - hide all of this with a "reveal" button to expand details. However, some others may be interested in why installing one package seems to be taking a long time - there's plenty of pre-requisites that require satisfying first.

    Gotta admit that the command is crying out for an option[1] that says "reduce verbosity" (or has terse output by default and an option that increases verbosity - but that wouldn't be the Linux way now, would it?) 

    [1] command-line switch

    @blakeyrat said:

    2) It tells me the version number of everything EXCEPT the one product I need to know the version number of, the one I'm ACTUALLY INSTALLING

    It doesn't even tell you that. Many of those aren't version numbers, they're part of the package name. They may - or may not - actually match the version number. If you want to see information (including the version number), try "dpkg -i mongodb-server".

     @blakeyrat said:

    This is the typical Linux user experence?

    Yes. Or rather, it's a typical experience for people that don't use Linux on a regular basis.

    Sysadmins/geeks that do are pretty familiar with the commands and workarounds; end-users tend towards GUI tools that have fields and prompts/hints to guide a user towards their final objective. Those that do it once a blue-moon and are unfamiliar with the concepts it seems very hostile and alien. That doesn't make it any better an experience, just a less painful one - you swallow it up and move on.


  • BINNED

    The mongodb people definitely fail at directions, but here's TRWTF:

    @blakeyrat said:

    Re: Has anybody ever done a usability study on the Linux CLI interface?

    The *nix CLI was not designed to be usable by people who don't know what they're doing. Anyone who doesn't know that you have to use sudo to make any system-level changes definitely falls under that category. This is not likely to change for two reasons:

    • The casual user will be so pissed off about having to use the command-line in the first place that he won't care if it turns out to be easy.
    • CLI changes will break all kinds of shell scripts and things that use shell scripts. In the *nix world, that's basically everything.


  • @PedanticCurmudgeon said:

    The *nix CLI was not designed to be usable by people who don't know what they're doing. Anyone who doesn't know that you have to use sudo to make any system-level changes definitely falls under that category. This is not likely to change for two reasons:

    • The casual user will be so pissed off about having to use the command-line in the first place that he won't care if it turns out to be easy.
    • CLI changes will break all kinds of shell scripts and things that use shell scripts. In the *nix world, that's basically everything.

    Which is HORRIBLE. Like, "crime against humanity horrible". Why is ANY UI (meaning USER interface) being used by things that aren't USERS? Why isn't there an API for that?

    UIs are for users, not scripts. Scripts should be calling into the API directly. (Although I'm pretty sure the tools I bitch about most, git and now apt-get don't even HAVE an API because they're built so shitty). That frees up the UI to be modified to be more usable.

    This is fucking Computer Science 101 shit here. This is something Apple had figured out in 1984, Microsoft in like 1992. I mean DUH.



  • @Cassidy said:

    @blakeyrat said:
    This is the typical Linux user experence?

    Yes. Or rather, it's a typical experience for people that don't use Linux on a regular basis.

    Sysadmins/geeks that do are pretty familiar with the commands and workarounds; end-users tend towards GUI tools that have fields and prompts/hints to guide a user towards their final objective. Those that do it once a blue-moon and are unfamiliar with the concepts it seems very hostile and alien. That doesn't make it any better an experience, just a less painful one - you swallow it up and move on.

    If I may make a suggestion, next time use "sudo aptitude". It's got a garish color scheme and very unintuitive keyboard shortcuts, but at least it's some sort of GUI, it exposes the information you were looking for, and it takes care of things like refreshing the apt cache for you.
    <font size="1">Also it couldn't find the package you were looking for initially because you didn't run apt-get update after adding the official repo to your sources file. As a result you installed the copy of MongoDB that Canonical's minions built, not the copy of MongoDB that MongoDB's minions built. Hope that's not important.</font>



  • @PedanticCurmudgeon said:

    Anyone who doesn't know that you have to use sudo to make any system-level changes definitely falls under that category.

    But WHY? It doesn't ask for a password or any additional authentication, so it doesn't add any security to the system. What the fuck's the point? "Are you an admin? Oh you typed the magic word so you are, go fuck shit up! Godspeed!"



  • @PedanticCurmudgeon said:

    The mongodb people definitely fail at directions, but here's TRWTF:

    @blakeyrat said:

    Re: Has anybody ever done a usability study on the Linux CLI interface?

    The *nix CLI was not designed to be usable by people who don't know what they're doing. Anyone who doesn't know that you have to use sudo to make any system-level changes definitely falls under that category. This is not likely to change for two reasons:

    +1

    The poster has no clue WTF he's doing and it's Linux CLI's fault.

    First, learn a bit of what you're talking about. All that "gibberish" is being produced by apt, not the "CLI" and yes, it's important because if some weird ass software install xxx-dev-beta on top of xxx-dev-stable you'll probably break everything else that depends on it.

    Also, the "CLI" as you call it is named Bash and it probably has been around longer than you.

    On the other hand, mongodb is already in the repos, if the installation process for the latest version is a PITA, hey, it might be because they don't care to fix the damn thing. Oh! But it's bash-apt-whatever that sucks!

    @PedanticCurmudgeon said:

    BTW, why the fuck is the error asking if I'm root? Doesn't the OS know what fucking user is running the program?

    See? You have no clue WTF you're talking about. The OS? It's APT giving you an error, and no, it doesn't know you're root because even if you were, the file would be locked because of different reasons (i.e. another instance of APT)

    PEBKAC any one?



  • @TwelveBaud said:

    Also it couldn't find the package you were looking for initially because you didn't run apt-get update after adding the official repo to your sources file. As a result you installed the copy of MongoDB that Canonical's minions built, not the copy of MongoDB that MongoDB's minions built. Hope that's not important.

    Actually I never ended up adding the "official repo", at least I didn't add either of those "deb" lines to my config file which I assume is what that means. So yeah I have the Ubuntu version of it. The version number seems high enough that it has all I need, so I'm not too worried about it.

    BTW, I thought Mongo was going to be a pain to install in Windows, but it was actually quite painless. They even built in a mode so it can run as a Service, which admittedly did have a bug, but the bug was well-documented and easily fixed.

    Also BTW, I'm pleased to see Ubuntu has Services. Last I worked much with Linux, it was all "daemons" which is to say "programs that run all the time only because they're set to auto-run and there's no kind of OS-level logging or restarting available for them". Which is to say, shit.



  • @blakeyrat said:

    But WHY? It doesn't ask for a password or any additional authentication, so it doesn't add any security to the system.
     

    I'm guessing you're logged in as the first user that was created on the system, right?

    In which case, for ubuntu.. no, sudo won't prompt for a password. But may for additional users, depending upon how they were added to the sudoers file.


  • Considered Harmful

    Sudo has the same underlying premise as UAC, except you have to explicitly opt-in. It prevents you from accidentally making system-wide changes either from ignorance, bad configuration, or a malicious program. It can be configured to always ask for a password, but it's really a compromise between convenience and security. It's more to protect yourself from yourself than to protect your system from intruders, I think.

    Your system is telling you, "whoa, there, did you know you're making systemwide changes that might break stuff?" and then "Can I see your badge [is that name in sudoers]?"



  • @Cassidy said:

    @blakeyrat said:

    But WHY? It doesn't ask for a password or any additional authentication, so it doesn't add any security to the system.
     

    I'm guessing you're logged in as the first user that was created on the system, right?

    In which case, for ubuntu.. no, sudo won't prompt for a password. But may for additional users, depending upon how they were added to the sudoers file.

    Wrong, even on Ubuntu, sudo will ask for a password once, if your user is in sudoers, you're granted access and the password is cached for a time (not sure how long but I think it's five minutes)


  • ♿ (Parody)

    @blakeyrat said:

    @PedanticCurmudgeon said:
    Anyone who doesn't know that you have to use sudo to make any system-level changes definitely falls under that category.

    But WHY? It doesn't ask for a password or any additional authentication, so it doesn't add any security to the system. What the fuck's the point? "Are you an admin? Oh you typed the magic word so you are, go fuck shit up! Godspeed!"

    This is something that's configurable. On all of my systems, sudo prompts for a password (Ubuntu, Debian and RedHat). This seems similar to bitching about the way UAC is configured to ask about stuff. Yes, like other systems, you can adjust the trade off between security and convenience.

    Of course, even without a password, it can prevent you from accidentally doing something dangerous. (Cue next rant.)



  • Most *nix CLI tools are exceptionally usable. They are not, however, particularly discoverable/learnable. The latter is what's causing the difficulty here.



  • @blakeyrat said:

    Also BTW, I'm pleased to see Ubuntu has Services. Last I worked much with Linux, it was all "daemons" which is to say "programs that run all the time only because they're set to auto-run and there's no kind of OS-level logging or restarting available for them". Which is to say, shit.
     

    Erm... daemons and services are the same thing.

    They're process that can be set to start/stop at a specific run-level, and now controlled with specific events (the upstart framework).

    I'm not sure what your definition is there.



  • @TwelveBaud said:

    @Cassidy said:
    @blakeyrat said:
    This is the typical Linux user experence?

    Yes. Or rather, it's a typical experience for people that don't use Linux on a regular basis.

    Sysadmins/geeks that do are pretty familiar with the commands and workarounds; end-users tend towards GUI tools that have fields and prompts/hints to guide a user towards their final objective. Those that do it once a blue-moon and are unfamiliar with the concepts it seems very hostile and alien. That doesn't make it any better an experience, just a less painful one - you swallow it up and move on.

    If I may make a suggestion, next time use "sudo aptitude". It's got a garish color scheme and very unintuitive keyboard shortcuts, but at least it's some sort of GUI, it exposes the information you were looking for, and it takes care of things like refreshing the apt cache for you.

    You don't even need to use the GUI (I think the technical name is "text-based user interface"). You can just [code]aptitude search whatever[/code], [code]aptitude show libsomething[/code], [code]aptitude install libsomething[/code]. It tends to be simpler than apt-get and the likes of it.



  • @ubersoldat said:

    Wrong, even on Ubuntu, sudo will ask for a password once, if your user is in sudoers, you're granted access and the password is cached for a time (not sure how long but I think it's five minutes)
     

    Ah, yeah - remember that now. Timeout is 15 mins.

    I remember it being a pain so I set mine to "NOPASSWD: ALL", but as Boomzilla mentions: these are all configurable options.

    I think blakey's assuming observable behaviour is default and global.



  • @ubersoldat said:

    The poster has no clue WTF he's doing and it's Linux CLI's fault.

    I know what I'm doing: installing MongoDB.

    What I didn't know is what specific hoops you have to jump through to actually install MongoDB. That's not to say other OSes are "hoop-less", Windows certainly has a couple, but I am more familiar with the hoops on other OSes and other OSes are SIGNIFICANTLY better about explaining errors and how to fix them, and walking the user through the process, and having directions that are actually accurate.

    Everything I need to know other than "I want to install MongoDB" is useless cognitive load and should be eliminated.

    @ubersoldat said:

    First, learn a bit of what you're talking about. All that "gibberish" is being produced by apt, not the "CLI"

    That's nonsense.

    @ubersoldat said:

    Also, the "CLI" as you call it is named Bash and it probably has been around longer than you.

    McDonalds has been around longer than me. It's still shitty.

    @ubersoldat said:

    On the other hand, mongodb is already in the repos, if the installation process for the latest version is a PITA, hey, it might be because they don't care to fix the damn thing. Oh! But it's bash-apt-whatever that sucks!

    It's the holistic experience between me thinking, "I want MongoDB installed on this computer" and actually having MongoDB installed on this computer. Part of that experience comes from Bash, part of it comes from Apt-Get, and part of it comes from MongoDB's official website. And right now the experience is awful, and all of those parties share the blame.

    The inability to think in a task-based holistic manner is really the root cause of almost every usability problem. The guy who wrote that ImgBurn wasn't thinking to himself, "how does this help the end-user burn a CD?" when he added 47,000 checkboxes to his Settings dialog. He got this narrow focus, "must have more settings, must have more settings" and I'm sure was patting himself on the back the entire way and ended up with a pile of shit in the end.

    @ubersoldat said:

    See? You have no clue WTF you're talking about. The OS? It's APT giving you an error,

    Ok; then why doesn't APT ask the OS which user it's running under? Duh? Why do you write these stupid things.

    @ubersoldat said:

    and no, it doesn't know you're root because even if you were, the file would be locked because of different reasons (i.e. another instance of APT)

    1. It's always stupid for a computer to ask the user something it already knows. "Are you running as root?" YOU ALREADY KNOW THIS YOU FUCKING DUMBSHIT WHY ARE YOU ASKING ME!!! Computers shouldn't be stupid or helpless.

    2) APT could still eliminate some classes of error and provide more useful guidance by knowing what user it's running under, so even if the error could potentially still occur to a root user, the error message could be a lot more specific and useful

    3) All error messages should point the user to enough information to actually solve the error. The only way to solve that APT error is to either use "psychic debugging" (to steal another Raymond Chen term) or to plug the text into Google.


  • BINNED

    @blakeyrat said:

    @PedanticCurmudgeon said:

    The *nix CLI was not designed to be usable by people who don't know what they're doing. Anyone who doesn't know that you have to use sudo to make any system-level changes definitely falls under that category. This is not likely to change for two reasons:

    • The casual user will be so pissed off about having to use the command-line in the first place that he won't care if it turns out to be easy.
    • CLI changes will break all kinds of shell scripts and things that use shell scripts. In the *nix world, that's basically everything.

    Which is HORRIBLE. Like, "crime against humanity horrible". Why is ANY UI (meaning USER interface) being used by things that aren't USERS? Why isn't there an API for that?

    UIs are for users, not scripts. Scripts should be calling into the API directly. (Although I'm pretty sure the tools I bitch about most, git and now apt-get don't even HAVE an API because they're built so shitty). That frees up the UI to be modified to be more usable.

    This is fucking Computer Science 101 shit here. This is something Apple had figured out in 1984, Microsoft in like 1992. I mean DUH.

    Maybe you should read the Unix-Haters Handbook instead of rewriting it from scratch.


  • Hey blakey. I installed mongodb two weeks ago on a mac laptop, and it took me all of a few clicks and two commands. Easy peasy.

    But, if you can't stand the heat, stay out of the kitchen. Linux is a wretched system, that has got just enough functionality to run apache and mysql. Anything else you want to use it for? Be prepared to suffer.

    Yes, I know OSX has BSD underpinnings, but that's it: underpinnings.

    I'd have a more pleasant experience if you just hired a midget to kick me in the crotch for an hour.

    No need to inform us about your deviant preferences.



  • @joe.edwards said:

    Sudo has the same underlying premise as UAC, except you have to explicitly opt-in.

    Kind of, but:

    1) UAC is at least smart enough to know when you need to elevate permissions and prompt you at that time; if you forget sudo you just get a vague error that (if you're lucky) might mention permissions. So at the very least, UAC is a shit-ton smarter. (And yes, pedantic dickweeds, I am aware that sometimes UAC screws up and asks you to elevate when you don't need to, or fails to ask when you do, but that's rare.)

    2) Wouldn't you just get sick of having to type "sudo" for almost everything and just start putting it in front of everything you type by default? Hell I was sure tempted to, and I only typed in like 20 commands. In which case you get zero protection.

    @joe.edwards said:

    It prevents you from accidentally making system-wide changes either from ignorance, bad configuration, or a malicious program.

    It doesn't do the first two due to reason 2 above. (In fact, I'd think once neophyte users found out it's a "magic word" that makes errors goes away, I wager it makes changes due to ignorance MORE likely.)

    As far as bad configuration or malicious program-- well, since any program running as me has my permissions, and sudo doesn't ask for any authentication, then every program running as me has sudo permissions. So it doesn't serve that purpose either.

    I mean I do get the intent here, and I do get that UAC and Apple's whatever-they-call-it is based on the sudo concept, I just don't see how it's effective at doing what it proports to do.

    @joe.edwards said:

    Your system is telling you, "whoa, there, did you know you're making systemwide changes that might break stuff?" and then "Can I see your badge [is that name in sudoers]?"

    That's what UAC and Apple's system does. That's NOT what sudo does.

    sudo is me saying, "trust me, I know what I'm doing" before the OS even has a chance to decide whether the change is system-wide or not. And, to make things worse, using sudo for changes that aren't system-wide still works fine.

    As for explicit opt-in, some dude at Ubuntu did that for me. I never touched any "sudoers" file.

    (Why isn't "proports" in Chrome's dictionary? Was the dictionary compiled by illiterates? WTF.)



  • @TGV said:

    Hey blakey. I installed mongodb two weeks ago on a mac laptop, and it took me all of a few clicks and two commands. Easy peasy.

    It wasn't very tough on Windows, either. Even setting it up as a Service was just like two commands you could copy-and-paste.

    @TGV said:

    But, if you can't stand the heat, stay out of the kitchen. Linux is a wretched system, that has got just enough functionality to run apache and mysql. Anything else you want to use it for? Be prepared to suffer.

    Oh I know. I managed a Unix box (running a SMAUG-based MUD to give you an idea) from around 2000-2007. It sucked-ass then, too.

    @TGV said:

    No need to inform us about your deviant preferences.

    Do a word search on this forum for "purple dildo", believe me I'm not even in the top 10 deviant-wise. Now where's my midget at!



  • @spamcourt said:

    You don't even need to use the GUI (I think the technical name is "text-based user interface"). You can just <font face="Lucida Console" size="2">aptitude search whatever</font>, <font face="Lucida Console" size="2">aptitude show libsomething</font>, <font face="Lucida Console" size="2">aptitude install libsomething</font>. It tends to be simpler than apt-get and the likes of it.

    That is better, but I didn't have the magic psychic powers needed to know about it. And it wasn't mentioned in the MongoDB directions. And the guy I was talking to on Twitter never mentioned it. (Possibly because he lacks the magic psychic powers too.)

    For the record, I'd still call that a GUI. I don't think you need to have bitmaps to qualify as a GUI, but I know other people might not share the same opinion.


  • ♿ (Parody)

    @blakeyrat said:

    It's the holistic experience between me thinking, "I want MongoDB installed on this computer" and actually having MongoDB installed on this computer. Part of that experience comes from Bash, part of it comes from Apt-Get, and part of it comes from MongoDB's official website. And right now the experience is awful, and all of those parties share the blame.

    I agree, though I'd add you to sharing in the blame for not understanding the environment you're working in. I could rant about trying to install something by going to "Add and Remove Programs" and not being able to find it there, and part of the blame would be on me for not understanding the tool that I'm using (and expecting it to work like similar tools in other systems).

    Ironically, the CLI is great for helping others resolve both banal and weird issues, because you can offer help to others such that they can literally copy and paste and solve their problem. Giving directions for a GUI is generally much more difficult.

    @blakeyrat said:
    All error messages should point the user to enough information to actually solve the error. The only way to solve that APT error is to either use "psychic debugging" (to steal another Raymond Chen term) or to plug the text into Google.

    Well, the thing asking you about root was actually doing that, though it asked it as a question rather than saying that your user didn't have permissions (well, one of the messages said "Permission denied"). Of course, locking the directory could have been for some other reason, like another process that's already got it locked (though IIRC, it detects that and says so).



  • Much like Windows does for Vista and later. Except Windows is smart enough to do the equivalent of “Hey, shithead, you forgot to sudo, should I do it for you?” or “Hey, shithead, you’re not a sudoer, but if you have a login that is, I’ll do it for you.”

    But, somehow, this makes Windows stupid and lame, and Mac OS and Linux k-rad kewl.



  • I think that the same person that did Windows 8 Usability study did the CLI study.


    Plus OSX (in GUI) will prompt you for Admin (sudo) privs. Windows will fail if you try to do a CLI app that requires admin as well.


    Is it really hard to realize that Admin tasks require admin privs.. and if you don't have them.. stuff will fail?.



  • @blakeyrat said:

    Wouldn't you just get sick of having to type "sudo" for almost everything and just start putting it in front of everything you type by default?
     

    .. is the same reason people get sick of UAC and just add themselves to the administrator's group.

    If you have to type it for several commands, "sudo -i" may help.



  • @blakeyrat said:

    Why is ANY UI (meaning USER interface) being used by things that aren't USERS? Why isn't there an API for that?

    The CLI is the API. You could do pretty much anything you can do in a GUI in Windows with a combination of batch files, PowerShell, and AutoHotKey. It's just that Windows users aren't used to working on such a low level.


  • ♿ (Parody)

    @Cassidy said:

    If you have to type it for several commands, "sudo -i" may help.

    STOP COGNITIVELY OVERLOADING HIM!



  • These aren't so much issues with the command line interface as they are with the general (poor) state of distribution of projects by source code.

    That have fifty-three thousand dependencies.

    That must be compiled in some secret order (so even if you did use a package manager it doesn't help much).

    Sometimes twice, but it depends on the phase of the moon, but if your compiler treats enums as unsigned int instead of signed int you're SOL, and to top it all off, you can't get ye flask!



  • @ekolis said:

    The CLI is the API.

    And nobody in the last 20 years has realized what a terrible idea that is and/or made any move to fix it?

    No I guess everybody who gave a shit gave up on Linux ages ago and moved to OS X.



  • @blakeyrat said:

    @ubuntu said:
    ubuntu@domU-xx-xx-xx-xx-xx-xx:~$ apt-get install mongodb-10gen
    E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
    E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
     

    BTW, why the fuck is the error asking if I'm root? Doesn't the OS know what fucking user is running the program? Can't it fucking just check itself? And what's the point of asking "are you root?" instead of telling me I need to be root! Because that latter piece of information is actually the clue to solving the mystery; if you took it literally you'd just answer, "no I'm not root" and be no closer to figuring out how to solve the error. And fuck, if I'm not root, why can't it just fucking ask me to run it anyway? It didn't require a password or anything to type in "sudo" in front of the command, so obviously there's no authentication involved in running a program as root, so why the shit doesn't it just DO THAT and save everybody headaches?! Oh and there's nothing saying "error", BTW, you just have to know using your psychic powers what "E:" means.

    Anyway, so I use the magic word:

    @ubuntu said:

    ubuntu@domU-xx-xx-xx-xx-xx-xx:~$ sudo apt-get install mongodb-10gen

    It's a case of a badly worded error message. As you've shown in the very next command, you don't need to be root to run it as long as your account is on the sudoers list for apt-get.

     



  • @blakeyrat said:

    @ekolis said:
    The CLI *is* the API.
    And nobody in the last 20 years has realized what a terrible idea that is and/or made any move to fix it?

    No I guess everybody who gave a shit gave up on Linux ages ago and moved to OS X.

    Wait 'til you have to edit a configuration file with 'vi' or 'vim' ...



  • @powerlord said:

    It's a case of a badly worded error message. As you've shown in the very next command, you don't need to be root to run it as long as your account is on the sudoers list for apt-get.

    Then why hasn't it been fixed? APT isn't fucking new. They just don't give a shit it has bugs? Fuck that attitude.



  • I find Linux command-line is far better than Windows command-line. If I need help for a command I may use the man pages. If you don't know how to use a computer then you must learn. I happen to think vi is pretty good.



  • @zzo38 said:

    I find Linux command-line is far better than Windows command-line.

    Which one? Windows doesn't have a "the" command-line.

    This is because in Windows, a UI is completely divorced from an API. So CMD is a first-class citizen just as much as PowerShell and JScript and VBScript are. Ok... well second-class. But still.

    This is because Windows wasn't designed by idiots, and parts of Windows that were designed by idiots have since been fixed.



  • @blakeyrat said:

    And nobody in the last 20 years has realized what a terrible idea that is and/or made any move to fix it?
    No I guess everybody who gave a shit gave up on Linux ages ago and moved to OS X.

    It's an awesome idea.

    Just because you're not smart enough to see that, doesn't deny the fact that it's still an awesome idea.

    If you want play with clicky-clicky toys, find something with a pretty gui. If you actually want to get serious work done, come join the rest of us in doing it efficiently, quickly and scriptably on a command line.



  • @blakeyrat said:

    This is because Windows wasn't designed by idiots, and parts of Windows that were designed by idiots have since been fixed.

    Windows was designed by many people, some make idiotic mistakes and others do better work. (I do mean CMD; but, you can still use PowerShell and you can install Cygwin or MinGW to have a UNIX command-line interface, etc)



  • Basically yes, but what kind of help is there to point a user of "apt-get" towards the fact that "aptitude" might make his job easier? "man"? And I'm pretty sure that the same problem exists in other areas of Linux as well.



  • @zzo38 said:

    I find Linux command-line is far better than Windows command-line. If I need help for a command I may use the man pages. If you don't know how to use a computer then you must learn. I happen to think vi is pretty good.
    You do live dangerously, don't you??

    TRWTF is Blakeyrat.  Why?

    Basic premise:  he doesn't like Linux.  Okay, fine.  To each his own.  But one of two things has to be true here:

    1.  He's using it on his own time.  In which case, if he chooses to use it, quit bitching about it.  The pain he is inflicting is his own.

    2.  He needs it for his job.  If I was employed in a position where I had to shoot myself in the foot each time before I use a particular tool, I'd switch jobs.  He knows that Linux causes him pain, yet he continues to be employed in a position where some of his duties force him to use Linux.

    I'm in a position where I use a command line extensively (not just Linux/UNIX-type systems).  Microsoft has decided that, as of Windows (Vista?  Definitely 7) "telnet" is too dangerous of a command to have installed by default.  It also doesn't come with SSH/SCP utilities.  Really?  In 2012?  News flash:  Microsoft may want to be the only game in town, but they're not.  Interoperability is a need of their customers -- at least their business customers.  A desktop Linux installation generally comes with telnet, SSH, scp, and an RDP tool so I can talk to command lines and GUIs all together.  All functions I need to be able to interoperate with all the major operating systems in use.

    Yes, TRWTF is Blakeyrat himself.



  • @blakeyrat said:

    @ekolis said:
    The CLI *is* the API.

    And nobody in the last 20 years has realized what a terrible idea that is and/or made any move to fix it?

    No I guess everybody who gave a shit gave up on Linux ages ago and moved to OS X.

    Nothing in *nix is allowed to be changed, ever, because of this bizaare mindset that you absolutely CANNOT change anything that might break some script that was written in 1973.

     



  • @blakeyrat said:

    I'd have a more pleasant experience if you just hired a midget to kick me in the crotch for an hour.
    Apparently you didn't see this video about installing mongodb:

    http://www.youtube.com/watch?v=ebtNjnMaKKA



  • @blakeyrat said:

    1) It's always stupid for a computer to ask the user something it already knows. "Are you running as root?" YOU ALREADY KNOW THIS YOU FUCKING DUMBSHIT WHY ARE YOU ASKING ME!!! Computers shouldn't be stupid or helpless.
    This is why you are TRWTF, you should know that computers are inanimate objects that CANNOT THINK. All a computer can do is follow the instructions given, if those instructions are written by someone who thinks "are you root?" is a good/nice/proper/polite/whatever way of reminding the user "Hey, you need to be root!" then the computer following those instructions will ask "are you root?"

    A computer doesn't actually know any of the things it "knows," if it doesn't know how to check what it knows it won't. It's just a hunk of metal with a set of instructions; computers are by DEFINITION stupid and helpless!



  • @blakeyrat said:

    @zzo38 said:
    I find Linux command-line is far better than Windows command-line.

    Which one? Windows doesn't have a "the" command-line.

    This is because in Windows, a UI is completely divorced from an API. So CMD is a first-class citizen just as much as PowerShell and JScript and VBScript are. Ok... well second-class. But still.

    This is because Windows wasn't designed by idiots, and parts of Windows that were designed by idiots have since been fixed.

    Are you on shrooms or just naturally retarded? Windows CMD line can do absolutely nothing... it might as well not exist. Unless you're intending to make the (true) remark that the Windows GUI can also do nothing (if both of them are first class citizens)



    The OS was designed to be used as a GUI, so effectively.. nothing useful can be done from the command line (other than launching applications.. which are GUI.. which are impossible to script that way like a true command-line app can be.




    A command line is an excellent way to accomplish a lot of tasks. GUI's are helpful a lot of the time, I'll agree.. but Windows is so.. monolithic and GUI based that the command line is useless, which is a shame cause there's a lot of useful things that a command line is capable of.



    Building an OS around a monolithic GUI is about as idiotic as voting Republican... Legitimate rape.. what wankery.



  • So TRWTF is you overcomplicating apt-get install mongodb and then complaining when your changes to the system fuck shit up? You're using a command line interface interface where there's a GUI already available and you have no fucking clue how to use either.


  • ♿ (Parody)

    @gu3st said:

    Building an OS around a monolithic GUI is about as idiotic as voting Republican... Legitimate rape.. what wankery.

    So you're an illegitimate rape kind of guy?

    All kidding aside, voting for Republicans is pretty stupid. But pretty much anything but voting against everyone who isn't a Republican is basically attempted civilizational suicide.



  • @boomzilla said:

    @gu3st said:
    Building an OS around a monolithic GUI is about as idiotic as voting Republican... Legitimate rape.. what wankery.

    So you're an illegitimate rape kind of guy?

    All kidding aside, voting for Republicans is pretty stupid. But pretty much anything but voting against everyone who isn't a Republican is basically attempted civilizational suicide.

    That sentence had N too many negatives, where N is a positive integer. Can someone optimize it to save a few CPU cycles?


  • @gu3st said:

    Windows CMD line can do absolutely nothing... it might as well not exist.
    @gu3st said:
    nothing useful can be done from the command line (other than launching applications.. which are GUI..
    How odd . . . . . . . . back several years ago when I was tinkering with Firefox, I had a batch file which:

    • Pulls Firefox source
    • Applies various custom patches
    • Compiles it
    • Packages everything into a single self-extracting executable file
    • Uploads that file to my FTP server

    All done from the Windows CMD line, no GUI applications are ever launched.  And that's just one of my simpler batch files.   If I wasn't so lazy, I'd spend some time figuring out Poweshell.

    Sorry, you you are the one who is retarded.


Log in to reply