Fred Linux Annoyance List.

"Fred P." <[email protected]> Wed, 15 Oct 2003 07:09:24 -0400
Newsgroups gmane.linux.usability.annoyances
Message-ID <[email protected]>
Hi everyone,

I'm a VERY BADLY HEAVILLY FRUSTRATED occasional Linux user, here's a short 
list why:


CODING:

1) Quality Assurance
     - It compiles, let's ship it!
     - Let's have user test the product for us
     - How come compilation error for Linux Kernel 2.6 test 1
       had more than 100 fatal errors and 1400 warnings!
       After how many 2.5.x series ???
       http://www.ussg.iu.edu/hypermail/linux/kernel/0310.1/0151.html

     - I don't understand how you can accept patches
       that break stuff or doesn't even compile cleanly inside Linus 
kernel...

2) Buffer overflows
     - Most GNU software still use char* when glibc string_t is out there 
since years... WHY???
     - It should be prohibited to use any unsafe str*() calls and always use 
strn*() variant.
     - Any C program should use get/set function to access data structure 
like in C++ or pthread.

3) #define inlining sickness
     - Xlib comes to mine, stop using #define and use inline functions!!!

4) code that use TABS => USE 2, 3 or 4 SPACE!
     - Tabs aren't compatible, they are from 2,3,4,5,6,7,8,10,12 spaces
       they get mix up in different editors and things get messy.

5) put some comments, clear and concise name and coding in english.

6) Use external i18n translation facilities


USABILITY:

1) Man pages sucks, unreadable, unusable,
    you always get the wrong version of what your looking for,
    you have to guess which pages is it for that C function since you get 
that Tcl/Tk manpages.

2) Some man pages are WAY too long, you scroll for years with zillions of 
options, gcc comes to mind,
    and you cannot find the one you REALLY want.

3) Documentation make it concise lynx compatible HTML style with a search 
engine,
    see http://www.qnx.com/developer/docs/

4) No standard GUI, means everybody develop for CONSOLE.

5) ncurse is unfriendly, undocumented and unusable:
    - document it and make it friendly.

6) Most applications are simply unusable, undocumented, no proper error 
code,
    they try to look funny, cartoonish, eye-candy, unknown RTFM 
feature-based, disturbing, etc.

7) Most applications are slick BETA version and if you're not happy,
    your stupid or just read the damn manual, hey BTW this crapt is free!

8) First thing you should all know:
    If you ever read a software manual,
    the application usability interface is broken by definition. QED.
    It should be intuitive for anybody,
    even someone who never used a computer before.
    Help should be provided without being "invasive" like a clip thingy,
    use beige bubble help, status bar and F1 key.

9) Application should have different user mode:
     - Newbie
     - Normal
     - Expert
     - User specify

10) Application should be installed/uninstalled
    like ActivePerl console based or Windows add/remove programs.
    One click or expert mode, straight-forward usage.
    Automatic dependancy resolver.

11) There are tons of version of different applications, but the one you 
need doesn't exist,
    you get one feature here, one feature there, but most apps don't have 
everything you need.
    Some super-duper extremely popular applications are getting there 
perhaps.

12) Lost in the wood problem => GNOME/KDE.

13) Most Unix command line are really obscure and clueless, I mean DOS was 
simple:
    copy, del, dir, backup, restore, chdir, rmdir, mkdir, echo, rem, 
diskcopy

    Now ask a newbie what the following means WITHOUT thinking at all (Homer 
simpsons after 6 beers):
    dd, df, ln, ls, su, uname, ld, ldd, xxd, sg, shar

    Now ask a newbie what the following alias means without thinking at all:
    diskcopy, diskusage, filelink, dir, chuser, printsysinfo, linker, 
dllinfo, hexdump, execgroup, shellarchive

    Too long to type?
    Alias the other way around!!!!
    Having a alias dd='diskcopy' that would make way more sense.
    BAD BAD BAD UNIX design...

14) Most Unix commands makes use of RegExp, awk, sed, perl.
    The problem with RegExp requires a DFA/NFA CompSci hard theory course
    and cannot be really self-taught.
    --> Make a newbish GUI RegExp builder tool?

15) Hide as much as you can from the user, make it "progressive".
    Don't INSTALL everything. Ask the user what he wants to install and how 
he want it,
    in the worst kind of newbish installation program you can get.
    Think mIRC or Trillian or Install Shield: click, click, click, done.

    NO FREAKING:
      rpm -uvh
      configure && make && make install.
      apt-get
      whatever_your_taste_of_the_day_command_line

    See QNX6 installation packages (qrm/qpk) or Windows .msi download link.
    http://www.openqnx.com/Topic11.html

16) TrueType Windows fonts!!!
    Who invented anti-aliasing for less than 18pt fonts ?
    I can't believe people use anti-aliasing for 8,10,12,14pt... are you 
dyslectic or what?
    Anti-Aliasing is only good for BIGGGG font like 36pt titles and more...

17) All distro GUI/API are completely different:
    Writing a TODO step list to perform a simple task is nearly impossible.
    Another reason why people rely on heavy command lines...

PHILOSOPHY:

1) Unmarketable software, most paying software
    are low success see StarOffice vs OpenOffice and similar,
    since there is a highly "must get a free clone"
    mentality and "paying fee" is wrong.
    Therefore, most software lacks good programmers or lobbyist
    and most software company are discouraged to produce
    applications/games for such platform, where free clone is the way to go.
    "Thank you to produce such good software but sorry
    I won't give you a dime for using it..." mentality.

