Since (more or less) 1997, every year has been “the Year of the Articles about the Year of the Linux Desktop.” The starting point, which you know very well, is some variation of “Linux will never be a desktop for the masses until it does x…” with, of course, very different values of “x” for every Linux user.

Relax! I am not going to inflict on you my own definition of “x”. Not today at least. However, Jack Wallen’s post here at TechRepublic about the “10 ways the Linux community can fix the mess on the desktop” brought back to the surface of my brain something that has been seriously bugging me for a long time.

I see something pretty messy in all Linux desktops that is much more general than Linux: it’s something missing in the way that many FOSS desktop applications are developed. Jack goes close to it in point #8 of his post.

Which applications should be installed by default in a Linux desktop? OpenOffice, LibreOffice or Calligra? Evolution, mutt or Thunderbird? Firefox, Chrome or Konqueror? Nautilus or Dolphin? digiKam or f-spot? Blackbox or IceWM? Emacs, VI, Kate or gedit?

Personally, I don’t care that much if the programs I prefer aren’t in the system menus or aren’t installed by default. I know FOSS enough both to install without help almost all the software I need, and to avoid like the plague most discussions on these topics. I care even less if some program is a KDE or GNOME one. What really bothers me though is: why there is no cooperation about configuration files?

I mean, having 20 wildly different mail clients, 10 newsreaders, seven text editors, five browsers, two or three office suites, etc., is really great, no question. People are different, choice is good and so on, or so they say (more on this later). The point is that these are all “Free as in Freedom” programs – it shouldn’t be unnecessarily difficult for users to try something different, right?

So my question is: why isn’t there only one configuration file for each class of these programs — that is for each task?

Take email, for example: no matter what client you use to read and write it, you’ll have at least one set of data that are always the same: From and Reply-To addresses, IMAP and SMTP servers, password, content of signature, which apps should be used to open attachments with a certain extension, etc. Why can’t there be ONE .mail client file that stores all those settings?

What about browsing? In most cases, the cookies, bookmarks, proxy, default search engine and predefined values for HTML forms that a user needs won’t change if he or she decides to switch to another browser, or simply to give it a try before dinner. Why can’t there be ONE .bookmark file and/or ONE .browser file that stores all those settings in one common format?

Why can’t there be one .audioclient file that says where all music files are located, the default sorting order for songs…okay, I hope you get the idea by now: why can’t FOSS users configure tasks once and for all, instead of configuring manually all the many different choices for each task, even when they have already typed many of those data in another window of the same computer?

Sure, in some cases we can “export” and then “import” such data manually with a few clicks, without typing all of them again by hand. That’s how, for example, you can exchange bookmarks between Firefox and Konqueror. However, at least in “Free as in Freedom” software, it’s a dumb thing to do anyway. Why should there be any need to import and export such data in the first place?

All these task-wide configuration files could be plain text files with a format like this, in which settings valid for all browsers are in variable with generic names, and settings that only make sense with some application have as prefix the name of that application:

BOOKMARK_FILE=/path/to/bookmark_file

USE_PROXY=Y

PROXY_URL=http://myHTTPproxy.example.com

FIREFOX_ON_THE_FLY_TRANSLATION_PLUGIN=…  #

Taking browsers as examples, with files like these you could use Firefox for a month, then switch to Konqueror in one second for another month, then go back to Firefox or try three other different browsers in no time: all the configuration changes made in each moment (new cookies, bookmarks etc…) would always show up in all those browsers.

Plain text files, that are much simpler to back up and carry far less dependencies than any database, would be more than adequate for this scenario. In the real world, the risk that two different applications corrupt such files by writing to them at the same time would be almost non-existent. I’ll bet that today, if a user is staring in the same moment at the configuration interfaces of Firefox and Konqueror, almost surely the reason is the very problem files like these would solve: the need to re-enter some settings manually. Please note that this approach wouldn’t forbid developers to use at run time whatever file or internal database they’re using today. All I ask is something in a standard format that each client reads at startup and writes (if necessary) before quitting.

Besides saving user time, there may be another reason for task-wide configuration files: rumor has it that non-geeks are scared by choice and, by extension, by FOSS desktops with their too many choices. If such people didn’t have to reconfigure from scratch all the installed programs, until they find the one they like best for each task, maybe they would be less scared. What do you think?