KEMBAR78
Open source and then some: An Introduction | PPTX
Open Source and
then some
How a printer and few geeks
revolutionized computing
Created by: AkashTandon
Email: akashtndn.acm@gmail.com
Linkedin: https://in.linkedin.com/in/akashtandon
Richard Stallman
Founder of the
Free Software Movement
Linus Torvalds
Creator of the
Linux Kernel
(and more lately, git)
Eric Raymonds’
“Cathedral and the Bazaar”
What is Open-Source?
(Wild guesses often work in the most unexpected of ways)
What is Open-Source?
Open source doesn't just mean access to the source code.The distribution
terms of open-source software must comply with the following criteria:
• Free redistribution
• Source Code
• Derived works
• Integrity of the author’s source code
• No discrimination against persons or any groups
• No discrimination against fields of endeavour
• Distribution of the license
• License must not be specific to a product
• License must not restrict other software
• License must be technology-neutral
About Linux and a brief
history lesson
How can you chip in?
Hint: Not that difficult.
No, seriously!
Open Source Projects/Organizations
 Individual projects relate to the development of a single software, or group of software.
e.g. Linux, Apache HTTP web server, Git, etc.
 Each project has its own philosophy, hierarchy, development methodology, coding style, etc.
 Often open-source projects related to similar technologies operate under the umbrella of a
single organization.
e.g. The Linux foundation, Apache Software foundation, Python Software Foundation.
 These organizations may be registered non-profits, corporate entities, or just a bunch of
people who organized themselves.
A word about version control
 Before we dive in into the basics of how to start contributing to a project of your choice,
it would be useful to know a thing or two about version control.
 As you must understand by now (hopefully), a major part of open-source development is
developing and collaborating on the source code of individual software/projects.
 Such type of collaboration means a lot of people (even hundreds) working on the same
pieces of code simultaneously. Sounds like a chaotic bazaar, doesn’t it?
 To manage collaborations on code, certain software systems are used.They are known as
version control.They record changes to a file or a set of files over time, and are extremely
important tools in a developer’s arsenal. E.g. Git (rocks!) and Subversion (meh).
A word about version control (continued)
 Knowledge of the right version control system (more often than not, git) is essential
as you begin your open-source journey.
 Moving forward, we will assume that you can use perform basic operations using Git.
The basic operations being the ability to copy the source code onto your local system
from a remote host and make changes to the source code. And also to host your
version of code online or ask the original developers to look into your code for inclusion
in the main source code.
 Remember, the above description is a toned-down version and entire books have been
written only about git itself. But understanding the above for now would do!
And don’t worry, a workshop is to follow pretty soon in order to cover the
Basics ofGit.
Finding the right organization/project
 Searching the web (Google, DuckDuckGo, Quora, etc.) can be a pretty good start.
Even a search as simple “Python Django open source projects” will return multiple
useful hits.
 Organization lists’ from previous yearGSoC can be an extremely useful resource in
your search.You can get an idea about the type of projects for particular organizations.
e.g. For the 2015 list, go to
https://www.google-melange.com/gsoc/projects/list/google/gsoc2015
 Search for projects onGithub*.A huge number of Open-Source projects are hosted
there nowadays.The option to filter according the involved programming languages
is provided. Pretty darn useful, I’d say!
*Github is an online service for hosting git repositories/files using git.
Finding the right project (continued)
Finding the right project (continued)
But is it really the right project?!
 Some quick searches to begin with surely help. But there’s a deeper method involved
to make sure that you end up with the right project.
 Answer the below questions to find the right fit:
->What open-source software do you use?
->What are your professional interests?
->What are your hobbies?
->What is your skill set?
->What do you want out of your involvement with Open-Source?
 And then, shortlist, ask around about them (fellow developers in college, on forums)
and evaluate your options before zeroing in on a project.
All set now.Time to start contributing!
Err… but where to start?
How to start contributing?
 Once a project is found, its helpful to look at it from a user’s perspective.
Install it, use it and play with it.
 Reading its source code can be extremely helpful. Moreover, in your
Open-Source journey you will be required to do this a lot. Start practising!
 Individual projects have “contribution guides/how-to-contribute docs/
developer guides”.They are very often well-developed and lay down the
general guidelines.Try to follow them.
Try to find
something like this!
How to start contributing (continued)
Snapshot of Linux’s
source code.
How to start contributing? (continued)
 Once somewhat acquainted with the project or if stuck/facing issues,
contact the involved personnel through the proper channels.
 Mailing lists and IRC channels are two of the most popular modes of
communication in the open-source ecosystem.
 When communicating, try to follow certain etiquettes.
Basic stuff like: -> NEVER SHOUT!
-> Be considerate. Don’t be pushy.
-> Be to-the-point. Being vague won’t help.
-> Do your research before asking questions.
 Search “Open Source communication etiquettes” for more about this.
A word about IRC
 IRC stands for internet relay chat. It’s a communication protocol.What we
are interested in are IRC clients and channels; methods to use the protocol.
 Internet RelayChat is much like your instant messengers, but is devoid of
