[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Updated: Proposed GNUstep Filesystem Hierarchy Document.
From: |
Tim Harrison |
Subject: |
Updated: Proposed GNUstep Filesystem Hierarchy Document. |
Date: |
Fri, 26 Apr 2002 17:54:36 -0400 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0rc1) Gecko/20020417 |
Hey all.
Thanks to Martin Brecher for some additions to this proposal.
As before, you can view it at:
http://www.linuxstep.org/documentation/GNUstepFH.html
Also, I'm attaching a copy, as I heard some comments to the effect that
some people didn't particularly want to open a web browser to have a
look. :) So, please pardon my lengthy text attachment.
I look forward to your comments.
--
Tim Harrison
tim@linuxstep.org
http://www.linuxstep.org/
Presented below is the latest update to the Proposed GNUstep Filesystem
Hierarchy Document, submitted as a proposal to the GNUstep Project. Comments
are welcome.
Proposed GNUstep Filesystem Hierarchy Document
Original Date: February 23, 2002
Authors: Tim Harrison <tim at linuxstep dot org>
Martin Brecher <webmaster at gnustep dot de>
Updated: March 15, 2002
Updated: April 26, 2002
The GNUstep Domain Hierarchy
============================
On GNUstep you have four sperate places where files related to GNUstep
are installed: these places are called domains. These four
domains are the System domain, the Local domain, the Network domain,
and the User domain. Each of the mentioned domains serves a special
purpose. While we will have a detailed look at the directories contained
in each domain, the general purposes of the different domains will be
explained in the following:
The System domain
-----------------
The System domain is found in the /System folder of your GNUstep
installation. This directory contains all files which were included
in the default GNUstep installation or distribution. Namely these
are the basic GNUstep libraries (Foundation and AppKit), essential
system applications (the Workspace Manager, the Editor, applications
related to system administrative tasks), the developer applications (Project
Center and Gorm, as well as header files), essential extensions (bundles
for XML, SSL, RTF, etc), as well as all software installed by the
manufacturer of your distribution. These files are usually essential
for having a fully functional system. Thus, making modifications to
these files is highly discouraged. In addition, only the system
administrator ('root' on most UNIX systems) should have permissions to
write to that domain.
The Local domain
----------------
While at first glance, the Local domain seems very similar to the
System domain, there are several differences between them. The most
important thing is the differing purpose of the Local domain, as it is
meant as the location for installing software which was not included
with your GNUstep distribution. These may include third party
applications, custom extension libraries and their related header files,
etc. Another difference is the possible permission for normal users to
install software in this location without having to ask the system
administrator for permission to do so. The Local domain is - as the name
suggests - usually installed as /Local on your GNUstep system.
The Network domain
------------------
If you are working with a GNUstep system at home, the /Network folder
is probably empty, as it is of small use on stand alone systems. However,
the Network domain is of great use in networked, corporate environments.
Its main purpose is to hold files exported from a central server in your
network or from other workstations. Most times, remote directories
containing applictations or general data used by several workstations
in the network are mounted using the Network File System (NFS). Such
usage gives administrators the possibility of providing application
or resources to a vast number of workstations while only having to
manage the software in one place. This is especially useful when
workstations are used by several users with different tasks and requirements.
The User domain
---------------
In current GNUstep versions, the User domain is located in the Users
folder, located in the /Local domain. On systems where GNUstep is
installed optionally, the User domain can mostly be found in a
subdirectory of the user's home directory called 'GNUstep'. As the name
suggests, the main purpose of the User domain is to hold GNUstep
related files which shall not be available to other users on the system
but only to the user owning them. This includes the GNUstep defaults
database, which holds system settings, application preferences and
customized resources, as well as temporary data related to services
and file type associations for programs. In addition to these special
files, the User domain features the same structure as the other domains.
MODIFICATIONS OVERVIEW
======================
/System
- moved /System/Headers to /System/Library/Headers
- moved /System/Makefiles to /System/Library/Makefiles
- moved /System/Developer/Palettes to /System/Library/Palettes
- moved /System/Libraries/Resources to /System/Library/Resources
- moved /System/Libraries/Resources/DTDs to /System/Library/DTDs
- moved /System/Libraries/Resources/DocTemplates to /System/Library/DocTemplates
- moved /System/Libraries/Resources/Languages to /System/Library/Languages
- moved /System/Libraries/Resources/NSCharacterSets to
/System/Library/NSCharacterSets
- moved /System/Libraries/Resources/NSTimeZones to /System/Library/NSTimeZones
/Local
- moved /Local/Headers to /Local/Library/Headers
- moved /Local/Developer/Palettes to /Local/Library/Palettes
Proposed GNUstep Filesystem Hierarchy For The "System" Domain
=============================================================
/System
/Applications
/Library
/Bundles
/SSL.bundle
/SSL.bundle/Contents
/SSL.bundle/Contents/Resources
/SSL.bundle/Resources
/Colors
/DTDs
/DocTemplates
/Frameworks
/Headers
/Foundation
/gnustep
/base
/unicode
/Languages
/Libraries
/Makefiles
/Additional
/Instance
/Shared
/Master
/ix86
/NSCharacterSets
/NSTimeZones
/zones
/Africa
/America
/Indiana
/Kentucky
/Antarctica
/Arctic
/Asia
/Atlantic
/Australia
/Brazil
/Canada
/Chile
/Etc
/Europe
/Indian
/Mexico
/Mideast
/Pacific
/SystemV
/US
/Palettes
/PostScript
/PPDs
/Services
/Tools
/Java
/System/Library/Resources/English.lproj:
/System/Library/Resources/French.lproj:
/System/Library/Resources/German.lproj:
/System/Library/Resources/Italian.lproj:
(NOTE: I have no idea what to do with the preceding four lines... I suppose
they could go into /System/Library/Libraries/Resources.)
Proposed GNUstep Filesystem Hierarchy For The "Local" Domain
============================================================
/Local
/Applications
/Library
/Bundles
/Colors
/Frameworks
/Headers
/Libraries
/Palettes
/PostScript
/Resources
/Services
/Tools
/Java
Proposed GNUstep Filesystem Hierarchy For The "Network" Domain
==============================================================
/Network
/Applications
/Servers
/Users
The /System Domain
==================
The /System directory is the location of gnustep-make, gnustep-base,
gnustep-gui, gnustep-x[gps|dgs], and any accompanying libraries or frameworks
that are distributed as part of the GNUstep Project. This directory MUST exist
for a proper installation of GNUstep.
Using the --prefix option to the autoconf script in gnustep-make, an
installation of GNUstep may be placed wherever the user wishes. Common options
are:
/usr/GNUstep
/usr/local/GNUstep
/opt/GNUstep
/
For the purposes of this document, we will assume that the GNUstep root is /,
meaning that the System directory is installed as /System.
/System/Applications
--------------------
The /System/Applications directory contains applications that are specific to
development with, or the maintenance of, GNUstep. This option can be
overridden, if the user wishes to install such applications in a local
installation directory.
Applications that may be installed in /System/Applications include:
Gorm.app
ProjectCenter.app
GSDefaults.app
GWorkspace.app
/System/Library
---------------
The /System/Library directory contains most of the functional code of the
GNUstep Development Environment. The primary reason for this structure is to
keep a complimentary environment with Mac OS X, the current incarnation of the
OpenStep initiative. This allows easier cross platform development, by keeping
a standard directory layout, providing developers with a relatively common
hierarchy to work within.
/System/Library/Bundles
-----------------------
The /System/Library/Bundles directory contains application bundles that are
specific to the GNUstep development environment. All bundles must have the
extension ".bundle", to indicate their usage.
Bundles that may be installed in /System/Library/Bundles include:
SSL.bundle
TextConverters.bundle
/System/Library/Colors
----------------------
The /System/Library/Colors directory contains text files that define system
specific color mappings for use within any GNUstep libraries or applications
that require color definitions.
/System/Library/DTDs
--------------------
The /System/Library/DTDs directory contains any Document Type Definitions
required by the GNUstep development environment. All GNUstep specific DTDs
must be contained within this directory.
Document Type Definitions that may be installed in /System/Library/DTDs include:
gsdoc-0_6_5.dtd
gsdoc-0_6_6.dtd
gsdoc-0_6_7.dtd
plist-0_9.dtd
xhtml-lat1.ent
xhtml-special.ent
xhtml-symbol.ent
xhtml1-frameset.dtd
xhtml1-strict.dtd
xhtml1-transitional.dtd
/System/Library/DocTemplates
----------------------------
The /System/Library/DocTemplates directory contains text templates for automatic
documentation, as generated by gsdoc, or it's equivalent, autodoc. Any
additional documentation template types must be placed in this directory, as a
central location for documentation template types. Any templates installed
within this directory must have an extension indicating what type of
documentation system it is referenced by (ie. .gsdoc for the GNUstep
implementation of autodoc).
Templates that may be installed in /System/Library/DocTemplates include:
AutoDocTemplate.gsdoc
indextemplate.gsdoc
/System/Library/Frameworks
--------------------------
The /System/Library/Frameworks directory contains GNUstep specific frameworks,
required by the system, or system applications.
Frameworks are a type of bundle, which include, within their directory
structure, a shared library providing a specific functionality (or group of
related functionalities), and all resources required by that shared library.
Frameworks that are located within /System/Library/Frameworks are specific to
GNUstep, or applications required by GNUstep. Any other frameworks, such as
ones installed by applications compiled by the user, should reside within a
different structure (see: /Local/Library/Frameworks).
All frameworks must have the extension ".framework", to indicate their usage.
Frameworks that may be installed in /System/Library/Frameworks include:
GSWExtensions.framework
GSWExtensionsGSW.framework
GSWeb.framework
(NOTE: Optimally, all GNUstep core libraries would reside in this structure, as
well, as frameworks. This has not been discussed, and as such, I shall not
include any reference to their placement.)
/System/Library/Headers
-----------------------
The /System/Library/Headers directory contains Objective-C header files required
by the GNUstep development environment for compilation. A user should NEVER
modify any of the headers located within this directory.
/System/Library/Languages
-------------------------
The /System/Library/Languages directory contains files which specify formats
for country-specific displays of data, such as dates, times, currencies, etc.
These files are stored as plain ASCII text, and as the name of the language or
nationality. Also contained herein is a file which maps the ISO
internationalisation language codes to the GNUstep language file that defines
it.
Language files that may be installed in /System/Library/Languages include:
Dutch
English
French
German
Italian
Locale.aliases
/System/Library/Libraries
-------------------------
The /System/Library/Libraries directory contains the primary GNUstep libraries
available to the system.
Libraries that may be installed in /System/Library/Libraries include:
libgnustep-base.so.*
libgnustep-gui.so.*
(NOTE: The Libraries directory being in Library may sound somewhat redundant,
however, it could be read as "a System Library of shared libraries".)
/System/Library/Makefiles
-------------------------
The /System/Library/Makefiles directory contains the different types of
makefiles used by the GNUstep development environment to build GNUstep
Objective-C applications. These makefiles are included by a GNUmakefile, which
is used to build a project under the GNUstep development environment.
/System/Library/NSCharacterSets
-------------------------------
The /System/Library/NSCharacterSets directory contains data files that provide
the bitmapped descriptions of how to display Unicode character sets, as
specified by the Unicode Consortium. All files within the NSCharacterSets
directory must have an extension of ".charset".
Character sets that may be installed in /System/Library/NSCharacterSets include:
alphanumericCharSet.dat
controlCharSet.dat
decimalDigitCharSet.dat
decomposableCharSet.dat
illegalCharSet.dat
letterCharSet.dat
lowercaseLetterCharSet.dat
nonBaseCharSet.dat
punctuationCharSet.dat
symbolAndOperatorCharSet.dat
uppercaseLetterCharSet.dat
whitespaceAndNlCharSet.dat
whitespaceCharSet.dat
/System/Library/NSTimeZones
---------------------------
The /System/Library/NSTimeZones directory contains the timezone information
files required by the GNUstep development environment to set a local machine's
timezone. The main NSTimeZones directory consists of several general zones
(referenced primary by their offset from GMT), and subdirectories for
individual nations or geographical areas, each containing timezone information
files for regions within those nations or geographical areas.
/System/Library/Palettes
------------------------
The /System/Library/Palettes directory contains additional development palettes
for Gorm, the GNUstep Interface Builder clone.
/System/Library/PostScript
--------------------------
The /System/Library/PostScript directory contains directories for specific
PostScript document types and definitions, allowing applications written using
the GNUstep development environment to display PostScript documents, or
communicate with printers using PostScript.
/System/Library/Services
------------------------
The /System/Library/Services directory contains bundles that are specifically
built to provide functionality between different programs (for example, spell
checking, creation of a note from text within an email application). Services
that are installed on the system must an extension of ".service".
Services that may be installed in /System/Library/Services include:
example.service
GSspell.service
/System/Tools
-------------
The /System/Tools directory contains executable programs and scripts,
used to manipulate documentation, application bundles, distributed objects,
and the defaults database.
Tools that may be installed in /System/Tools include:
HTMLLinker
Java
autogsdoc
debugapp
defaults
font_cacher
gdnc
gdomap
gopen
gpbs
gsdoc
make_services
openapp
opentool
pl2link
pldes
plmerge
plparse
plser
set_show_service
sfparse
The /Local Domain
=================
The /Local domain is the location of libraries, frameworks, bundles, and
supporting files for locally installed applications or tools that are not
distributed as part of the GNUstep Project. This directory MUST exist
for a proper installation of GNUstep.
/Local/Applications
-------------------
The /Local/Applications directory contains applications that are installed by
the individual user, and are not a part of the GNUstep Project. This option
can be overridden, if the user wishes to install such applications in a local
installation directory, such as their home directory.
Applications that may be installed in /Local/Applications include:
GNUMail.app
LuserNET.app
CDPlayer.app
HostAddress.app
CodeEditor.app
/Local/Library
--------------
The /Local/Library directory contains most of the functional code for
application support relating to user installed applications.
The primary reason for this structure is to keep a complimentary structure
with the GNUstep System Domain. This allows easier development, by keeping a
standard directory layout, providing developers with a relatively common
hierarchy to work within.
/Local/Library/Bundles
----------------------
The /Local/Library/Bundles directory contains application bundles that are
specific to locally installed applications. All bundles must have the
extension ".bundle", to indicate their usage. As an option, an application
installing bundles could create a directory within /Local/Library/Bundles
specifically for their own use (for example:
/Local/Library/Bundles/MyProg/AddedFunctionality.bundle)
Bundles that may be installed in /Local/Library/Bundles include:
CodeEditorBundle.bundle
TCPSSLConnection.bundle
/Local/Library/Colors
---------------------
The /Local/Library/Colors directory contains text files that define system
specific color mappings for use within any application libraries or locally
installed applications that require additional color definitions, beyond those
installed by default by GNUstep.
/Local/Library/Frameworks
-------------------------
The /Local/Library/Frameworks directory contains application specific
frameworks required by user installed applications, or installed for local
development.
Frameworks are a type of bundle, which include, within their directory
structure, a shared library providing a specific functionality (or group of
related functionalities), and all resources required by that shared library.
Frameworks that are located within /Local/Library/Frameworks are specific to
applications required by GNUstep.
All frameworks must have the extension ".framework", to indicate their usage.
Frameworks that may be installed in /System/Library/Frameworks include:
GNUMail.framework
/Local/Library/Headers
----------------------
The /Local/Library/Headers directory contains Objective-C header files
that are provided by locally installed applications. An application should
create it's own directory within /Local/Library/Headers to contain headers
specific to it's own use.
/Local/Library/Libraries
------------------------
The /Local/Library/Libraries directory contains the shared libraries
for locally installed applications.
Libraries that may be installed in /Local/Library/Libraries include:
libGNUMail.so.*
libPantomime.so.*
libgnustep-db.so.*
(NOTE: The Libraries directory being in Library may sound somewhat redundant,
however, it could be read as "a Local Library of shared libraries".)
/Local/Library/Palettes
-----------------------
The /Local/Library/Palettes directory contains additional development palettes
for Gorm, the GNUstep Interface Builder clone.
/Local/Library/PostScript
-------------------------
The /Local/Library/PostScript directory contains directories for locally
installed specific PostScript document types and definitions, allowing
applications written using the GNUstep development environment to display
PostScript documents, or communicate with printers using PostScript.
/Local/Library/Services
-----------------------
The /Local/Library/Services directory contains bundles that are specifically
built to provide functionality between different programs (for example, spell
checking, creation of a note from text within an email application). Services
that are installed on the system must an extension of ".service".
Services that may be installed in /Local/Library/Services include:
MyProgSpecial.service (an example service)
/Local/Tools
------------
The /Local/Tools directory contains executable programs and scripts,
used to manipulate documentation, application bundles, distributed objects,
and the defaults database.
Tools that are written in languages other than Objective-C, or are developed
to work with other runtime environments may have their own directory within
the /Local/Tools directory (for example: /Local/Tools/Java).
/Local/Library/Resources
------------------------
(I'm not sure what to put for this. :/ Nothing on my system uses it.)
The /Network Domain
===================
The /Network Domain is the location for all exported applications, remotely
mounted filesystems, and remote home directories for users made available via
directory services.
/Network/Applications
---------------------
The /Network/Applications directory contains locally installed applications
that are to be made available via the network to other computers.
/Network/Servers
----------------
The /Network/Servers directory contains the mount points for remotely mounted
filesystems. If you wish to mount the /Network/Applications directory from
MachineA, and you are using MachineB, you would mount
MachineA:/Network/Applications on /Network/Servers/MachineA on MachineB.
/Network/Users
--------------
The /Network/Users directory contains user home directories that have been
remotely mounted on the local computer.
- Updated: Proposed GNUstep Filesystem Hierarchy Document.,
Tim Harrison <=