Havoc's Blog

this blog contains blog posts

Encodings

Since GTK+ went UTF‑8, GTK+ programs have had to figure out text
encoding (even for Latin‑1 users, who often happily ignored it
before). The rule we beat people over the head with is that all text
must be either:

  • In some way encoding-tagged, like HTML
  • Defined by specification to be in a particular
    encoding

Joel just posted a nice
article
expanding on that in more detail.

For Linux, the ongoing problem seems to be filenames. Lots of disks
out there contain untagged random-locale-encoding filenames. The ext3
filesystem is defined to have UTF‑8 filenames, but apparently POSIX
requires the kernel to pass through filenames 8‑bit clean without
validation, so of course people have been sticking all kinds of
non-UTF‑8 junk on their filesystem. In the bad cases, you have an NFS
mount with 1000 users running different locales. Oops.

Another relic of this problem: the Character Coding menu in
gnome-terminal. ssh should do encoding negotiation and pass that to
the terminal somehow, then it would just work without a silly menu.
Or everyone should just use UTF‑8 and be done with it — maybe someday.

For Red Hat Linux 8.0, we cut over to UTF‑8 for all locales except
CJK, creating a firestorm of whining from European users who suddenly
experienced all the bugs CJK users have been enduring for years. But
the bugs have mostly been fixed now; which just goes to show, to get
the corner cases right, be sure everyone shares the pain equally.

Nice to see Joel’s aside about the “be liberal in what you accept”
myth; web browsers are the huge, glaring example of what a horrible
idea that proverb really is. Imagine a compiler that guessed at your
intent instead of printing errors. Wait, maybe perl already does
that. 😉