2) RTFM. Your such an idiot.
    Your not on the good forum,
    sorry there's no forum for your question just RTFM,
    even if it's not in the FM.
    I can't help you, I have no good answer but BTW your such an idiot.

    [P.S. Sometime after few hours(!), I finally find some nice person who 
can actually help me...]
    [==== If they were the majority, Linux community would be a better place 
to live...           ]

3) Be nice and gentle and try to help people.
    See QDN or SVG "very nice" people community mailing list.
    Don't forget that today's newbies are tomorrow hackers
    helping you to debug that specific bug... you can't figure out.

4) I'm not a programmer, I'm an hacker. I produce lots of unreadable code,
    it just have to compile somehow, no matter if it's usable,
    it's not my problem, it's yours, if your not happy go elsewhere or do it 
yourself.
    Mentality.

5) Philosophy idiots, I mean zealots.
    Linux should not be a religion, no matter what.
    No OS for such matters. See Linus quote.

6) Use CONSOLE, don't use GUI, your such an idiot.

7) I can type 3000 commands in one line,
    but hey you shouldn't ask for one button to be click to do the same 
thing... mentality.

8) It's a hacker OS for hackers, it shouldn't be usable.
    If it ever becomes usable,
    I'll see if I can switch to some other OS or simply ensure it stays 
unusable...
    [Copy-Pasted from some slashdot post ]

9) Our OS is ultra secure, but if there is no easy patch for the latest 
rootkit/vuln.,
    just go CVS and try to patch your prod server yourself...
    Hey, if it doesn't work or compile ain't my problem... it works on my 
machine.
    Why do you need an RPM, just CVS!!! You're so stupid.

10) Stop shouting about Microsoft:
    - Microsoft and Apple got one thing right: It's usable.  Linux is NOT by 
definition.

11) Stop shouting about money, profits and big corporations:
    - Big corporations are your friends,
      they bring big usable applications that people need and want to buy.
      Don't work against them!

12) Stop making some new license:
    - I've heard of projects that can be distributed but couldn't be compile
      because it use too many license and incompatible library licenses...
      that's just plain wrong and crazy.


CONFIGURATION:

1) Configuring Linux is a nightmare.
2) Configuring Linux application is a nightmare.
3) Finding where is the damn config file is a nightmare.
4) Finding what's the damn syntax for that config file is a nightmare.

5) Finding why that config file doesn't work in that config file order
     on that booting mode is a nightmare.

6) Finding what is the damn parameter for that application inside a config 
file is a nightmare.

7) Trying to find what's the man page for that damn obscure parameter
     for that application inside a config file is a nightmare.

8) Trying to find all the DLL dependancy for that application,
     so I can kill it safely... and reload it is a nightmare.

9) Having more than one DLL version on one system without breaking all 
application.

10) Where is it!? /usr/local/bin /usr/bin /bin /opt /opt/bin /home /var /etc 
/etc/rc.d/

11) In 6 years, I never got one ./configure && make && make install working 
at all.
    Mostly fails at configure or make with pages of errors and undescribable 
messages.
    It needs to be compiled ==> means I'm screwed if there's no package...

12) All Linux distribution should be EASY to install, like Knoppix.
    It boots, it works, it's configured. No hassle.

13) Most problem with Linux distro including Knoppix,
    is that you need BADLY that application unsupported at all on your 
distro.
    Knoppix cannot really be installed on hard disk... =(

14) Application should be easy to configure, intuitive,
      self-describing panels like Windows 9x or Mac OS X.
    You see it for the first time in your life, and you know
    what is what, what does what, and what changes what,
    without reading any help files, manuals, documentations or whatever...


FLEXIBILITY:

1) Micro-kernel like dependancy:
    a) update/patch your kernel without rebooting just
        (reload it in few microseconds: stop/start like a service)
    b) update/patch your device driver without recompiling any kernel source 
(stop/start)
    c) update/patch any library (stop/start)

    # kernel --reload  kernel-2.6.0-test6.bin
    # kernel --reload  glibc-x.x.x
    # kernel --reload  scsi-driver-x.x.x
    # kernel --stop    lan-driver-x.x.x
    # kernel --start   modem-driver-x.x.x
    # kernel --display driver

2) Have a friendly I/O interface: Game port, Parallel port, Serial port, 
Keyboard, Mouse
    without ROOT in/out assembly privileges or terrible TTY interface.
    It's horribly complicated in C, now imagine in assembly...

    Think /dev/port limited to these with a root:port 770 privilege:
      /dev/gameport
      /dev/serport
      /dev/parport
      /dev/kbdport
      /dev/mouseport

      /dev/sndport
      /dev/lanport
      /dev/hdport
      /dev/fdport

    Moreover, it may be nice to assign ACL privilege in the future.
    You may want an application to write to parport/serport without being 
root,
    for security reasons.

3) Message passing within threads like QNX
    (badly needed to replace those UNIX signals crapt).

4) Provide some sort of XUL+JS programming interface for console-only 
application
    to provide a framework for ncurse/Qt/GTK GUI.
    http://www.xulplanet.com/references/elemref/quickref.html

    Example:
    dd with dd.xul


CONCLUSION:

Imagine a world where Linux works like Knoppix
Auto-configure with good defaults
Gets installed/uninstalled/configured like mIRC or Install Shield
Intuitive non-intrusive non-disturbing nice graphical interface
Very Very nice documentation
It just works like a charm
It gets patched easily
You get the job done without fiddling with command lines, man pages and 
similar.

Now that would be nice!!!!

Sincerely yours,
Fred.

P.S. I'll try to find more...
     I'm a masochist guy that try really hard to love Linux,
     but Linux don't love me at all!

_________________________________________________________________
Add photos to your messages with MSN 8. Get 2 months FREE*.  
http://join.msn.com/?page=features/featuredemail