Blame Manual/Directories/trunk/Identity/Webenv.texi

550745
@subsection Goals
550745
550745
@itemize
550745
@item ...
550745
@end itemize
550745
550745
@subsection Description
550745
550745
The CentOS web environment is formed by a central web application
550745
---to cover base needs (e.g., per-major release information like
550745
release notes, lifetime, downloads, documentation, support, security
550745
advisories, bugs, etc.)--- and many different free web applications
550745
---to cover specific needs (e.g., wiki, mailing lists, etc.)---. 
550745
550745
The CentOS web environment is addressed to solve the following issues:
550745
550745
@itemize
550745
@item One unique name and one unique visual style to all web
550745
applications used inside the web environment.
550745
550745
@item One-step navigation to web applications inside the environment.
550745
550745
@item High degree of customization to change the visual style of all
550745
web applications with few changes (e.g, updating just two or three
550745
images plus common style sheet [CSS] definitions).
550745
@end itemize
550745
550745
The CentOS project is attached to a monolithic corporate visual
550745
identity (@pxref{Directories trunk Identity}), where all visual manifestations
550745
have one unique name and one unique visual style. This way, the CentOS
550745
web environment has one unique name (the CentOS brand) and one unique
550745
visual style (the CentOS default theme) for all its visual
550745
manifestations, the web applications in this case.
550745
550745
Since a maintainance point of view, achiving the one unique visual
550745
style inside CentOS web environment is not a simple task. The CentOS
550745
web environment is built upon many different web applications which
550745
have different visual styles and different internal ways to customize
550745
their own visual styles. For example: MoinMoin, the web application
550745
used to support the CentOS wiki (@url{http://wiki.centos.org/}) is
550745
highly customizable but Mailman (in its 2.x.x serie), the web
550745
application used to support the CentOS mailing list, doesn't
550745
support@footnote{The theme support of Mailman may be introduced in
550745
mailman-3.x.x release.} a customization system that separates
550745
presentation from logic, similar to that used by MoinMoin.
550745
550745
This visual style diversity complicates our goal of one unique visual
550745
style for all web applications. So, if we want one unique visual style
550745
for all web applications used, it is innevitable to modify the web
550745
applications in order to implement the CentOS one unique visual style
550745
customization in them. Direct modification of upstream applications is
550745
not convenient because upstream applications come with their one
550745
visual style and administrators take the risk of loosing all
550745
customization changes the next time the application be updated (since
550745
not all upstream web applications, used in CentOS web environment,
550745
separate presentation from logic).
550745
550745
To solve the ``one unique visual style'' issue, installation and
550745
actualization of web applications ---used inside CentOS web
550745
environment--- need to be independent from upstream web applications
550745
development line; in a way that CentOS web environment administrators
550745
can install and update web applications freely without risk of loosing
550745
the one unique visual style customization changes. 
550745
550745
At the surface of this issue we can see the need of one specific yum
550745
repository to store CentOS web environment customized web applications.
550745
550745
@subsubsection Design model (without ads)
550745
550745
@subsubsection Design model (with ads)
550745
550745
@subsubsection HTML definitions
550745
550745
@subsubsection Controlling visual style
550745
550745
Inside CentOS web environment, the visual style is controlled by the
550745
following compenents:
550745
550745
@table @strong
550745
@item Webenv header background
550745
@verbatim
550745
trunk/Identity/Themes/Motifs/$THEME/Backgrounds/Img/1024x250.png
550745
@end verbatim
550745
550745
@item CSS definitions
550745
@verbatim
550745
trunk/Identity/Themes/Models/Default/Promo/Web/CSS/stylesheet.css
550745
@end verbatim
550745
@end table
550745
550745
@subsubsection Producing visual style
550745
550745
The visual style of CentOS web environment is defined in the following
550745
files:
550745
550745
@verbatim
550745
trunk/Identity/Themes/Motifs/$THEME/Backgrounds/Xcf/1024x250.xcf
550745
trunk/Identity/Themes/Motifs/$THEME/Backgrounds/Img/1024x250.png
550745
trunk/Identity/Themes/Motifs/$THEME/Backgrounds/Img/1024x250-bg.png
550745
trunk/Identity/Themes/Motifs/$THEME/Backgrounds/Tpl/1024x250.svg
550745
@end verbatim
550745
550745
As graphic designer you use @file{1024x250.xcf} file to produce
550745
@file{1024x250-bg.png} file. Later, inside @file{1024x250.svg} file,
550745
you use the @file{1024x250-bg.png} file as background layer to draw
550745
your vectorial design. When you consider you artwork ready, use the
550745
@command{centos-art.sh} script, as described below, to produce the
550745
visual style controller images of CentOS web environment.
550745
550745
@verbatim
550745
centos-art render --entry=trunk/Identity/Themes/Motifs/$THEME/Backgrounds --filter='1024x250'
550745
@end verbatim
550745
550745
Once you have rendered required image files, changing the visual style
550745
of CentOS web environment is a matter of replacing old image files
550745
with new ones, inside webenv repository file system structure. The
550745
visual style changes will take effect the next time customization line
550745
of CentOS web applications be packaged, uploded, and installed from
550745
[webenv] or [webenv-test] repositories.
550745
550745
@subsubsection Navigation
550745
550745
Inside CentOS web environment, the one-step navegation between web
550745
applications is addressed using the web environment navigation bar.
550745
The web environment navigation bar contains links to main applications
550745
and is always visible no matter where you are inside the web
550745
environment.
550745
550745
@subsubsection Development and release cycle
550745
550745
The CentOS web environment development and relase cycle is described
550745
below: 
550745
550745
@table @strong
550745
550745
@item Download
550745
550745
The first action is download the source code of web applications we
550745
want to use inside CentOS web environment.
550745
550745
@quotation
550745
@strong{Important} The source location from which web application are
550745
downloaded is very important. Use SRPMs from CentOS @strong{[base]}
550745
and @strong{[updates]} repositories as first choise, and third party
550745
repositories (e.g. RPMForge, EPEL, etc.) as last resource.
550745
@end quotation
550745
550745
@item Prepare 
550745
550745
Once web application source code has been downloaded, our duty is
550745
organize its files inside @samp{webenv} version controlled repository.
550745
550745
When preparing the structure keep in mind that different web
550745
applications have different visual styles, and also different ways to
550745
implement it. A convenient way to organize the file system structure
550745
would be create one development line for each web application we use
550745
inside CentOS web environment. For example, consider the following
550745
file system structure:
550745
550745
@verbatim
550745
https://projects.centos.org/svn/webenv/trunk/
550745
|-- WebApp1/
550745
|   |-- Sources/
550745
|   |   `-- webapp1-0.0.1/
550745
|   |-- Rpms/
550745
|   |   `-- webapp1-0.0.1.rpm
550745
|   |-- Srpms/
550745
|   |   `-- webapp1-0.0.1.srpm
550745
|   `-- Specs/
550745
|       `-- webapp1-0.0.1.spec
550745
|-- WebApp2/
550745
`-- WebAppN/
550745
@end verbatim
550745
550745
@item Customize
550745
550745
Once web applications have been organized inside the version
550745
controlled repository file system, use subversion to create the CentOS
550745
customization development line of web applications source code.  For
550745
example, using the above file system structure, you can create the
550745
customization development line of @file{webapp1-0.0.1/} with the
550745
following command:
550745
550745
@verbatim
550745
svn cp trunk/WebApp1/Sources/webapp1-0.0.1 trunk/WebApp1/Sources/webapp1-0.0.1-webenv
550745
@end verbatim
550745
550745
The command above creates the following structure:
550745
550745
@verbatim
550745
https://projects.centos.org/svn/webenv/trunk/
550745
|-- WebApp1/
550745
|   |-- Sources/
550745
|   |   |-- webapp1-0.0.1/
550745
|   |   `-- webapp1-0.0.1-webenv/
550745
|   |-- Rpms/
550745
|   |   `-- webapp1-0.0.1.rpm
550745
|   |-- Srpms/
550745
|   |   `-- webapp1-0.0.1.srpm
550745
|   `-- Specs/
550745
|       `-- webapp1-0.0.1.spec
550745
|-- WebApp2/
550745
`-- WebAppN/
550745
@end verbatim
550745
550745
In the above structure, the @file{webapp1-0.0.1-webenv/} directory is
550745
the place where you customize the visual style of
550745
@file{webapp1-0.0.1/} web application. 
550745
550745
@quotation
550745
@strong{Tip} Use the @command{diff} command of Subversion between
550745
CentOS customization and upstream development lines to know what you
550745
are changing exactly.
550745
@end quotation
550745
550745
@item Build packages
550745
550745
When web application has been customized, build the web application
550745
RPM and SRPM using the source location with @samp{-webenv} prefix. 
550745
550745
@verbatim
550745
https://projects.centos.org/svn/webenv/trunk/
550745
|-- WebApp1/
550745
|   |-- Sources/
550745
|   |   |-- webapp1-0.0.1/
550745
|   |   `-- webapp1-0.0.1-webenv/
550745
|   |-- Rpms/
550745
|   |   |-- webapp1-0.0.1.rpm
550745
|   |   `-- webapp1-0.0.1-webenv.rpm
550745
|   |-- Srpms/
550745
|   |   |-- webapp1-0.0.1.srpm
550745
|   |   `-- webapp1-0.0.1-webenv.srpm
550745
|   `-- Specs/
550745
|       |-- webapp1-0.0.1.spec
550745
|       `-- webapp1-0.0.1-webenv.spec
550745
|-- WebApp2/
550745
`-- WebAppN/
550745
@end verbatim
550745
550745
@item Release for testing
550745
550745
When the customized web application has been packaged, make packages
550745
available for testing and quality assurance. This can be achives using
550745
a [webenv-test] yum repository. 
550745
550745
@quotation
550745
@strong{Note} The [webenv-test] repository is not shipped inside
550745
CentOS distribution default yum configuraiton. In order to use
550745
[webenv-test] repository you need to configure it first.
550745
@end quotation
550745
550745
If some problem is found to install/update/use the customized version
550745
of web application, the problem is notified somewhere (a bugtracker
550745
maybe) and the customization face is repated in order to fix the
550745
problem. To release the new package add a number after @samp{-webenv}
550745
prefix. For example, if some problem is found in
550745
@file{webapp1-0.0.1-webenv.rpm}, when it be fixed the new package will
550745
be named @file{webapp1-0.0.1-webenv-1.rpm}. If a problem is found in
550745
@file{webapp1-0.0.1-webenv-1.rpm}, when it be fixed the new package
550745
will be named @file{webapp1-0.0.1-webenv-2.rpm}, and so on.
550745
550745
The ``customization --- release for testing'' process is repeated
550745
until CentOS quality assurance team considers the package is ready for
550745
production.
550745
550745
@item Release for production
550745
550745
When customized web application packages are considered ready for
550745
production they are moved from [webenv-test] to [webenv] repository.
550745
This action is commited by CentOS quality assurance team.
550745
550745
@quotation
550745
@strong{Note} The [webenv] repository is not shipped inside CentOS
550745
distribution default yum configuraiton. In order to use [webenv]
550745
repository you need to configure it first.
550745
@end quotation
550745
@end table
550745
550745
@subsubsection The [webenv-test] repository
550745
550745
@verbatim
550745
/etc/yum.repos.d/CentOS-Webenv-test.repo
550745
@end verbatim
550745
550745
@verbatim
550745
[webenv-test]
550745
name=CentOS-$releasever - Webenv-test
550745
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=webenv-test
550745
#baseurl=http://mirror.centos.org/centos/$releasever/webenv-test/$basearch/
550745
gpgcheck=1
550745
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-$releasever
550745
enabled=1
550745
priority=10
550745
@end verbatim
550745
550745
@subsubsection The [webenv] repository
550745
550745
@verbatim
550745
/etc/yum.repos.d/CentOS-Webenv.repo
550745
@end verbatim
550745
550745
@verbatim
550745
[webenv]
550745
name=CentOS-$releasever - Webenv
550745
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=webenv
550745
#baseurl=http://mirror.centos.org/centos/$releasever/webenv/$basearch/
550745
gpgcheck=1
550745
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-$releasever
550745
enabled=1
550745
priority=10
550745
@end verbatim
550745
550745
@subsubsection Priority configuration
550745
550745
Both [webenv] and [webenv-test] repositories update packages inside
550745
CentOS [base] and CentOS [updates] repositories.
550745
550745
@subsection Usage
550745
550745
@itemize
550745
@item ...
550745
@end itemize
550745
550745
@subsection See also
550745
550745
@menu
550745
@end menu