Skip to content

Latest commit

 

History

History
493 lines (398 loc) · 19.7 KB

slides.adoc

File metadata and controls

493 lines (398 loc) · 19.7 KB

Contribute to Open Source Software with Red Hat

!

Objectives
Learn how contributing to Open Source Software (OSS) helps you, and how to contribute.

Note
  • This is a talk focussed on illuminatng aspects of open source projects, to an audience not composed of active contributors.

  • It is to help interested individuals get started with contributing to open source.

  • You’ll eventually learn how contribute to GlusterFS later on in the talk, but the underlying principles are applicable to any project.

Why should you contribute to OSS?

  • OSS development == Real world development

  • Work on projects that matter

  • Build an independently verifiable resume

  • Work with and learn from Really Smart PeopleTM

Real world development

  • Collaborative, team-based work

  • Produce deliverables for end-users

  • Develop good practices on using good tools:

    • SCM - Git, SVN, Hg

    • Build - make, Maven, Gradle, Rake

    • CI - Jenkins, Go, Travis, Teamcity

    • Issue management - Bugzilla, JIRA, Mantis, Trac, Redmine

    • Review contributions - Gerrit, GitHub, Bitbucket

    • User documentation - Asciidoc, Docbook, Publican

Note
  • Working individually does not expose you to the challenges faced in real world projects.

  • It results in a lot of self-discovery with little or no reinforcement.

  • You may never converse with users about their problems and the features they need.

  • You may never work in a collaborative manner with other developers.

  • So no one reviews your code constructively, or builds on top of your code to offer more features.

  • 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.

  • 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

  • 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.

  • 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?

  • 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.

  • 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?

  • And have you ever considered publishing documentation. Be it library API guides for developers, or user guides for end-users?

  • 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.

Work on projects that matter

Good open source projects:

  • Do not exist for vanity

  • Target a particular problem or set of related problems

  • Provide solutions for businesses and individuals

They’re integral to today’s computing infrastructure.

Note
  • What happens when a business has a problem that requires a solution in software?

  • Buy a COTS solution. Or get some to write it.

  • COTS can be expensive. Starups generally dont like to fork out money for mundae stuff like OSes, databases, application servers, frameworks and libraries.

  • There’s no significant advantage to be gained in writing these from scratch either.

  • So, re-use software built by others that happen to do a good job for your business.

  • 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.

Work on projects that matter

  • Many open source projects are sponsored by foundations and large companies.

  • Contributions associate you with their work and culture.

  • Contributions also signal your knowledge about the problem and its solutions.

Foundations

Note
  • Open source has a viable business model because of the concept of professional open-source.

  • Companies pay individuals to build capabilities or maintain open-source software that they use.

  • 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?

  • When they use an OSS project, contributors stand to be the first to benefit, since they’re most qualified.

Some stats on the Linux Kernel

From the Annual Linux Development Report 2013

  • Nearly 10,000 developers from more than 1,000 companies

  • Contributions from 1,100 developers from 225 companies in 2012

  • with growing numbers from mobile and embedded industries.

Note
  • Need proof of companies investing in open source? Look no further.

  • Work done by contributors here find their way into the mainstream.

  • Servers in datacenters, laptops, workstations and Android devices all benefit from these contributions.

Some stats on the Linux Kernel

Top 10 organizations sponsoring development, from the Annual Linux Development Report 2013

  • Red Hat

  • Intel

  • Texas Instruments

  • Linaro

  • SUSE

  • IBM

  • Samsung

  • Google

  • Vision Engraving Systems Consultants

  • Wolfson Microelectronics

Note
  • And these are not done by small-timers.

  • The companies that happen to employ people to contribute to Linux have a vested stake in ensuring the success of their products and services.

  • 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.

Build an independently verifiable resume

Contributions are independently verifiable and undisputable facts.

Why does it matter?

Note
  • Speaking of career development, OSS contributions lend to a trustworthy resume.

  • Why should hiring managers trust OSS contributors more?

Build an independently verifiable resume

Independently Verifiable

  • The burden of proof is not always on you.

  • Contributions are public: they can be examined and verified by others.

  • Contributions can be verified in release notes, mailing list archives, bug trackers, commit logs, and more.

Note
  • 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.

  • Proof of involvement is not merely filed away somewhere and locked up in the attic.

  • 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.

  • Hiring managers can now verify the same data that they independently accessed.