spam or general security risks that other IM services often allow.
 You will need to download a suitable IRC client.
e.g. HexChat (for Windows), Xchat, Pidgin (For Linux), etc.
 Using the client, you can connect to multiple networks and each network
contains numerous channels.
E.g. Freenode (one of the most popular IRC channels).
 On the contact information of the relevant project/organization, the network
and channel info would be provided. Join them and you are good to go!
SNAPSHOTSON NEXT PAGE
A word about IRC (continued)
Join a network Join a network
Perks of going the
Open Source
way
The real deal
 This one’s kind of obvious. Open-Source is the real deal. It’s creating stuff for the
real world, not classroom assignments. It’s hard work but once all is said and
done, you will be a much better programmer/developer/co-worker than when
you had started out.
 If done right, you will have had ample practise reading large number of lines of code
like a pro. Reading varied styles of code is an important step towards becoming
a better programmer. Some of the world’s best programmers are working on open-
source projects. Nothing like diving into the coding styles of some of the very best!
 The myth of the “lone super-programmer” is exactly that; a myth. Even the very best
can’t produce world-quality software code all on their own.They need to work with
others. Open-Source projects give you the perfect platform to collaborate.
Speaking of collaboration…
Learn to work together
 While working on open-source projects, a lot of code is passed around.
Even if the code is technically top-notch, its no good if the other person
can’t comprehend what’s going on in your code.
 As you work on projects and read code of some of the top developers, you
will learn how to write ‘readable code’.Code which can be read and
comprehended by others and also by yourself six months down the line.
 Coding style guides are available for different programming languages on
the internet. Go through the one for your favourite programming language.
 The requirement to write good-quality code transcends just OS. Even when
working at a traditional coding job at an MNC, such an ability would be
appreciated.
Speaking of large corporations…
Large companies are going
the Open Source way
 The 9th annual Future of Open Source survey (April, 2015) revealed that almost
78% of software companies are using OS software to run several of their
critical processes.
 The same survey revealed that majority of the companies are having trouble
managing their OS stack.
 Many large companies and several prominent start-ups are involved and have
invested in Open Source in a big way.
E.g. Facebook, Google, Twitter, Sqore, Microsoft, etc.
 More and more personnel adept in the ways of Open Source would be required
in the future.
 For companies like Google, getting involved in Open Source is a community-
building exercise rather than a business one.
And that brings us to…
*Insert joke about badass design/editing skills*
Conferences, meet-ups
and mentors
Keep hacking!

