\section{using the forkable repository}

The forkable repository is not at all a stable system.
It's a collection of \emph{scripts, tools, illustrations, documentation}, 
an anarchive, perhaps a giant mess. The collection aims to be archive, 
production environment, documenation. 

From a technical perspective it tries to learn from a   
more or less time-tested design approach, that supports the kind of 
reuse \emph{I} was looking for in the beginning. 
This set of design princliples gets to be talked about 
as the \emph{Unix Philosophy} and makes software as reusable
as forkable should be.

The Unix Philosophy is present here as not the GNU in UNIX
but in GNU/Linux, operating system and anarchive of software.
The collection has been tested so far with Debian GNU/Linux and Ubuntu.
% It's possible through the demand for copying while it comes
% packed with software from the Comprehensive TeX Archive Network.

\subsection{check it out}

You should be running GNU/Linux with subversion\footnote{%
What is subversion?%
} installed.

\codeline{}{sudo aptitude install subversion}


Do a checkout:

\codeline{}{svn co http://code.lafkon.net/subversion/forkable}

You will be asked for username and password. If you do not
have already one, please send an email. 
Because we are currently on a test run, the subversion repository
is not completly open to the public while you can browse everything
at \url{http://www.forkable.eu}.
The checkout may take some time because there is a rather large
collection of vector illustrations from  
\url{http://vektordb.lafkon.net} included.				\marginpar[addsa]{sada}

\subsection{check the system}

Because, what is forkable at the moment, is a diversity of tools, 
glued together mostly inside bash scripts, there is a bunch 
of software that is actually needed to get everything working.

\subsubsection{prepare your \LaTeX installation}

First you need a \TeX installation for Debian and Ubuntu that
is texlive.

\codeline{}{sudo aptitude install texlive}

Add the forkable TEXMF path to your local tex installation:

Open \codeinline{}{/etc/texmf/texmf.cnf} with a text editor.

\codeline{}{sudo nano /etc/texmf/texmf.cnf}

Add the following:

\lstset{breaklines=false,language=[LaTeX]TeX}
\codeline{}{TEXMFFORKABLE = /path/to/your/forkable/folder/utils/latex/TEXMF}

look for a line something like this:

\codeline{}{TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFLOCAL,!!$TEXMFMAIN,!!$TEXMFDIST}}

and the variable for the forkable TEXMF folder:

\codeline{}{TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,$TEXMFFORKABLE,$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFLOCAL,!!$TEXMFMAIN,!!$TEXMFDIST}}

You must do this so that \LaTeX finds the packages that are distributed with forkable.\\
Reload TeX.

\codeline{}{sudo texhash}

\subsubsection{install software}

you need to have java installed.

\codeline{}{sudo aptitude install sun-java5-bin}

you can the \codeinline{}{check\_the\_system.sh} script
to test which software you need to install.

\subsection{folder structure}

\paragraph{generators}

Like the name says things that generate something.
This is most active part of forkable

\paragraph{release}

Finished stuff that is not really used
anymore like a print layed book.

\paragraph{utils}

Things that are usefull.
Has become right now kind of a wastedump,
for all stuff not matching categories.

\paragraph{i}

\subparagraph{i/free + i/non-free}					\marginpar{sada}

For the distribution of projects i decided
to differentiate data into \emph{free} and
\emph{non-free}. Most projects include data
that is the property of a third party like
logos and therefore can not be put under
free licenses. for the public svn checkout
the non-free directories are excluded.
to get layouts and scripts working nontheless
these files are replaced by free supplementals.

\subparagraph{i/*/v}

vector graphics. see jon phillips

\subparagraph{i/*/p}

raster images to be included. p for pixel

\subparagraph{i/tmp}

local temporary directory.

\subparagraph{i/a -- follow the donkey path}

\begin{quotation}
% ``Der Mensch schreitet geradeaus, weil er ein Ziel hat; 
% er weiß, wohin er geht, er hat sich für eine Richtung 
% entschieden und schreitet in ihr geradeaus.
Der Esel geht im Zickzack, d\"ost ein wenig, bl\"ode vor
Hitze und zerstreut, geht im Zickzack, um den gro\ss en 
Steinen auszuweichen, um sich den Anstieg sanfter zu 
machen, um den Schatten zu suchen. 
% Er strengt sich so wenig wie möglich an.''
%\cite[p.5]{Corbusier:1979:sb}
\cite{Corbusier:1979:sb}
\end{quotation}

i/a is a recursive link i use so far for
linking documents. this link stays the same
for all documents what makes it easy to
include documents into each other without
specifying an absolute link. 

as far as i know latex resolves links not
relative to the document path but relative
to the root document.

if i include in release/osk/Offener\_Schaltkreis.tex
via \lstinline{\input} the document 
generators/lacmachine/doc/lacmachine.tex that uses
a graphic via \lstinline{\include{i/v/graphic.pdf}
that is stored in generators/lacmachine/doc/i/v/graphic.pdf
i can't release/osk/Offener\_Schaltkreis.tex because it searches
for an image i/v/graphic.pdf that obviously does not exist.
by providing each latex directory through a symlink with the
path i/a i can link images with the path 
i/a/generators/lacmachine/doc/i/v/graphic.pdf, that is the same
for release/osk/Offener\_Schaltkreis.tex \emph{AND}
generators/lacmachine/doc/lacmachine.tex. 

Better solution welcome.

% ``Nun, eine moderne Stadt lebt, praktisch, von der Geraden: 
% Hoch- und Tiefbau, Kanalisation, Straßen, Gehsteige usw. 
% Der Verkehr fordert die Gerade. 
% Die Gerade ist gesund auch für die Seele der Städte. 
% Die Kurve ist verderblich, schwierig und gefährlich. 
% Sie lähmt.''
% \cite[p.5]{Corbusier:1979:sb}

\paragraph{o}

\subparagraph{o/non-free}

output rendered with proprietary parts. not in the subversion repository.
online at \url{http://www.forkable.eu}

\subparagraph{o/free}

output directories used for scripts in the subversion directory.

% ``Design for hackability encourages designers and non-designers to critically
% and creatively explore interactivity, technology and media - to reclaim
% authorship and ownership of technologies and the social and cultural worlds
% in which one lives. Hackability implies more than customization or
% adaptation - it calls for redefinition. In a world where technologies are
% increasingly mobile and invisible, designing for hackability means allowing
% and encouraging people to make technologies be what they want them to be.''
% % Galloway; Anne: Design for Hackability.

% Good programmers know what to write. Great ones know what to rewrite (and reuse).
% % Raymond, Eric S.: The Cathedral and The Bazaar, S.24

% A successful tool is one that was used to do something undreamed of by its author.
% % Stoltermann, Erik: Design for Unintended Use

% [Designing for appropriation] means allowing and encouraging people to
% make technologies be what they want them to be.
% % Galloway; Anne: Design for Hackability.