.gaim Revisited

Richard Laager rlaager at wiktel.com
Wed Mar 21 03:08:04 EDT 2007

Earlier, Sean and I were discussing what to do about .gaim, rename-wise.
He said he was thinking about following the XDG Base Directory

* Users can now more easily control where the different types of data
go. This would be useful if you want to put the cache data somewhere
else. (I may fit into this category.)
* As more applications follow this standard, $HOME will be cleaner.
* Separating out the buddy icons reduces the amount of data to be
synced, since those files can be recreated anyway. (We should modify our
buddy icon caching code to name files by their hash and use reference
counting, though.)

* This makes it slightly harder to backup your IM configuration and
* The standardized directories aren't as intuitive to find as a normal
dot directory in $HOME.
* Instead of having a cluttered $HOME, we end up with several cluttered

I also talked to Daniel. Here's what I've come up with.

We all seem to agree that buddy icons belong under $XDG_CACHE_HOME. I'd
imagine that means: $XDG_CACHE_HOME/purple/icons

Glib has functions which return a path to the appropriate directory. In
this case, for example, there is: g_get_user_cache_dir The mappings on
win32 are suboptimal, so we're going to end up overriding them at least
some of the time.

For Windows, I'm thinking:

which would be something like:
C:\Documents and Settings\username\Local Settings\Application Data\purple\icons

The configuration files, plugins, and smiley themes would go under
$XDG_CONFIG_HOME/purple on *nix.

On Windows, it'd be CISDL_APPDATA\purple:
C:\Documents and Settings\username\Application Data\purple

$XDG_CONFIG_DIRS specifies a path of places to look for configuration
files. Should we replace our /etc/gaim functionality with this? We'd
probably use a subdirectory, right? If so, we'd end up
with /etc/xdg/purple as the default fallback. Would we only look for
configuration files there, or would we also probe for plugins?

The biggest debate is over logs. On *nix, it seems like we'd use
$XDG_DATA_HOME/purple/logs, which yields ~/.local/share/purple/logs by
default. Likewise, would we search for logs in other directories
designated by $XDG_DATA_DIRS?

On Windows, the situation is less clear. After discussing this with a
Windows-using co-worker, I'm fairly certain that logs belong in the "My
Documents" folder. Microsoft's MSN Messenger (and now Windows Live
Messenger) store logs under My Documents. The Messenger Plus! extension
does as well. However, Trillian stores them in its application directory
in C:\Program Files\...

My co-worker said that the logs don't belong under Application Data
because they aren't application data files, they are user data files and
thus belong under My Documents. He also said that any user will know
where "My Documents" is, whereas they wouldn't know how to find the
Application Data folder (which is also hidden by default). These seems
like reasonable and compelling arguments to me.

If we accept that the logs are to be in the My Documents folder, we run
into an issue of what to name them. The log path is currently set by
libpurple, so the first thing that comes to mind is "Purple Logs".
That's going to be confusing to users, because they downloaded "Pidgin".
The next thing I thought of was "Pidgin Logs". This seems perfectly
reasonable, except it violates the core/UI split. I'd be okay with that
on Windows, except for one reason. If we ever get a native win32 UI,
we'll have a mess. Let's say we release such a UI and name it Robin. Do
we then have it store logs in the "Robin Logs" folder? (This assumes
we're not actually sharing the compiled libgaim.dll between Pidgin and
Robin, or that we have a way for the UI to pass down its name.) If we do
this, then we end up with logs in two places and users see their logs
"disappear" when they switch clients (unless we check both locations).

It seems like we should use something generic then. Messenger Plus! uses
"My Chat Logs". Microsoft has removed the "My" everywhere in Vista, I'm
told, so we could do "Chat Logs". But, are they chats? Do we want "IM
Logs" or "Conversation Logs" or "Saved Conversations" or something else?
What about translations?

An easy solution is to continue storing logs under the "Application
Data" folder and telling users to access it via the button that's been
added to the log viewer. I'm not opposed to this, but I don't want to
take the easy solution because it's easy if there's a more correct
solution available.

How does everyone feel? Is it worthwhile to follow this standard? How do
you feel about the file locations?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://pidgin.im/cgi-bin/mailman/private/cabal/attachments/20070321/0178567e/attachment-0001.pgp 

More information about the Cabal mailing list