2007-05-17

Tag the Bird for Thunderbird Concifuration Issue

========
 Issue:
========

The "Tag the Bird" (version 1.0) extension for Thunderbird
Portable version 1.5.0.10 (20070221) stores a hard-coded path
name in the Thunderbird configuration file.

This information is of interest only insofar as it affects the
working of "Tag The Bird" (and hence Thunderbird) in the
situation where Thunderbird has been moved from one location to
another via a simple Copy operation.


=============
 Background:
=============

Having installed Thunderbird Portable on a USB drive, and having
subsequently realized that the size of my Gmail inbox was
subsequently going to over-run my 1Gig USB stick, and that
having furthermore realized that Thunderbird would load more
quickly and just generally be more lively on my 2.8Ghz laptop if
I had the Thunderbird install on the internal hard disc, and
that I wouldn't have to keep up with a USB stick for my email if
it was on the drive - all these things [and others, like the
fact that Thunderbird stores its message archives in a
sub-folder with an arcane naming scheme under root
ThunderbirdPortable directory]taken together led me to simply
drag the Thunderbird folder from the USB drive to my WinXP
desktop and drop it in a spot where I can open it with a single
click any time I feel the need to use Thunderbird instead of
web-mail.


=========
 Detail:
=========

The config file that is changed is the same one that is opened
from within Thunderbird that is opened when the "Tools | Options
| Advanced | Config Editor..." button is pressed, presenting the
about:config page with a list of several hundred configuration
settings in Thunderbird [and extensions] - which settings may or
may not be accessible otherwise through the Thunderbird or
Extension GUI.

The name of the setting is "webmail.logging.comms.FileLocation"
[no quotes in the view of the file within Thunderbird].  The
listing of items in the about:config page is one item per line,
in alphabetical order.

The first part of the line is the name of the setting, and is
made up of identifiers [words] separated by dots [periods].
Lines that have been changed from their default values [I
believe this is the criteria] are shown in a boldface font.
Line items that have been created after the software was
installed may also be included in the bold facing, so
creation/modification time of the line in the file is somehow
used in the decision taken by the software as to whether the
line should be boldfaced or not.

Each line also contains a "Status" field [I see that "user set"
may be the status condition value which determines boldface of
lines], a Type field ["boolean", "integer", and "string" seem
the most common], and a value conforming to the type of value
shown in the "Type" field.

The value in question, here (webmail.logging.comms.FileLocation)
is a string value giving a fully qualified path name, apparently
a log file location.  The value on my system was

 F:\ThunderbirdPortable\Data\profile\extensions\{3c8e8390-2cf6-11d9-9669-0800200c9a66}\logfiles

Notes:

0.  The Thunderbird root directory in the string above path
    given above is "F:\ThunderbirdPortable\" - all file system
    objects [files] belonging to Thunderbird Portable reside in
    or below the Thunderbird root directory.  We will call this
    directory "ThunderbirdRoot" here, since the concept of the
    root directory as an environment for the operation of the
    software is important, here, to the understanding of the
    problem, and the crafting of a solution.

1.  Rhe string of hexadecimal digits in braces -
    {3c8e8390-2cf6-11d9-9669-0800200c9a66} - that is part of the
    string value shown above is [I believe] a so-called "GUID" -
    a "Globally Unique Identifier" - which uniquely identifies
    some piece of software or item of data [in fact, in many
    cases, a piece of binary executable code which is to be
    treated as data for one reason or another].

2.  {3c8e8390-2cf6-11d9-9669-0800200c9a66} identifies something
    that I find - by looking in the directory, and opening the
    standard-format install.rdf file at
  F:\ThunderbirdPortable\Data\profile\extensions\{3c8e8390-2cf6-11d9-9669-0800200c9a66}\

    is a Mozilla (and so Thunderbird, and so Thunderbird
    Portable) extension called "Tag the Bird" (obviously
    designed for Thunderbird specifically).  I installed this
    extension some time ago, but have not used it, since it
    requires that I log in to my Gmail account through the Tag
    the Bird software, and I haven't been comfortable doing that
    until/unless I have time to examine the sources or otherwise
    convince myself that this software is not phishing software
    designed to steal my account ID and password...

3.  The install.rdf file is an XML file that describes the
    initial configuration of a piece of software - in this case
    Tag the Bird.  RDF is an acronym for "Resource Descrition
    File" [perhpas "Format"] and is a standard extension to XML
    used by Mozilla [and - presumably - others].

4.  The RDF file must identify precisely - in this case using
    GUID, version number, program name, and author name - the
    software that the configuration description applies to.  For
    our purposes here, we just we looking for the program name
    and version number that goes with the GUID in the path name.


============
 Solutions:
============

