-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathslides.html
66 lines (66 loc) · 26 KB
/
slides.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<!DOCTYPE html><html lang="en" class="aspect-16-9"><head><meta charset="UTF-8"><meta name="generator" content="Asciidoctor 0.1.4, dzslides backend"><title>Contribute to Open Source Software with Red Hat</title><meta name="author" content="Vineet Reynolds"><link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Neuton:400,700,800,400italic|Cedarville+Cursive"><link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.min.css"><link rel="stylesheet" href="./dzslides/themes/highlight/asciidoctor.css"><link rel="stylesheet" href="./dzslides/themes/style/asciidoctor.css"><style>section:not(.topic) > h2 { display: none;}</style><link rel="stylesheet" href="./dzslides/core/dzslides.css"><link rel="stylesheet" href="./dzslides/themes/transition/fade.css"></head><body><section class="title"><h1><span class="subtle blocktext">Contribute to</span> <em>Open Source Software</em> <span class="subtle blocktext">with</span> <em>Red Hat</em></h1><footer><span class="author">Vineet Reynolds</span><span class="divider"> · </span><span class="author">Kaushal Madappa</span></footer></section><section><p class="statement"><strong>Objectives</strong><br>
Learn how contributing to Open Source Software (OSS) helps you, and how to contribute.</p>
<details><details open=""><summary>Notes</summary><ul><li>This is a talk focussed on illuminatng aspects of open source projects, to an audience not composed of active contributors.</li><li>It is to help interested individuals get started with contributing to open source.</li><li>You’ll eventually learn how contribute to GlusterFS later on in the talk, but the underlying principles are applicable to any project.</li></ul></details></details></section>
<section class="topic source"><h2>Why should you contribute to OSS?</h2><ul><li>OSS development == Real world development</li><li>Work on projects that matter</li><li>Build an independently verifiable resume</li><li>Work with and learn from Really Smart People<sup>TM</sup></li></ul></section>
<section class="topic source"><h2>Real world development</h2><ul class="incremental"><li>Collaborative, <em>team</em>-based work</li><li>Produce <em>deliverables</em> for <em>end-users</em></li><li>Develop good <em>practices</em> on using good <em>tools</em>:<ul><li><strong>SCM</strong> - Git, SVN, Hg</li><li><strong>Build</strong> - make, Maven, Gradle, Rake</li><li><strong>CI</strong> - Jenkins, Go, Travis, Teamcity</li><li><strong>Issue management</strong> - Bugzilla, JIRA, Mantis, Trac, Redmine</li><li><strong>Review contributions</strong> - Gerrit, GitHub, Bitbucket</li><li><strong>User documentation</strong> - Asciidoc, Docbook, Publican</li></ul></li></ul>
<details><details open=""><summary>Notes</summary><ul><li>Working individually does not expose you to the challenges faced in real world projects.</li><li>It results in a lot of self-discovery with little or no reinforcement.</li><li>You may never converse with users about their problems and the features they need.</li><li>You may never work in a collaborative manner with other developers.</li><li>So no one reviews your code constructively, or builds on top of your code to offer more features.</li><li>You may also avoid using tools and practices that teams in the real world use, putting at a disadvanatage when you continue to work otherwise.</li><li>SCM allows multiple developers to work on the same code base without using manual backup techniques (copy of project, copy2 of project etc. etc.) :D</li><li>Build tools allow you to build your project in an automated manner. How many of you have several page manuals describing how to download and compile your projects? We automate these in the real world.</li><li>CI server extend your build scripts to perform builds at regular intervals. Companies like Google and Amazon use CI to allow them to publish deployments at dizzying rate. In a duration of 10 minutes, a deployment would have occured somewhere in the company. How quickly can you deploy your project?</li><li>Do you use text files or excel sheets to track issues? Well, no one does that in the real world, unless they’re poorly informed.</li><li>What about code submissions from others? Do you review them at all? And do you track review comments for posterity to track reasons for change?</li><li>And have you ever considered publishing documentation. Be it library API guides for developers, or user guides for end-users?</li><li>You get use all of these in well-run open source projects, saving you time because you do not have to independently discover this yourself.</li></ul></details></details></section>
<section class="topic source"><h2>Work on projects that matter</h2><p>Good open source projects:</p>
<ul><li>Do not exist for vanity</li><li>Target a particular <em>problem</em> or set of related problems</li><li>Provide solutions for <em>businesses</em> and <em>individuals</em></li></ul>
<p>They’re integral to today’s computing infrastructure.</p>
<details><details open=""><summary>Notes</summary><ul><li>What happens when a business has a problem that requires a solution in software?</li><li>Buy a COTS solution. Or get some to write it.</li><li>COTS can be expensive. Starups generally dont like to fork out money for mundae stuff like OSes, databases, application servers, frameworks and libraries.</li><li>There’s no significant advantage to be gained in writing these from scratch either.</li><li>So, re-use software built by others that happen to do a good job for your business.</li><li>Working on a OSS project that solves a business need is no different from working on a similar proprietary solution. Their objectives are the same.</li></ul></details></details></section>
<section class="topic source"><h2>Work on projects that matter</h2><ul><li>Many open source projects are <em>sponsored</em> by <em>foundations</em> and large <em>companies</em>.</li><li>Contributions associate you with their <em>work</em> and <em>culture</em>.</li><li>Contributions also <em>signal</em> your knowledge about the <em>problem</em> and its <em>solutions</em>.</li></ul>
<p><span class="image"><img src="images/montage.png" alt="Foundations" width="700"></span></p>
<details><details open=""><summary>Notes</summary><ul><li>Open source has a viable business model because of the concept of professional open-source.</li><li>Companies pay individuals to build capabilities or maintain open-source software that they use.</li><li>When a company goes about hiring someone for a particular role, they like to choose the person most knowledgeable in their domain. Quite obvious isn’t it?</li><li>When they use an OSS project, contributors stand to be the first to benefit, since they’re most qualified.</li></ul></details></details></section>
<section class="topic source"><h2>Some stats on the Linux Kernel</h2><p><span class="subtle">From the Annual Linux Development Report 2013</span></p>
<ul class="incremental"><li>Nearly <em>10,000</em> developers from more than <em>1,000 companies</em></li><li>Contributions from <em>1,100 developers</em> from <em>225 companies</em> in 2012</li><li>with growing numbers from <em>mobile</em> and <em>embedded industries</em>.</li></ul>
<details><details open=""><summary>Notes</summary><ul><li>Need proof of companies investing in open source? Look no further.</li><li>Work done by contributors here find their way into the mainstream.</li><li>Servers in datacenters, laptops, workstations and Android devices all benefit from these contributions.</li></ul></details></details></section>
<section class="topic source"><h2>Some stats on the Linux Kernel</h2><p><span class="subtle">Top 10 organizations sponsoring development, from the Annual Linux Development Report 2013</span></p>
<ul class="incremental scatter nolist"><li><em>Red Hat</em></li><li><em>Intel</em></li><li><em>Texas Instruments</em></li><li><em>Linaro</em></li><li><em>SUSE</em></li><li><em>IBM</em></li><li><em>Samsung</em></li><li><em>Google</em></li><li><em>Vision Engraving Systems Consultants</em></li><li><em>Wolfson Microelectronics</em></li></ul>
<details><details open=""><summary>Notes</summary><ul><li>And these are not done by small-timers.</li><li>The companies that happen to employ people to contribute to Linux have a vested stake in ensuring the success of their products and services.</li><li>Some want to ensure that their software runs on all Linux distributions, others want Linux to run on their hardware, while others want to offer Linux as a platform for businesses to operate on.</li></ul></details></details></section>
<section class="topic source"><h2>Build an independently verifiable resume</h2><p>Contributions are <strong>independently verifiable</strong> and <strong>undisputable</strong> facts.</p>
<p>Why does it matter?</p>
<details><details open=""><summary>Notes</summary><ul><li>Speaking of career development, OSS contributions lend to a trustworthy resume.</li><li>Why should hiring managers trust OSS contributors more?</li></ul></details></details></section>
<section class="topic source"><h2>Build an independently verifiable resume</h2><p>Independently Verifiable</p>
<ul><li>The <em>burden of proof</em> is not always on you.</li><li>Contributions are <em>public</em>: they can be examined and verified by others.</li><li>Contributions can be <em>verified</em> in release notes, mailing list archives, bug trackers, commit logs, and more.</li></ul>
<details><details open=""><summary>Notes</summary><ul><li>Your professors would vouch for your today, but not for ever. Recent references carry a lot of weight. You’d eventually depend on references provided by your employers.</li><li>Proof of involvement is not merely filed away somewhere and locked up in the attic.</li><li>Hiring managers need not rely on word-of-mouth references from previous employers alone. They can look up contributions at their own discretion, not requiring the services of a gatekeeper.</li><li>Hiring managers can now verify the same data that they independently accessed.</li></ul></details></details></section>
<section class="topic source"><h2>Build an independently verifiable resume</h2><p>Undisputable</p>
<ul><li>Projects guarantee all accredidation is accurate.</li><li>An accepted contribution has added value to the project.</li><li>Your code speaks for itself.</li></ul>
<details><details open=""><summary>Notes</summary><ul><li>Projects do bookkeeping activities, and most of them are automated.</li><li>If your contribution has been accepted to a project, you can claim so in your resume. You don’t need to wait for a certificate.</li><li>You may not get references from project leads and committers always, but it is not impossible.</li></ul></details></details></section>
<section><blockquote><p>… a real-world portfolio of work gives you an edge when applying for jobs. Contributing to an open source project provides you with that real-world portfolio …</p><br><cite>Leslie Hawthorn</cite></blockquote></section>
<section class="topic source"><h2>An example</h2><img class="middle" src="images/stackoverflow-resume.png" alt="stackoverflow resume">
<details><details open=""><summary>Notes</summary><ul><li>Career portals now allow you to post open source projects that you’ve contributed to.</li><li>Needless to say, it makes sense to post those that have had an impact.</li><li>Be prepared to justify the importance of these projects to hiring managers who may not understand the community of users ;-)</li></ul></details></details></section>
<section class="topic source"><h2>Work with and learn from Really Smart People<sup>TM</sup></h2><ul><li>Smart people tend to work with other smart people.</li><li>An OSS project with smart people draws and fosters others.</li><li>Many of them will be glad to help you learn. Take them up on it.</li><li>Very high quality of discussion. No bike-shedding.</li></ul>
<details><details open=""><summary>Notes</summary><ul><li>If there’s one thing about smart people, it is that they spend time on working on non-trivial and complex stuff.</li><li>They try not to suffer the consequences of Parkinson’s law of triviality.</li><li>So, they try not to discuss how to color the bike shed, and instead debate on how to construct a nuclear reactor.</li></ul></details></details></section>
<section class="topic source"><h2>Work with and learn from really Smart People<sup>TM</sup></h2><p>Learning takes many forms:</p>
<ul><li>Understanding and fixing bugs.</li><li>Performing code reviews or having your code reviewed.</li><li>Deliberation over ideas.</li><li>Designing and implementing new features.</li></ul>
<p>If you are <em>engaged in the project</em>, you will be <em>learning</em>.</p>
<details><details open=""><summary>Notes</summary><ul><li>Working with smart people does not mean that you are casually employed with them. You need to engage with them everyday if possible.</li><li>You need to ensure that ideas, features and bug fixes, are reviewed by them.</li><li>Understand their way of doing things. They are very rational beings and often have reasons to do things in a particular manner.</li><li>Doing this over a course of time increases your engagement with the project.</li><li>Engaging work increases cognitive function. This is a physiological behavior associated with dopamine. Working on stuff you like sometimes actually makes you smarter.</li></ul></details></details></section>
<section class="topic source"><h2>Getting started with OSS</h2><ul><li><em>Choose a project</em> to contribute to.<ul><li>Preferably one that you already use.</li></ul></li><li><em>Become very familiar</em> with it.<ul><li>Get involved on mailing lists, IRC, etc.</li><li>Discover problem areas. Use the issue tracker.</li><li>Learn about the processes. Some projects require contributions in only one form.</li></ul></li><li><em>Discuss</em> on resolving issues and adding features.</li><li><em>Submit</em> a patch.</li></ul></section>
<section class="topic source"><h2>Getting started with OSS</h2><ul><li>Be <em>courteous</em>.</li><li><em>Communicate</em> well. Be accurate with technical and project-specific jargon.</li><li>Learn the <em>political</em> waters. Every project has them.</li><li>Remember that you will make <em>mistakes</em>. Learn from them!</li></ul></section>
<section class="topic source"><h2>A sustained contribution model</h2><ul><li>Be <em>persistent</em>. Continued contributions build respect.</li><li>Become a committer. You can do anything now !<ul><li>…within reason :)</li></ul></li><li>Become very <em>knowledgeable</em> in an subject area. Create demand for you.</li><li>Be open to new <em>opportunities</em>:<ul><li><em>Presenting</em> at conferences</li><li><em>Reviewing</em> books about the project, or even <em>authoring</em> them.</li><li><em>Supporting</em> related projects that build on yours.</li><li><em>Consulting</em> for companies part/full-time.</li></ul></li></ul></section>
<section class="topic source"><h2>Reflect, recalibrate</h2><p><span class="image"><img src="images/ohloh-summary.png" alt="ohloh-summary"></span></p>
<details><details open=""><summary>Notes</summary><ul><li>Sustained contributions would see your credibility rise in the community.</li><li>Do not be place emphasis on the number of commits and other <em>gameable</em> figures.</li><li>Contributions to projects should be measured by "impact" through bug fixes affecting a large populace instead of micro-commits with no tangible value.</li></ul></details></details></section>
<section class="topic source"><h2>Reflect, recalibrate</h2><p><span class="image"><img src="images/ohloh-timeline.png" alt="ohloh-timeline"></span></p>
<details><details open=""><summary>Notes</summary><ul><li>My contributions started nearly two years ago. Life was better immediately (more or less).</li><li>There is a gap due to a consulting engagement that arose directly out of OSS contributions- ~ 6 months after the first commit to Arquillian.</li><li>Book deals and offers to review books came in rather rapidly (with a year of contributing to Arquillian).</li><li>Do not get discouraged by projects that are not enlisted. There’s several missing ones in this graph.</li><li>Focus on a select group of projects to maximize impact. You don’t want to be a casual contributor to be forgotten very easily.</li><li>In the context of GlusterFS, you’ll find related projects like Samba, NFS, OpenStack and OVirt.</li><li>And again don’t fret over numbers. The decrease is a result of moving into a <em>healthier, more sustainable</em> lifestyle to avoid burnout.</li></ul></details></details></section>
<section><p class="statement">The Gluster Community</p></section>
<section><blockquote><p>To create the world’s largest and most dynamic community for open software-defined storage</p><br><cite>The Gluster Community Goal</cite></blockquote>
<details><details open=""><summary>Notes</summary><ul><li>Software defined storage is a buzzword IMO.</li><li>You may have heard of IAAS, SAAS, PAAS etc. SDS is a part of ITAAS.</li><li>It means that storage is delivered as a service</li><li>Gluster wants to become the one stop shop for anything related to software related to storage as a service.</li></ul></details></details></section>
<section class="topic source"><h2>A bit of history</h2><ul><li>Starts as an attempt to build supercomputers using commodity hardware</li><li>Storage becomes a bigger challenge and focus shifts to GlusterFS</li><li>GlusterFS starts getting noticed and people start using it</li></ul>
<details><details open=""><summary>Notes</summary><ul><li>Create software that would aggregate the performance of many small, off-the-shelf computers and present it as a single supercomputer.</li><li>GlusterFS was started as a part of this larger project.</li><li>Creating a reliable and robust distributed filesystem was much larger of a challenge than expected.<ul><li>Availability, performance, correctness, etc.</li></ul></li><li>A standalone version of GlusterFS was released.<ul><li>Maybe v2</li></ul></li><li>Users like that GlusterFS is simple setup and use.</li></ul></details></details></section>
<section class="topic source"><h2>A bit of history</h2><ul><li>Better management arrives and adoption of GlusterFS increases</li><li>Red Hat becomes the primary sponsor for the Gluster community</li><li>Grows into a community for open source, software-defined storage</li></ul>
<details><details open=""><summary>Notes</summary><ul><li>Users still had to write configuration manually.</li><li>With the new distributed management framework (Glusterd), users only need to execute a few commands to get GlusterFS cluster running.</li><li>Gluster Inc was the primary sponsor till this time. Red Hat acquired Gluster Inc. in October 2011.</li><li>Red Hat launches a commercially supported version of GlusterFS called Red Hat Storage.</li><li>Interest in GlusterFS grew. There were more and more requests for collaboration with other projects.</li><li>So the community decided to change from being a single project community, to a multi-project one and become the premier community for open software defined storage.</li></ul></details></details></section>
<section class="topic source"><h2>So what is GlusterFS?</h2><p>GlusterFS is</p>
<ul><li>an open source, distributed, clustered, parallel, scale-out … filesystem</li><li>runs on commodity hardware</li><li>fully posix compliant</li><li>user friendly :)</li><li>easily extensible</li></ul>
<p>…and much more.</p>
<details><details open=""><summary>Notes</summary><ul><li>These are all the common adjectives used when describing GlusterFS.</li><li>Scale out vs Scale up - More cheaper and smaller machines vs A single big powerful machine</li><li>You don’t need specialized machines to run GlusterFS. Any normal computer would do.</li><li>You don’t need to rewrite applications to get them to use GlusterFS.</li><li>The gluster management framework makes it very easy to setup and deploy a GlusterFS filesystem.</li><li>GlusterFS has a modular architechture. The filesystem is made up of independent parts, each of which provides a single feature, which can be combined together to get the filesystem you want.</li><li>If you want a feature, you just write a translator.</li><li>There is not tie-in. GlusterFS doesn’t use any custom storage mechanisms. It lives on top of the underlying filesystem in your machine.</li><li>Your data is always available to you if you want to move away from GlusterFS.</li><li>Geo-replication, multiprotocol access, libgfapi etc.</li></ul></details></details></section>
<section class="topic source"><h2>Contributing to the GlusterFS community</h2><ul><li>Install and use GlusterFS<ul><li><a href="http://www.gluster.org/download">http://www.gluster.org/download</a></li><li><a href="http://www.gluster.org/QuickStart">http://www.gluster.org/QuickStart</a></li></ul></li><li>Join #gluster IRC channel on freenode.net</li><li>Subscribe to the gluster-users mailing list<ul><li><a href="http://www.gluster.org/interact/mailinglists/">http://www.gluster.org/interact/mailinglists/</a></li></ul></li><li>Interact with other users and give feedback</li><li>File bugs<ul><li><a href="https://bugzilla.redhat.com/enter_bug.cgi?product=GlusterFS">https://bugzilla.redhat.com/enter_bug.cgi?product=GlusterFS</a></li></ul></li></ul>
<details><details open=""><summary>Notes</summary><ul><li>Vineet mentioned earlier, it is preferable to chose a project which you use.</li><li>It is essential that you understand a project, before you contribute to it.</li><li>Because only when you understand it will you be able to contribute to its betterment.</li><li>The best way to understand is to use it.</li><li>Interact with other users. Ask questions. Get Answers. Answer someone elses questions.</li><li>Give feedback not just on the software, but also on documentation, processes and the community as well</li><li>Also remember to file bugs when you have problem. This will ensure your problem doesn’t go unnoticed.</li></ul></details></details></section>
<section class="topic source"><h2>Contributing to the GlusterFS project</h2><ul><li>Join #gluster-dev on freenode and the <a href="mailto:[email protected]">[email protected]</a> mailing list</li><li>Pick something you want to work on:<ul><li><a href="http://is.gd/glusterfs_new_bugs">http://is.gd/glusterfs_new_bugs</a></li><li><a href="http://is.gd/glusterfs_backlog">http://is.gd/glusterfs_backlog</a></li><li>If you want to do something not present in the above two places, start a discussion and get it on there</li></ul></li><li><strong>Read the development workflow</strong> document at <a href="http://gluster.org/simpledevworkflow">http://gluster.org/simpledevworkflow</a></li><li>Contribute code!</li></ul>
<details><details open=""><summary>Notes</summary><ul><li>All the technical discussions on gluster happen here.</li><li>Even if you don’t take an active part in the discussions in there you will learn a lot from just listening in.</li><li>glusterfs_new_bugs links to a bugzilla page with all GlusterFS bugs that haven’t been given attention.</li><li>We have a pretty significant bug backlog. It needs cleaning and is something the community is working on.</li><li>glusterfs_backlog links to list of things we want to do for GlusterFS. It contains mainly a curated list of features and bugs that want to be addressed.</li><li>The bug backlist is sure to have something small with which you could start.</li><li>You will have new ideas when you have used the software.</li><li>It is important that you go read and at least make an effort to understand the development workflow before you do you actual coding.</li><li>This will clear most of you doubts on the processes we follow for the GlusterFS project.</li><li>If you have doubts, get them cleared using the communication channels mentioned above.</li><li>Finally, contribute code.</li></ul></details></details></section>
<section class="topic source"><h2>Gluster community is more than GlusterFS</h2><ul><li>Register on <a href="http://forge.gluster.org">http://forge.gluster.org</a> - the home of Open Source software-defined storage development</li><li>Contribute to a project of your choice</li><li>…or start your own project and announce it to the community</li></ul>
<details><details open=""><summary>Notes</summary><ul><li>But the Gluster community is not just GlusterFS. It has multiple open source projects all centered around the central theme of storage.</li><li>And GlusterForge is where development on all these projects happen.</li><li>Project on the forge include<ul><li>newer features for GlusterFS like compression, erasure coding etc.</li><li>multiple integration efforts with other projects, ovirt for example</li><li>tools to further ease glusterfs deployment</li><li>monitoring tools</li><li>language bindings for libgfapi</li></ul></li></ul></details></details></section>
<section class="topic source"><h2>A Contest</h2><p>Kickstart your contributions with this small contest</p>
<ul><li>Visit <a href="http://titanpad.com/gluster-misspellings">http://titanpad.com/gluster-misspellings</a> and pick something to fix</li><li>Fix it and submit the fix</li><li>Show the submission at the Red Hat booth</li><li>Win goodies!!</li></ul>
<details><details open=""><summary>Notes</summary><ul><li>The intention here is to get you guys to install GlusterFS.</li><li>The actual intention is to get you familiarized with the GlusterFS contribution process.</li><li>We will be available to help you with any problems you may hit.</li><li>But don’t just stop at this. Continue with your contributions and become a part of the Gluster community.</li></ul></details></details></section>
<section class="topic source"><h2>Credits</h2><div class="admonitionblock note"><table><tr><td class="icon"><i class="icon-note" title="Note"></i></td><td class="content">Slides generated with Asciidoctor and DZSlides backend</td></tr></table></div>
<div class="admonitionblock note"><table><tr><td class="icon"><i class="icon-note" title="Note"></i></td><td class="content">Original slide template - Dan Allen & Sarah White</td></tr></table></div></section><script src="./dzslides/core/dzslides.js"></script><script src="./dzslides/highlight/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad()</script></body></html>