Hi,
The GConf technology has great potential to make GNOME easier to
configure for end-users and to make life easier for administrators
who have "one place" to customize GNOME for users in large companies.
I'd like to propose that the GNOME project tries to define and adopt
a well-defined configuration schema for GNOME applications:
- users get consistency and a single dialog can configure the same setting
in multiple applications
- developers don't have to define some parts of their application schema,
they can just use the common schema
- administrators get a well-documented configuration, so they can
write tools to import/export/backup/restore specific important settings
for and from GConf and other configuration sources
I've written a document, mostly consisting of a table of proposed
common settings. I'd like to get input and feedback from GNOME
hackers so that in a couple of weeks, I can:
- publish the schema in GConf's XML format
- provide sample code to read/write groups of related settings
There is some discussion going on about whether GConf or Bonobo-config
API will be the standard for GNOME applications; I am confident that
we can work this out so that the choice will be up to individual
developers and applications can read/write the same configuration
information from either API.
Here's the schema as text for ease of follow-up, attached as html.
I'll summarize the input every few days so that people can see
the current state of the proposal.
--
GNOME Core Configuration Schema
Colm Smyth - colm smyth sun com
Introduction
Many GNOME applications (particularly the core ones) are already using GConf
for storing application settings. The GConf documentation makes it very easy
to get up to speed with the API (which is as easy as the old gnome-config
API). However, the GConf docs do not offer much advice about where to to
store different configuration settings; it's really been up to each
maintainer to tackle questions like:
* what settings should be configurable in my application?
* where should I store my application-specific settings? (where = what
key "directory")
* are there any common settings that my application could share with
other GNOME applications?
This document is a work-in-progress description of a common configuration
schema for GNOME. It aims to identify the configuration keys of settings
that will be common to more than one GNOME application.
Why is a core schema useful?
There are at least a few reasons why we should aim to have a well-documented
common configuration schema:
* easy for hackers - contributors to the GNOME project have less work to
do coming up with a schema for their specific application or library;
they also don't have to be concerned with documenting the common
settings or providing a configuration dialog for them (because a common
Control Center GUI should be able to edit at least the common settings)
* easy for users (and administrators) - by editing a single configuration
dialog, a user or system administrator can update settings that are
used by multiple GNOME applications
* even easier for administrators - by establishing a mapping with
existing information schemas from LDAP inetOrgPerson schema (rfc2798)
and the vCard schema (rfc2426)), we can help folks who know those
schemas and a mapping may be of use to administrators who want to
import or synchronize some directory information for example between an
LDAP directory and GNOME's GConf
Core Schema
The table below summarizes and groups the configuration settings that should
be used where possible by the GNOME desktop and all of its applications.
For each category, a base key or "directory" is given, followed by a number
of individual settings. Where a group of keys belong in a "directory or
"sub-directory", the key ends with a "/". Where a sub-directory is a
variable rather than a single fixed value, it is represented as
'<key-purpose="key-name", ...>'. For example,the "/user/telephony" directory
has an arbitrary number of sub-directories for different groups of
phone/fax/etc numbers; one group might be called "default" another called
"work"; an example telephony setting in each group might be:
* /user/telephony/default/phone = "555-3231" and
* /user/telephony/work/fax = "999-1714"
Group Key Description
User; /user/name/ login User system name
e.g. /user/name/login = "jdoe"
Note that the value of the login setting is by default used for
the Internet client /client-protocols settings; this is further
described in the section "Login name"
displayName preferred written form of a person's name
e.g. /user/name/displayName = "John Doe"
LDAP:inetOrgPerson.displayName
vCard.DisplayName
givenName preferred abbreviated form of a person's name
e.g. /user/name/givenName = "John"
LDAP:inetOrgPerson.GivenName
nickName colloqial name used for groupware such as IRC
e.g.
/user/name/nickName = "sampleGuy"
Locale; preferredLocales name of a set of related language settings and cultural
conventions ( rfc1766, and extensions supported by
/user/international setlocale(3C), along with any aliases found in
/usr/lib/X11/locale/locale.aliases or
/usr/share/locale/locale.aliase
preferredLanguages
preferredEncodings
Organization; name Companies or organizations with which the user is affiliated
/user/organization/ e.g. /user/organization/default/name="Sample Org Ltd.",
/user/organization/savethewales/web-site="www.whalesave.com"
<orgname="default">
web-site Main web-site of the organization
e.g. /user/organization/default/web-site="www.sampleorg.com"
address directory for a collection of settings describing the street or
postal address (see 'schema elements' below)
Telephony; <name= directory for a collection of settings describing the street or
/user/telephony/ postal address (see 'schema elements' below)
"fax", "phone",
<type="default", "pager", "cellphone">/ number,description,notes
"work", "home",
...> e.g. /user/telephony/default/phone="555-3123"
Mail; /user/mail/ imap4-address IMAP4 mail address for the user
signature-url URL (possibly file:) for the mail signature file to be appended
to outgoing mail messages
reply-to-mail-address the mail address to which replies to outgoing mails should be
sent (by default, the same as imap4-address)
Internet Protocols; http/proxy/ Each http proxy has a group of settings:
/client-protocols/
<server-name= * host = hostname on which proxy runs
"default"> * port = tcp/ip port of proxy
* domain-use = a comma-separated list of domain suffixes for
which the proxy will be used (empty = all)
* domain-nouse = a comma separated list of domain suffixes
for which the proxy will not be used
e.g.
/client-protocols/http/proxy/default/domain-nouse=.sampleorg.com
ftp/anonymous-password This is the password used by graphical internet clients such as
browsers when one is required for anonymous ftp; the default
value is the settings "/user/mail/imap4-address"
imap/server/ Each IMAP4 server has a group of settings:
<server-name= * user (see 'Login Names' below)
"default",...>/ * host = hostname or IP address
* port = port number
* compose = one of { "text","html" }
* prefer = one of { "text", "html" }
* use-ssl = { "yes" | "no" | "try") }
* mailbox = directory containing mailboxes; standard
mailboxes are "inbox" and "sent"
e.g. /user/imap/server/default/mailbox/inbox="Inbox",
/user/imap/server/junkmail/host="www.warmmail.com"
smtp/server/ Similar to IMAP4 settings:
<server-name= user, host, port (default is 25), use-ssl
"default", ...>/
nntp/server/ Similar to IMAP4 settings:
<server-name= user, host, port (default is 25), compose, prefer
"default", ...>/
ldap/server/ host, port, user-root-dn
<server-name= e.g. /user/client-protocols/ldap/server/default/port=389
"default", ...>/
Display; /display/ zoom number indicating default percentage-magnification
e.g. /display/zoom=150
Places; /places/ file/ "Places" are bookmarks on steroids; more is said about them in
the "Places" section below.
<group-name=
This is not intended to be a replacement for browser bookmarks
"standard", "recent">/ but an additional mechanism for extending the bookmarks concept
to other applications.
<place-name="home", "temporary", "documents", "system",
"session", "tasks", "projects", "current-project", ...>/
Each recorded place has the following keys/settings
* display-name
* place-url
* display-description
e.g. keys in /places/file/standard/home/ :
display-name="My Home", place-url="/home/jdoe",
display-description= "John Doe's Home Directory"
http/, ftp/ a set of standard places accessible via http, perhaps including
the user's personal web-site, project web-site, etc.
<group-name=
e.g. /places/http/project/gnome/
"standard,
display-name="GNOME", url="http://www.gnome.org",
"personal", "project", display-description="GNOME home"
"workgroup",
"company">
Places
Some applications store information about special places, that is files,
directories or in general URLs that the user wants to return to. Browsers
have had the capability to save bookmarks or browsing history since the
beginning. Many document-based applications have a 'recent files' list. Some
applications use environment variables to identify special directories;
$HOME and $TMPDIR are common examples, but it would useful to widen the set
of "standard" directories into categories that user's find useful -
"documents", "tasks", "projects" and so on.
To make things easy for application maintainers, one of the ways to make
"places" available to applications is through the file open/save/etc
dialogs. The "standard" group is intended to stored a set of named
directories that allow the user to quickly jump to a favourite directory
when opening or saving a file.
Many applications want to treat different types of containers for files
differently. Most applications can only open files on the local file-system,
so "file" URLs are important. We can also separate "http" and "ftp" places.
For applications that can work with any type of location, we can also
support groups of URLs undifferentiated by type.
Areas for further work
This entire document is a work-in-progress. The more applications use the
common settings, the more value the end-user gets out of setting each one. I
think it would be useful to spend some time identifying some useful standard
locations for the /places configuration group.
Login Name
* imap/user (also imap/server/<servername="default">/user)
* ftp/user (also ftp/server/<servername="default">/user)
* smtp/user
For all of the internet protocols a user name may be specified for any
server or for each service-type (e.g. http), but the default is the value of
"/user/name/login".
Attachment:
gnome-global-schema.html
Description: gnome-global-schema.html