Gripes
- GNOME projects in general are moving towards windows-style quality and traditions. This means no manual pages (what does gnome-settings-daemon do, what options does it take, etc? Who knows?), a move away from dotfiles (want to move your settings from one system to another? Good luck!), restrained user choices (not using a complete GNOME desktop? Be prepared for gnome apps to randomly decide to launch parts of GNOME that will override various desktop settings with some bizarre gnome defaults), and low coding standards. How could they fix it?
- Provide manpages for everything, even components users don't normally launch on their own, like gnome-settings-daemon or gnome-power-manager. Traditional unix manpages never were limited to commands anyhow - they ran the range from C functions and configfiles to subsystems.
- Find ways to move forward without breaking old things. It's a good thing to keep Unix moving forwards. Letting users opt-out of having a subsystem manage something (like the desktop background or X resources) lets them use other subsystems to manage it. Be wary of changes that break long-established code paths (like .xinitrc/.xsession or .Xdefaults).
- Use dotfiles instead of gconf. gconf may be quicker to query, but it's not as easy for users to customise, and it discourages them of thinking of their settings as something they can manage except through the application.
- Don't make your own little universe that's all-elbows. Assume that users will be using plenty of applications that are not from GNOME (or KDE).
- gnome-terminal - I use it (for the good Unicode support, because SCIM works with it, and because xterm doesn't know how to deal with modern fonts), but I don't like the hooks it has into the rest of the GNOME mess. It also has poor xterm emulation, so any curses applucations you'd like to run will probably not look right. They thoughtfully don't provide proper termcap/terminfo entries for gnome-terminal to describe its actual capabilities.
- Firefox - I quite like firefox, but there are a few bits of misdesign. The findbar is much less useful than the old find-in-page popup, more intrusive (I often find myself typing into it instead of into a page textfield because its trigger on "/" is a bad choice). Caret browsing keeps changing on mysteriously, meaning I have to hit F7 very often to turn it off again (basically anytime I do a google search). The anti-ad/privacy manager settings don't take domain wildcards (so there's no good way to say never accept cookies from *.2o7.net), etc.
- bash - Still has that ancient problem where sometimes it gets confused about the width of prompts that include a bold, and wraps lines inappropriately until you tell it "TERM=xterm" again. This is despite having explicit hints telling it "this bit here is zero-width and just turns on/off bolding". This bug has been around forever.
-
- Packaging dependencies - Most modern Linuces have terribly stupid dependencies in their package tree, meaning that if you want one application, you'll find yourself pulling in a lot of unnecessary garbage. Some dependencies make sense, of course (if you want gvim, you're going to need gtk, and there's no sane way around that), but some are mysterious (e.g. evolution-data-server appears to be necessary for a lot of things that do not care at all about the evolution groupware package). To the extent that it's possible, applications should be programmed and packaged in a way that they load extensions at run time, flexibly.