Sean Middleditch » GNOME
The new Metacity compositor in 2.21.5 is pretty sweet. It has only very simple effects (no eye-straining wobbly bullshit or workspace transition effects that just waste time), so it isn’t nearly as annoying as Compiz demos make compositing seem to be. It also made the desktop feel a little faster. The new desktop switcher is also a good deal nicer than the old one. Once an exposé-like feature is added, I think I’ll be all set with Metacity. All in all, I like it quite a bit.
Hopefully Ubuntu replaces the “low-bling desktop effects” option in the desktop effects setup with the new metacity. Compiz is a beast and it can’t even work on common setups like any machine that doesn’t support accelerated GL.
The only “bug” I’ve noticed with the new compositor is that windows sometimes get drawn to the screen before they have any content, so you see a very short flash of garbled pixel data. I’m not entirely sure if that’s a problem with Metacity, with X, or with GTK+. It’s not really critical, and I imagine it’ll be fixed in whichever layer needs it soon.
Apartment hunting is over already.
Looks like I’ll be living in Aspen Chase, off Golfside between Clark and Washtenaw, right next to WCC and US-23 and I-94, plus right near all the cool shopping places and restaurants and Ann Arbor.
I move in at the end of the month. Thinking about throwing an apartment warming / alcohol cabinet stocking party sometime in early-mid January.
So, now I need to ratchet up how much or work (or where I work). I’m also really interested in getting back into FLOSS work. I’m digging through some Ghostscript bounties (two birds, one stone) and seeing if there’s anything a newcomer to the project without much 2D compositing experience can tackle. A few looks like applicable.
After that, I’m unsure. My three biggest favorite things to work on are games, low-level infrastructure and language tools, and usability. FLOSS games are not much interesting to me; I’m not sure why, but for some reason Open Source just doesn’t seem to be working so hot for game projects as it does for everything else. Possibly because artists/designers/musicians aren’t as into the Give It Away For Free thing as programmers are.
So, for low-level stuff, I was at first thinking X and drivers. Then I’m thinking that that tends to be a pain without a second set of hardware, plus the chance of breaking hardware (hopefully rare, but still a possibility, as I’ve heard), and I don’t really have the cash for spare hardware, graphics cards, etc. and I need this one machine to continue working perfectly so my regular job. So maybe that’ll be an option down the road when I have more spare cash.
That pretty much leaves general desktop app work, or work on lower-level desktop code like HAL or D-BUS. Now, while I’m a GNOME fan of their desktop design, I actually really dislike their underlying frameworks. I mean, OO in C certainly works, but… damn is it ugly. Writing desktop software is a very high-level thing to do, and really would be better with a high-level language. Sadly, C# is dead for political reasons, C++ isn’t really all that great (but it certainly blows C out of the water - compare the pleasure that is the Qt API to the glib/gtk API), Java might very well become a good choice soon what with it being Free and IcedTea coming along, but then I’m not a huge fan of Java (C# is Java “done right,” but see afore-mentioned political issues), and so on. Vala looks like a fun projects (language design, low-level framework… my favorite areas) so I might look into that very soon. I’m specially not fond of how it just translates to C (there’s several very good reasons why C++ no longer does that), so maybe giving it an LLVM backend would be spiff, plus I’ve really been wanting to play with LLVM anyway. Actually, working on the clang frontend for LLVM is another option.
There is then always the part of me that just wants to do something new and exciting, but that’s… difficult. Not so much in writing it, but finding something new and exciting and actually worthwhile. I mean, doing all the web work I do, I’d love to have a langauge dedicated solely to doing web work. PHP, Java, C#, Ruby, Perl… all of these are extremely general-purpose languages that have libraries for working on the web, but they still make things more complicated than you really need. (Ruby on Rails does purportedly make things very easy, but then, you’re not so much coding Ruby as you are in a specialized dialect built on top of Ruby - plus, having hacked on the Ruby interpreter in years past, I’m not a fan of the underlying technology, unless Matz and co have done some serious work on it in the last few years… maybe I should take a look.) Really, 90% of what a web app does it spit out HTML and run SQL queries. Those two things should be SUPER easy and the easiest way to do them should also be both the most efficient and the most secure way to do them. Just makes sense. I have ideas on how to do this, so it’s tempting to write mod_languagethatdoesnotsucklikephp… but that gets back to whether the project would really get used much and really be worthwhile or just be yet another niche language used by three people in tiny projects nobody’s ever heard of.
I’m equally tempted to do a more low-level language. D is a neat language, but the design is a little… fluid. Plus its standard library sucks, and of the two competing projects to write a new one, both feature new ways of sucking as well as little chance of ever actually being “standard” (not that anything in D is standard, since its just a dump of whatever features the lead developers think is cool at the moment). I like C, I really do, and I really hate the way that C# and Java force OOP down your throat even for things that aren’t best modeled by OOP, or for things where their object model is not quite the best fit. It would be nice to do C with an enhanced type system that makes OOP possible and easy, but makes other styles of OOP also easy, as well as providing much better high-level data structures than the way C++ does things. Basically, I’d like a language that has high-level features, but also allows low-level programming, unlike Java or C# which put everything on their custom managed runtime. To be completely honest, neither Java nor C# really helps all that much with being portable except for trivial programs, and the security benefits of managed runtimes aren’t nearly as useful as advertised except for applet-like situations (seriously, it’s not really that much harder to write secure code in C than in any managed language, from Python to C# - buffer overflows and other memory-address-based attacks are less likely, but that’s hardly the sole kind of security hole around). But still, there are a bazillion “a better C/C++” projects out there, and even if I do make The Best(tm), how useful is that really going to be in the grand scheme of things?
It thus seems best to focus on something that people will actually use, instead of yet another quasi-academic intellectual-masturbation sort of project. GNOME and LLVM are my top choices. LLVM is a little more up my alley, but GNOME work can be fun. It’s been years since my last patch to GNOME, too. Maybe it’s time to rectify that sad fact.
Not seeing any of that likely until January, though - need to earn some raw cash now and get ready to move into said new apartment in a month. My rent will be going up by $325/month, plus I won’t be splitting utilities or Internet anymore. Yay fun.
Stuart Langridge is my hero. That is like a million times faster than gedit, and doesn’t seem to lock up on large pages.
So my roommate, who is setting up a Linux computer for a family member (their kids keep screwing up the Windows install by downloading tons of adware/spyware/virus crap), is using Ubuntu. After finally getting it installed, I commented to him that KDE is more configurable and a little closer to Windows. We converted the install to Kubuntu with a quick apt-get install kbuntu-desktop and a few other startup changes, and away he went.
So he comments to me this morning, “I think I’m going to install GNOME back as the default desktop. It’s easier to configure.”
I had a bit of a time trying to figure out what the heck he meant. GNOME’s lack of configurability is, of course, KDE fans’ most favorite design principle to flame.
“What do you mean?” I ask him.
“I can’t figure out how the hell to set things up,” he replies with an ashamed look. “I’m new to Linux.”
I nod. “KDE is vastly more configurable than GNOME, though. You can get it to look and work however you think is best for your family there.”
A quick laugh, followed by, “sure, if I could figure out where the hell the right settings are. There’s too much crap in KDE to sort through! I know the setting is there, somewhere, but I don’t have a clue where! GNOME is easier to configure.”
Even being a GNOME user, I found that rather surprising. Of all the reasons I’d expect someone to prefer GNOME over KDE, I never expected that one. Goes to show that the “less is more” approach is as valid as the GNOME developers expect it to be.
Frustration Alert Level: Orange
Why do the super simple programs in GNOME all have a bazillion features and plugin support these days? Gedit is a monstrosity of complexity. It crashes viewing medium-sized HTML docs (Epiphany loads gedit to “View Source” on a page, unlike Firefox which uses its own HTML viewer) and I have no idea if it’s gedit itself, gtksourceview (because a text editor just has to have syntax highlighting), or some other plugin.
Why can’t GNOME just ship a bare-bones text editor a la Notepad instead of a giant monstrosity that nobody in his right mind is actually going to USE for anything? How many developers - the Gedit developers themselves included - actually use Gedit to work on code instead of Vim, Emacs, or some IDE? It doesn’t need syntax highlighting. It doesn’t need plugins (are there even any third-party Gedit plugins?).
Now Eye of GNOME has also gained the bloat. I’m sure it comes accompanied with an abysmal startup time, just like Gedit. Notepad, in a Virtualbox VM, loads instantly on a clean Windows XP box. Gedit takes 2 seconds on the same machine running native Linux, and that’s a warm startup at that.
Nautilus has long been a beast, although I think it at least has an excuse, what with its direction having changed course several times after Eazel disappeared. I’m not saying it needs to be rewritten, but it probably has some cruft that could get the axe. Evolution has been a nightmare from day one, especially for the 95% of us who don’t use notes, todo, calendar, or various other groupware features. Most of us just check email, and use a contact database to make the checking and sending of email a little easier.
I use GNOME instead of KDE because I don’t want my desktop bogged down by tons of useless crap some developer wanted to add so he could wank off to how many features his program has. Gedit is full of features that nobody needs, and all those features destabilize it to the point where I can’t even trust it to do the one or two things I actually need it for.
I have a feature request for GNOME 2.22:
Cut out the pointless bored-programmers-induced bloat that nobody needs from Gedit, EOG, Nautilus, Evolution, gnome-panel, and so on. I’m sick of GNOME taking longer to load a working desktop (starting from when I finish logging in at GDM) than it takes for a virtualized Windows XP to load a working desktop (starting from when I click the “start machine” button).
http://linux.slashdot.org/linux/07/02/17/0219225.shtml
It looks like the sole bit of code I wrote several years ago that’s been running on desktops all over the world just got replaced by Linus himself. While a little sad on my part, he has reinforced my original point.
Some years ago, Metacity only supported maximizing windows on double-clicking the titlebar. A number of users were complaining about how they wanted it to shade the window on double-click, not maximize. So I did what those losers wouldn’t: I wrote a damn patch that added the feature.
I personally can’t stand window shading. I added the patch mostly just to prove a point, and to shut certain users up.
To this day, we still have so many, many morons who bitch and whine about how GNOME refuses to add new features or options. Which is nonsense. Usually, if GNOME developers refuse to add an option, it’s either because (a) they don’t need it themselves, and they have no reason to write a patch for whiny, insulting, demanding users, or (b) they believe that the option merely switches between two broken behaviors, and it would be better to wait and think about it and figure out a single, non-broken behavior.
Linus is one of the more well known GNOME detractors, who has made those same moronic claims, but now he’s at least shown that he’s better than most users. He wrote a patch. The core GNOME developers may have no need at all to configure middle and right click behavior, and hence they never bothered to add the feature, but given my experience above I’d say it’s quite likely those patches from Linus will go in.
Frankly, I’m happy with how GNOME developers run things, even though I sometimes get bitten by their decisions. GNOME is Free Software. I got it for free. I didn’t have to do a single thing to get a fully functional desktop OS and application suite. If they don’t want to go to extra effort just to satisfy me… fine. It’s their choice. I’m glad they don’t bend over backwards to add in every requested feature because, even if one or two I’d like to have aren’t there, I’m also not stuck dealing with immense bloat. I truly hated the old days of the Linux desktop (still alive today on KDE) where I couldn’t figure out how half the crap on my screen worked. The configuration options were impressive, but finding what I wanted was difficult, and usually the ideal behavior I wanted required some specific combination of 20+ options! Heck, even then it was usually only _close_ to what I wanted.
One of the easiest examples is Metacity’s window resistance behavior. If you need to align windows, window snapping used to be the way to do it. The problem was, snapping was annoying as hell when you weren’t trying to align windows. If you spent enough time tweaking the snap sensitivity, gravity, and so on, you might have been able to get things setup so that you could easily align windows and not get bitten too often when not aligning windows.
Metacity didn’t support snapping. A lot of users demanded it. Aligning windows wasn’t easy. Metacity still didn’t get the feature. Users whined and bitched and called the developers names. But the Metacity developers were right: snapping was a pain in the ass, and it took 5+ configuration options to ever get it working close to sanely, and even then not perfectly. Finally, Elijah added the window resistance Metacity has now. Since then, I’ve not seen a single request for snapping, nor a single request to turn resistance off. Instead of caving in to users’ demand for some particular broken feature and option, Elijah approached the actual problem and worked out a different, better solution.
Frankly, I’m really glad Metacity developers didn’t just blindly give in to the whining and demands, because then we might be stuck with an “almost good enough” solution that cluttered the configuration UI, cluttered the code, and probably would’ve pushed off the desire to work out the ideal solution to far into the future.
The GNOME developers did not dismiss the users’ problems. They dismissed the solution that the users requested. Which is the problem, really. Users request solutions instead of announcing problems. Sometimes the solution the user asks for to fix his problem is the best solution. Often times, it isn’t.
As the phrase goes, the users ask for solutions to the symptoms, not the cause.
Now, maybe the GNOME developers could handle it better. Maybe sometimes they outright deny requests for features when they could simply say, “We acknowledge the problem, but we’d like to take the time to see if there’s a better solution. We’d like a behavior that can be the default that does what you need and does what everyone else needs, too. Please be patient, and let us know if you have any further information or ideas on this problem or alternative solutions. Thank you.”
More often than not, they probably just say, “This feature has such-and-such problems, and while it solves your issue, it creates others. We won’t add more options for broken features. Goodbye.”
The latter response sounds far more like the developers simply don’t care about the users’ problems, or like no solution which requires a new option will ever, ever be considered for implementation. That’s clearly not the case (GNOME has had many options added since the 2.0 release), but people will read into the second response above as implying that it is.
I’m not subscribed to any mailing lists anymore (except the AweMUD ones, of course), so I don’t pick up on a lot of cool things that aren’t discussed in the ever-popular developer blogs these days. Every now and again I’ll read up a month or two worth of the archives of various interesting lists, and discover new and wonderful things. I really wish there were more “Kernel Traffic” style news letters for GNOME, FreeDesktop.org, and other big projects.
One interesting piece of software I (re)discovered today is gnome-screensaver, a GNOME replacement for xscreensaver.
The venerable xscreensaver has been around ever since I started using a UNIX desktop many years ago. xscreensaver has several large problems. First, it’s unlock dialog is, well, nasty. Second, its configuration interface is over-complex and option-stuffed like all too much software. A third problem with xscreensaver is that it has no way to support some of the newer features people want out of their desktops like fast user switching in a locked desktop. Fourth, it offers no solid and clean mechanism for disablin the screen saver during, say, movie playback or a presentation.
gnome-screensaver attempts to solve the problem by providing a new screensaver framework that supports modern features and has a beautiful, clean, simple, easy-to-use GNOMEy interface.
I installed gnome-screensaver on my Ubuntu Breezy box (it’s in universe), killed xscreensaver, and started gnome-screensaver. I like it. The configuration panel is as simple as it can get: a slider for the delay, a list of screensavers to use, and a preview box. I believe future versions will have a box for enabling/disabling the lock dialog. You really don’t need anything more at all.
The lock dialog is also a lot prettier than the xscreensaver one. I found the switch user function to be a little less than useful, however, as it seems to be based on the idea of showing a list of available users that you must select; there is no way to type in a user name. Aside from the fact that none of the users on my machine showed up in the list, I wonder what would happen on a machine in a corporate environment with 10,000+ users managed over LDAP+Kerberos? Either the list would be too long to be useful or the list wouldn’t be populated with entries. I’ll have to see how newer versions handle this, especially given that I believe that the version in universe is a little out-of-date.
All in all, though, this is a great development, and I look forward to seeing become the default.
I’m also happy to note that I’m finally back to using Epiphany after a long affair with Firefox. I am now running a 100% GNOME desktop again, and let me tell you, it feels good. The only thing I’m missing is an IM client. GAIM is too non-GNOMEy, its UI really is pretty awful; the menus are over-complex, the configuration is over-complex… I’d rather have something that just works, needs no tweaking, and doesn’t require me to dig through a bazillion menu entries and sub-menus to find what I’m looking for. I tried gajim, but it too is over-complex and non-GNOMEy; the fact that its configuration panel includes options for choosing paths to external applications is all I needed to see to stop using it. Sure, yes, UNIX is all about reusing components… but hide that fact from the user. Those application paths should be selected only through GConf, for example. And one shouldn’t have options for preferred applications when the desktop already has them. I guess I’ll give Gossip another try, hopefully that works out.
Since my main hard-drive is toast and I don’t yet have a replacement, I decided to go ahead and install Ubuntu on a partition on my spare 40G hard-drive. (It’s telling that I consider a 40G hard-drive to be small and depreciated, isn’t it?)
First impressions weren’t great on this box. I was asked which resolution to run my monitor at - would have been ugly for someone who didn’t know what to run it at, especially on an LCD like this one.
Second problem was that my mouse did not work. Apparantly the USB controller is blacklisted, though I have no idea why. It’s always worked perfectly in Fedora and other distributions. After I figured out why the mouse wasn’t working, I plugged it into a different USB port on a different controller and now it works fine.
The not-actually-spatial Nautilus thing is irritating the crap out of me. Currently running in browser mode with the location bar turned off. I have no clue why Mark is being so obstinate about keeping the broken spatial Nautilus; it’s harder to navigate with than browser mode and it breaks the spatial mode something fierce.
Ubuntu suffers from the broken Kerberos support in gnome-vfs bug I fixed for Fedora. Probably won’t be fixed in Ubuntu until it’s fixed upstream in GNOME. Maybe that day will be soon. Probably won’t be. Even despite my having submitted a patch.
The fifth problem with Ubuntu is that the admin tools are very lacking compared to Fedora’s. Ubuntu is new so I forgive it this one. I’m glad they didn’t copy Red Hat’s tools because those things are lessons in UI gone wrong. At least they work, however. I’ve now manually gotten this machine configured for things like Kerberos authentication, which was simple once I figured out which packages I needed (and copied the config files from the old drive; these files thankfully weren’t touched by the massive sector death).
A sixth problem is how tall all the windows are by default, except the ones that actually need to be tall. Firefox first opened in this tall, narrow window that’s just… disturbing. Possibly just me not being used to it, and possibly it’s the Golden Ratio playing its psychological tricks. Some windows, like the sound configuration window for GNOME, opened in a size too short to be useful without resizing.
Oh, speaking of sound, problem seven is that Ubuntu enables the disgustingly awful GNOME event sounds. Ugh. It’s not even that the sounds themselves are bad, they’re actually what I’d consider broken; crackly.
All the other problems I’ve run into were things Fedora got wrong too, so I figure the cause is something upstream (like Totem being pretty bad for playing DVDs compared to Xine).
Ubuntu definitely does a lot of things RIGHT. Speed is one. Most of the nice things are really small - inconsequential when you look at them on their own, but they REALLY add up to something spectacular.
My only fear now is that the Debianism is going to bite Ubuntu in the ass. I think a lot of people now know me as the anti-Debian bigot, though, so I’ll avoid delving into that topic too deeply. ;-)
Hmm, I actually touched AweMUD and Scriptix today. Just fixed them up a bit to compile with GCC 4.0, which is now in Fedora Core. (A pre-release is, anyways.)
Also submitted my ported gnome-vfs/gssapi patch to Fedora bugzilla (#150132), since they’re more interested in Kerberos than the GNOME project in general. I’m guessing GNOME upstream won’t integrate my patch at all, but will instead just wait until they do the migration to Neon 0.25. Fedora is pretty keen on Kerberos support, though, so I figured they might want to integrate the patch for FC4.
I patched gnome-vfs to support GSSAPI, and it works. See bug #159663 for the patch against gnome-vfs 2.9.91.
I got the original GSSAPI patch for Dovecot from the Dovecot maintainer. Unfortunately, it doesn’t apply against either 0.99.14 or 1.0-test. With the gnome-vfs patch, Dovecot is the last piece of the single sign-on puzzle. I looked into other IMAP servers, but the only others that support GSSAPI are UW-IMAP (yuck on a stick) or Cyrus (and its weird, proprietary mail store). I’ll stick with Dovecot. I’m going to see if the maintainer is interested in getting GSSAPI in by 1.0; if not, I’ll give it a try myself.