2 \documentclass[serif,mathserif,compress
]{beamer
}
4 \usepackage{beamerthemesplit
}
7 \useoutertheme{default
}
9 \usepackage[british
]{babel
}
20 % Make this a 16:9 presentation
21 \setlength{\paperwidth}{171 mm
}
22 \setlength{\paperheight}{96 mm
}
23 \setlength{\textwidth}{151 mm
}
24 \setlength{\textheight}{86 mm
}
26 \usepackage[default,osfigures,scale=
0.95]{opensans
}
27 \usepackage[T1]{fontenc}
28 \usepackage[utf8
]{inputenc}
30 % Set sans-serif font.
31 %\renewcommand\sfdefault{phv}
32 %\renewcommand\familydefault{\sfdefault}
34 % Define some colours.
35 \definecolor{myred
}{rgb
}{0.53,
0.01,
0}
36 \definecolor{mygrey
}{rgb
}{0.3,
0.3,
0.3}
38 % Make a nice gradient as background.
39 %\setbeamertemplate{background canvas}[vertical shading]
40 %[bottom=black, middle=myred, top=myred]
41 \setbeamercolor{background canvas
}{bg=white, fg=mygrey
}
42 \setbeamercolor{frametitle
}{fg=mygrey,bg=mygrey!
20}
43 \setbeamercolor{section in head/foot
}{bg=myred
}
44 \setbeamercolor{subsection in head/foot
}{fg=white
}
45 \setbeamercolor{author in head/foot
}{bg=myred
}
46 \setbeamercolor{date in head/foot
}{fg=white
}
48 % Highlight elements in some sort of grey.
49 \setbeamercolor{structure
}{fg=mygrey
}
50 \setbeamercolor{normal text
}{bg=black, fg=mygrey
}
52 % Use round bullets in lists.
53 \setbeamertemplate{items
}[circle
]
55 % Use bigger fonts for titles.
56 \setbeamerfont{title
}{size=
\Huge}
57 \setbeamerfont{frametitle
}{size=
\large}
59 % Don't clutter the pages with useless navigations.
60 \setbeamertemplate{navigation symbols
}{}
62 \lstdefinestyle{console
}{%
64 basicstyle=
\ttfamily\fontsize{3.5}{6}\selectfont\color{white
},
66 rulecolor=
\color{white
},
67 backgroundcolor=
\color{black
},
75 \author[Michael Tremer
]{Michael Tremer
}
76 \institute{IPFire Project
}
78 % The title of the presentation.
79 \title{Submitting Patches
}
80 \subtitle{Contributing to the IPFire project made easy
}
82 \date{October
10\textsuperscript{th
},
2015}
84 \newcommand{\spacer}{\vspace{4 mm
}}
86 \newcommand{\screenshot}[1]{\centerline{%
87 \includegraphics[width=
\textwidth]{#1}}}
89 \newcommand{\slug}[1]{
99 \newcommand{\subslug}[1]{
100 \slug{\normalsize #1}
107 %\frame{\tableofcontents}
109 \section{Introduction
}
112 \slug{We are an Open Source project \\
113 \pause ... and use an open development approach
}
117 \slug{Everyone is welcome to contribute
}
118 \subslug{No skills required
}
122 \slug{This might look complicated \\
123 - it is mostly common sense
}
127 \slug{Why does all this matter? \\
128 \pause Our brains are good with patterns
}
131 \section{Obtaining the Sources
}
134 \slug{We are using
\texttt{git
}}
138 \slug{Everything we do is in a git repository somewhere on \\
139 \url{http://git.ipfire.org
}}
142 \subsection{Setting up Git
}
145 \frametitle{Setting up Git
}
147 \slug{Introduce yourself
}
149 \subslug{We want to know who you are \\
154 \texttt{git config ----global user.name ``Michael Tremer''
} \\
155 \texttt{git config ----global user.email michael.tremer@ipfire.org
}
159 \subsection{Setting up Git for Email
}
162 \frametitle{Setting up Git for Email
}
164 \slug{Git needs to send email...
}
167 \texttt{git config ----global sendemail.smtpencryption tls
} \\
168 \texttt{git config ----global sendemail.smtpserver mail01.ipfire.org
} \\
169 \texttt{git config ----global sendemail.smtpserverport
587} \\
170 \texttt{git config ----global sendemail.smtpuser ms
}
173 \subslug{(You can use what ever mail server you want...)
}
176 \subsection{Creating a Development Branch
}
179 \frametitle{Creating a Development Branch
}
181 \begin{columns
}[T
] % align columns
182 \begin{column
}{.78\textwidth}
183 \slug{We use development branches for each feature
}
186 \texttt{git checkout -b my-feature -t origin/master
}
190 \begin{column
}{.28\textwidth}
191 \includegraphics[height=
.85\textheight]{res/git-branches
}
196 \section{Making Changes
}
199 \slug{Time to hack...
}
202 \subslug{But there are some rules...
}
206 \subslug{Check with us before starting working on bigger things
}
209 \subslug{Separate your changes \\
210 e.g. bug fixes vs. performance enhancements
}
213 \subslug{Send small patches \\ each one justifiable on its own merits
}
216 \subslug{Make sure that everything builds \\ mark dependencies
}
219 \subslug{Style-check your changes
}
225 \subsection{Committing Changes
}
228 \frametitle{Committing Changes
}
230 \slug{Committing a patch means \\ adding it to the project's history
}
233 \subslug{It will be in there for forever
}
236 \subsection{Writing a commit message
}
239 \frametitle{Writing a good commit message
}
241 \slug{Describe your changes
}
244 \subslug{What motivated you to develop this patch?
}
245 \subslug{What is the impact of the patch?
}
246 \subslug{Are there user-visible changes?
}
250 \frametitle{Writing a good commit message
}
252 \slug{Describe
\underline{how
} you solved the problem
}
255 \subslug{Include technical details
}
256 \subslug{(If this step is getting difficult your patch is probably too complex)
}
260 \frametitle{Writing a good commit message
}
262 \slug{Add useful information
}
266 \subslug{Mailing list discussions \\
267 (including a quick summary)
}
270 \subsection{Git Tags
}
273 \frametitle{Git tags - Who did what?
}
275 \slug{Sign your work
}
277 \subslug{\texttt{Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
}}
281 \frametitle{Git tags - Who did what?
}
283 \slug{Credit your collaborators
}
285 \subslug{Reported-by: | Tested-by: | Reviewed-by: | Suggested-by:
}
288 \subsection{Why all this?
}
294 \subslug{Commit messages will be read by the reviewers of your patch... \\
295 \pause (help them to make reviewing your changes easier)
}
298 \subslug{...and after many years
}
304 \slug{Every patch must be reviewed
}
306 \subslug{Respond to any comments - don't get discouraged - or impatient
}
310 \frametitle{Who to send patches to?
}
312 \slug{The maintainer of a subsystem
}
313 \slug{\underline{and
} at least one mailing list
}
316 \subsection{Submitting Patches
}
319 \slug{We use email only
}
321 \subslug{Pull requests only for bigger changes \& maintainers \\
322 No GitHub pull requests
}
326 \frametitle{Patch format
}
329 \item Must include a From: header (with the real name and email address)
330 \item Subject line starting with
\texttt{[PATCH
]}
331 \item The commit message
332 \item \texttt{Signed-off-by:
} line
333 \item The actual changes in the unified diff format
337 \slug{\texttt{git send-email
} automates all that
}
340 \subsection{Patchwork
}
342 \subsection{Track what is going on...
}
345 \frametitle{Track what is going on...
}
347 \slug{\url{http://patchwork.ipfire.org/
}}
350 \subslug{Help us reviewing patches
}
357 \includegraphics[height=
.5\textheight]{res/ipfire_tux_512x512.png
}
361 Read everything on \\
362 \url{http://wiki.ipfire.org/devel/submit-patches
}