Open source and then some: An Introduction

  • 2.
    Open Source and thensome How a printer and few geeks revolutionized computing Created by: AkashTandon Email: akashtndn.acm@gmail.com Linkedin: https://in.linkedin.com/in/akashtandon
  • 4.
    Richard Stallman Founder ofthe Free Software Movement
  • 5.
    Linus Torvalds Creator ofthe Linux Kernel (and more lately, git)
  • 6.
  • 7.
    What is Open-Source? (Wildguesses often work in the most unexpected of ways)
  • 8.
    What is Open-Source? Opensource doesn't just mean access to the source code.The distribution terms of open-source software must comply with the following criteria: • Free redistribution • Source Code • Derived works • Integrity of the author’s source code • No discrimination against persons or any groups • No discrimination against fields of endeavour • Distribution of the license • License must not be specific to a product • License must not restrict other software • License must be technology-neutral
  • 9.
    About Linux anda brief history lesson
  • 10.
    How can youchip in? Hint: Not that difficult. No, seriously!
  • 11.
    Open Source Projects/Organizations Individual projects relate to the development of a single software, or group of software. e.g. Linux, Apache HTTP web server, Git, etc.  Each project has its own philosophy, hierarchy, development methodology, coding style, etc.  Often open-source projects related to similar technologies operate under the umbrella of a single organization. e.g. The Linux foundation, Apache Software foundation, Python Software Foundation.  These organizations may be registered non-profits, corporate entities, or just a bunch of people who organized themselves.
  • 12.
    A word aboutversion control  Before we dive in into the basics of how to start contributing to a project of your choice, it would be useful to know a thing or two about version control.  As you must understand by now (hopefully), a major part of open-source development is developing and collaborating on the source code of individual software/projects.  Such type of collaboration means a lot of people (even hundreds) working on the same pieces of code simultaneously. Sounds like a chaotic bazaar, doesn’t it?  To manage collaborations on code, certain software systems are used.They are known as version control.They record changes to a file or a set of files over time, and are extremely important tools in a developer’s arsenal. E.g. Git (rocks!) and Subversion (meh).
  • 13.
    A word aboutversion control (continued)  Knowledge of the right version control system (more often than not, git) is essential as you begin your open-source journey.  Moving forward, we will assume that you can use perform basic operations using Git. The basic operations being the ability to copy the source code onto your local system from a remote host and make changes to the source code. And also to host your version of code online or ask the original developers to look into your code for inclusion in the main source code.  Remember, the above description is a toned-down version and entire books have been written only about git itself. But understanding the above for now would do! And don’t worry, a workshop is to follow pretty soon in order to cover the Basics ofGit.
  • 15.
    Finding the rightorganization/project  Searching the web (Google, DuckDuckGo, Quora, etc.) can be a pretty good start. Even a search as simple “Python Django open source projects” will return multiple useful hits.  Organization lists’ from previous yearGSoC can be an extremely useful resource in your search.You can get an idea about the type of projects for particular organizations. e.g. For the 2015 list, go to https://www.google-melange.com/gsoc/projects/list/google/gsoc2015  Search for projects onGithub*.A huge number of Open-Source projects are hosted there nowadays.The option to filter according the involved programming languages is provided. Pretty darn useful, I’d say! *Github is an online service for hosting git repositories/files using git.
  • 16.
    Finding the rightproject (continued)
  • 17.
    Finding the rightproject (continued)
  • 18.
    But is itreally the right project?!  Some quick searches to begin with surely help. But there’s a deeper method involved to make sure that you end up with the right project.  Answer the below questions to find the right fit: ->What open-source software do you use? ->What are your professional interests? ->What are your hobbies? ->What is your skill set? ->What do you want out of your involvement with Open-Source?  And then, shortlist, ask around about them (fellow developers in college, on forums) and evaluate your options before zeroing in on a project. All set now.Time to start contributing! Err… but where to start?
  • 19.
    How to startcontributing?  Once a project is found, its helpful to look at it from a user’s perspective. Install it, use it and play with it.  Reading its source code can be extremely helpful. Moreover, in your Open-Source journey you will be required to do this a lot. Start practising!  Individual projects have “contribution guides/how-to-contribute docs/ developer guides”.They are very often well-developed and lay down the general guidelines.Try to follow them. Try to find something like this!
  • 20.
    How to startcontributing (continued) Snapshot of Linux’s source code.
  • 21.
    How to startcontributing? (continued)  Once somewhat acquainted with the project or if stuck/facing issues, contact the involved personnel through the proper channels.  Mailing lists and IRC channels are two of the most popular modes of communication in the open-source ecosystem.  When communicating, try to follow certain etiquettes. Basic stuff like: -> NEVER SHOUT! -> Be considerate. Don’t be pushy. -> Be to-the-point. Being vague won’t help. -> Do your research before asking questions.  Search “Open Source communication etiquettes” for more about this.
  • 22.
    A word aboutIRC  IRC stands for internet relay chat. It’s a communication protocol.What we are interested in are IRC clients and channels; methods to use the protocol.  Internet RelayChat is much like your instant messengers, but is devoid of spam or general security risks that other IM services often allow.  You will need to download a suitable IRC client. e.g. HexChat (for Windows), Xchat, Pidgin (For Linux), etc.  Using the client, you can connect to multiple networks and each network contains numerous channels. E.g. Freenode (one of the most popular IRC channels).  On the contact information of the relevant project/organization, the network and channel info would be provided. Join them and you are good to go! SNAPSHOTSON NEXT PAGE
  • 23.
    A word aboutIRC (continued) Join a network Join a network
  • 24.
    Perks of goingthe Open Source way
  • 25.
    The real deal This one’s kind of obvious. Open-Source is the real deal. It’s creating stuff for the real world, not classroom assignments. It’s hard work but once all is said and done, you will be a much better programmer/developer/co-worker than when you had started out.  If done right, you will have had ample practise reading large number of lines of code like a pro. Reading varied styles of code is an important step towards becoming a better programmer. Some of the world’s best programmers are working on open- source projects. Nothing like diving into the coding styles of some of the very best!  The myth of the “lone super-programmer” is exactly that; a myth. Even the very best can’t produce world-quality software code all on their own.They need to work with others. Open-Source projects give you the perfect platform to collaborate. Speaking of collaboration…
  • 26.
    Learn to worktogether  While working on open-source projects, a lot of code is passed around. Even if the code is technically top-notch, its no good if the other person can’t comprehend what’s going on in your code.  As you work on projects and read code of some of the top developers, you will learn how to write ‘readable code’.Code which can be read and comprehended by others and also by yourself six months down the line.  Coding style guides are available for different programming languages on the internet. Go through the one for your favourite programming language.  The requirement to write good-quality code transcends just OS. Even when working at a traditional coding job at an MNC, such an ability would be appreciated. Speaking of large corporations…
  • 27.
    Large companies aregoing the Open Source way  The 9th annual Future of Open Source survey (April, 2015) revealed that almost 78% of software companies are using OS software to run several of their critical processes.  The same survey revealed that majority of the companies are having trouble managing their OS stack.  Many large companies and several prominent start-ups are involved and have invested in Open Source in a big way. E.g. Facebook, Google, Twitter, Sqore, Microsoft, etc.  More and more personnel adept in the ways of Open Source would be required in the future.  For companies like Google, getting involved in Open Source is a community- building exercise rather than a business one. And that brings us to…
  • 28.
    *Insert joke aboutbadass design/editing skills*
  • 29.
  • 30.