Build an independently verifiable resume

Undisputable

  • Projects guarantee all accredidation is accurate.

  • An accepted contribution has added value to the project.

  • Your code speaks for itself.

Note
  • Projects do bookkeeping activities, and most of them are automated.

  • 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.

  • You may not get references from project leads and committers always, but it is not impossible.

!

…​ 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 …​
— Leslie Hawthorn

An example

stackoverflow resume
Note
  • Career portals now allow you to post open source projects that you’ve contributed to.

  • Needless to say, it makes sense to post those that have had an impact.

  • Be prepared to justify the importance of these projects to hiring managers who may not understand the community of users ;-)

Work with and learn from Really Smart PeopleTM

  • Smart people tend to work with other smart people.

  • An OSS project with smart people draws and fosters others.

  • Many of them will be glad to help you learn. Take them up on it.

  • Very high quality of discussion. No bike-shedding.

Note
  • If there’s one thing about smart people, it is that they spend time on working on non-trivial and complex stuff.

  • They try not to suffer the consequences of Parkinson’s law of triviality.

  • So, they try not to discuss how to color the bike shed, and instead debate on how to construct a nuclear reactor.

Work with and learn from really Smart PeopleTM

Learning takes many forms:

  • Understanding and fixing bugs.

  • Performing code reviews or having your code reviewed.

  • Deliberation over ideas.

  • Designing and implementing new features.

If you are engaged in the project, you will be learning.

Note
  • Working with smart people does not mean that you are casually employed with them. You need to engage with them everyday if possible.

  • You need to ensure that ideas, features and bug fixes, are reviewed by them.

  • Understand their way of doing things. They are very rational beings and often have reasons to do things in a particular manner.

  • Doing this over a course of time increases your engagement with the project.

  • Engaging work increases cognitive function. This is a physiological behavior associated with dopamine. Working on stuff you like sometimes actually makes you smarter.

Getting started with OSS

  • Choose a project to contribute to.

    • Preferably one that you already use.

  • Become very familiar with it.

    • Get involved on mailing lists, IRC, etc.

    • Discover problem areas. Use the issue tracker.

    • Learn about the processes. Some projects require contributions in only one form.

  • Discuss on resolving issues and adding features.

  • Submit a patch.

Getting started with OSS

  • Be courteous.

  • Communicate well. Be accurate with technical and project-specific jargon.

  • Learn the political waters. Every project has them.

  • Remember that you will make mistakes. Learn from them!

A sustained contribution model

  • Be persistent. Continued contributions build respect.

  • Become a committer. You can do anything now !

    • …​within reason :)

  • Become very knowledgeable in an subject area. Create demand for you.

  • Be open to new opportunities:

    • Presenting at conferences

    • Reviewing books about the project, or even authoring them.

    • Supporting related projects that build on yours.

    • Consulting for companies part/full-time.

Reflect, recalibrate

ohloh summary

Note
  • Sustained contributions would see your credibility rise in the community.

  • Do not be place emphasis on the number of commits and other 'gameable' figures.

  • Contributions to projects should be measured by "impact" through bug fixes affecting a large populace instead of micro-commits with no tangible value.

Reflect, recalibrate

ohloh timeline

Note
  • My contributions started nearly two years ago. Life was better immediately (more or less).

  • There is a gap due to a consulting engagement that arose directly out of OSS contributions- ~ 6 months after the first commit to Arquillian.

  • Book deals and offers to review books came in rather rapidly (with a year of contributing to Arquillian).

  • Do not get discouraged by projects that are not enlisted. There’s several missing ones in this graph.

  • Focus on a select group of projects to maximize impact. You don’t want to be a casual contributor to be forgotten very easily.

  • In the context of GlusterFS, you’ll find related projects like Samba, NFS, OpenStack and OVirt.

  • And again don’t fret over numbers. The decrease is a result of moving into a 'healthier, more sustainable' lifestyle to avoid burnout.

!

The Gluster Community

!

To create the world’s largest and most dynamic community for open software-defined storage
— The Gluster Community Goal
Note
  • Software defined storage is a buzzword IMO.

  • You may have heard of IAAS, SAAS, PAAS etc. SDS is a part of ITAAS.

  • It means that storage is delivered as a service

  • Gluster wants to become the one stop shop for anything related to software related to storage as a service.