(This post was originally found at http://log.ometer.com/2003–10.html#10)

2003-10-08 (Wednesday)

I bought a new notebook, so am geeking out with that. Fedora Core is working nicely.
Sadly, no drivers for the built-in Cisco wireless card, other than the
not-in-the-upstream-kernel ones and they just oops on load.

Lockdown
discussion
resumes, which is great. So nice to have a lot of
interest in this at last. GNOME 2.6 is going to rock, and it comes out
soon. Though for another
week at least the focus is still on fixing bugs for 2.4.1.

Someone fix
the session manager
! You will be a hero.

(This post was originally found at http://log.ometer.com/2003–10.html#8)

Overlord

Tried jumping to GNOME 2.5, with some broken local gconf changes. Lost
all my settings. Then GTK+ 2.3 rather than 2.2 breaks the GTK+ version
of Emacs somehow; the buffer and the toolbar end up with focus at the
same time. So every time you hit Enter while editing it activates one
of the toolbar buttons. This gets old fast.

It turns out there are a pile of outstanding gconf changes:
coalescing the XML backend hierarchy into fewer files,
moving change notifications into the backend, allowing custom
backend stacks, half of an LDAP backend. Since 2.5 is just getting
started and I have some time (relatively speaking), it’s probably time
to land all this kind of thing.

Changing gconf is risky; the smallest bug basically breaks the heck
out of your desktop and probably loses your launchers and email
account data and whatever else. But we have to do it sometime, so
buckle up beta testers.

My rough thinking is that in GNOME 2.6 we can do a solid chunk of
refactoring and cleaning up gconfd and the backends, then in
GNOME 2.8 we can address the client side with a new API and a D‑BUS
access layer. The net result should be more robustness and fixing
problems such as these
(see also followup).

I’m keeping a page with gconf plans
that has some random subset of the ideas.

Another thing I want to do is fix up the test suite to be as nice as
the one for D‑BUS; the gconf test suite is sort of a mess, making
refactoring a lot harder. Perhaps we can address the test suite issue
for each chunk of code as that chunk of code gets patched/reworked.

An open question; if we change the on-disk format for the XML backend,
do we keep the old backend as a read-only fallback at the end of the
user’s search path; or do we just move to a new directory alongside
~/.gconf and ignore the old settings; or what.

(This post was originally found at http://log.ometer.com/2003–10.html#2)

2003-09-26 (Friday)

Our Open Source
Architecture
announcement is inspiring, if buzzword-enabled. Open
source all the way up the stack. I believe this is unique to Red Hat.

Discovered that the replacement gconf text files backend I wrote early
2002 runs faster and has half the memory usage of the original gconf
backend. So we can save a few megs and a fair bit of CPU by just
rearranging gconf/backends/Makefile.am. Should be a totally
transparent change to users. Feeling kind of silly for doing all the
work a year ago yet not reaping any benefits until GNOME 2.6.

(This post was originally found at http://log.ometer.com/2003–09.html#26)

2003-09-25 (Thursday)

Spent several hours yesterday night and tonight triaging metacity bugs
until my eyes hurt. Only got through about 2/3 of them, but the
remaining ones are all severity minor or enhancement so I’m not sure
if I’ll finish. Of course I ended up with far more bugs on the 2.6.x
and 2.8.x milestones than we have any chance of fixing in those
timeframes.

Metacity gets surprisingly few people helping out with anything
useful, it’s really depressing to go through bugs and see so many more
people whining for buggy bloat than fixing real issues. I should let
people add crack in exchange for fixing bugs. “Fix 30 good bugs and
you can add the raise-on-click pref.” “Fix 50 and you can add edge
flipping.” “Fix 100 and you can add a ‘focus windows that set input =
False’ option visible in the control panel and make right click
remove the window frame by default.” I’m kidding yet I would probably
do this. 😉

The window list and workspace switcher need love next. I want to find
someone to hack on libwnck; that thing seems small, simple, and of
interest to many hackers. Maybe Federico will get sucked in…

Bought Sarah Vowell books this weekend; those are pretty fun to read.

(This post was originally found at http://log.ometer.com/2003–09.html#25)

2003-09-22 (Monday)

Today Red Hat announced the Fedora
Project
which is a pretty big deal in my opinion. We have a
lot of work cut out for us to enable external contributors,
it’ll take some time. But we are excited about it.

Tonight a web site opened a dialog to tell me I had typed my phone
number as “NNN NNN NNNN” instead of “NNNNNNNNNN”. I didn’t even use
parentheses or hyphens. Somewhere a developer coded a whole dialog
instead of writing a single line of code to just remove the
whitespace
. Hopefully this person is embarassed. I’m embarassed to
be a software developer when I see stuff like that.

After I fixed the whitespace, it opened another dialog saying I had to
fix a date to be “MMDDYYYY” instead of “MM/DD/YYYY”.

(This post was originally found at http://log.ometer.com/2003–09.html#22)

2003-09-18 (Thursday)

Back from a short vacation to go to a relative’s wedding. Lots of
email built up, and I missed the fun of being on Slashdot on Monday.
My comment which was intended to mean “proprietary UNIX will be
phased out in favor of Linux for most applications over time” got blown
somewhat out of proportion, I should learn to use less colorful
phrases. 😉

Nice coverage of GNOME 2.4 continues.
Sun announced their Java Desktop System. George posted plans for
extending desktop
lockdown
further than it is in 2.4. The file selector plans
continue heatedly, and lots of exciting Nautilus changes in the
works. A bunch of things that have been in progress for months already
are landing in GNOME 2.6, so it’s going to look like we did a whole
lot in only the 6 month gap until 2.6 comes out.
Overall, the Linux desktop world is changing mind-blowingly quickly.

I hacked on D‑BUS a fair bit on vacation and just moved it over to CVS
on the new cvs.freedesktop.org. The dbus-object-names branch is
looking approximately right; signal connections are the missing piece I
want to do before merging to HEAD. Still not happy with any of the
possible ways to do signals, but I’ll have to suck it up and pick one
of them.

Tomorrow there’s a hurricane here, we’re inland pretty far but still
expect to lose some trees and get really wet.

(This post was originally found at http://log.ometer.com/2003–09.html#18)

2003-09-11 (Thursday)

This week is nothing but meetings, email, and phone calls it seems
like. The only technical thing I did so far was to make 2.4.0 tarballs
for my four modules, and I used a bad glib-gettext.m4 and thus they
were all broken and Jonathan had to redo them.

On the plus side, GNOME
2.4.0
came out. The reception of 2.4.0 has been great, lots of
friendly reviews and comments, the software rocks, even the release notes were
exceptional.

Also this week, a new developer joined Red Hat. Dan Williams will be
working on OpenOffice.org. He’s kind of a Mac guy, but unlike some of
you “look at my shiny titanium” weenies Dan’s laptop is decidedly
unsexy, one of those old black powerbooks, about 100mhz. I got to
explain the RPM spec file format to Dan, which reminded me that parts
of it are pretty inexplicable. 😉

(This post was originally found at http://log.ometer.com/2003–09.html#11)

2003-09-09 (Tuesday)

Read Blankets
this weekend, a nice book.

Someone working
on the HAL
.

Resolved my problem sharing Follow Up between home and work by using
the Important flag instead, since that’s in imap and I can generate a
vfolder from it. Also archived a ton of old mail, bringing Evolution
memory usage from 150M to only 60M. I guess if my inbox alone weren’t
40M I could get it even smaller. 😉

(This post was originally found at http://log.ometer.com/2003–09.html#9)

2003-09-07 (Sunday)

Trying to switch to Evolution. The issue is that I have a computer
at home and one at work, and need to read mail both places, with
firewalls in between. So I’ve always just used ssh. People say that
imap will resolve this but I’m skeptical; there’s just so
much
stuff in ~/evolution, it seems like when I get to work on
Monday important state will be lost.

I’m especially worried that the messages I’ve tagged Follow Up won’t
be available at work, since I can’t find any annotations in the mbox
files on the server, but I’ll be pretty excited if they are. Follow
Up promises to be a killer feature for me since it might work better
than my mostly-failed system of leaving messages marked unread if I
still need to reply to them or take action.

Evolution really is pretty out of sync with the HIG, and feels sort
of needlessly complex overall, so I’m glad to see all the recent
work in that area. I feel like a
user model diagram
for Evolution 1.4 would be pretty
mind-blowing at the moment. My calendar is apparently a folder, for
example. And I spent some time trying to figure out what Follow Up
did, since my immediate expectation was that it would modify my
todo list
. Instead there’s some whole separate concept of
“follow up list” — only it seems to be per-folder? I’m not quite
sure what “Send / Receive” does either, or whether Evolution checks
for new mail aside from when I push that button. Oh, and what the
heck does the little envelope with the arrow on it mean? The three
message states seem to be “read”, “unread”, and “little arrow on it”
😉

Anyway, it sure is hard to change mail programs. 😉 I’ve done it
several times in the past (mm->pine->gnus->mutt). I’m finding
Evolution easier to move to than mutt or gnus were, but I would say
Evolution 1.4 is harder to use than pine. I am liking a lot of
things about it though. Some of the features such as Follow Up,
search, etc. are really nice and promise to save time, and I haven’t
seen any serious bugs or misbehaviors.

(This post was originally found at http://log.ometer.com/2003–09.html#7)