% ----------------------------------------------------------------------------
% version-0.6.2
% ----------------------------------------------------------------------------
\documentclass[11pt,a4paper]{article}
\usepackage[latin1]{inputenc}    % Ascii-Format dieses Dokuments
\usepackage{longtable}           % lange Tabellen
\usepackage{fancyhdr}
\pagestyle{fancy}
%\fancyhf{}                      % bisherige Kopf- und Fusszeilen loeschen
\fancyhead[R]{Nico Schottelius}  % rechter Kopfzeileneintrag
\fancyhead[L]{decr-f 0.6}        % linker Kopfzeileneintrag
%\fancyhead[L]{\thepage}         % linker Kopfzeileneintrag
%\fancyfoot[C]{\thepage}         % Fusszeileneintrag (Seitenzahl zentriert)
\renewcommand{\headrulewidth}{0.4pt}      % Strichstaerke unter der Kopfzeile
% ----------------------------------------------------------------------------
% let's start
\newcommand{\urlsearch}{http://linux.schottelius.org/decr-f/search.php}
\newcommand{\urladd}{http://linux.schottelius.org/decr-f/add.php}
\newcommand{\urlmirror}{http://linux.schottelius.org/decr-f/\#mirrors}
% ----------------------------------------------------------------------------
\begin{document}
\title{decr-f\\Version 0.6.2}
\date{\today}
\author{Nico Schottelius (nico-decr-f@schottelius.org)}
% ----------------------------------------------------------------------------
% Title + Inhaltsverzeichnis
\maketitle
\newpage
\tableofcontents
\listoftables
% ----------------------------------------------------------------------------
\newpage
\section{Introdoction}
% ----------------------------------------------------------------------------
\subsection{What is decr-f}
Decr-f is a package information system. It collects distribution independent
data about packages. Distributors and end users can use the information
to build their packages or even their package-database.
% ----------------------------------------------------------------------------
\subsection{The aim}
Decr-f tries to collect distribution independent information about software
packages like "`How to get the source or binary of the package?"' or
"`How to contact the maintainer?"' and "`What packages does it depend on?"'.
% ----------------------------------------------------------------------------
% done
% ----------------------------------------------------------------------------
\subsection{How does it work}
The data of decr-f is stored in a flat database.
We allow easy internationalization: All files are written
in UTF-8 (Unicode). It can be retrieved
by any HTTP able program. Anybody can add package information,
but only the maintainers can commit new data to the database.
% ----------------------------------------------------------------------------
% done
% ----------------------------------------------------------------------------
\subsection{How to retrieve data}
You can use any program, which is able to speak HTTP.
\verb=decr-f.show=, part of the decr-f-tools package,
is such a progra.
If you use decr-f.show, you simply call it from the command line:
\begin{quote}
\verb=decr-f.show <package> <which-information>=
\end{quote}
Soon there will be the possibility to view and search decr-f information
through a web-interface at \urlsearch.
If you use any other program, you have to point it to a decr-f mirror and
select the package by retrieving
http(s)://\textit{decr-f.mirror}/decr-f/\textit{package}/\textit{information}.
There is also the possibility to retrieve the whole database via rsync.
% ----------------------------------------------------------------------------
% partly done
% ----------------------------------------------------------------------------
\subsection{How to add information}
The recommend method is to use "`decr-f.user.menu"' and then select
"`Add package"', but you can also add packages via \urladd.
If you want to learn how decr-f internally works, you can build up
youself a flat database and create an entry for your package.
% ----------------------------------------------------------------------------
% partly done
% ----------------------------------------------------------------------------
\subsection{decr-f mirrors}
Currently we are searching for more people mirroring decr-f and making
it available via rsync, http or (preferred) via https. A list
of current mirrors can always be found at the main site,
\urlmirror.
% ----------------------------------------------------------------------------
% partly done
% ----------------------------------------------------------------------------
\section{Specification of version 0.6}
\setlongtables
Decr-f consists of objects, which contain subobjects. Some
are mandority, some may be used multiply. Those, which have multiple
entries use $\backslash$n (new-line) seperated entries.
Currently there are no exclusive-use-only objects.
% ----------------------------------------------------------------------------
\subsection{decr-f}
The "`decr-f"' object is the "`main"' object. You have to use it
in every decr-f entry.
\begin{longtable}{|l|c|c|c|}
\caption{decr-f-objects}
\endfirsthead
\hline
\textbf{Object}& \textbf{Description}& \textbf{Mandority}& \textbf{Multiply} \\
\hline
decr-f/maintainer & Maintainer of the decr-f information & yes & no\\
\hline
decr-f/version    & Version used (0.6 currently)         & yes & no\\
\hline
\end{longtable}
% ----------------------------------------------------------------------------
Example:
% ----------------------------------------------------------------------------
\begin{longtable}{|l|c|}
\caption{decr-f-objects}
\endfirsthead
\hline
\textbf{Object}& \textbf{Value}\\
\hline
decr-f/maintainer & Nico Schottelius (nico-linux@schottelius.org)\\
\hline
decr-f/version    & 0.6\\
\hline
\end{longtable}
% ----------------------------------------------------------------------------
\subsection{info}
The "`info"' table contains general information about the package.
\begin{longtable}{|c|c|c|c|}
\caption{info-objects}
\endfirsthead
\hline
\textbf{Object}& \textbf{Description}& \textbf{Mandority}& \textbf{Multiply} \\
\hline
info/name &
   name of the package &
   yes &
   no\\
\hline
info/longname &
   longname of the package &
   no &
   no \\
\hline
info/development\_line &
   the development line it belongs to &
   yes &
   no\\
\hline
info/category &
   sys(tem)/net(work)/fun/(multi)media &
   yes &
   no\\
\hline
info/use\_as &
   purpose of the package &
   yes &
   no \\
\hline
info/type &
   lib(rary)/prog(ram)/ & yes & no \\
 & doc(umentation)/patch & &\\
\hline
info/descripton/\textit{language} &
   description &
   yes &
   no\\
   & "`en"' is mandority, the rest optional. & &\\
\hline
info/keywords/\textit{language} &
   keywords &
   yes &
   no\\
   & "`en"' is mandority, the rest optional. & &\\
\hline
info/copyright &
   copyright/left license &
   yes &
   yes\\
\hline
info/provides & 
   (new-line seperated) list of provided files &
   yes &
   yes \\
\hline
info/obsoleted\_by &
   package is obsoleted by &
   no &
   no \\
\hline
info/replaces &
   package it replaces &
   no &
   no\\
\hline
\end{longtable}
% ----------------------------------------------------------------------------
Example:
% ----------------------------------------------------------------------------
\begin{longtable}{|c|c|}
\caption{info-example}
\endfirsthead
\hline
\textbf{Object}& \textbf{Value} \\
\hline
info/name & gpm\\
\hline
info/longname & general purpose mouse\\
\hline
info/development\_line & 1.20\\
\hline
info/category & sys\\
\hline
info/use\_as & mouse\_driver\\
\hline
info/type & prog\\
\hline
info/description/en & GPM enables the mouse in the console.\\
\hline
info/description/de & GPM erm\"oglicht die Verwendung der Maus in der Console.\\
\hline
info/keywords/en  & mouse\\
                  & console\\
\hline
info/keywords/de  & Maus\\
                  & Console\\
\hline
info/copyright & GPL\\
\hline
info/provides & sbin/gpm\\
& lib/libgpm.a\\
& include/gpm.h\\
& libgpm.so\\
& bin/gpm-root\\
& bin/mev\\
& bin/hltest\\
& bin/mouse-test\\
& bin/disable-paste\\
\hline
\end{longtable}
% ----------------------------------------------------------------------------
\subsection{contact}
The "`contact"' table describes howto contact the authorities for
the package. If mailinglist objects are having multiple entries, the
first one belongs to the first one, the second to the second, etc.
% ----------------------------------------------------------------------------
\begin{longtable}{|c|c|c|c|}
\caption{contact-objects}
\endfirsthead
\hline
\textbf{Object}& \textbf{Description}& \textbf{Mandority}& \textbf{Multiply} \\
\hline
contact/author &
   Contact of the author &
   yes &
   yes \\
   & At least name and email. & &\\
\hline
contact/maintainer &
   Contact of the maintainer(s) &
   yes &
   yes\\
\hline
contact/ml/public &
   Is the mailinglist public? & no & yes\\
\hline
contact/ml/sub\_mail &
   Email for subscribing to the list & no & yes\\
\hline
contact/ml/sub\_subject &
   Subject for subscribing to the list & no & yes\\
\hline
contact/ml/post &
   Email to post on the list &
   no &
   no\\
\hline
\end{longtable}
% ----------------------------------------------------------------------------
Example:
% ----------------------------------------------------------------------------
\begin{longtable}{|c|c|}
\caption{contact-example}
\endfirsthead
\hline
\textbf{Object}& \textbf{Value}\\
\hline
contact/author & mailto://nico-decr-f@schottelius.org\\
               & irc://irc.freenode.org/\#clinux (telmich)\\
\hline
contact/maintainer & mailto:nico-decr-f@schottelius.org\\
\hline
contact/ml/public & yes\\
& no\\
\hline
contact/ml/sub\_email & decr-f-subscribe@lists.schottelius.org\\
& decr-f-dev-subscribe@lists.schottelius.org\\
\hline
contact/ml/sub\_subject & \\
& secret\\
\hline
contact/ml/posttoaddress & decr-f@lists.schottelius.org\\
& decr-f-dev@lists.schottelius.org\\
\hline
\end{longtable}
% ----------------------------------------------------------------------------
\subsection{source}
The "`source"' table describes the ways to get the package.
\begin{longtable}{|c|c|c|c|}
\caption{source-objects}
\endfirsthead
\hline
\textbf{Object}& \textbf{Description}& \textbf{Mandority}& \textbf{Multiply} \\
\hline
source/homepage/original &
   URI of original homepage &
   yes & no\\
\hline
source/homepage/mirror &
   URI of mirror homepage &
   no & yes\\
\hline
source/archive/original &
   URI of original source archive &
   yes & no\\
\hline
source/archive/mirrors &
   URI of alternate source archiv &
   no & yes\\
\hline
source/archive/size &
   Size of original source archiv &
   yes & no\\
\hline
source/archive/checksum &
   URI of checksum file &
   yes & no\\
\hline
source/archive/checksum\_type &
   Type of (md5,sha1) &
   yes & no\\
\hline
source/archive/signature &
   URI of pgp-signature file &
   no & no\\
\hline
source/archive/signature\_id &
   Your PGP-key ID &
   no & no\\
\hline
source/alternative &
   Freeform description of alternative source. &
   no & yes\\
   & Should be used for
      VCS\footnote{Version Control Systems, like CVS, Monotone or TLA}. & &\\
\hline
source/changelog &
   URI of the ChangeLog &
   no & yes\\
\hline
source.faq &
   URI of the F.A.Q. &
   no & yes\\
\hline
\end{longtable}
% ----------------------------------------------------------------------------
Example:
% ----------------------------------------------------------------------------
\begin{longtable}{|c|c|}
\caption{source-example}
\endfirsthead
\hline
\textbf{Object}& \textbf{Value}\\
\hline
source/homepage/original & http://linux.schottelius.org/gpm/\\
\hline
source/archive/original &http://ftp.schottelius.org/pub/linux/gpm/gpm-1.20.1.tar.bz2\\
\hline
source/archive/mirrors & ftp://arcana.linux.it/pub/gpm/gpm-1.20.1.tar.bz2\\
\hline
source/archive/size & 565014\\
\hline
source/archive/checksum &
http://ftp.schottelius.org/pub/linux/gpm/gpm-1.20.1.tar.bz2.sha1sum\\
\hline
source/archive/checksum\_type & sha1\\
\hline
source/alternative & Monotone VCS is available.\\
& The key can be found on the homepage.\\
& The collection ist org.schottelius.gpm.\\
& The server is linux.schottelius.org.\\
\hline
\end{longtable}
% ----------------------------------------------------------------------------
\subsection{depends}
The "`depends"' table contains all dependencies of the package. 
It should list one dependency per line. Packages depend on other
packages, but you must specify the development line.
You must also include one of the following "`mathematic"' symbols:
$$==,>, >=, <, <=, !=$$
% ----------------------------------------------------------------------------
\begin{longtable}{|c|c|c|c|}
\caption{depends objects}
\endfirsthead
\hline
depends/build & All packages it needs to be build & no & yes\\
\hline
depends/run & All packages it needs when running & no & yes\\
\hline
\end{longtable}
% ----------------------------------------------------------------------------
\begin{longtable}{|c|c|}
\caption{depends-example}
\endfirsthead
\hline
depends/build  & $==$ gcc-2.9.5\\
\hline
depends/run    & $>=$ apache-1.3\\
               & $==$ mysql-1.4\\
\hline
\end{longtable}
% ----------------------------------------------------------------------------
\subsection{The database - Storing information}
Decr-f is organized in a flat database.
% ----------------------------------------------------------------------------
% done
% ----------------------------------------------------------------------------
\section{FAQ: Frequently asked questions}
\subsection{Why do I want to use it?}
Because you have the possibility to find distribution independent
information about any software package in the Internet.
% ----------------------------------------------------------------------------
\section{Miscellaneous}
% ----------------------------------------------------------------------------
\subsection{TODO}
\begin{itemize}
\item publish this document
\item publish the decr-f-tools
\item create decr-f web interface
\item start begin integration in distributions / package management
\end{itemize}
% ----------------------------------------------------------------------------
\subsection{Updates, Changes, Copying, Contact}
Updates of this document can be found at http://linux.schottelius.org/decr-f/.
If you want to submit changes, simply contact me with a \textit{diff -u}
to the original \LaTeX{} document.
Copying the entire document without changes is allowed.
You can contact me via e-mail at "`nico-decr-f@schottelius.org"'.
% ----------------------------------------------------------------------------
\end{document}