A bit of history

  • Starts as an attempt to build supercomputers using commodity hardware

  • Storage becomes a bigger challenge and focus shifts to GlusterFS

  • GlusterFS starts getting noticed and people start using it

Note
  • Create software that would aggregate the performance of many small, off-the-shelf computers and present it as a single supercomputer.

  • GlusterFS was started as a part of this larger project.

  • Creating a reliable and robust distributed filesystem was much larger of a challenge than expected.

    • Availability, performance, correctness, etc.

  • A standalone version of GlusterFS was released.

    • Maybe v2

  • Users like that GlusterFS is simple setup and use.

A bit of history

  • Better management arrives and adoption of GlusterFS increases

  • Red Hat becomes the primary sponsor for the Gluster community

  • Grows into a community for open source, software-defined storage

Note
  • Users still had to write configuration manually.

  • With the new distributed management framework (Glusterd), users only need to execute a few commands to get GlusterFS cluster running.

  • Gluster Inc was the primary sponsor till this time. Red Hat acquired Gluster Inc. in October 2011.

  • Red Hat launches a commercially supported version of GlusterFS called Red Hat Storage.

  • Interest in GlusterFS grew. There were more and more requests for collaboration with other projects.

  • 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.

So what is GlusterFS?

GlusterFS is

  • an open source, distributed, clustered, parallel, scale-out …​ filesystem

  • runs on commodity hardware

  • fully posix compliant

  • user friendly :)

  • easily extensible

…​and much more.

Note
  • These are all the common adjectives used when describing GlusterFS.

  • Scale out vs Scale up - More cheaper and smaller machines vs A single big powerful machine

  • You don’t need specialized machines to run GlusterFS. Any normal computer would do.

  • You don’t need to rewrite applications to get them to use GlusterFS.

  • The gluster management framework makes it very easy to setup and deploy a GlusterFS filesystem.

  • 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.

  • If you want a feature, you just write a translator.

  • There is not tie-in. GlusterFS doesn’t use any custom storage mechanisms. It lives on top of the underlying filesystem in your machine.

  • Your data is always available to you if you want to move away from GlusterFS.

  • Geo-replication, multiprotocol access, libgfapi etc.

Contributing to the GlusterFS community

Note
  • Vineet mentioned earlier, it is preferable to chose a project which you use.

  • It is essential that you understand a project, before you contribute to it.

  • Because only when you understand it will you be able to contribute to its betterment.

  • The best way to understand is to use it.

  • Interact with other users. Ask questions. Get Answers. Answer someone elses questions.

  • Give feedback not just on the software, but also on documentation, processes and the community as well

  • Also remember to file bugs when you have problem. This will ensure your problem doesn’t go unnoticed.

Contributing to the GlusterFS project

Note
  • All the technical discussions on gluster happen here.

  • Even if you don’t take an active part in the discussions in there you will learn a lot from just listening in.

  • glusterfs_new_bugs links to a bugzilla page with all GlusterFS bugs that haven’t been given attention.

  • We have a pretty significant bug backlog. It needs cleaning and is something the community is working on.

  • 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.

  • The bug backlist is sure to have something small with which you could start.

  • You will have new ideas when you have used the software.

  • It is important that you go read and at least make an effort to understand the development workflow before you do you actual coding.

  • This will clear most of you doubts on the processes we follow for the GlusterFS project.

  • If you have doubts, get them cleared using the communication channels mentioned above.

  • Finally, contribute code.

Gluster community is more than GlusterFS

  • Register on http://forge.gluster.org - the home of Open Source software-defined storage development

  • Contribute to a project of your choice

  • …​or start your own project and announce it to the community

Note
  • But the Gluster community is not just GlusterFS. It has multiple open source projects all centered around the central theme of storage.

  • And GlusterForge is where development on all these projects happen.

  • Project on the forge include

    • newer features for GlusterFS like compression, erasure coding etc.

    • multiple integration efforts with other projects, ovirt for example

    • tools to further ease glusterfs deployment

    • monitoring tools

    • language bindings for libgfapi

A Contest

Kickstart your contributions with this small contest

Note
  • The intention here is to get you guys to install GlusterFS.

  • The actual intention is to get you familiarized with the GlusterFS contribution process.

  • We will be available to help you with any problems you may hit.

  • But don’t just stop at this. Continue with your contributions and become a part of the Gluster community.

Credits

Note
Slides generated with Asciidoctor and DZSlides backend
Note
Original slide template - Dan Allen & Sarah White