\subsection{How to contribute}
OpenWrt is constantly being improved.  We'd like as many people to contribute
to this as we can get. If you find a change useful, by all means try to get
it incorporated into the project. This should improve OpenWrt and it should
help carry your changes forward into future versions

This section tries to lay out a procedure to enable people to submit patches
in a way that is most effective for all concerned.

It is important to do all these steps repeatedly:

\begin{itemize}
	\item \textit{listen} to what other people think.
	\item \textit{talk} explaining what problem you are addressing and your
		proposed solution.
	\item \textit{do} write useful patches including documentation.
    \item \textit{test. test. test.}
\end{itemize}

\subsection{Where to listen and talk}

\begin{itemize}
	\item google to find things related to your problem
	\item Mailing lists: \href{http://lists.openwrt.org/}{http://lists.openwrt.org/}
	\item Wiki: check the wiki: \href{http://wiki.openwrt.org/OpenWrtDocs}{http://wiki.openwrt.org/OpenWrtDocs}
	\item Forum: \href{http://forum.openwrt.org/}{http://forum.openwrt.org/}
	\item IRC: \texttt{irc.freenode.net}, channels \texttt{\#openwrt} and 
		\texttt{\#openwrt-devel}
	\item TRAC: \href{https://dev.openwrt.org/}{https://dev.openwrt.org/} the issue/bug/change tracking system
\end{itemize}

It is often best to document what you are doing before you do it.  The process
of documentation often exposes possible improvements.  Keep your documentation
up to date.

\subsection{Patch Submission Process}
\begin{enumerate}
	\item Use git or svn to create a patch. Creating patches manually with 
		\textit{diff -urN} also works, but is usually unnecessary.
	\item Send a mail to openwrt-devel@lists.openwrt.org with the following contents:
	\begin{enumerate}
		\item \texttt{[PATCH] <short description>} in the Subject, followed by:
		\item (optional) a longer description of your patch in the message body
        \item \texttt{Signed-off-by: Your name <your@email.address>}
		\item Your actual patch, inline, not word wrapped or whitespace mangled. 
	\end{enumerate}
	\item Please read \href{http://kerneltrap.org/Linux/Email\_Clients\_and\_Patches}{http://kerneltrap.org/Linux/Email\_Clients\_and\_Patches}
		to find out how to make sure your email client doesn't destroy your patch.
	\item Please use your real name and email address in the \texttt{Signed-off-by}
		line, following the same guidelines as in the \href{http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/SubmittingPatches;h=681e2b36195c98ea5271b76383b3a574b190b04f;hb=HEAD}{Linux Kernel patch submission guidelines}
	\item Example of a properly formatted patch submission: \\
	\href{http://lists.openwrt.org/pipermail/openwrt-devel/2007-November/001334.html}{http://lists.openwrt.org/pipermail/openwrt-devel/2007-November/001334.html}
\end{enumerate}
='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/cgit.cgi/openwrt/upstream/tree/?h=old-master&amp;id=298a8e2300599e7d2e557cf905b832662a170f8c'>root</a>/<a href='/cgit.cgi/openwrt/upstream/tree/scripts?h=old-master&amp;id=298a8e2300599e7d2e557cf905b832662a170f8c'>scripts</a>/<a href='/cgit.cgi/openwrt/upstream/tree/scripts/abs2rel.pl?h=old-master&amp;id=298a8e2300599e7d2e557cf905b832662a170f8c'>abs2rel.pl</a></div><div class='content'>blob: 3b0de10655216aa18d697c56d4bfee0188036673 (<a href='/cgit.cgi/openwrt/upstream/plain/scripts/abs2rel.pl?h=old-master&amp;id=298a8e2300599e7d2e557cf905b832662a170f8c'>plain</a>)
<table summary='blob content' class='blob'>
<tr><td class='linenumbers'><pre><a id='n1' href='#n1'>1</a>
<a id='n2' href='#n2'>2</a>
<a id='n3' href='#n3'>3</a>
<a id='n4' href='#n4'>4</a>
<a id='n5' href='#n5'>5</a>
<a id='n6' href='#n6'>6</a>
<a id='n7' href='#n7'>7</a>
<a id='n8' href='#n8'>8</a>
<a id='n9' href='#n9'>9</a>
<a id='n10' href='#n10'>10</a>
<a id='n11' href='#n11'>11</a>
<a id='n12' href='#n12'>12</a>
<a id='n13' href='#n13'>13</a>
<a id='n14' href='#n14'>14</a>
<a id='n15' href='#n15'>15</a>
<a id='n16' href='#n16'>16</a>
</pre></td>
<td class='lines'><pre><code>