Blame Manuals/Repository/en_US/Introduction/repo-convenctions.texinfo

b32b45
The CentOS Artwork Repository is supported by Subversion
b32b45
(@url{http://subversion.tigris.org/}), a version control system which
b32b45
allows you to keep old versions of files and directories (usually
b32b45
source code), keep a log of who, when, and why changes occurred, etc.,
b32b45
like CVS, RCS or SCCS.  
b32b45
b32b45
When using Subversion there is one @emph{source repository} and many
b32b45
@emph{working copies} of that source repository. The working copies
b32b45
are independent one another, can be distributed all around the world
b32b45
and provide a local place for designers, documentors, translators and
b32b45
programmers to perform their works in a descentralized way.  The
b32b45
source repository, on the other hand, provides a central place for all
b32b45
independent working copies to interchange data and provides the
b32b45
information required to permit extracting previous versions of files
b32b45
at any time.
b32b45
b32b45
@subsection Repository policy
b32b45
@cindex Repository policy
b32b45
b32b45
The CentOS Artwork Repository is a collaborative tool that anyone can
b32b45
have access to. However, changing that tool in any form is something
489317
that should be requested in the CentOS Developers mailing list
489317
(@email{centos-devel@@centos.org}). Generally, people download working
489317
copies from CentOS Artwork Repository, study the repository
489317
organization, make some changes in their working copies, make some
489317
tests to verify such changes do work the way expected and finally
489317
request access to commit them up to the CentOS Artwork Repository
489317
(i.e., the source repository) for others to benefit from them.
b32b45
b32b45
Once you've received access to commit your changes, there is no need
b32b45
for you to request permission again to commit other changes from your
b32b45
working copy to CentOS Artwork Repository as long as you behave as a
489317
good cooperating citizen. Otherwise, your rights to commit changes
489317
might be temporarly revoked or permanently banished.
b32b45
489317
As a good cooperating citizen one understand of a person who respects
489317
the work already done by others and share ideas with authors before
b32b45
changing relevant parts of their work, specially in situations when
b32b45
the access required to realize the changes has been granted already.
b32b45
Of course, there is a time when conversation has taken place, the
b32b45
paths has been traced and changing the work is so obvious that there
b32b45
is no need for you to talk about it; that's because you already did,
b32b45
you already built the trust to keep going. Anyway, the mailing list
b32b45
mentioned above is available for sharing ideas in a way that good
b32b45
relationship between community citizens could be constantly balanced.
b32b45
b32b45
The relationship between community citizens is monitored by repository
b32b45
administrators. Repository administrators are responsible of granting
489317
that everything goes the way it needs to go in order for the CentOS
489317
Artwork Repository to accomplish its mission which is: to provide a
489317
colaborative tool for The CentOS Community where The CentOS Project
489317
corporate visual identity is built and maintained by The CentOS
489317
Community itself.
489317
489317
It is also important to remember that all the program and
489317
documentation source files inside CentOS Artwork Repository must
489317
comply the terms of @ref{GNU General Public License} and @ref{GNU Free
489317
Documentation License} respectively in order for them to remain inside
489317
the repository.
b32b45
b32b45
@subsection Repository organization 
b32b45
@cindex Repository organization
b32b45
b32b45
The CentOS Artwork Repository uses a @file{trunk}, @file{branches},
b32b45
and @file{tags} organization.  
b32b45
b32b45
@table @file
b32b45
@item trunk
b32b45
b32b45
The @file{trunk} directory organizes the main development line of
b32b45
CentOS Artwork Repository. @xref{Directories trunk}, for more
b32b45
information.
b32b45
b32b45
@item branches
b32b45
b32b45
The @file{branches} directory oranizes intermediate development lines
b32b45
taken from the main development line.  @xref{Directories branches},
b32b45
for more information.
b32b45
b32b45
@item tags
b32b45
b32b45
The @file{tags} directory organizes frozen development lines taken
b32b45
either from the main or the intermediate lines of development.
b32b45
@xref{Directories tags}, for more information.
b32b45
@end table
b32b45
b32b45
@subsection Repository file names
b32b45
@cindex Repository file names
b32b45
b32b45
Inside the CentOS Artwork Repository, file names are all written in
b32b45
lowercase (e.g., @samp{01-welcome.png}, @samp{splash.png},
b32b45
@samp{anaconda_header.png}, etc.) and directory names are all written
b32b45
capitalized (e.g., @samp{Identity}, @samp{Themes}, @samp{Motifs},
b32b45
@samp{TreeFlower}, etc.).
b32b45
b32b45
@subsection Repository work lines
b32b45
9f4a4b
Content production inside the repository is organized by work lines.
9f4a4b
There are three major work lines of production inside The CentOS
9f4a4b
Artwork Repository, which are: Graphic design, Documentation and
9f4a4b
Localization. The specific way of producing content inside each
9f4a4b
specific work line is standardized by mean of centos-art.sh  script
9f4a4b
(which in turn, can be considered a work line by itself [e.g., the
9f4a4b
Automation work line]). The centos-art.sh script provides one specific
9f4a4b
functionality for automating each major work line of content
9f4a4b
production (e.g., render for producing images, help for manage
9f4a4b
documentation, and locale for localizing contents).
9f4a4b
9f4a4b
The graphic design work line exists to cover brand design, typography
9f4a4b
design and themes design mainly. Additionally, some auxiliar areas
9f4a4b
like icon design, illustration design, brushes design, patterns
9f4a4b
designs and palettes of colors are also included here for
9f4a4b
completeness. The graphic design work line is organized in the
9f4a4b
@xref{Directories trunk Identity}.
9f4a4b
9f4a4b
The documentation work line exists to describe what each directory
9f4a4b
inside the CentOS Artwork Repository is for, the conceptual ideas
9f4a4b
behind them and, if possible, how automation scripts make use of them.
9f4a4b
The documentation work line is organized in the @xref{Directories
9f4a4b
trunk Manuals}.
b32b45
b32b45
The localization work line exists to provide the translation messages
b32b45
required to produce content in different languages. Translation
b32b45
messages inside the repository are stored as portable objects (e.g.,
9f4a4b
.po, .pot) and machine objects (.mo). The localization work line is
9f4a4b
organized in the @xref{Directories trunk Manuals}.
9f4a4b
9f4a4b
The automation work line exists to standardize content production
9f4a4b
inside the working copies of CentOS Artwork Repository. Here is
9f4a4b
developed the centos-art.sh script, a bash script specially designed
9f4a4b
to automate most frequent tasks (e.g., rendition, documentation and
9f4a4b
localization) inside the repository. There is no need to type several
9f4a4b
tasks, time after time, if they can be programmed into just one
9f4a4b
executable script. The automation work line is organized in the
9f4a4b
@xref{Directories trunk Manuals}.
b32b45
b32b45
@subsection Connection between directories
b32b45
@cindex Connection between directories
b32b45
@cindex Master paths
b32b45
@cindex Auxiliar paths
b32b45
b32b45
In order to produce content in CentOS Artwork Repository, it is
b32b45
required that all work lines be connected somehow.  This is the way
b32b45
automation scripts can know where to retrive the information they need
b32b45
to work with (e.g., design model, translation messages, output
b32b45
location, etc.).  We build this kind of connection using two path
b32b45
constructions named @emph{master paths} and @emph{auxiliar paths}.
b32b45
b32b45
The master path points only to directories that contain the source
b32b45
files (e.g., SVG files) required to produce base content (e.g., PNG
b32b45
files) through automation scripts.  Each master path inside the
b32b45
repository may have several auxiliar paths associated, but auxiliar
b32b45
paths can only have one master path associated.
b32b45
b32b45
The auxiliar paths can point either to directories or files. When an
b32b45
auxiliar path points to a directory, that directory contains
b32b45
information that modifies somehow the content produced from master
b32b45
paths (e.g., translation messages) or provides the output information
b32b45
required to know where to store the content produced from master path.
b32b45
When an auxiliar path points to a file, that file has no other purpose
b32b45
but to document the master path it refers to.
b32b45
b32b45
The relation between auxiliar paths and master paths is realized
b32b45
combining two path informations which are: the master path itself and
b32b45
one second level directory structure from the repository.  Generally,
b32b45
the master path is considered the path identifier and the second level
b32b45
directory structure taken from the repository is considered the common
b32b45
part of the path where the identifier is appended. 
b32b45
b32b45
@float Figure, Path construction
b32b45
@verbatim
b32b45
-----+---------------+----------------------------+------+-----------
b32b45
Path | Suffix        | Identifier                 |Prefix| Type 
b32b45
-----+---------------+----------------------------+------+-----------
b32b45
  A  |               |trunk/Identity/Models/Brands|      | Directory 
b32b45
-----+---------------+----------------------------+------+-----------
b32b45
  B  |  trunk/Manual/|trunk/Identity/Models/Brands|.texinfo | File      
b32b45
-----+---------------+----------------------------+------+-----------
b32b45
  C  | trunk/Locales/|trunk/Identity/Models/Brands|      | Directory 
b32b45
-----+---------------+----------------------------+------+-----------
b32b45
  D  |               |trunk/Identity/Images/Brands|      | Directory 
b32b45
-----+---------------+----------------------------+------+-----------
b32b45
  E  | trunk/Locales/|trunk/Identity/Images/Brands|.texinfo | File      
b32b45
-----+---------------+----------------------------+------+-----------
b32b45
b32b45
  A = Master path.
b32b45
  B = Auxiliar path to documentation entry.
b32b45
  C = Auxiliar path to translation messages.
b32b45
  D = Auxiliar path to final content output.
b32b45
  E = Auxiliar path to documentation entry.
b32b45
@end verbatim
b32b45
@caption{Path construction.}
b32b45
@end float
b32b45
b32b45
The path information described above (@pxref{Path construction}) is
b32b45
used by direct rendition and can be taken as reference to add other
b32b45
components that are equally produced in the repository.  To add new
b32b45
components that make use of direct rendition inside the repository,
b32b45
change just the component name used above (e.g., @file{Brands}) to
b32b45
that one you want to add, without changing the path structure around
b32b45
it.
b32b45
b32b45
The file organization used by theme rendition extends direct rendition
b32b45
by separating design models information from backgrounds information.
b32b45
To better understand this configuration, you can consider it as two
b32b45
independent lists, one of design models and one of artistic motifs,
b32b45
which are arbitrary combined between themselves in order to render
b32b45
images in specific ways. The possibilities of this configuration are
b32b45
endless and let us describe visual manifestations very well.  For
b32b45
example, consider the organization used to produce @file{Anaconda}
b32b45
images; for CentOS distribution major release 5; using @file{Default}
b32b45
design models and version @file{3} of @file{Flame} artistic motif:
b32b45
b32b45
@float Figure, Path construction extended
b32b45
@verbatim
b32b45
-----+---------------+------------------------------------------------------+------+-----------
b32b45
Path | Suffix        | Identifier                                           |Prefix| Type 
b32b45
-----+---------------+------------------------------------------------------+------+-----------
b32b45
  A  |               |trunk/Identity/Models/Themes/Default/Distro/5/Anaconda|      | Directory 
b32b45
-----+---------------+------------------------------------------------------+------+-----------
b32b45
  B  |  trunk/Manual/|trunk/Identity/Models/Themes/Default/Distro/5/Anaconda|.texinfo | File      
b32b45
-----+---------------+------------------------------------------------------+------+-----------
b32b45
  C  | trunk/Locales/|trunk/Identity/Models/Themes/Default/Distro/5/Anaconda|      | Directory 
b32b45
-----+---------------+------------------------------------------------------+------+-----------
b32b45
  D  |               |trunk/Identity/Images/Themes/Flame/3/Distro/5/Anaconda|      | Directory 
b32b45
-----+---------------+------------------------------------------------------+------+-----------
b32b45
  E  | trunk/Locales/|trunk/Identity/Images/Themes/Flame/3/Distro/5/Anaconda|.texinfo | File      
b32b45
-----+---------------+------------------------------------------------------+------+-----------
b32b45
b32b45
  A = Master path.
b32b45
  B = Auxiliar path to documentation entry.
b32b45
  C = Auxiliar path to translation messages.
b32b45
  D = Auxiliar path to final content output.
b32b45
  E = Auxiliar path to documentation entry.
b32b45
@end verbatim
b32b45
@caption{Path construction extended.}
b32b45
@end float
b32b45
b32b45
The path information described above (@pxref{Path construction
b32b45
extended}) is used by theme rendition and can be taken as reference to
b32b45
add other components that are equally produced in the repository.
b32b45
b32b45
In this configuration we can change both design model name (e.g.,
b32b45
@file{Default}) and artistic motif name (e.g., @file{Flame/3}) to
b32b45
something else in order to achieve a different result. The only
b32b45
limitations impossed are the storage space provided in the server
b32b45
machine and your own creativeness as graphic designer.
b32b45
b32b45
@quotation
b32b45
@strong{Note}
b32b45
A theme ready for implementation may consume from 100 MB to 400 MB of
b32b45
storage space. The exact space consumed by a theme depends on the
b32b45
amount of screen resolutions the theme supports. The more screen
b32b45
resolutions the theme supports, the more storage space demanded for
b32b45
it.
b32b45
@end quotation
b32b45
b32b45
In this configuration we saw how to build the path information for
b32b45
@file{Anaconda} component as part of CentOS Distribution visual
b32b45
manifestation, but that is not the only component we have inside
b32b45
CentOS Distribution visual manifestation.  There are other components
b32b45
like Syslinux, Grub, Rhgb, Gdm, Kdm, Gsplash and Ksplash that share a
b32b45
similar file organization to that described above for @file{Anaconda}
b32b45
component.
b32b45
b32b45
@subsection Syncronizing path information
b32b45
@cindex Syncronizing path information
b32b45
b32b45
Syncronizing path information is the action that keeps all path
b32b45
information up to date in the repository. This action implies both
b32b45
@emph{file movement} and @emph{file content replacement} in this very
b32b45
specific order. File movement is related to duplicate, delete and
b32b45
rename files and directories in the repository.  File content
b32b45
replacement is related to replace information, path information in
b32b45
this case, inside files in the repository.
b32b45
b32b45
The order followed to syncronize path information is relevant because
b32b45
the versioned nature of the files we are working with. We don't
b32b45
perform file content replacement first because that would imply a
b32b45
repository change which will immediatly demmand a commit in order for
b32b45
actions like duplicate, delete or rename to take place. However, if we
b32b45
perform file movement first, it is possible to commit both file moved
b32b45
and file content replacements as if they were just one change. In this
b32b45
case the file content replacement takes palce in the target location
b32b45
that have been duplicated or renamed, not the one use as source
b32b45
location. This configuration is specially useful when files are
b32b45
renamed (i.e., one file is copied from a source location to a target
b32b45
location and then the source location of it is removed from
b32b45
repository).
b32b45
b32b45
@quotation
b32b45
@strong{Warning} There is no support for URLs actions inside
b32b45
@command{centos-art.sh} script.  The @command{centos-art.sh} script is
b32b45
designed to work with local files inside the working copy only. If you
b32b45
need to perform URL actions directly, use Subversion commands instead.
b32b45
@end quotation
b32b45
b32b45
When one master path is changed it is required that all related
b32b45
auxiliar paths be changed, too. This is required in order for master
b32b45
paths to retain their relation with auxiliar paths.  This way,
b32b45
automation scripts are able to know where to retrive translation
b32b45
messages from, where to store final output images to and where to look
b32b45
for documentation. If relation between master paths and auxiliar paths
b32b45
is lost, there is no way for automation scripts to know where to
b32b45
retrive the information they need.
b32b45
b32b45
The auxiliar paths should never be modified under any reason but to
b32b45
satisfy the relationship with the master path.  Liberal change of
b32b45
auxiliar paths may suppress the conceptual idea they were initially
b32b45
created for; and certainly, automation scripts may stop working as
b32b45
expected. The update direction to rename path information must be from
b32b45
master path to auxiliar path and never the opposite.
b32b45
b32b45
The relation between master and auxiliar paths is useful to keep
b32b45
repository organized but introduce some complications when we work
b32b45
with files that use master path information as reference to build
b32b45
structural information.  This is the case of repository documentation
b32b45
manual source files where inclusions, menus, nodes and cross
b32b45
references are built using master path information as reference.  Now,
b32b45
to see what kind of complication we are talking about, consider what
b32b45
would happen to a structural definitions (i.e., inlusions, menus,
b32b45
nodes and cross refereces) already set in the manual from one master
b32b45
path that is suddenly renamed to something different.  If the path
b32b45
information is not syncronized, at this point, we lose connection
b32b45
between the master path and the auxiliar path created to store the
b32b45
related documentation entry, as well as the related structural
b32b45
definitions that end up pointing to a master path that no longer
b32b45
exist.
b32b45
b32b45
The syncronization of path information is aimed to solve these kind of
b32b45
issues.
b32b45
b32b45
@subsection Extending repository organization
b32b45
@cindex Extending repository organization
b32b45
b32b45
Occasionly, you may find that new components of The CentOS Project
b32b45
Corporate Identity need to be added to the repository in order to work
b32b45
them out. If that is the case, the first question we need to ask
b32b45
ourselves, before start to create directories blindly all over, is:
b32b45
@emph{What is the right place to store it?}
b32b45
b32b45
The best place to find answers is in The CentOS Community (see page
b32b45
@url{http://wiki.centos.org/GettingHelp}), but going there with hands
b32b45
empty is not good idea. It may give the impression you don't really
b32b45
care about. Instead, consider the following suggestions to find your
b32b45
own comprehension in order to make your own propositions based on it.
b32b45
b32b45
When extending respository structure it is very useful to bear in mind
b32b45
The CentOS Project Corporate Identity Structure (@pxref{Directories
b32b45
trunk Identity}) The CentOS Mission and The CentOS Release Schema. The
b32b45
rest is just matter of choosing appropriate names. It is also worth to
b32b45
know that each directory in the repository responds to a conceptual
b32b45
idea that justifies its existence.
b32b45
b32b45
To build a directory structure, you need to define the conceptual idea
b32b45
first and later create the directory. There are some locations inside
b32b45
the repository that already define some concepts you probably want to
b32b45
reuse. For example, @file{trunk/Identity/Images/Themes} to store theme
b32b45
artistic motifs, @file{trunk/Identity/Models/Themes} to store theme
b32b45
design models, @file{trunk/Manual} to store documentation files,
b32b45
@file{trunk/Locales} to store translation messages,
b32b45
@file{trunk/Scripts} to store automation scripts and so on.
b32b45
b32b45
To illustrate this desition process let's consider the
b32b45
@file{trunk/Identity/Images/Themes/TreeFlower/3} directory structure
b32b45
as example.  This directory can be read as: the theme development line
b32b45
of version @file{3} of @file{TreeFlower} artistic motif. Additional,
b32b45
we can identify that artistic motifs are part of themes as well as
b32b45
themes are part of The CentOS Project Corporate Identity. These
b32b45
concepts are better described independently in each documentation
b32b45
entry related to the directory structure as it is respectively shown
b32b45
in the list of commands bellow.
b32b45
b32b45
@verbatim
b32b45
centos-art help --read turnk
b32b45
centos-art help --read turnk/Identity
b32b45
centos-art help --read turnk/Identity/Themes
b32b45
centos-art help --read turnk/Identity/Images/Themes
b32b45
centos-art help --read turnk/Identity/Images/Themes/TreeFlower
b32b45
centos-art help --read turnk/Identity/Images/Themes/TreeFlower/3
b32b45
@end verbatim
b32b45
b32b45
The concepts behind other location can be found in the same way
b32b45
described above, just change the path information used above to the
b32b45
one you are trying to know concepts for.