Slashdot Mirror


What's Wrong with Unix?

aaron240 asks: "When Google published the GLAT (Google Labs Aptitude Test) the Unix question was intriguing. They asked an open-ended question about what is wrong with Unix and how you might fix it. Rob Pike touched on the question in his Slashdot interview from October. What insightful answers did the rest of Slashdot give when they applied to work at Google? To repeat the actual question, 'What's broken with Unix? How would you fix it?'"

26 of 1,318 comments (clear)

  1. Several frustrating points by SIGALRM · · Score: 5, Insightful
    What's wrong with UNIX? Depends on which perspective you start...

    In my opinion, here are some headaches that have plagued a wary UNIX engineer or two:

    IEEE and Posix, X/Open, etc. provide a basis for standardizing UNIX interfaces, but adherence tends to be spotty

    Difficult to implement a microkernel architecture

    XPG3 aside, a de facto "common API" has never really been acheived

    In many cases, code scrutiny is difficult or impossible

    Progress and innovation tends to occur within the context of aquisitions (i.e. UnixWare)

    The COFF symbolic system is terrible (OK, I know it's a deprecated, but still...)

    PIT initialization (time management)

    Kernel tuning (anyone fiddled with the /etc/conf/cf.d subdir on OS5?) These are just a few things, in my experience. That said, UNIX has had some great days.

    --
    Sigs cause cancer.
    1. Re:Several frustrating points by Anonymous Coward · · Score: 5, Insightful
      In addition:

      1. Crappy filesystem. Resier4 or XFS is what UNIX should have started with and even now we don't have file versioning.
      2. POSIX permisions suck. The suid bit sucks even more. ACL's make more sense, and UNIX should have had them from the start. If we're doing it now, capabilities would be even better.
      3. IPC primitives are poor. SySV shared memory goes some way to helping, and UNIX domain sockets are O.K, but a proper message/event marsheling system would eclipse them all.
      4. The filesystem hierachy is an awful mess. Non-standard across all unices and poorly evolved to cope with modern systems. /etc was a horrible copout and it shows. UNIX needs proper application packaging with proper self-contained application packages.
      5. Providing lots of little applications to do specific tasks was the best idea ever, but not providing a decent scripting language to bind them together was a bone-headed mistake. Likewise not standardising some basic data-interchange formats (Even it was just pre-formated ASCII) just makes piping all those little tools together to do anything useful a pain.
    2. Re:Several frustrating points by Anonymous Coward · · Score: 4, Insightful

      I'll make you a deal; you go back to reading comics and the rest of us will continue to use UNIX. Let me point out your mistakes, as they are many.

      No decent scripting language? In Unix?

      In UNIX, sure. Show me the default scripting language in UNIX v6. Bourne Shell is the closest thing you get.

      /etc is ugly?

      Yes. It literally means "etcetera". It is intended to hold all the junk that didn't fit anywhere else. It was a sloppy solution; instead of finding a place for all those scripts, binaries and conifguration files they all get dumped in /etc. With different file formats.

      Oh and you're the only one talking about the Window registry.

      How is message passing IPC better than sockets or shared memory or named pipes?

      1) The sending and recieving process don't need to know about each other before hand 2) You can easily broadcast events to all listeners 3) Much easier to send arbitary data 4) Much easier to manage; no need to mess with sockets APIs 5) Much safer; no need to share memory between process.

      ACLs are coming, but I believe that POSIX permissions make privilege management very simple, very straightforward, and very effective. ACLs may provide finer-grained permissions, but nothing that cannot be done via groups and permissions.

      You can believe what you like about POSIX permisions but those of us who have to deal with big systems know that they suck. They suck big, coarse grained, poorly thought out rocks through straws. The are very simple, very straighforward, but that makes them useless for proper security because they're too simple. If you think that ACL's have no advantage over POSIX permisions you're wrong a second time on this.

      The SUID is still a horrible solution, and come to that so is the "All or nothing" attitude of the All Mighty UID 0. ACL's solve all of that.

    3. Re:Several frustrating points by jargoone · · Score: 5, Insightful

      Add another thing that's wrong with Unix: the elitist attitude towards outsiders.

    4. Re:Several frustrating points by insert_username_here · · Score: 5, Insightful

      Mod parent up!!

      I've been happily using Linux on my home PC for about 4 years, but the filesystem layout has always been an annoyance.

      Without a package manager, it's practically impossible to remove a program; even with a package manager, you can't even determine how big a given package is! (if you know how to with Portage, I'd like to know). A better filesystem layout (perhaps the way MacOSX, GoboLinux or RoX does it) would make package managers obsolete.

      A lack of standard configuration layout is another thing: why should people have to learn hundreds of config file formats? Yes, comments help, but it'd be nice if they weren't needed. Why not come up with one standard text-based config format/filesystem layout and get everyone to use it? This would also save programming time, as you could create a library (with a name like libconfig or something similar) and not have to worry about parsing configuration settings. The Windows Registry Hell can be avoided by using a text-based format(e.g. like Java properties files or XML).

      A standard configuration layout (with suitable metadata) would also go a long way to allowing a standard graphical system configuration utility (Whatever happened to linuxconf? I loved that app!), making Unix/Linux that much more accessible to ordinary people.

      Replies, flames, etc.

      --
      -- Dramatisation - May Not Have Happened
    5. Re:Several frustrating points by linguae · · Score: 5, Insightful

      I strongly agree. Snide comments such as "BSD isn't for you," especially if the person trying to install it seems interested in learning about it, isn't going to help the Unix installed base grow. Such trolls hurt the *nix community in general because they are turning away prospective users.

      If anything, us Unix users should be trying to convert as many people as we can to our OS, not turning them off and turning them away.

    6. Re:Several frustrating points by antoy · · Score: 5, Insightful

      Given the skill and experience that it takes, in my experience, to be able to run Unix as naturally as some people do... perhaps they've earned that attitude.

      That's complete nonsense. Installing and running Unix hardly counts as one of the more difficult intellectual tasks. It's hard, sure, if you're used to something different, but the description 'windows people' includes novelists, artists and nuclear scientists who just don't give a damn about the stupid OS their computer runs.

      Would you like it if an artist made fun of your pens and call you and your friends BIC people? Well, that's how stupid this sounds.

    7. Re:Several frustrating points by crmartin · · Score: 4, Insightful

      It's clearly time for my periodic "you young pups don't know your history" posts.

      1. Reiserfs etc are the results of 30 years of research that, well, hadn't happened 30 years ago. the i-node/u-node business was the best there was. Then.
      2. Multics had general, configurable, role-based, magic ACLs; UNIX lost them on purpose becuse it wasn't well suited to a big games system and word-processor, which is what UNIX was meant for originally.
      3. When I was a kid we hardly HAD processes, much less IPC. Having named pipes was a helluvan innovation.
      4. That's not the operating system, that's book-keeping.
      5. /bin/sh WAS the coolest scripting language ever. They've gotten better. text files with field seperators (that all passwd(5) is, after all) were the uniform data representation.

      If you were to go back to System 3 UNIX, you'd have most everything you're asking for here. It wouldn't be as powerful, but it'd be uniform.

    8. Re:Several frustrating points by X · · Score: 4, Insightful
      Responding point by point:
      1. It's easy in hindsight to critique filesystems. While the original SysV filesystem was pretty bad, the Berkeley Fast Filesystem was already pretty good for it's time. The simplicity of the Unix filesystem has actually been a key aspect of Unix's success. Even on platforms with more complex filesystem API's, you don't see much in the way of applications taking advantage of them.
      2. POSIX ACL's have been around for a long time at this point. The relatively pathetic rate at which they've been adopted and taken advantage of should be a clue to their shortcomings. Several security experts have pointed out that while ACL's are great on paper, in reality they increase the complexity of the security model, which in practice is more of a liability.
      3. SysV has message queues for IPC. Everything you could want and... not a lot of people use them. ;-) ONC RPC also prvides a pretty decent message/event marshalling mechanism, and you don't see a lot of new apps being written to use that either. Think about why. I would say though it'd be nice if there was a better standard model for kernel events beyond signals.
      4. I honestly still find advantages to the traditional Unix FSH, particularly for administrators. It certainly beats the crazy structures on Windows or OS X. End users increasingly care less about where program files are located on their system, so this seems like the wrong area to work on things.
      5. Unix did include decent scripting languages, and more importantly provided for additional ones to be added to the system (witness the rise of ksh, perl, python, etc.). If there had been any kind of data-interchange format that was remotely useful, it surely would have dictated how Unix tools work with those data formats. Unfortunately, there were weren't (and aren't). Consequently, dictating standards wouldn't have solved the problem you're describing, as you'd still have to translate non-standard formats into the standard formats and back again. Letting tools like sed/awk/perl evolve to solve the problem seems like a far more practical approach if you ask me.
      --
      sigs are a waste of space
    9. Re:Several frustrating points by cbreaker · · Score: 4, Insightful

      What you fail to realize is that Linux doesn't exist for newbies to switch off of Windows. It's not there to "Fight The Power."

      It's an Operating System. Some people enjoy using it. I do; I love the things I can do with my unix boxes so easily that come so difficult on other systems (Windows.)

      You can use it if you want to. There's so many great people working on making it better, easier, etc, that in the end it MAY very well be just as easy to handle as Windows. It's not there yet. What's the rush? So you can install it easier before you know the system?

      You're inexperienced in the Internet world if you think that the Linux userbase is a bunch of "inconsiderate pricks." You should see some of the Windows help forums, or the help forums of... anything else, really. There's a lot of pricks out there, you can't avoid that. I have not found this to be any greater with Linuxish forums, mailing lists, etc. In fact, I find that Linux help groups are a lot BETTER then most; there's usually quite a few people that are really knowledgable and willing to help.

      Your experience with being called a n00b could be due to the fact that you've been asking the same tired old questions, without reading any of the redily available information online or using the search function on forums. There's a lot of people that WANT to help you - even though you're a complete stranger - but these same people don't want to trudge through the same questions they've already answered a hundred times over.

      If you just want to "USE THE COMPUTER" then just USE WHAT YOU KNOW HOW TO USE. Nobody is forcing you to use it. You get to justify the reasons all by yourself, and if you can't justify the learning curve to the benefits, then why do it?

      Really, it doesn't matter. I'm not trying to get everyone to use Linux. I'm not telling my sister to install it. Neither is anyone else, really. You might hear from someone how great they think their Linux system is, and even say "you should give it a shot!" but it doesn't matter if you use it or not. Moving forward, when all the peices fall into place and your Linux distribution of choice is at the right level of comfort for you, we won't even have this discussion.

      So relax; let the people developing this great system do their thing. When the state of the system is right for you, you'll know it. It'll happen, and until then do yourself a favor and don't worry about it.

      Quote from you: " Not to mention that that this is the whole reason why linux will never be a mainstream desktop operating system..."

      You really should add "today." at the end of that. Tomorrow, who knows?

      --
      - It's not the Macs I hate. It's Digg users. -
  2. OS X by BWJones · · Score: 5, Insightful

    Based upon my experience with IRIX and Solaris (with some Linux), I would have to say that most of the things that *NIX did poorly have been rectified with OS X. I would have said OS X was still lacking true 64bitness, but that is coming in 10.4 rather quickly now. The numbers of Macs involved in secure and classified work in the Federal government have been exploding and high bandwidth networking options for cluster computing have also been resolved with options such as Infiniband. Development issues have been streamlined with rather nice tools from Apple itself obtained via NeXT. Open standards are being embraced just about everywhere you turn in OS X, a true plug and play environment now exists (I am reminded of the last video card install on my SGI O2 which had me down for two days solid), the GUI is consistent and the CLI is present and fully integrated with the GUI as well. Additionally, more and more networking options are being supported natively within OS X which is one of the last hurdles to true interconnectivity cross platform. And the G5! Oh, the G5 is a wonderful bit of hardware with which to run *NIX on.

    Problems that remain are being able to create one seamless environment with shared memory and such, but the rest of the *NIX world is still having those problems as well.

    You can argue about the specifics and details of many things, but in terms of a UNIX workstation, OS X pretty much has it all for our needs.

    --
    Visit Jonesblog and say hello.
    1. Re:OS X by edesjard · · Score: 5, Insightful

      This is actually a really good point. My biggest complaint about Linux has always been that it constantly tries to copy WINDOWS which I have been totally disgusted by and why I love my Mac. I keep hearing that everyone wants OS X on x86 hardware. Why hasn't Linux, which appears to be floundering aimlessly, focused its efforts on being more like OS X than Windows? Isn't it what will REALLY motivate people to give Linux a try?

  3. Program Installation Locations by ShortSpecialBus · · Score: 4, Insightful

    The first thing to change should be how programs get installed.

    EVERYTHING right now goes in /usr, without a directory, because everybody is too lazy to have /usr/foo/bin and /usr/foo/lib in their respective environment variables, because it's too much of a "pain" to put them in there on software installation, and it makes library linking more difficult.

    Right now, if I want to uninstall a program, I have to remove it from about 10 different places, many of which aren't obvious (/etc, /usr/lib, /usr/bin, /usr/share, et al.) and there's no good way to do it.

    Find a way (maybe symlinks /usr/lib/foo.so -> /usr/local/foo/lib/foo.so, maybe something else, I don't care) to make it so program installation/uninstallation makes more sense.

    --
    //FIXME: Bad .sig
    1. Re:Program Installation Locations by Tet · · Score: 4, Insightful
      Look at windows: you clearly specify the installatino directory, and then *all* the files go there.

      I can't work out if you're trolling or just genuinely ignorant. Under Windows, everything goes in your selected installation directory... except for the bits that don't. Some have to go in the system directories and there are usually registry entries made. In contrast, if you tell a Unix application to install in a given directory, it generally does, and doesn't pollute the file heirarchy outside of your chosen location. If you're installing it from an RPM or dpkg, then it usually does the same, but it's effectively using a shared install directory between multiple apps. But why do you care where it puts the files? Use the package manager to tell you which files came with which package, and to remove the package if you're done with it.

      --
      "The invisible and the non-existent look very much alike." -- Delos B. McKown
  4. Does it reliably enable true modern computing? by Ars-Fartsica · · Score: 4, Insightful
    Does unix enable people to build clusters, serve multimedia content, create sustainable high-throughput networks etc etc? Yes. Most implementations also provide for these true modern computing environments reliably and cheaply. What else do you want an OS to do? If an OS can reliably enable the modern application layer, to me it has satisfied the criteria of an OS.

    While I agree that the core OS has not moved much in decades, I also see very little motivation for this as much of the required functionality has moved up the stack to the application layer.

  5. cynical view by Keitopsis · · Score: 5, Insightful

    Problem:
    Unix is great!, unless:
    - You just want a plug and pray answer
    - You just want a word processor
    - You just want ......

    If someone is only looking for a single application, it is hard to shove such a versitile system down their throat.

    Solution:
    Create a truely modular UNIX/OS that does not depend on any single environment(init/SYSV). Make a pluggable API-level interface that you can plug anything from a single application to a complete system environment into. Then get someone to develop EXACTLY what you want.

    Idiotware without the bloat.

    Laughing all the way,

    -- Kei

  6. Easy! by Telastyn · · Score: 5, Insightful

    Lack of coherent newbie documentation.

    Sure, man pages exist, but even once you learn that man does what help really should the man pages are generally written by programmers for programmers.

    Newbie guides generally don't get any further than a small command summary, which doesn't really show any strengths of unix over using a gui [or windows!]

    The best thing I think would be to provide more "whole system" examples/help rather than help for each individual command. Take some nice simple topics [how to add many users, how to determine network utilization programatically, how to determine open ports and what process is using them...] which are painful to do on windows and use a variety of unix tools to solve them.

  7. The C language by lazy_arabica · · Score: 5, Insightful

    Yeah, I know that most *nix lover simply love it. But let's face it : this language, which is still the most important one in a unix environment, is really aging. It is possible to develop big software in pure C, but it takes much, much time, and the risk of introducing bugs and security flows is huge. Only the minimal low-level core of the system should be based on C ; the rest should be developed in a modern, high-level language.

  8. In no specific order: by Qbertino · · Score: 4, Insightful

    -the allmighty root (single largest security risk)

    -ancient directory organization which doesn't take modern computer usage into account (more powerfull single workstations)

    -bad historically grown naming ("home", "usr", "var", etc.) and incosequent File System Herarchy Standard

    -crappy vendor support

    -unix printing still sucks big time (see 'vendor support')

    -grafics system and font handling

    -inconsistent standards of configration

    -histrically grown elitist utility naming (large anoyance)

    That's all I can come up with right now. Note that some of these are dealt with by certain unix variants. Printing and pretty much everything else is a breeze on OS X for instance. Configuraion and installation with Debian Linux is very smooth and goes great length to keep those countless OSS utilities manageable. And Solaris 10 seems to have the one or other card up its sleve to deal with security risks that result in the allmighty root.

    Coming to think of it: Can't we just have an OS with OS X ease of use, Debians installation system, Solaris 10 low-level features and Windows Vendor support? We'd all be set and 100% satisfied.

    --
    We suffer more in our imagination than in reality. - Seneca
  9. Re:Here's a start: by Zeinfeld · · Score: 4, Insightful
    Yes, the link is hosted on MS servers, but before you ignore it for that, at least notice that the forward is by Dennis Ritchie and it was contributed to primarily by Unix geeks. It's about 10 years old, but large portions of it are still relevent today.

    I think most of us on the Unix Haters list were Lisp machine or VMS hackers who were pretty upset that a piece of utter crap was winning the O/S standards wars at the time.

    The forward by Dennis is actually an anti-forward, more of a backward. At the time he was working on Plan-9 which takes all the best ideas from UNIX and junks them, leaving only the unrefined crud that is best ignored.

    The book is somewhat uneven in its criticisms, I don't think that the gripes abous X-Windows hit the mark as well as when they are explaining the file systems lossage.

    Ultimately the problem with Unix is that it is built the way that cars used to be built before Henry Ford, its a computer O/S for folk who like to spend their time tinkering with their system and like endless opportunities for low grade intellectual stimulation because thats an end in itself for them.

    Unix still has the same major architectural deficiencies. The inter process communication is not up to much, the concurrency model is weak, the user interface is eratic and there is no consistency. Documentation is a complete joke.

    --
    Looking for an Information Security student project suggestion?
    Try http://dotcrimeManifesto.com/
  10. And Apple is Open, what's the problem. by MarcQuadra · · Score: 4, Insightful

    OK, you know about Darwin, but if you go to the Apple site you can look at the code for WebCore, OpenDirectory, Apple's Kerberos implementation, Darwin Streaming Server, Apple's drivers for their hardware, their mods to CUPS, Samba, ZeroConf, GCC, Apache, and a whole SLEW of other stuff.

    The only stuff they don't give you is the source code to Aqua and their in-aqua userland apps, which makes sense, because giving that stuff away would be business suicide.

    When Apple said they were going 'open source' it didn't say they were going to release the source to their core apps, like the Finder and iPhoto, but they've been very generous about contributing the code they borrowed and modified back to the community.

    It should also be noted that Apple gives back to the projects they work on, GCC has come quite a way on the PowerPC since 3.0 thanks to Apple.

    In my opinion, Apple's strategy is one I'd like to see some vendor take with Linux, you take the kernel and mod it for high-performance desktop apps, get GTK+ running on an accelerated OpenGL framebuffer, tweak and simplify a slew of apps and SELL it. As long as the mods to existing software make it back to the community, it's a net gain for all of us.

    --
    "Sometimes, I think Trent just needs a cup of hot chocolate and a blankie." -Tori Amos on Nine Inch Nails
  11. My list. by Yaztromo · · Score: 5, Insightful

    Here are the general problems I have with Unix and Unix-like operating systems:

    • Threading models and scheduling. A few Unicies have decent thread models, but others have abysmal thread models and scheduling. Because of this, far too many Unix applications wind up eschewing threads for simply running multiple processes, which isn't the same thing. Thread priority needs to be global, and the thread should be the most primitive execution unitt upon which all other execution units are built. No more "my thread priority is set to the max, but I get very few slices because my process priority is set low". My OS/2 machine running on a P3-450 can still out-thread many multi-gigahertz Unix systems, and that's just sad. Too many Unix kernels have had threads bolted on as an after-thought, and it shows.

      (Note that this isn't to say that every Unix-style system has a bad threading model -- some of them are pretty good, and others are getting better. But it's currently difficult to write decent cross-platform multithreaded Unix code when some Unicies you know in advance have really crappy threading subsystems).

    • Clipboard support in GUI subsystems. Come on, it's 2004 already. Unified clipboards have been around for more than 20 years now, and yet many Unicies still can't get this right. Cutting and pasting between applications shouldn't be a major PITA. Users shouldn't have to worry about which widget library an application was compiled against to figure out if they'll be able to paste to that application from another. Things are getting better, but really, this should have been fixed years ago, and shouldn't be taking so long.
    • GUI application font support. Again, a rare few get this right, but most of them have this big conglomeration of font types, and no unified font access system. Windows 3.0 had a beter font subsystem than what some Unicies have.
    • Printing. Again, some Unicies have done a good job, but far too many still don't have a good unified printing subsystem. Others here have done a great job of pointing out the problems with Unix printing in general, so I won't rehash them all here.
    • Desktop access APIs. Even with KDE and Gnome, there still isn't an API to call to do something as simple as create an application icon on the desktop or in the application menus which can be used to launch an application. Everyone winds up having to roll-their-own, if they bother to do so at all. Again, not all Unix GUI environments suffer from this, but the majority do. As I developer, I shouldn't have to care what environment a user is running if I want to do something like put an icon on their desktop as a part of an installation/configuration routine -- there should be an API I can call that says "create an icon with the following properties", and have it worry about WM/environment specifics.
    • USB driver development and device access. Again, in many Unicies this is fundementally flawed and can be very difficult for users to set-up and configure. And it differs drastically from Unix to Unix. Where we have pretty standard systems for accessing RS-232 serial ports, and parallel ports, USB access is completely non-standardized across Unicies. Just witness the PITA it is to set-up the newly standardized javax.usp API on Linux, and the kernel work-arounds that had to be implemented to allow APIs like this to unload aggressive modules that grab interface focus immediately just because they were included with the distro. There isn't much excuse for this IMO.
    • Unicode support. Again, hit or miss.

    Okay -- now don't get me wrong -- there are a lot of things to like about Unix and Unix-like environments. But those are the items I personally have problems with in the general case (and again, not all Unicies exhibit all of these issues. In particular, Mac OS X doesn't suffer from any of them, and is my current OS of choice for doing development and as my personal workstation desktop environment).

    Yaz.

  12. Re:Here's a start: by Taladar · · Score: 4, Insightful
    Documentation is a complete joke.
    So which do you prefer? Unix Man Pages that contain all there is to know about a certain app in a not quite end user refined form or Windows Assistants ("Did you plug in the Cable?" - "Yes" - "Then I can't help you - call your vendor") and cryptic error codes?
  13. Re:Here's a start: by spectecjr · · Score: 4, Insightful

    So which do you prefer? Unix Man Pages that contain all there is to know about a certain app in a not quite end user refined form or Windows Assistants ("Did you plug in the Cable?" - "Yes" - "Then I can't help you - call your vendor") and cryptic error codes?

    I prefer MSDN. Call me when Unix has something that even approaches the ease of use and the amount of readable samples, explanations etc. of key APIs.

    And no, the System V paper manuals don't count.

    --
    Coming soon - pyrogyra
  14. Re:IMHO, none of that matters to the typical end u by sloanster · · Score: 4, Insightful

    Development for apps for "all" linuxs is right out, which means big commercial closed source players aren't interested, which in turn means we have to keep Windows machines around to get some kinds of work done, which sucks.

    Actually there are a number of examples which put the lie to your charge, apart from the obvious case where a linux admin doesn't even install a GUI. (linux gives you that flexibility) But a number of commercial vendors provide programs which run on any modern linux distro with X windows, e.g. netscape - but in practical terms, any modern linux distro ships with both qt and gtk apps. So any app built on either native xlib, qt or gtk will run on any modern linux system.

    Linux has a pretty poor cache and swap system, combined with zero user level control over cache and swap. As a result, over time, the OS runs slower, and s l o w e r and s... l.... o..... w...... r....... until you restart, and then it's back to being fairly snappy until it fills up memory again with things it shouldn't be caching,

    LOL, mod parent up funny - linux memory management is actually pretty decent. I don't buy into the hype about running slower and slower and finally needing a reboot, that sounds like too much microsoft thinking. Our mail servers which are currently on a 700+ day uptime are processing messages just as fast as they were when first booted.

    Sorry, your story just doesn't hold up.

  15. Getting help from Linux gurus by some+guy+I+know · · Score: 4, Insightful
    But god forbid I ask a question on IRC or anywhere that someone knows anything about linux.
    As has been explained countless times in many places, you have to be adversarial if you want your question to be answered on a Linux board.
    You don't ask a question directly; rather, you write something like "Linux sucks because it can't do X but Windows can.".

    To use your USB mouse example, you probably went on a board or IRC somewhere and wrote:
    I can't get my XYZ brand USB mouse to work.
    Can someone tell me what modules I have to load and what settings I have to make in the config file?
    Thanks.
    Note that you asked a reasonable question and thanked people in advance for their help.
    This is a recipe for disaster.
    The board gurus will pounce on you like a ... like a ... ah, like a board guru on a newbie, responding with comments like "RTFA n00b!" or "Go back to Windows if you can't be bothered to learn the simplest basics about Linux" or other equally-informative messages of encouragement.
    Instead, you should have written something like:
    It's too bad that Linux is still stuck in the 20th century.
    It doesn't even support a USB mouse.
    In Windows, I can just plug it in.
    Until Linux can support modern hardware, it will always be playing catch-up to Windows.
    It's definitely not "ready for the desktop".
    You will have Linux gurus crawling out of the woodwork to show you that, yes, Linux does support a USB mouse, and the reason you couldn't get it to work was probably one of the following: X, Y, or Z, and here is how to work around or fix the problem, and here is where you can find additional information, and here is where you can get drivers or other needed software, or a more user-friendly front end, etc., etc.
    Note that their attitude will be as snotty (or snottier) as with the nice method of asking, but you will get the information that you require.

    Note to mods: The above may appear to be flamebait or an attempt at humor, but this method actually works.
    Try it!
    --
    Those who sacrifice security to condemn liberty deserve to repeat history or something. - Benjamin Santayana