261 lines
9.6 KiB
HTML
Executable file
261 lines
9.6 KiB
HTML
Executable file
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
|
|
<title>It All Started With A Patch</title>
|
|
|
|
<meta name="description" content="It All Started With A Patch">
|
|
<meta name="author" content="Oliver Davies">
|
|
|
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
|
|
|
<link rel="stylesheet" href="css/reveal.css">
|
|
<link rel="stylesheet" href="opdavies-reveal/opdavies-theme/css/style.css" id="theme">
|
|
|
|
<!-- Printing and PDF exports -->
|
|
<script>
|
|
var link = document.createElement( 'link' );
|
|
link.rel = 'stylesheet';
|
|
link.type = 'text/css';
|
|
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
|
|
document.getElementsByTagName( 'head' )[0].appendChild( link );
|
|
</script>
|
|
|
|
<!--[if lt IE 9]>
|
|
<script src="lib/js/html5shiv.js"></script>
|
|
<![endif]-->
|
|
</head>
|
|
|
|
<body>
|
|
<div class="reveal">
|
|
<div class="slides">
|
|
<section>
|
|
<h1 class="is-big">It All Started With A Patch</h1>
|
|
<h3>Getting into open source</h3>
|
|
|
|
<p>
|
|
<small>
|
|
A presentation by <a href="https://www.oliverdavies.uk">Oliver Davies</a>
|
|
(<a href="https://twitter.com/opdavies">@opdavies</a>)
|
|
</small>
|
|
|
|
<br>
|
|
|
|
<small>
|
|
<a href="https://joind.in/talk/98504" style="">https://joind.in/talk/98504</a>
|
|
</small>
|
|
</p>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Oliver Davies</h2>
|
|
|
|
<div class="is-flex">
|
|
<ul class="bullets medium" style="flex: 1">
|
|
<li>Senior Developer at Appnovation Technologies</li>
|
|
<li>Open source enthusiast</li>
|
|
<li>Working with OSS full-time since 2010</li>
|
|
<li>Drupal core contributor, mentor, module maintainer.</li>
|
|
<li>One of over 3,800 contributors to Drupal 8 to date</li>
|
|
</ul>
|
|
|
|
<div style="margin-left: 1em; width: 200px">
|
|
<img class="no-border no-shadow" src="images/me_thumb.jpg">
|
|
<img class="no-border no-shadow" src="images/appnovation.png">
|
|
</div>
|
|
</div>
|
|
|
|
<aside class="notes">
|
|
<p>Contributed to Drupal core, Drupal VM, Drupal Console, as well as maintaining my own packages, libraries and Drupal modules.</p>
|
|
<p>#537 with 8 patches</p>
|
|
</aside>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Why Contribute to Open Source?</h2>
|
|
|
|
<div class="is-flex">
|
|
<ul class="bullets" style="flex: 1">
|
|
<li class="fragment">
|
|
Pay it forward
|
|
<blockquote>“There's a module for that.”</blockquote>
|
|
</li>
|
|
<li class="fragment">
|
|
Be part of a community
|
|
<blockquote>“If you work in open source you get thousands of extra colleagues”</blockquote>
|
|
</li>
|
|
<li class="fragment">Be a better developer</li>
|
|
<li class="fragment">Better career prospects</li>
|
|
<li class="fragment">Recognition</li>
|
|
</ul>
|
|
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Getting Started</h2>
|
|
|
|
<img src="images/tweet-1.png" alt="" class="no-border no-shadow">
|
|
|
|
|
|
<aside class="notes">
|
|
<p>Reviewing and collaborating allows you to become familiar with the processes, and can also gain credit.</p>
|
|
</aside>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Mentoring</h2>
|
|
|
|
<div class="is-flex">
|
|
<ul class="bullets" style="flex: 1">
|
|
<li class="fragment">Assist new and inexperienced contributors.</li>
|
|
<li class="fragment">Mentored code sprints.</li>
|
|
<li class="fragment">IRC/Slack office hours.</li>
|
|
<li class="fragment">https://www.drupal.org/core-mentoring</li>
|
|
<li class="fragment">https://php-mentoring.org</li>
|
|
<li class="fragment">Google Summer of Code</li>
|
|
</ul>
|
|
|
|
<div style="width: 33%; margin-left: 10px">
|
|
<img src="images/mentors.png" alt="" class="no-border no-shadow">
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Types of Contribution</h2>
|
|
|
|
<ul class="bullets">
|
|
<li class="fragment">Report/fix a bug</li>
|
|
<li class="fragment">Review an existing patch, help diagnose an issue</li>
|
|
<li class="fragment">Write a test</li>
|
|
<li class="fragment">Documentation updates</li>
|
|
<li class="fragment">Translations</li>
|
|
<li class="fragment">Test a new release</li>
|
|
<li class="fragment">Write a blog post, record a screencast</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Finding Something to Work On</h2>
|
|
|
|
<ul>
|
|
<li class="fragment">Start with something small.</li>
|
|
<li class="fragment">
|
|
<em>Novice</em> tag on Drupal.org.
|
|
<img src="images/drupal-novice-tag.png" alt="">
|
|
</li>
|
|
<li class="fragment"><em>up-for-grabs</em> and <em>first-timers-only</em> tags on GitHub.</li>
|
|
<li class="fragment">http://yourfirstpr.github.io</li>
|
|
<li class="fragment">http://www.firsttimersonly.com</li>
|
|
</ul>
|
|
|
|
<aside class="notes">
|
|
<ul>
|
|
<li>Also tags for specialist tasks - patch reroll, needs tests.</li>
|
|
</ul>
|
|
</aside>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Making Changes</h2>
|
|
|
|
<div class="is-flex">
|
|
<div class="fragment" style="width: 50%">
|
|
<h3>Patches</h3>
|
|
|
|
<ul class="bullets" style="margin-right: 20px">
|
|
<li style="font-size: 30px" class="fragment">One canonical version</li>
|
|
<li style="font-size: 30px" class="fragment">Clone the repository</li>
|
|
<li style="font-size: 30px" class="fragment">Make and commit changes locally</li>
|
|
<li style="font-size: 30px" class="fragment">Create a patch file (<code>git diff</code>, <code>git format-patch</code>)</li>
|
|
<li style="font-size: 30px" class="fragment">Patch uploaded to issue queue and reviewed</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="fragment" style="width: 50%">
|
|
<h3>Pull Requests</h3>
|
|
|
|
<ul class="bullets">
|
|
<li style="font-size: 30px" class="fragment">Multiple versions</li>
|
|
<li style="font-size: 30px" class="fragment">Fork the repository</li>
|
|
<li style="font-size: 30px" class="fragment">Make, commit, push changes</li>
|
|
<li style="font-size: 30px" class="fragment">Create PR</li>
|
|
<li style="font-size: 30px" class="fragment">PR is reviewed</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="fragment">
|
|
<img src="images/pr-merged.png" alt="" class="no-shadow no-border">
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Takeaways</h2>
|
|
|
|
<ul>
|
|
<li class="fragment">Reviewers and maintainers are not scary (honest!).</li>
|
|
<li class="fragment">People are reviewing the code, not reviewing you.</li>
|
|
<li class="fragment">Not all changes will be accepted.</li>
|
|
<li class="fragment">
|
|
Be aware of different workflows, guidelines per project.
|
|
<br><code>README</code>, <code>CONTRIBUTING.md</code> files.
|
|
</li>
|
|
<li class="fragment">Engage with the community.</li>
|
|
<li class="fragment">Contribute in person if possible (code sprints/hackathons).</li>
|
|
</ul>
|
|
|
|
<aside class="notes">
|
|
<ul>
|
|
<li>Don't take things personally.</li>
|
|
<li>Great to put a face to a name, know who to contact for certain issues.</li>
|
|
</ul>
|
|
</aside>
|
|
</section>
|
|
|
|
<section data-background="#0076C2">
|
|
<h2 class="is-white">Questions?</h2>
|
|
|
|
<br><br>
|
|
|
|
<h2 class="is-white">Feedback</h2>
|
|
|
|
<p>
|
|
<a href="https://joind.in/talk/98504" style="color: #fff">https://joind.in/talk/98504</a>
|
|
</p>
|
|
</section>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="lib/js/head.min.js"></script>
|
|
<script src="js/reveal.js"></script>
|
|
|
|
<script>
|
|
// More info https://github.com/hakimel/reveal.js#configuration
|
|
Reveal.initialize({
|
|
backgroundTransition: 'none',
|
|
controls: false,
|
|
progress: false,
|
|
history: true,
|
|
center: true,
|
|
transition: 'none', // none/fade/slide/convex/concave/zoom
|
|
|
|
// More info https://github.com/hakimel/reveal.js#dependencies
|
|
dependencies: [
|
|
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
|
|
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
|
|
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
|
|
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
|
|
{ src: 'plugin/zoom-js/zoom.js', async: true },
|
|
{ src: 'plugin/notes/notes.js', async: true }
|
|
]
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|