Since setting entered into the about:config file points to a
sub-directory of the ThunderbirdPortable directory tree, and
since I had previously copied the directory tree entire, I can
assume that the directory pointed to by the current value stored
for webmail.logging.comms.FileLocation was valid at one time -
that is, the point at which the log [we presume] files were
copied from the existing subtree of ThunderbirdRoot on the USB
(F:) drive to the desktop folder on the laptop.

Furthermore, since we know that the desktop folder on the laptop
lives at "C:\Documents and Settings\USERNAME\Desktop" [where
USERNAME is the system user name of the user whose desktop we're
talking about], we can know that when we copied ThunderbirdRoot
from F: to the desktop, the the ThunderbirdRoot directory tree
was copied into C:\Documents and
Settings\USERNAME\Desktop\ThunderbirdPortable such that the
director on the C: drive is a snapshot of what was on the USB
stick at that time,

Therefore, the only critical path question in deciding to simply
change the about:config: setting to point to the path on the C:
drive is simply "Do we need to merge the changes that have been
made to the F: drive path [...]/logfiles into the new C: drive
path before we change the pointer?"

This is important in a couple ways:

1) the log files may be updating even as we make the change, if
Thunderbird is running at the time.  This means we should shut
Thunderbird down while we make the change, so we must get over
the angst of having to shut down a running program and just do
it...

2) We may just want to archive all the existing logs and start
new ones - we didn't know we could do that before, but now since
we know, perhaps we should.

3) We still don't know what physical file-system object [file]
Thunderbird is storing the about:config data in.  This is of
mild historical interest, since it's a point of hacker cred to
know which, amongst the many and varied configuration files
Mozilla uses, particular text file in which to make a particular
change to get the change to "work" in Thunderbird [or any of the
other mozilla softwares].  The reason this is [was] of interest
is simply because there was a time, back in the day, when
Mozilla was known as "Netscape", and the prefs.js file was
marked with a clear notice to the effect of "DO NOT CHANGE THIS
FILE IN YOUR TEXT EDITOR JUST BECAUSE YOU THINK YOU KNOW
JAVASCRIPT, YOU FILTHY TEXT-EDITING, UNRECALCITRANT ANTI-GUI
HACKER YOU FILTH YOU POND SCUM LINUX SUSPECT" which was noticed
by some few of us who were perhaps a bit too enamored of
tweaking hidden text files in an attempt to make our PCs love us
like real women having multiple orgasms.  We must find out if
she's a real blond, here.  Again.  Someone already knows. We
could look it up.  We don't care, we want to figure it out for
ourselves.

4) Okay, after that thrilling adventure, we're about ready to
make this config change to this Thunderbird plugin to make sure
there is no hard reference to a drive/file system which may or
may not be mounted and/or available when the software program in
question actually runs at any given time, at the command of some
as-yet-to-be-determined user.  Just gotta check a few more
things, first, and take another quick look at the current
program state.  Also need to shut down Thunderbird for a minute.

5) Shutting down Thunderbird:  We can figure out which file(s)
in the thunderbird are changed if we make a change to the config
right before we shut it down.  Since this knowledge will be of
use to us in determining which config file stores which config
setting [see above for why we want to know that], we will make a
"random" change to the about:config settings - we do this under
the assumption that all the settings shown in the about:config
dialog are in fact stored in the same file.  This may or may not
be the case, which will also be shown by this particular
[experimental] operation and its outcome.   We select a setting
from this dialog that we either a) don't care anything about,
but can observe, or b) must remember to change back to what we
want it to be, later - say, when (/if/) we come back to make
this change [the logging path] from within the GUI.  I say /if/
because we may just make the changes in the text file once we
know which file that is... we toggle the randomly chosen boolean
setting "wallet.enable" - don't forget to set it back.  Check
the time.  20:40

6) Back into WinXP now, we use the explorer mode of Windows
Explorer to navigate back up to the secret file stash of the
instance of Thunderbird that's running from the hard disc:
C:\Documents and
Settings\USERNAME\Desktop\ThunderbirdPortable\Data\profile

Note:  This is the same directory created when we copied the
ThunderbirdRoot folder off the USB drive.

7) By checking the time-stamps we find that the changed config
file is in fact our old nemesis from the profile folder:
prefs.js  - and if you don't think that filename is
extra-ordinarily hard to remember over time - that is: hard to
remember than "most filenames" - well then, that would mean that
my weed is superior to yours at least in function if not
necessarily in form.  Nothing personal.  We open the file.

8) Sure enough, there it is [see fig. 1.]


Figure 1:

/* Do not edit this file.
[...]
*/

... you scum sucking linux-lovers ... it may as well add.

9) Change it in the about:condig dialog to point at the new
directory [after you merge the files if you're that kind of
person, which we're, not; you should be able to figure out what
"it" means here from what was said above - if not, well, you
probably didn't make this far through here anyway, in that case
;)