SlideShare ist ein Scribd-Unternehmen logo
1 von 265
Downloaden Sie, um offline zu lesen
THE HITCHHIKER'S GUIDE
TO
FREE AND OPEN
SOURCE
SOFTWARE
DEVELOPMENT
@elequ or elena
INTERESTING
TIMES

~ stream-lined communication
~ broad acceptance of technology
Golden age
WHY?
“DO” OPEN SOURCE

Who here
YOU
PUBLIC CODE PRESENCE IS
ATTRACTIVE TO
POTENTIAL
EMPLOYERS

support companies can hire what they see …
Hardware vendors have a big market for FOSS devs so that foss will work on their devices.
PUBLIC CODE PRESENCE IS
THE BEST CV EVA
Bitbucket

Gitorious

CloudForge

Google Code

CodePlex

Launchpad

GitHub

SourceForge
github.com

bitbucket.org
WHY?
“DO” OPEN SOURCE
OPPORTUNITY

if you want to be good
WHY?
“DO” OPEN SOURCE
OPPORTUNITY
People
Projects

best people that there are ...
WHO
“DOES” OPEN SOURCE
WHO
“DOES” OPEN SOURCE
INVOLVEMENT
Creator
Contributor
User
WHO
“DOES” OPEN SOURCE
INVOLVEMENT

USAGE

Creator

Personal

Contributor

Professional/
Corporate

User
WHO
“DOES” OPEN SOURCE
INVOLVEMENT

USAGE

Creator

Personal

Contributor

Professional/
Corporate

User

Hobby
WHO
“DOES” OPEN SOURCE
INVOLVEMENT

USAGE

Creator

Personal

Contributor

Professional/
Corporate

User

Hobby
Resource
WHY?
“DO” OPEN SOURCE
Open source
provides a unique opportunity
for the trifecta of
purpose,
mastery
and
autonomy.
WHY?
“DO” OPEN SOURCE
Learning
Socialising
Minions
Glory!
World Domination
WHY?
“DO” OPEN SOURCE
SOCIAL
Working with others
Working with people better than you
Exposure to other styles
Get exposure for your project
WHY?
“DO” OPEN SOURCE
EDUCATION
Opportunity to learn from others
Learn to avoid pitfalls/gotchas
Fast intro to common patterns

It’s exhausting
WHY?
“DO” OPEN SOURCE
SKILL UP
Try out new ideas.
Try out new technology.
Try out development, unstable versions.
Do things you don’t do “during the day”.

It’s exhausting
WHY?
“DO” OPEN SOURCE
ETHICS/VALUES
Political Reasons
Altruism
Democracy/Meritocracy
WHY?
“DO” OPEN SOURCE
BUSINESS
Best Solution Available
Makes Sense for the Project
WHY?
BUSINESS REASONS
• Security

• Interoperability

• Quality

• Auditability

• Customisability

• Support

• Freedom

• Cost

• Flexibility

• Try-Before-You-Buy

Options
QUALITY
“If you have enough
eyeballs all bugs
are shallow.”
Linus’ Law
(actually pre-dates him)
CHOICE AND TRUST
No need to trust software vendor.
Choice to fix yourself.
Right to fork if disagree.
Can contribute.

It’s healthy to question your own work!
It’s healthy to freely collaborate!
PRACTICAL terms
WHAT IS
“OPEN SOURCE”
ANYWAY?
FREEDOM
FREEDOM
Free as in “Beer”
FREEDOM
Free as in “Speech”
or as in “Thought”
PROGRESS
community that emphasises the individual over the “organisation”
vs.
company presents a facade
IN THE BEGINNING
... was the
Command Line
IN THE BEGINNING
... was the
Command Line
IN THE BEGINNING
... was the
incident at MIT Artificial Intelligence Labs
with the printer drivers in about 1971
[COOKING]
SOFTWARE SHOULD BE ...
Completely PRIVATE

v.

Completely FREE
SOFTWARE SHOULD BE ...
Completely PRIVATE
Sell
v.
Share
Completely FREE
SOFTWARE SHOULD BE ...
Completely PRIVATE

v.

Completely FREE
SOFTWARE SHOULD BE ...
Completely PRIVATE
(Bill Gates)

..
v.

(Richard Stallman)
Completely FREE
SOFTWARE SHOULD BE ...
Completely PRIVATE

v.

Completely FREE
SOFTWARE SHOULD BE ...
Completely PRIVATE
Corporations
v.
Hackers
Completely FREE
SOFTWARE SHOULD BE ...
Completely PRIVATE

v.

Completely FREE

rights individual
higher purpose
progress of technology
SOFTWARE SHOULD BE ...
Completely PRIVATE
Protect Owner
v.
Protect Freedom
Completely FREE

rights individual
higher purpose
progress of technology
SOFTWARE SHOULD BE ...
Completely PRIVATE

v.

Completely FREE

These rules hadn’t been made up
In wasn’t obvious
SOFTWARE SHOULD BE ...
Completely PRIVATE
Product
v.
Individual
Completely FREE

These rules hadn’t been made up
In wasn’t obvious
SOFTWARE SHOULD BE ...

... THE AUTHOR DECIDES
COPYRIGHT
AUTOMATICALLY GRANTS AUTHOR
EXCLUSIVELY RIGHT TO:
To produce copies or reproductions to sell or distribute.
Create derivative works.
To perform or display the work publicly;
To transmit, import or export the work.

This is the essence of why licenses matter.
AUTOMATICALLY GRANTS AUTHOR
EXCLUSIVELY RIGHT TO:
To produce copies or reproductions to sell or distribute.
Create derivative works.
To perform or display the work publicly;
To transmit, import or export the work.
NO ONE ELSE CAN DO THESE THINGS
WITHOUT THE AUTHOR’S PERMISSION
This is the essence of why licenses matter.
AUTOMATICALLY GRANTS AUTHOR
EXCLUSIVELY RIGHT TO:
To produce copies or reproductions to sell or distribute.
Create derivative works.
To perform or display the work publicly;
To transmit, import or export the work.
NO ONE ELSE CAN DO THESE THINGS
WITHOUT THE AUTHOR’S PERMISSION
If they do, the author can sue.
This is the essence of why licenses matter.
COPYLEFT
ORIGINAL SOFTWARE
FREEDOMS (~1976)
* The freedom to run the program, for any purpose.
* The freedom to study how the program works, and adapt
it to your needs.
* The freedom to redistribute.
* The freedom to improve the program, and release your
improvements (and modified versions in general)
Access to the source code is a precondition.
(obviously)
OPEN SOURCE DEFINITION
1. Free Redistribution
2. Source Code
3. Derived Works
4. Integrity of The Author's Source Code
5. No Discrimination Against Persons or Groups
Things that are explicitly stated.
OPEN SOURCE DEFINITION
1. Free Redistribution
~ as in beer -- no royalties or fees
2. Source Code
3. Derived Works
4. Integrity of The Author's Source Code
5. No Discrimination Against Persons or Groups
Things that are explicitly stated.
OPEN SOURCE DEFINITION
1. Free Redistribution
~ as in beer -- no royalties or fees
2. Source Code
~ not obfuscated or require preprocessor, translator, etc
3. Derived Works
4. Integrity of The Author's Source Code
5. No Discrimination Against Persons or Groups
Things that are explicitly stated.
OPEN SOURCE DEFINITION
1. Free Redistribution
~ as in beer -- no royalties or fees
2. Source Code
~ not obfuscated or require preprocessor, translator, etc
3. Derived Works
~ can be remixed
4. Integrity of The Author's Source Code
5. No Discrimination Against Persons or Groups
Things that are explicitly stated.
OPEN SOURCE DEFINITION
1. Free Redistribution
~ as in beer -- no royalties or fees
2. Source Code
~ not obfuscated or require preprocessor, translator, etc
3. Derived Works
~ can be remixed
4. Integrity of The Author's Source Code
~ rename your version
5. No Discrimination Against Persons or Groups
Things that are explicitly stated.
OPEN SOURCE DEFINITION
6. No Discrimination Against Fields of Endeavor
7. Distribution of License
8. License Must Not Be Specific to a Product
9. License Must Not Restrict Other Software
10. License Must Be Technology-Neutral

Need to be specified because they’ve been challenged
OPEN SOURCE DEFINITION
6. No Discrimination Against Fields of Endeavor
~ eg. commercial use or “values” (genetic research)
7. Distribution of License
8. License Must Not Be Specific to a Product
9. License Must Not Restrict Other Software
10. License Must Be Technology-Neutral

Need to be specified because they’ve been challenged
OPEN SOURCE DEFINITION
6. No Discrimination Against Fields of Endeavor
~ eg. commercial use or “values” (genetic research)
7. Distribution of License
~ applies to next person down, but not next after that
8. License Must Not Be Specific to a Product
9. License Must Not Restrict Other Software
10. License Must Be Technology-Neutral

Need to be specified because they’ve been challenged
OPEN SOURCE DEFINITION
6. No Discrimination Against Fields of Endeavor
~ eg. commercial use or “values” (genetic research)
7. Distribution of License
~ applies to next person down, but not next after that
8. License Must Not Be Specific to a Product
... except if being repackaged and redistributed
9. License Must Not Restrict Other Software
10. License Must Be Technology-Neutral

Need to be specified because they’ve been challenged
OPEN SOURCE DEFINITION
6. No Discrimination Against Fields of Endeavor
~ eg. commercial use or “values” (genetic research)
7. Distribution of License
~ applies to next person down, but not next after that
8. License Must Not Be Specific to a Product
... except if being repackaged and redistributed
9. License Must Not Restrict Other Software
10. License Must Be Technology-Neutral
~ platform or “style of interface”
Need to be specified because they’ve been challenged
PROPRIETARY
OPEN SOURCE?
CAN:
give away source and accepted changes
(for free as in beer)
CANNOT:
use the term “Open Source”
as it’s trademarked
PROPRIETARY
OPEN SOURCE?
For your own sake be aware
of where you’re directing your efforts.
LIABILITY
Giving away for free (as in beer)
does not exempt
from being sued.

“This program comes with
ABSOLUTELY NO WARRANTY”

lifesaving
landing aircraft
OPEN SOURCE
PHILOSOPHISING
Traditional FOSS projects have
strong technical focus
and tend to avoid philosophy.
There are dedicated channels for
talking about FOSS philosophy and principles.
In more modern projects there is a resurgence in
interest if you learn some background.
Aaron Schwartz
FREE AND OPEN
SOURCE
SOFTWARE
PROJECTS
ACTUALLY LOOKS LIKE THIS:
Mailing Lists

ACTUALLY LOOKS LIKE THIS:
Mailing Lists

IRC

ACTUALLY LOOKS LIKE THIS:
Bug/Issue Tracking
Bug/Issue Tracking

AND THIS ...
BUT SRSLY ...
Completely PRIVATE
Product
v.

INDIVIDUAL
Completely FREE
community that emphasises the individual over the company
vs.
company presents a facade
One of most important messages of this talk!
Beautiful bouquet that is humanity
EVERY
PROJECT
is
DIFFERENT

One of most important messages of this talk!
Beautiful bouquet that is humanity
COMMUNITY CULTURE
IS NOT SCIENCE
You can not independently derive this stuff.
... and no one expects you to.
Do your research and listen.
Follow the precedent.
PROJECT
TECHNICAL
SPECIFICS
PROJECT
TECHNICAL SPECS
How:
responsive, receptive and welcoming
will vary dramatically
PROJECT VARIABLES
• Technology

Andrew Tridgell says: spend a couple of weekends or whatever
PROJECT VARIABLES
• What’s

its scope?

• What’s

• Technology

its profile?

• How

big is it?

• How

old is it?

• Where
• How

in its lifecycle it is?

active is it?

Andrew Tridgell says: spend a couple of weekends or whatever
PROJECT VARIABLES
• Technology

• What’s

its scope?

• Who?

• What’s

its profile?

• How

well organised is it?

• How

big is it?

• How

is it structured?

• How

old is it?

• How

are decisions made?

• Where

• How

does it communicate? • How active is it?

in its lifecycle it is?

Andrew Tridgell says: spend a couple of weekends or whatever
PROJECT VARIABLES

TECHNOLOGY
Technical Depth
[many possible dimensions]

you know what? scratch that, I’m actually going to come back to this later.
PROJECT VARIABLES

What’s its scope?
[Linux Kernel .. .. some niche script]
What’s its profile?
[Python .. .. some widget]
PROJECT VARIABLES
How old is it?
FOSS Projects are hard to kill.
Where in its lifecycle it is?
[Alpha .. .. Established]
Where in its story arc it is?
[Surging .. Stable .. Dying]
samba died twice
dead cat bounce
PROJECT VARIABLES
How big is the codebase?
How big is the program/application?
[Twitter .. .. ]

Sometime big codebase on small application
is a good thing.
PROJECT VARIABLES
How big is the community?
What kind of people are in the community?
[technical, organisational, social, experimental ...]
PROJECT VARIABLES
CATHEDRAL
PROJECT VARIABLES
CATHEDRAL

v.

BAZAAR
PROJECT VARIABLES
How active is it?
[17K emails/month .. .. couple of patches/year]
Faster moving is less tolerant.
Bigger can be more tolerant.
WELCOMING COMMITTEE
Projects might have someone whose role is
to guide new people.
Apache have a whole system.
The project leader might give you
all the time in the world
for a brand new project.
There will probably be nothing at all.
this week, we found a big in plug in
made a patch
it was pushed and released in about 15 minutes
PROJECT VARIABLES
SUMMARY

You will have
completely different experiences
depending on the project.
PROJECT VARIABLES
SUMMARY

Have a basic idea
of the nature of the project
before diving in.
It’ll grease the rails,
make it easy for yourself.
PROJECT
GOVERNANCE
(PEOPLE)
DECISIONS
NEED TO BE MADE
Design
Legal/License
Development Environments and Tools
Triaging
(dealing with incoming)

Someone has to make them.
PROJECT GOVERNANCE
Formal
v.
Informal
Organisational Structure
(gotta have one)

OK so honestly very few projects have formal structure
Most projects are informal
If you have an organisation ... even if it’s rubbish
PROJECT GOVERNANCE
Formal
Constitution
Office holders, Board or Steering committee
Annual election
(Debian; Gnome)
Not-for-profit “Software Foundation”
(Apache SF, Python SF, Django SF)
Usually happens when big enough to involve
money and lawyers.
Office holders, “official” membership
common pattern
PROJECT GOVERNANCE
Serious v. Not (silly)
Vast majority of projects are side-projects.
Generally side-projects are less serious
but not necessarily.
Is someone basing their career on it?
ROLES
There is usually identifiable author or leader.
Is there an identifiable team?
What roles are there?
What roles aren’t there?
ROLES
BDFL
Benevolent Dictator/s For Life
More commonly used in this era.
Usually original author/s.
Though there are exceptions.
Dictates final decisions, arbitrage and ends disputes.
Project leader for so long
ROLES
Release Manager
Packaging
Pass tests
Right documentation
Right internationalisation (i18n)
No “release blocking” bugs
Release announcement.

Project leader for so long
ROLES
System Admin (servers, etc)
Website
Artwork
Licenses
Answering Questions
Newb wrangling
(we were all newbs once, we’re all newbs about most things ever, it’s just a phase)

Karen/Russ, django users
GETTING
INVOLVED

How many people use version control regularly/proficiently?
101 stuff ... most of are self-taught in most areas, worth glossing over.
START SMALL
A lot of people’s FOSS careers
start with a
one character
patch.
(particularly to big, old, established projects)

You don’t have to “prove” your mad-coding-skillz
or change the world in your first commit,
moreover you certainly shouldn’t.
If you know everything else I’m going to talk about here, but still aren’t involved:
Particularly to big, old, established projects
Goes against our instinct
START SMALL
Projects hate:
Big, unexplained patches
from people unknown to the community.
Not impressive.
Big old projects may dismiss out-of-hand.
“dropping bombs”
“drive by shootings”
Even if it’s good code -- it’s just not done that way.
It’s got to be consumable by the project.
START SMALL
Break up your
feature
in to
patches.

should do this anyway.
VERSION CONTROL
AKA SOURCE CONTROL
MANAGEMENT (SCM)
How many regularly use version control?
Don’t want to bore to tears.
VERSION CONTROL
BASICS
Assume:
THERE IS NO UNDO BUTTON
Everything you commit is on the public record. Forever.
Commit with care.
Do NOT be reckless.
WHAT IS
VERSION CONTROL?
Writing code is easy,
constructing programs is hard.
Many people
working on same codebase is hard.
Solution: take small, logical, incremental steps.

in the form of ...
ALWAYS SMALL
Always take the time to
break up your patch into the
smallest, logical unit.

Easier to understand for everyone
(committer, future-you).
Easier to revert.
Rule of thumb: what you may need to revert.
DIFF/PATCH
DIFF/PATCH
The tiny step is called a: patch
Small, logical, incremental steps.

Official terms: diff and patch.
These were the original tools that were used.

Atomic unit of code development.
Patch originally written by Larry Wall
Tapes, TAR in the beginning,
actually learning SCM takes years
DIFF/PATCH
Put code changes into standardised format.

Standard is: “unified format”
(or “unidiff” or “-u”)

$ diff -u ...

Atomic unit of code development.
Tapes, TAR in the beginning,
actually learning SCM takes years
DIFF/PATCH
DIFF/PATCH
UNIDIFF

wikipedians may be familiar
UNIDIFF

A PATCH! any unidiff scm will be able to “APPLY” this
you can write these by hand if you want
can be reversed (or “reverted”)
some examples without original source
DIFF/PATCH
DIFF/PATCH
UNIDIFF
DIFF/PATCH
Congratulations!
You have a patch file!

Atomic unit of code development.
Tapes, TAR in the beginning,
actually learning SCM takes years
The patch/s are then “sent*” to the project.
*what this means varies.

Atomic unit of code development.
Tapes, TAR in the beginning,
actually learning SCM takes years
COMMITTING/INTEGRATING
Code change is then
committed or integrated
in to a version of project.
Though it’s normal for patches to be rejected.
Your patch might directly conflict with someone else’s work.
this is known as a merge-conflict
and usually needs human arbitrage to fix.
... sent* to the project ...
SEND/MERGE/COMMIT/
PUSH/PULL-REQUEST
... sent* to the project ...

This is where projects become so divergent
own research needs to be done to on this process.
A lot of project use multiple integration methods.
Atomic unit of code development.
Tapes, TAR in the beginning,
actually learning SCM takes years
PATCH SUBMISSION:
LINUX KERNEL EXAMPLE
Very strong rules.
Very clear guidelines.
https://www.kernel.org/doc/Documentation/
SubmittingPatches
5,000 word piece of documentation
which is strongly adhered to.
PATCH SUBMISSION:
LINUX KERNEL EXAMPLE
Patches to Linux Kernel are submitted by email.
They get a lot of email:

lkml.org/lkml/2013/
20-25 emails an hour, depending where in the world
SOURCE CODE
MANAGEMENT
(SCM)
SYSTEMS
WHAT IS SOURCE CODE
MANAGEMENT (SCM)?
WHAT IS SOURCE CODE
MANAGEMENT (SCM)?
Where is your MASTER codebase repository?
WHAT IS SOURCE CODE
MANAGEMENT (SCM)?
Where is your MASTER codebase repository?
Early version control system:
CENTRALISED SERVER
CENTRALISED
VERSION CONTROL
CENTRALISED
VERSION CONTROL
FIRST GENERATION SCM
+
-

Provides development history
Manages files individually
Only one person editing at a time
No merge capability
eg, SCCS (1972), RCS (1982 free and more evolved)

rcs 1982
CENTRALISED
VERSION CONTROL
CVS (CONCURRENT VERSIONS SYSTEM)
+
+
-

Parallel development
Merge & conflict resolution (based on diff/patch)
Poor rename and directory support
Poor branch merging
Most operations require contacting centralised server
Dominated FOSS 1991 to 2005.
Use can still be found.

1990
CENTRALISED
VERSION CONTROL
SUBVERSION (SVN)
+
+
-

‘CVS done right’
Project-wide revisions
Each developer has ‘checkout’
Most meta-data is only stored on central server
Committing require contacting central server
Very commonly used before new generation.
Still commonly used.
WHAT IS SOURCE CODE
MANAGEMENT (SCM)?
Where is your MASTER codebase repository?
WHAT IS SOURCE CODE
MANAGEMENT (SCM)?
Where is your MASTER codebase repository?
Since early 2000s
DISTRIBUTED

Everyone gets a ‘clone’:
+ entire codebase
+ entire revision history
CENTRALISED
VERSION CONTROL
CENTRALISED
VERSION CONTROL
DISTRIBUTED
VERSION CONTROL
DISTRIBUTED
VERSION CONTROL
BAZAAR (BZ)
MERCURIAL (HG)
DARCS
MONOTONE (peer-to-peer)
GIT

Since great Distributed Version Control wars of ~2005
started in the 90s, blew out ’02-05 when linux switched to not GIT (bitkeeper)
Currently has a lot of support and momentum.

People say it’s complicated.
TAKE CARE MENTALLY VISUALISING STATE OF CODE

necessarily complicated!
install git
WHAT IS A GIT REPOSITORY?
Any file tree with the special /.git directory

~ delete and ceases to be
~ can put anywhere and it will try and figure out
WHAT FILES ARE IN A
GIT REPOSITORY?
Explicitly add and rm files to/from repository

can put in any dir, but won’t know until you tell it.
WHAT FILES ARE IN A
GIT REPOSITORY?
Explicitly add and rm files to/from repository
Be specific:
$ git add hello.txt
Or general:
$ git add .

can put in any dir, but won’t know until you tell it.
WHAT FILES ARE IN A
GIT REPOSITORY?
You can explicitly tell git to ignore the existence of certain files
listing files to be ignored in:
.gitignore
This can be per directory.

Gotcha: .gitignore won’t work on files
you’ve already added.
GIT CLONE

~ all revision history
~ entire working codebase
GIT CLONE
Find an open source repository.

~ all revision history
~ entire working codebase
GIT CLONE
Find an open source repository.
$ git clone https://github.com/jquery/jquery.git

~ all revision history
~ entire working codebase
GIT CLONE
Find an open source repository.
$ git clone https://github.com/jquery/jquery.git

~ all revision history
~ entire working codebase
GIT CLONE
Find an open source repository.
$ git clone https://github.com/jquery/jquery.git

~ all revision history
~ entire working codebase
GIT CLONE
Find an open source repository.
$ git clone https://github.com/jquery/jquery.git

~ all revision history
~ entire working codebase
GIT CLONE
Find an open source repository.
$ git clone https://github.com/jquery/jquery.git

The the code is yours. All yours.
~ all revision history
~ entire working codebase
MAKE CHANGES
FORK
If you’re going to make changes then fork the project.

Only make changes to your own tree.

Forking used to be an anathema.
MAKE CHANGES
BRANCH

Create branch:
$ git branch mydevbranch

Use branch:
$ git checkout mydevbranch
MAKE CHANGES
GENERATE PATCHES
So you’ve changed the code.
On your own fork.
On a development branch.

You need patches.
WHAT’S GOING ON IN A
GIT REPOSITORY?
$ git status

Will recognise file changes.
Automatically translate to patches/hunks.
WHAT’S GOING ON IN A
GIT REPOSITORY?
$ git status
Recommended GUI tools
Linux: gitg
others: SourceTree
git-scm.com/downloads/guis
GIT WORKFLOW
1. Make code changes.
Study your newly created patches/hunks.
(debug, debug, check, check, proof, proof)
GIT WORKFLOW
1. Make code changes.
Study your newly created patches/hunks.
(debug, debug, check, check, proof, proof)
2. “Stage” patches/hunks
(using $ git add or GUI tool)
GIT WORKFLOW
“Stage” patches
(using $ git add or GUI tool)
GIT WORKFLOW
1. Make code changes.
Study your newly created patches/hunks.
(debug, debug, check, check, proof, proof)
2. “Stage” patches/hunks
(using $ git add or GUI tool)
3. “Commit” staged changes to the repository.
GIT WORKFLOW
1. Make code changes.
Study your newly created patches/hunks.
(debug, debug, check, check, proof, proof)
2. “Stage” patches/hunks
(using $ git add or GUI tool)
3. “Commit” staged changes to the repository.
(using $ git commit -m “handy mandatory message”)
“Commit” staged changes
“Commit” staged changes
VERSION CONTROL
BASICS
Assume:
THERE IS NO UNDO BUTTON
Everything you commit is on the public record. Forever.
Commit with care.
Do NOT be reckless.
VERSION CONTROL
BASICS
Rule #0:
Assume everything you commit is
FINAL and FOREVER

Rule #1:
NEVER commit your PASSWORDS
or any other sensitive or personal settings or information.
VERSION CONTROL
BASICS
Rule #:
Don’t commit buggy code.
Way to burn trust and respect.

Rule #:
Atomic changes. That is: SMALL, logical changes.
Break up feature in to a bunch of smaller patches.
Drive-by patches are universally despised.
whole weekend
VERSION CONTROL
BASICS
Rule #:
Explain yourself.
Be terse, clear and explain why change is necessary.

Rule #:
The committer’s time is probably more valuable than yours.
Being fewer of them it’s probably true.
COMMITTING
Congratulations!
You have a commit.

Atomic unit of code development.
Tapes, TAR in the beginning,
actually learning SCM takes years
PUSHING

Atomic unit of code development.
Tapes, TAR in the beginning,
actually learning SCM takes years
Got it? you make a change, you ask the main project to “pull” it in to their project
COMMITS/PULL REQUESTS
COMMITS/PULL REQUESTS
Committed patches
may then be “pulled” in to a version of project.
COMMITS/PULL REQUESTS
Committed patches
may then be “pulled” in to a version of project.
They usually don’t do this automatically.
COMMITS/PULL REQUESTS
Committed patches
may then be “pulled” in to a version of project.
They usually don’t do this automatically.
You ask the “upstream” to accept your
commit using a pull-request
COMMITS/PULL REQUESTS
Committed patches
may then be “pulled” in to a version of project.
They usually don’t do this automatically.
You ask the “upstream” to accept your
commit using a pull-request
pull-requests are regularly not accepted.
(it’s not personal).
CONTRIBUTING
“STYLE”
Learn the “style” of the existing project.
Phrasing, structure, etc.
There will probably be rules. Follow them. eg: PEP8
If in doubt: copy
Don’t make up a new style, you’ll look like a fool -- ASK!
NOW you have TOOLS to COMMUNICATE and CONTRIBUTE
TOO BIG: RKM learnt in weekend, core within a month or two.
But noone on earth doing for linux kernel -- drive by shootings, gotta know you, trust you -LINUXCON LAST WEEK
CONTRIBUTING
COMMUNICATE
Shallow and Often
.

NOW you have TOOLS to COMMUNICATE and CONTRIBUTE
TOO BIG: RKM learnt in weekend, core within a month or two.
But noone on earth doing for linux kernel -- drive by shootings, gotta know you, trust you -LINUXCON LAST WEEK
CONTRIBUTING
COMMUNICATE
Don’t be out on a limb!
.

NOW you have TOOLS to COMMUNICATE and CONTRIBUTE
TOO BIG: RKM learnt in weekend, core within a month or two.
But noone on earth doing for linux kernel -- drive by shootings, gotta know you, trust you -LINUXCON LAST WEEK
SAY
THANK YOU
Occasionally send an email or make a post saying:
“Thanks!”

No matter how big or famous a project,
there’s usually more criticism than thanks.
It’s nice to be grateful :)
AN
EXISTING PROJECT
DON’ T ASK ME

NOW you have TOOLS to COMMUNICATE and CONTRIBUTE
TOO BIG: RKM learnt in weekend, core within a month or two.
But noone on earth doing for linux kernel -- drive by shootings, gotta know you, trust you -LINUXCON LAST WEEK
Growing Open Source Seeds
How (Not) To Build An
OSS Community
Kenneth Reitz
* Hello
* Enjoying PyCon? Food Coma?
* Talk about something near & dear: community

Questions?

github.com/kennethreitz

Thanks.
Questions?
@daniellindsley
https://github.com/toastdriven

Running an open source project
BE CORDIAL
OR

BE ON YOUR WAY
OPEN SOURCING
A PROJECT
“cookiecutter”
projects on github.
Detailed blog posts.
EXISTING PROJECTS
Do you actually want help?
“My Precious”
Let others in.
Consider the benefits of help!
All the things you no longer have to think about.
EXISTING PROJECTS
Think about what needs to be done.
Write a post about how other people can do.
If you want help, be specific.
Explain exactly what and how.
Write a list.
Make tasks and issues.
EXISTING PROJECTS
INSTALLATION and DEPENDENCIES

For the love of humanity ...
Ensure it’s possible to compile/install!
er, documentation?
Write it down as you’re doing it.
EXISTING PROJECTS
TEST DATA

For the love of humanity ...
Give us something to play with!

JSON, XML, Sqlite3, scripts ... anything ...
GOOD LEADERSHIP
Don’t REJECT or REVERT without an explanation.
Contact the contributor before you do it.
Don’t let them find out publicly first.

It’s gutting to have something rejected, but there’s usually
a good reason -- explain it! It makes it OK.
EXISTING PROJECTS
COMMUNICATE
95% of human problems
... are caused by and
can be solved by ...
EXISTING PROJECTS
COMMUNICATE
Shallow and Often
.
EXISTING PROJECTS
COMMUNICATE
Things that seem obvious,
often aren’t obvious.
.
EXISTING PROJECTS
COMMUNICATE
... that includes listening.
.
EXISTING PROJECTS
BURNOUT

Take time off.
Ignore everything except security issues.

NOW you have TOOLS to COMMUNICATE and CONTRIBUTE
TOO BIG: RKM learnt in weekend, core within a month or two.
But noone on earth doing for linux kernel -- drive by shootings, gotta know you, trust you -LINUXCON LAST WEEK
EXISTING PROJECTS
BE NICE
If someone leaves:
Thank, don’t bitch
Don’t bitch about open source project
without contacting owners, reporting bug
(random blog post!)
>> if anyone you know does this call them out on it.

NOW you have TOOLS to COMMUNICATE and CONTRIBUTE
TOO BIG: RKM learnt in weekend, core within a month or two.
But noone on earth doing for linux kernel -- drive by shootings, gotta know you, trust you -LINUXCON LAST WEEK
LICENSES

Don’t want to go too deep on licenses.
It’s boring as batshit
If you care, you care a lot.
LICENSES
Bad license decisions
have long term consequences.

Unfortunately there are no easy answers.
LICENSES
Original samba license:

Copyright (C) Andrew Tridgell 1992.
Permission to use, copy and distribute this software is given to anyone who
wants to, for NON-PROFIT only. You may not charge for this software or any
derivatives of it without first contacting the Author.
LICENSES
OSI lists 63 approved licenses, 9 as 'widely used'
GNU lists 81 free software licenses plus 28 non-free licenses
LICENSES
GPL
GNU Public License.

You must keep the software open.
You must give your changes back.
LICENSES
GPL V2
pre-GPLv3 (2007)
FOSS Licenses were much simpler.
75%+ projects were GPL.
If you liked a company, you would license as LGPL.
Number of other licenses, notably:
BSD (Berkely)

LGPL:
● Allows linking with proprietary programs
● Also used to avoid inter-project licensing problems
LICENSES
GPL V3 (2007)
Written to address:
● Internationalisation and clarification of legal language
● Stronger patent provisions
● Prevention of hardware restrictions (“tivoisation”)
● Optional clauses to aid license interoperability
● DMCA avoidance (“effective technological measure”)
It is a very good license. Arguably too good.
There has been a trend away from GPL.
It would be impossible for apple to comply with the GPLv3 license requirements on iPad and
iPhones unless they license devices' security systems as same.
GPLv3 licensed software will not get in to any app store. full stop.
LICENSES
COMPATIBILITY
Probably not fun.
~15% of all repositories had license files
~25% of those have the license only
mentioned in the Readme file

Read more: Armin Ronacher (author of Flask), Late July, 2013
Can tell because people like Apple and Google don’t want a bar of it.
LICENSES
POST-GPL
Interesting Times
Most popular: GPL
Apache Software License 2.0 (ASL2)
BSD
(with additional clauses)
(do whatever you like, just don’t sue me, even close source)
MIT
(do whatever you like, just don’t sue me)
LICENSES
Mongrel: popular ruby web server
Zed Shaw
Under one of “please don’t sue me” licenses.
Later regretted decision.

Until recently “Twitter” used it (on top of Apache).
LICENSE:
ZED SHAW
“Open source to open source,
corporation to corporation.
If you do open source,
you’re my hero and I support you.
If you’re a corporation,
let’s talk business.”
LICENSES
Watch this space.
TOOLS
Learn to use:
Text Editor
(pick a good one, learn to use it well)

Source Control Management (SCM)
(eg: git)

These take YEARS to learn!
TOOLS
Learn to use:
Issue tracker
(not as obvious as it seems)
IRC
Mailing-lists

“Design decision needed”/“close” v. “feedback”
fields you should and shouldn’t fill in
TOOLS
Learn to use:
Command Line (CLI)
(eg: bash)
grep (or ack) and find
Regular Expressions
(aka: regex)
NOW you have TOOLS to COMMUNICATE and CONTRIBUTE
TOO BIG: RKM learnt in weekend, core within a month or two.
But noone on earth doing for linux kernel -- drive by shootings, gotta know you, trust you -LINUXCON LAST WEEK
TOOLS
Learn to:
WRITE
(clearly)
Popular markups:
ReST
Markdown
Honestly these 10-odd tools are my day-to-day everything.
SAYING: I DON’T KNOW
Harry Kroto

On feeling stupid:
Everyone does.
Everyone is about most things.

The “best” leverage this
to their advantage
(usually very humble.)
HE ... was
IT’S a CONTINUUM
ASK/LISTEN
Rule of Thumb:
stuck for ½ hour.

Go to: IRC, mailing-list
Don’t agonise, spare yourself the pain!

Often:
~ experienced people can see/feel you struggling (but seldom say anything)
~ so, in short term you feel like gumby BUT: learn something, might actually look clever
~ in medium term: your corpus is building faster
ASK/EXPLAIN
State as
simply as possible.
State it up front.
Time is precious: be terse
terse
təәrs/
adjective
1. sparing in the use of words; abrupt.
"a terse statement"
synonyms:
brief, short, to the point, concise, succinct, crisp, pithy, incisive,

No fluffy language, no big explanation.
BE CORDIAL
Just get to the core of it.
BEING INVOLVED
Names/code
to
Faces/personalities
TURN UP!
Decisions are made
by the people
who turn up.

Hackerspaces
User Groups
Conferences

Congratulations you are already here.
Connect and develop.
SET PEOPLE’S
EXPECTATIONS
Probably the most valuable thing
I’ve learnt in the last 5 years.
CONTRIBUTING
COMMUNICATE
Find the venues to do so.
Mail-list
Might be several!
IRC
Issue Tracker
Wiki
NOW you have TOOLS to COMMUNICATE and CONTRIBUTE
TOO BIG: RKM learnt in weekend, core within a month or two.
But noone on earth doing for linux kernel -- drive by shootings, gotta know you, trust you -LINUXCON LAST WEEK
BEING INVOLVED
Real world is not uni.
Flexible
FOSS is really flexible.
Young projects can turn on a dime for your idea.
Envisioning and implementing all the fine
details is expensive for new projects.
TELL PEOPLE WHAT
YOU’RE DOING
For their sake.
Save them from wondering.
DO WHAT YOU SAY
YOU’RE GOING TO DO
But, if you can’t
communicate!

FOSS people are spectacularly
understanding.
Don’t get disheartened.
All mistakes will
eventually be washed clean
by time and entropy.
Communities are very robust.
INTERESTING
TIMES
Stream-lined ability to contribute/communicate.
Culture is changing: tech is becoming mainstream.
Re-learning old lessons.

Not just chicks, it’s older, multicultural.
INTERESTING
TIMES
Stream-lined ability to contribute/communicate.
Culture is changing: tech is becoming mainstream.
Re-learning old lessons.
Demographic imbalance is being addressed.

Not just chicks, it’s older, multicultural.
CHANGING
DEMOGRAPHICS
Difference is a continuum.
Shared culture and technical knowledge.
Skills!

Not just chicks, it’s older, multicultural.
INTERESTING
TIMES
Stream-lined ability to contribute/communicate.
Culture is changing: tech is becoming mainstream.
Re-learning old lessons.
Demographic imbalance is being addressed.
Copyright is being questioned.
Patent-wars.
WATCH THIS SPACE
CONCLUSION
There will always be some form of
“Open Source”.
People like us will make it happen.
This is the version we’ve currently got and it’s changing.
THANK
YOU!
Contributors: Be Cordial

•

Keep all interactions with a maintainer as
respectful as possible.

•

They have likely donated a significant
amount of time and energy into their project.

•

They don’t owe you a moment of their time.
Maintainers: Be Cordial

•

You have the crucial responsibility of being
immensely thankful to all contributors.

•
•
•

They are the lifeblood of your project.
Ignore non-constructive feedback.
Some people just take things too seriously.
Maintainers: Be Cordial

•

Be careful with the words you chose.
Contributors sometimes take what you say
very personally.

•
•

Take the opportunity to educate the user.

•

A little bit of kindness goes a long way.

This could be their first ever interaction with
an open source project.
Sustainability
•

Sustainability is one of the biggest
challenges of open source.

•
•

Everyone has a limited amount of time.
It’s easy to become the bottleneck of
your own projects.
Just Say No
Learn to Say No
•
•

Saying ‘No’ is extremely difficult.

•

If you say yes often, your project will be
ruined. Tragedy of the Commons.

People ask for crazy features. They send
seemingly practical pull requests. They
are trying to help.

But it’s HOW YOU SELL IT ...
Don’t make it complicated.
Open source makes
the world a better place.
Focused Purpose
Move together or be torn apart by momentum.

* Be careful not to turn it into an end-all unless you’re sure it can be
* Spin off advanced/specialized functionality as a plugin that builds on top
Documentation
Just because you built it
doesn’t mean they will come.

* Except for rare situations (absolute need or so sexy!), without this, no one will use it
* Case in point: It’s why many of you know about Flask but virtually no one knows about Itty
* Lack of docs means most people will get frustrated & move on
Communication
Will make or break you.

* This goes along with focus
* People want to know it’s actively developed on, what the future holds, how to get help, how
they can help
* IRC
* Mailing lists
* Website
Make Contribution Easy
It’s the only way you’ll get any contribution at all.

* GH/BB model of fork & pull req
* Define **how** others can contribute
* I suck at this one
Listen
Graciously accept both positive &
negative feedback.

* You should consider yourself a success when you acquire haters
* Remember there are lots of happy people who are quietly using the software
* I’m super-thin-skinned, so I struggle with this one nightly

Weitere ähnliche Inhalte

Was ist angesagt?

Open Innovation and Opensource Software
Open Innovation and Opensource SoftwareOpen Innovation and Opensource Software
Open Innovation and Opensource SoftwarePradyot Sahu
 
Introduction to License Compliance and My research (D. German)
Introduction to License Compliance and My research (D. German)Introduction to License Compliance and My research (D. German)
Introduction to License Compliance and My research (D. German)dmgerman
 
Understanding open source licenses
Understanding open source licensesUnderstanding open source licenses
Understanding open source licensesRogue Wave Software
 
Fundamentals of Free and Open Source Software
Fundamentals of Free and Open Source SoftwareFundamentals of Free and Open Source Software
Fundamentals of Free and Open Source SoftwareRoss Gardler
 
GNU GPL, LGPL, Apache licence Types and Differences
GNU GPL, LGPL, Apache licence Types and DifferencesGNU GPL, LGPL, Apache licence Types and Differences
GNU GPL, LGPL, Apache licence Types and DifferencesIresha Rubasinghe
 
Don't Screw Up Your Licensing
Don't Screw Up Your LicensingDon't Screw Up Your Licensing
Don't Screw Up Your LicensingAnsel Halliburton
 
Introduction to Open Source Hardware, OSHWA and Open Hardware Summit
Introduction to Open Source Hardware, OSHWA and Open Hardware SummitIntroduction to Open Source Hardware, OSHWA and Open Hardware Summit
Introduction to Open Source Hardware, OSHWA and Open Hardware SummitDrew Fustini
 
GoOpen 2010: Sandro D'Elia
GoOpen 2010: Sandro D'EliaGoOpen 2010: Sandro D'Elia
GoOpen 2010: Sandro D'EliaFriprogsenteret
 
"Open Source licensing and software quality" by Monty Michael Widenius @ eLib...
"Open Source licensing and software quality" by Monty Michael Widenius @ eLib..."Open Source licensing and software quality" by Monty Michael Widenius @ eLib...
"Open Source licensing and software quality" by Monty Michael Widenius @ eLib...eLiberatica
 

Was ist angesagt? (10)

Open Source Licenses
Open Source LicensesOpen Source Licenses
Open Source Licenses
 
Open Innovation and Opensource Software
Open Innovation and Opensource SoftwareOpen Innovation and Opensource Software
Open Innovation and Opensource Software
 
Introduction to License Compliance and My research (D. German)
Introduction to License Compliance and My research (D. German)Introduction to License Compliance and My research (D. German)
Introduction to License Compliance and My research (D. German)
 
Understanding open source licenses
Understanding open source licensesUnderstanding open source licenses
Understanding open source licenses
 
Fundamentals of Free and Open Source Software
Fundamentals of Free and Open Source SoftwareFundamentals of Free and Open Source Software
Fundamentals of Free and Open Source Software
 
GNU GPL, LGPL, Apache licence Types and Differences
GNU GPL, LGPL, Apache licence Types and DifferencesGNU GPL, LGPL, Apache licence Types and Differences
GNU GPL, LGPL, Apache licence Types and Differences
 
Don't Screw Up Your Licensing
Don't Screw Up Your LicensingDon't Screw Up Your Licensing
Don't Screw Up Your Licensing
 
Introduction to Open Source Hardware, OSHWA and Open Hardware Summit
Introduction to Open Source Hardware, OSHWA and Open Hardware SummitIntroduction to Open Source Hardware, OSHWA and Open Hardware Summit
Introduction to Open Source Hardware, OSHWA and Open Hardware Summit
 
GoOpen 2010: Sandro D'Elia
GoOpen 2010: Sandro D'EliaGoOpen 2010: Sandro D'Elia
GoOpen 2010: Sandro D'Elia
 
"Open Source licensing and software quality" by Monty Michael Widenius @ eLib...
"Open Source licensing and software quality" by Monty Michael Widenius @ eLib..."Open Source licensing and software quality" by Monty Michael Widenius @ eLib...
"Open Source licensing and software quality" by Monty Michael Widenius @ eLib...
 

Andere mochten auch

Open Source as IT and Business Strategy
Open Source as IT and Business StrategyOpen Source as IT and Business Strategy
Open Source as IT and Business StrategyKarim Baïna
 
Transforming IT with an Open Source Strategy
Transforming IT with an Open Source StrategyTransforming IT with an Open Source Strategy
Transforming IT with an Open Source StrategyInnoTech
 
symfony: An Open-Source Framework for Professionals (PHP Day 2008)
symfony: An Open-Source Framework for Professionals (PHP Day 2008)symfony: An Open-Source Framework for Professionals (PHP Day 2008)
symfony: An Open-Source Framework for Professionals (PHP Day 2008)Fabien Potencier
 
112 - The Role of Mentoring and Project Characteristics for Onboarding in Ope...
112 - The Role of Mentoring and Project Characteristics for Onboarding in Ope...112 - The Role of Mentoring and Project Characteristics for Onboarding in Ope...
112 - The Role of Mentoring and Project Characteristics for Onboarding in Ope...ESEM 2014
 
Defining an Open Source Software Trustworthiness Model
Defining an Open Source Software Trustworthiness Model Defining an Open Source Software Trustworthiness Model
Defining an Open Source Software Trustworthiness Model Davide Taibi
 
Open source software development
Open source software developmentOpen source software development
Open source software developmentSagar Raravi
 
Open Source Software Needs You!
Open Source Software Needs You!Open Source Software Needs You!
Open Source Software Needs You!Charles Nutter
 
Open Source as an Element of Corporate Strategy
Open Source as an Element of Corporate StrategyOpen Source as an Element of Corporate Strategy
Open Source as an Element of Corporate StrategySamsung Open Source Group
 
Free and Open Source Software
Free and Open Source SoftwareFree and Open Source Software
Free and Open Source SoftwareMoinuddin Ahmed
 
"IBMs Open Source Strategy" by Adam Jollans @ eLiberatica 2009
"IBMs Open Source Strategy" by Adam Jollans @ eLiberatica 2009"IBMs Open Source Strategy" by Adam Jollans @ eLiberatica 2009
"IBMs Open Source Strategy" by Adam Jollans @ eLiberatica 2009eLiberatica
 
Open Source as an Element of Corporate Strategy
Open Source as an Element of Corporate StrategyOpen Source as an Element of Corporate Strategy
Open Source as an Element of Corporate StrategyBlack Duck by Synopsys
 
Online Tools for Digital Storytelling
Online Tools for Digital StorytellingOnline Tools for Digital Storytelling
Online Tools for Digital Storytellingstephsamios
 
Open Source Software - A Guide to Innovation
Open Source Software - A Guide to InnovationOpen Source Software - A Guide to Innovation
Open Source Software - A Guide to InnovationKonstantyn Spasokukotskiy
 
10 Reasons To Use Open Source Software-Defined Networking
10 Reasons To Use Open Source Software-Defined Networking10 Reasons To Use Open Source Software-Defined Networking
10 Reasons To Use Open Source Software-Defined NetworkingVala Afshar
 
Open Source Software Presentation
Open Source Software PresentationOpen Source Software Presentation
Open Source Software PresentationHenry Briggs
 
Opensource Powerpoint Review.Ppt
Opensource Powerpoint Review.PptOpensource Powerpoint Review.Ppt
Opensource Powerpoint Review.PptViet NguyenHoang
 
An Open Source Strategy for NASA
An Open Source Strategy for NASAAn Open Source Strategy for NASA
An Open Source Strategy for NASAChris Mattmann
 
OPEN SOURCE SEMINAR PRESENTATION
OPEN SOURCE SEMINAR PRESENTATIONOPEN SOURCE SEMINAR PRESENTATION
OPEN SOURCE SEMINAR PRESENTATIONRitwick Halder
 
Big Data Analytics 2014
Big Data Analytics 2014Big Data Analytics 2014
Big Data Analytics 2014Stratebi
 
Open Source Creativity
Open Source CreativityOpen Source Creativity
Open Source CreativitySara Cannon
 

Andere mochten auch (20)

Open Source as IT and Business Strategy
Open Source as IT and Business StrategyOpen Source as IT and Business Strategy
Open Source as IT and Business Strategy
 
Transforming IT with an Open Source Strategy
Transforming IT with an Open Source StrategyTransforming IT with an Open Source Strategy
Transforming IT with an Open Source Strategy
 
symfony: An Open-Source Framework for Professionals (PHP Day 2008)
symfony: An Open-Source Framework for Professionals (PHP Day 2008)symfony: An Open-Source Framework for Professionals (PHP Day 2008)
symfony: An Open-Source Framework for Professionals (PHP Day 2008)
 
112 - The Role of Mentoring and Project Characteristics for Onboarding in Ope...
112 - The Role of Mentoring and Project Characteristics for Onboarding in Ope...112 - The Role of Mentoring and Project Characteristics for Onboarding in Ope...
112 - The Role of Mentoring and Project Characteristics for Onboarding in Ope...
 
Defining an Open Source Software Trustworthiness Model
Defining an Open Source Software Trustworthiness Model Defining an Open Source Software Trustworthiness Model
Defining an Open Source Software Trustworthiness Model
 
Open source software development
Open source software developmentOpen source software development
Open source software development
 
Open Source Software Needs You!
Open Source Software Needs You!Open Source Software Needs You!
Open Source Software Needs You!
 
Open Source as an Element of Corporate Strategy
Open Source as an Element of Corporate StrategyOpen Source as an Element of Corporate Strategy
Open Source as an Element of Corporate Strategy
 
Free and Open Source Software
Free and Open Source SoftwareFree and Open Source Software
Free and Open Source Software
 
"IBMs Open Source Strategy" by Adam Jollans @ eLiberatica 2009
"IBMs Open Source Strategy" by Adam Jollans @ eLiberatica 2009"IBMs Open Source Strategy" by Adam Jollans @ eLiberatica 2009
"IBMs Open Source Strategy" by Adam Jollans @ eLiberatica 2009
 
Open Source as an Element of Corporate Strategy
Open Source as an Element of Corporate StrategyOpen Source as an Element of Corporate Strategy
Open Source as an Element of Corporate Strategy
 
Online Tools for Digital Storytelling
Online Tools for Digital StorytellingOnline Tools for Digital Storytelling
Online Tools for Digital Storytelling
 
Open Source Software - A Guide to Innovation
Open Source Software - A Guide to InnovationOpen Source Software - A Guide to Innovation
Open Source Software - A Guide to Innovation
 
10 Reasons To Use Open Source Software-Defined Networking
10 Reasons To Use Open Source Software-Defined Networking10 Reasons To Use Open Source Software-Defined Networking
10 Reasons To Use Open Source Software-Defined Networking
 
Open Source Software Presentation
Open Source Software PresentationOpen Source Software Presentation
Open Source Software Presentation
 
Opensource Powerpoint Review.Ppt
Opensource Powerpoint Review.PptOpensource Powerpoint Review.Ppt
Opensource Powerpoint Review.Ppt
 
An Open Source Strategy for NASA
An Open Source Strategy for NASAAn Open Source Strategy for NASA
An Open Source Strategy for NASA
 
OPEN SOURCE SEMINAR PRESENTATION
OPEN SOURCE SEMINAR PRESENTATIONOPEN SOURCE SEMINAR PRESENTATION
OPEN SOURCE SEMINAR PRESENTATION
 
Big Data Analytics 2014
Big Data Analytics 2014Big Data Analytics 2014
Big Data Analytics 2014
 
Open Source Creativity
Open Source CreativityOpen Source Creativity
Open Source Creativity
 

Ähnlich wie The Hitchhikers' Guide to Free and Open Source Software Development (CompCon 2013)

Introduction To Open Source Licenses
Introduction To Open Source LicensesIntroduction To Open Source Licenses
Introduction To Open Source LicensesHarley Pascua
 
Open Source SW Business
Open Source SW Business Open Source SW Business
Open Source SW Business SANGHEE SHIN
 
Open source software
Open source softwareOpen source software
Open source softwareLaFlame5
 
Open Source: What’s this all about?
Open Source: What’s this all about?Open Source: What’s this all about?
Open Source: What’s this all about?Brad Montgomery
 
Understanding and implementation of open source ecosystems final
Understanding and implementation of open source ecosystems finalUnderstanding and implementation of open source ecosystems final
Understanding and implementation of open source ecosystems finalRachit Technology Pvt Ltd
 
5 Steps to Ensuring Compliance in the Software Supply Chain: The Harman Case ...
5 Steps to Ensuring Compliance in the Software Supply Chain: The Harman Case ...5 Steps to Ensuring Compliance in the Software Supply Chain: The Harman Case ...
5 Steps to Ensuring Compliance in the Software Supply Chain: The Harman Case ...Black Duck by Synopsys
 
Go open2010 sde_20100417
Go open2010 sde_20100417Go open2010 sde_20100417
Go open2010 sde_20100417Sandro D'Elia
 
Open Source and You
Open Source and YouOpen Source and You
Open Source and YouJeff Stoner
 
Open Source
Open SourceOpen Source
Open SourceJohn Gs
 
Open source software for IoT – The devil’s in the details
Open source software for IoT – The devil’s in the detailsOpen source software for IoT – The devil’s in the details
Open source software for IoT – The devil’s in the detailsRogue Wave Software
 

Ähnlich wie The Hitchhikers' Guide to Free and Open Source Software Development (CompCon 2013) (20)

Introduction To Open Source Licenses
Introduction To Open Source LicensesIntroduction To Open Source Licenses
Introduction To Open Source Licenses
 
Icm Lecture
Icm LectureIcm Lecture
Icm Lecture
 
Open Source Licenses
Open Source LicensesOpen Source Licenses
Open Source Licenses
 
Open Source SW Business
Open Source SW Business Open Source SW Business
Open Source SW Business
 
Open Source vs Proprietary
Open Source vs ProprietaryOpen Source vs Proprietary
Open Source vs Proprietary
 
Foss introduction and history
Foss introduction and historyFoss introduction and history
Foss introduction and history
 
Open source software
Open source softwareOpen source software
Open source software
 
Open Source: What’s this all about?
Open Source: What’s this all about?Open Source: What’s this all about?
Open Source: What’s this all about?
 
Introduction To Open Source
Introduction To Open SourceIntroduction To Open Source
Introduction To Open Source
 
Understanding and implementation of open source ecosystems final
Understanding and implementation of open source ecosystems finalUnderstanding and implementation of open source ecosystems final
Understanding and implementation of open source ecosystems final
 
5 Steps to Ensuring Compliance in the Software Supply Chain: The Harman Case ...
5 Steps to Ensuring Compliance in the Software Supply Chain: The Harman Case ...5 Steps to Ensuring Compliance in the Software Supply Chain: The Harman Case ...
5 Steps to Ensuring Compliance in the Software Supply Chain: The Harman Case ...
 
My Seminar
My SeminarMy Seminar
My Seminar
 
Go open2010 sde_20100417
Go open2010 sde_20100417Go open2010 sde_20100417
Go open2010 sde_20100417
 
Open Source and You
Open Source and YouOpen Source and You
Open Source and You
 
Open source software and os
Open source software and osOpen source software and os
Open source software and os
 
Open Source
Open SourceOpen Source
Open Source
 
Open source software for IoT – The devil’s in the details
Open source software for IoT – The devil’s in the detailsOpen source software for IoT – The devil’s in the details
Open source software for IoT – The devil’s in the details
 
Asf icfoss-mentoring
Asf icfoss-mentoringAsf icfoss-mentoring
Asf icfoss-mentoring
 
Open source media
Open source mediaOpen source media
Open source media
 
1 Open Source Business
1 Open Source Business1 Open Source Business
1 Open Source Business
 

Kürzlich hochgeladen

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Kürzlich hochgeladen (20)

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

The Hitchhikers' Guide to Free and Open Source Software Development (CompCon 2013)

  • 1. THE HITCHHIKER'S GUIDE TO FREE AND OPEN SOURCE SOFTWARE DEVELOPMENT
  • 2.
  • 4. INTERESTING TIMES ~ stream-lined communication ~ broad acceptance of technology Golden age
  • 6. YOU
  • 7. PUBLIC CODE PRESENCE IS ATTRACTIVE TO POTENTIAL EMPLOYERS support companies can hire what they see … Hardware vendors have a big market for FOSS devs so that foss will work on their devices.
  • 8. PUBLIC CODE PRESENCE IS THE BEST CV EVA Bitbucket Gitorious CloudForge Google Code CodePlex Launchpad GitHub SourceForge
  • 10.
  • 11.
  • 19. WHY? “DO” OPEN SOURCE Open source provides a unique opportunity for the trifecta of purpose, mastery and autonomy.
  • 21. WHY? “DO” OPEN SOURCE SOCIAL Working with others Working with people better than you Exposure to other styles Get exposure for your project
  • 22. WHY? “DO” OPEN SOURCE EDUCATION Opportunity to learn from others Learn to avoid pitfalls/gotchas Fast intro to common patterns It’s exhausting
  • 23. WHY? “DO” OPEN SOURCE SKILL UP Try out new ideas. Try out new technology. Try out development, unstable versions. Do things you don’t do “during the day”. It’s exhausting
  • 24. WHY? “DO” OPEN SOURCE ETHICS/VALUES Political Reasons Altruism Democracy/Meritocracy
  • 25. WHY? “DO” OPEN SOURCE BUSINESS Best Solution Available Makes Sense for the Project
  • 26. WHY? BUSINESS REASONS • Security • Interoperability • Quality • Auditability • Customisability • Support • Freedom • Cost • Flexibility • Try-Before-You-Buy Options
  • 27. QUALITY “If you have enough eyeballs all bugs are shallow.” Linus’ Law (actually pre-dates him)
  • 28. CHOICE AND TRUST No need to trust software vendor. Choice to fix yourself. Right to fork if disagree. Can contribute. It’s healthy to question your own work! It’s healthy to freely collaborate! PRACTICAL terms
  • 31. FREEDOM Free as in “Beer”
  • 32.
  • 33. FREEDOM Free as in “Speech” or as in “Thought”
  • 35. community that emphasises the individual over the “organisation” vs. company presents a facade
  • 36.
  • 37. IN THE BEGINNING ... was the Command Line
  • 38.
  • 39. IN THE BEGINNING ... was the Command Line
  • 40. IN THE BEGINNING ... was the incident at MIT Artificial Intelligence Labs with the printer drivers in about 1971
  • 41.
  • 42.
  • 43.
  • 45. SOFTWARE SHOULD BE ... Completely PRIVATE v. Completely FREE
  • 46. SOFTWARE SHOULD BE ... Completely PRIVATE Sell v. Share Completely FREE
  • 47. SOFTWARE SHOULD BE ... Completely PRIVATE v. Completely FREE
  • 48. SOFTWARE SHOULD BE ... Completely PRIVATE (Bill Gates) .. v. (Richard Stallman) Completely FREE
  • 49. SOFTWARE SHOULD BE ... Completely PRIVATE v. Completely FREE
  • 50. SOFTWARE SHOULD BE ... Completely PRIVATE Corporations v. Hackers Completely FREE
  • 51. SOFTWARE SHOULD BE ... Completely PRIVATE v. Completely FREE rights individual higher purpose progress of technology
  • 52. SOFTWARE SHOULD BE ... Completely PRIVATE Protect Owner v. Protect Freedom Completely FREE rights individual higher purpose progress of technology
  • 53. SOFTWARE SHOULD BE ... Completely PRIVATE v. Completely FREE These rules hadn’t been made up In wasn’t obvious
  • 54. SOFTWARE SHOULD BE ... Completely PRIVATE Product v. Individual Completely FREE These rules hadn’t been made up In wasn’t obvious
  • 55. SOFTWARE SHOULD BE ... ... THE AUTHOR DECIDES
  • 57. AUTOMATICALLY GRANTS AUTHOR EXCLUSIVELY RIGHT TO: To produce copies or reproductions to sell or distribute. Create derivative works. To perform or display the work publicly; To transmit, import or export the work. This is the essence of why licenses matter.
  • 58. AUTOMATICALLY GRANTS AUTHOR EXCLUSIVELY RIGHT TO: To produce copies or reproductions to sell or distribute. Create derivative works. To perform or display the work publicly; To transmit, import or export the work. NO ONE ELSE CAN DO THESE THINGS WITHOUT THE AUTHOR’S PERMISSION This is the essence of why licenses matter.
  • 59. AUTOMATICALLY GRANTS AUTHOR EXCLUSIVELY RIGHT TO: To produce copies or reproductions to sell or distribute. Create derivative works. To perform or display the work publicly; To transmit, import or export the work. NO ONE ELSE CAN DO THESE THINGS WITHOUT THE AUTHOR’S PERMISSION If they do, the author can sue. This is the essence of why licenses matter.
  • 61. ORIGINAL SOFTWARE FREEDOMS (~1976) * The freedom to run the program, for any purpose. * The freedom to study how the program works, and adapt it to your needs. * The freedom to redistribute. * The freedom to improve the program, and release your improvements (and modified versions in general) Access to the source code is a precondition. (obviously)
  • 62.
  • 63. OPEN SOURCE DEFINITION 1. Free Redistribution 2. Source Code 3. Derived Works 4. Integrity of The Author's Source Code 5. No Discrimination Against Persons or Groups Things that are explicitly stated.
  • 64. OPEN SOURCE DEFINITION 1. Free Redistribution ~ as in beer -- no royalties or fees 2. Source Code 3. Derived Works 4. Integrity of The Author's Source Code 5. No Discrimination Against Persons or Groups Things that are explicitly stated.
  • 65. OPEN SOURCE DEFINITION 1. Free Redistribution ~ as in beer -- no royalties or fees 2. Source Code ~ not obfuscated or require preprocessor, translator, etc 3. Derived Works 4. Integrity of The Author's Source Code 5. No Discrimination Against Persons or Groups Things that are explicitly stated.
  • 66. OPEN SOURCE DEFINITION 1. Free Redistribution ~ as in beer -- no royalties or fees 2. Source Code ~ not obfuscated or require preprocessor, translator, etc 3. Derived Works ~ can be remixed 4. Integrity of The Author's Source Code 5. No Discrimination Against Persons or Groups Things that are explicitly stated.
  • 67. OPEN SOURCE DEFINITION 1. Free Redistribution ~ as in beer -- no royalties or fees 2. Source Code ~ not obfuscated or require preprocessor, translator, etc 3. Derived Works ~ can be remixed 4. Integrity of The Author's Source Code ~ rename your version 5. No Discrimination Against Persons or Groups Things that are explicitly stated.
  • 68. OPEN SOURCE DEFINITION 6. No Discrimination Against Fields of Endeavor 7. Distribution of License 8. License Must Not Be Specific to a Product 9. License Must Not Restrict Other Software 10. License Must Be Technology-Neutral Need to be specified because they’ve been challenged
  • 69. OPEN SOURCE DEFINITION 6. No Discrimination Against Fields of Endeavor ~ eg. commercial use or “values” (genetic research) 7. Distribution of License 8. License Must Not Be Specific to a Product 9. License Must Not Restrict Other Software 10. License Must Be Technology-Neutral Need to be specified because they’ve been challenged
  • 70. OPEN SOURCE DEFINITION 6. No Discrimination Against Fields of Endeavor ~ eg. commercial use or “values” (genetic research) 7. Distribution of License ~ applies to next person down, but not next after that 8. License Must Not Be Specific to a Product 9. License Must Not Restrict Other Software 10. License Must Be Technology-Neutral Need to be specified because they’ve been challenged
  • 71. OPEN SOURCE DEFINITION 6. No Discrimination Against Fields of Endeavor ~ eg. commercial use or “values” (genetic research) 7. Distribution of License ~ applies to next person down, but not next after that 8. License Must Not Be Specific to a Product ... except if being repackaged and redistributed 9. License Must Not Restrict Other Software 10. License Must Be Technology-Neutral Need to be specified because they’ve been challenged
  • 72. OPEN SOURCE DEFINITION 6. No Discrimination Against Fields of Endeavor ~ eg. commercial use or “values” (genetic research) 7. Distribution of License ~ applies to next person down, but not next after that 8. License Must Not Be Specific to a Product ... except if being repackaged and redistributed 9. License Must Not Restrict Other Software 10. License Must Be Technology-Neutral ~ platform or “style of interface” Need to be specified because they’ve been challenged
  • 73. PROPRIETARY OPEN SOURCE? CAN: give away source and accepted changes (for free as in beer) CANNOT: use the term “Open Source” as it’s trademarked
  • 74. PROPRIETARY OPEN SOURCE? For your own sake be aware of where you’re directing your efforts.
  • 75. LIABILITY Giving away for free (as in beer) does not exempt from being sued. “This program comes with ABSOLUTELY NO WARRANTY” lifesaving landing aircraft
  • 76. OPEN SOURCE PHILOSOPHISING Traditional FOSS projects have strong technical focus and tend to avoid philosophy. There are dedicated channels for talking about FOSS philosophy and principles. In more modern projects there is a resurgence in interest if you learn some background. Aaron Schwartz
  • 78.
  • 79.
  • 80.
  • 86. BUT SRSLY ... Completely PRIVATE Product v. INDIVIDUAL Completely FREE community that emphasises the individual over the company vs. company presents a facade
  • 87. One of most important messages of this talk! Beautiful bouquet that is humanity
  • 88. EVERY PROJECT is DIFFERENT One of most important messages of this talk! Beautiful bouquet that is humanity
  • 89. COMMUNITY CULTURE IS NOT SCIENCE You can not independently derive this stuff. ... and no one expects you to. Do your research and listen. Follow the precedent.
  • 91. PROJECT TECHNICAL SPECS How: responsive, receptive and welcoming will vary dramatically
  • 92. PROJECT VARIABLES • Technology Andrew Tridgell says: spend a couple of weekends or whatever
  • 93. PROJECT VARIABLES • What’s its scope? • What’s • Technology its profile? • How big is it? • How old is it? • Where • How in its lifecycle it is? active is it? Andrew Tridgell says: spend a couple of weekends or whatever
  • 94. PROJECT VARIABLES • Technology • What’s its scope? • Who? • What’s its profile? • How well organised is it? • How big is it? • How is it structured? • How old is it? • How are decisions made? • Where • How does it communicate? • How active is it? in its lifecycle it is? Andrew Tridgell says: spend a couple of weekends or whatever
  • 95. PROJECT VARIABLES TECHNOLOGY Technical Depth [many possible dimensions] you know what? scratch that, I’m actually going to come back to this later.
  • 96. PROJECT VARIABLES What’s its scope? [Linux Kernel .. .. some niche script] What’s its profile? [Python .. .. some widget]
  • 97. PROJECT VARIABLES How old is it? FOSS Projects are hard to kill. Where in its lifecycle it is? [Alpha .. .. Established] Where in its story arc it is? [Surging .. Stable .. Dying] samba died twice dead cat bounce
  • 98. PROJECT VARIABLES How big is the codebase? How big is the program/application? [Twitter .. .. ] Sometime big codebase on small application is a good thing.
  • 99. PROJECT VARIABLES How big is the community? What kind of people are in the community? [technical, organisational, social, experimental ...]
  • 102.
  • 103. PROJECT VARIABLES How active is it? [17K emails/month .. .. couple of patches/year] Faster moving is less tolerant. Bigger can be more tolerant.
  • 104. WELCOMING COMMITTEE Projects might have someone whose role is to guide new people. Apache have a whole system. The project leader might give you all the time in the world for a brand new project. There will probably be nothing at all. this week, we found a big in plug in made a patch it was pushed and released in about 15 minutes
  • 105. PROJECT VARIABLES SUMMARY You will have completely different experiences depending on the project.
  • 106. PROJECT VARIABLES SUMMARY Have a basic idea of the nature of the project before diving in. It’ll grease the rails, make it easy for yourself.
  • 108. DECISIONS NEED TO BE MADE Design Legal/License Development Environments and Tools Triaging (dealing with incoming) Someone has to make them.
  • 109. PROJECT GOVERNANCE Formal v. Informal Organisational Structure (gotta have one) OK so honestly very few projects have formal structure Most projects are informal If you have an organisation ... even if it’s rubbish
  • 110. PROJECT GOVERNANCE Formal Constitution Office holders, Board or Steering committee Annual election (Debian; Gnome) Not-for-profit “Software Foundation” (Apache SF, Python SF, Django SF) Usually happens when big enough to involve money and lawyers. Office holders, “official” membership common pattern
  • 111. PROJECT GOVERNANCE Serious v. Not (silly) Vast majority of projects are side-projects. Generally side-projects are less serious but not necessarily. Is someone basing their career on it?
  • 112. ROLES There is usually identifiable author or leader. Is there an identifiable team? What roles are there? What roles aren’t there?
  • 113. ROLES BDFL Benevolent Dictator/s For Life More commonly used in this era. Usually original author/s. Though there are exceptions. Dictates final decisions, arbitrage and ends disputes. Project leader for so long
  • 114. ROLES Release Manager Packaging Pass tests Right documentation Right internationalisation (i18n) No “release blocking” bugs Release announcement. Project leader for so long
  • 115. ROLES System Admin (servers, etc) Website Artwork Licenses Answering Questions Newb wrangling (we were all newbs once, we’re all newbs about most things ever, it’s just a phase) Karen/Russ, django users
  • 116. GETTING INVOLVED How many people use version control regularly/proficiently? 101 stuff ... most of are self-taught in most areas, worth glossing over.
  • 117. START SMALL A lot of people’s FOSS careers start with a one character patch. (particularly to big, old, established projects) You don’t have to “prove” your mad-coding-skillz or change the world in your first commit, moreover you certainly shouldn’t. If you know everything else I’m going to talk about here, but still aren’t involved: Particularly to big, old, established projects Goes against our instinct
  • 118. START SMALL Projects hate: Big, unexplained patches from people unknown to the community. Not impressive. Big old projects may dismiss out-of-hand. “dropping bombs” “drive by shootings” Even if it’s good code -- it’s just not done that way. It’s got to be consumable by the project.
  • 119. START SMALL Break up your feature in to patches. should do this anyway.
  • 120. VERSION CONTROL AKA SOURCE CONTROL MANAGEMENT (SCM) How many regularly use version control? Don’t want to bore to tears.
  • 121. VERSION CONTROL BASICS Assume: THERE IS NO UNDO BUTTON Everything you commit is on the public record. Forever. Commit with care. Do NOT be reckless.
  • 122. WHAT IS VERSION CONTROL? Writing code is easy, constructing programs is hard. Many people working on same codebase is hard. Solution: take small, logical, incremental steps. in the form of ...
  • 123. ALWAYS SMALL Always take the time to break up your patch into the smallest, logical unit. Easier to understand for everyone (committer, future-you). Easier to revert. Rule of thumb: what you may need to revert.
  • 125. DIFF/PATCH The tiny step is called a: patch Small, logical, incremental steps. Official terms: diff and patch. These were the original tools that were used. Atomic unit of code development. Patch originally written by Larry Wall Tapes, TAR in the beginning, actually learning SCM takes years
  • 126. DIFF/PATCH Put code changes into standardised format. Standard is: “unified format” (or “unidiff” or “-u”) $ diff -u ... Atomic unit of code development. Tapes, TAR in the beginning, actually learning SCM takes years
  • 130. UNIDIFF A PATCH! any unidiff scm will be able to “APPLY” this you can write these by hand if you want can be reversed (or “reverted”) some examples without original source
  • 134.
  • 135. DIFF/PATCH Congratulations! You have a patch file! Atomic unit of code development. Tapes, TAR in the beginning, actually learning SCM takes years
  • 136. The patch/s are then “sent*” to the project. *what this means varies. Atomic unit of code development. Tapes, TAR in the beginning, actually learning SCM takes years
  • 137. COMMITTING/INTEGRATING Code change is then committed or integrated in to a version of project. Though it’s normal for patches to be rejected. Your patch might directly conflict with someone else’s work. this is known as a merge-conflict and usually needs human arbitrage to fix.
  • 138. ... sent* to the project ...
  • 139. SEND/MERGE/COMMIT/ PUSH/PULL-REQUEST ... sent* to the project ... This is where projects become so divergent own research needs to be done to on this process. A lot of project use multiple integration methods. Atomic unit of code development. Tapes, TAR in the beginning, actually learning SCM takes years
  • 140. PATCH SUBMISSION: LINUX KERNEL EXAMPLE Very strong rules. Very clear guidelines. https://www.kernel.org/doc/Documentation/ SubmittingPatches 5,000 word piece of documentation which is strongly adhered to.
  • 141. PATCH SUBMISSION: LINUX KERNEL EXAMPLE Patches to Linux Kernel are submitted by email. They get a lot of email: lkml.org/lkml/2013/ 20-25 emails an hour, depending where in the world
  • 142.
  • 143.
  • 144.
  • 146. WHAT IS SOURCE CODE MANAGEMENT (SCM)?
  • 147. WHAT IS SOURCE CODE MANAGEMENT (SCM)? Where is your MASTER codebase repository?
  • 148. WHAT IS SOURCE CODE MANAGEMENT (SCM)? Where is your MASTER codebase repository? Early version control system: CENTRALISED SERVER
  • 150. CENTRALISED VERSION CONTROL FIRST GENERATION SCM + - Provides development history Manages files individually Only one person editing at a time No merge capability eg, SCCS (1972), RCS (1982 free and more evolved) rcs 1982
  • 151. CENTRALISED VERSION CONTROL CVS (CONCURRENT VERSIONS SYSTEM) + + - Parallel development Merge & conflict resolution (based on diff/patch) Poor rename and directory support Poor branch merging Most operations require contacting centralised server Dominated FOSS 1991 to 2005. Use can still be found. 1990
  • 152. CENTRALISED VERSION CONTROL SUBVERSION (SVN) + + - ‘CVS done right’ Project-wide revisions Each developer has ‘checkout’ Most meta-data is only stored on central server Committing require contacting central server Very commonly used before new generation. Still commonly used.
  • 153. WHAT IS SOURCE CODE MANAGEMENT (SCM)? Where is your MASTER codebase repository?
  • 154. WHAT IS SOURCE CODE MANAGEMENT (SCM)? Where is your MASTER codebase repository? Since early 2000s DISTRIBUTED Everyone gets a ‘clone’: + entire codebase + entire revision history
  • 158.
  • 159. DISTRIBUTED VERSION CONTROL BAZAAR (BZ) MERCURIAL (HG) DARCS MONOTONE (peer-to-peer) GIT Since great Distributed Version Control wars of ~2005 started in the 90s, blew out ’02-05 when linux switched to not GIT (bitkeeper)
  • 160. Currently has a lot of support and momentum. People say it’s complicated. TAKE CARE MENTALLY VISUALISING STATE OF CODE necessarily complicated! install git
  • 161. WHAT IS A GIT REPOSITORY? Any file tree with the special /.git directory ~ delete and ceases to be ~ can put anywhere and it will try and figure out
  • 162. WHAT FILES ARE IN A GIT REPOSITORY? Explicitly add and rm files to/from repository can put in any dir, but won’t know until you tell it.
  • 163. WHAT FILES ARE IN A GIT REPOSITORY? Explicitly add and rm files to/from repository Be specific: $ git add hello.txt Or general: $ git add . can put in any dir, but won’t know until you tell it.
  • 164. WHAT FILES ARE IN A GIT REPOSITORY? You can explicitly tell git to ignore the existence of certain files listing files to be ignored in: .gitignore This can be per directory. Gotcha: .gitignore won’t work on files you’ve already added.
  • 165. GIT CLONE ~ all revision history ~ entire working codebase
  • 166. GIT CLONE Find an open source repository. ~ all revision history ~ entire working codebase
  • 167. GIT CLONE Find an open source repository. $ git clone https://github.com/jquery/jquery.git ~ all revision history ~ entire working codebase
  • 168. GIT CLONE Find an open source repository. $ git clone https://github.com/jquery/jquery.git ~ all revision history ~ entire working codebase
  • 169. GIT CLONE Find an open source repository. $ git clone https://github.com/jquery/jquery.git ~ all revision history ~ entire working codebase
  • 170. GIT CLONE Find an open source repository. $ git clone https://github.com/jquery/jquery.git ~ all revision history ~ entire working codebase
  • 171. GIT CLONE Find an open source repository. $ git clone https://github.com/jquery/jquery.git The the code is yours. All yours. ~ all revision history ~ entire working codebase
  • 172. MAKE CHANGES FORK If you’re going to make changes then fork the project. Only make changes to your own tree. Forking used to be an anathema.
  • 173. MAKE CHANGES BRANCH Create branch: $ git branch mydevbranch Use branch: $ git checkout mydevbranch
  • 174. MAKE CHANGES GENERATE PATCHES So you’ve changed the code. On your own fork. On a development branch. You need patches.
  • 175. WHAT’S GOING ON IN A GIT REPOSITORY? $ git status Will recognise file changes. Automatically translate to patches/hunks.
  • 176. WHAT’S GOING ON IN A GIT REPOSITORY? $ git status Recommended GUI tools Linux: gitg others: SourceTree
  • 178. GIT WORKFLOW 1. Make code changes. Study your newly created patches/hunks. (debug, debug, check, check, proof, proof)
  • 179. GIT WORKFLOW 1. Make code changes. Study your newly created patches/hunks. (debug, debug, check, check, proof, proof) 2. “Stage” patches/hunks (using $ git add or GUI tool)
  • 180. GIT WORKFLOW “Stage” patches (using $ git add or GUI tool)
  • 181. GIT WORKFLOW 1. Make code changes. Study your newly created patches/hunks. (debug, debug, check, check, proof, proof) 2. “Stage” patches/hunks (using $ git add or GUI tool) 3. “Commit” staged changes to the repository.
  • 182. GIT WORKFLOW 1. Make code changes. Study your newly created patches/hunks. (debug, debug, check, check, proof, proof) 2. “Stage” patches/hunks (using $ git add or GUI tool) 3. “Commit” staged changes to the repository. (using $ git commit -m “handy mandatory message”)
  • 185. VERSION CONTROL BASICS Assume: THERE IS NO UNDO BUTTON Everything you commit is on the public record. Forever. Commit with care. Do NOT be reckless.
  • 186. VERSION CONTROL BASICS Rule #0: Assume everything you commit is FINAL and FOREVER Rule #1: NEVER commit your PASSWORDS or any other sensitive or personal settings or information.
  • 187. VERSION CONTROL BASICS Rule #: Don’t commit buggy code. Way to burn trust and respect. Rule #: Atomic changes. That is: SMALL, logical changes. Break up feature in to a bunch of smaller patches. Drive-by patches are universally despised. whole weekend
  • 188. VERSION CONTROL BASICS Rule #: Explain yourself. Be terse, clear and explain why change is necessary. Rule #: The committer’s time is probably more valuable than yours. Being fewer of them it’s probably true.
  • 189. COMMITTING Congratulations! You have a commit. Atomic unit of code development. Tapes, TAR in the beginning, actually learning SCM takes years
  • 190. PUSHING Atomic unit of code development. Tapes, TAR in the beginning, actually learning SCM takes years
  • 191.
  • 192. Got it? you make a change, you ask the main project to “pull” it in to their project
  • 194. COMMITS/PULL REQUESTS Committed patches may then be “pulled” in to a version of project.
  • 195. COMMITS/PULL REQUESTS Committed patches may then be “pulled” in to a version of project. They usually don’t do this automatically.
  • 196. COMMITS/PULL REQUESTS Committed patches may then be “pulled” in to a version of project. They usually don’t do this automatically. You ask the “upstream” to accept your commit using a pull-request
  • 197. COMMITS/PULL REQUESTS Committed patches may then be “pulled” in to a version of project. They usually don’t do this automatically. You ask the “upstream” to accept your commit using a pull-request pull-requests are regularly not accepted. (it’s not personal).
  • 198.
  • 199.
  • 200. CONTRIBUTING “STYLE” Learn the “style” of the existing project. Phrasing, structure, etc. There will probably be rules. Follow them. eg: PEP8 If in doubt: copy Don’t make up a new style, you’ll look like a fool -- ASK! NOW you have TOOLS to COMMUNICATE and CONTRIBUTE TOO BIG: RKM learnt in weekend, core within a month or two. But noone on earth doing for linux kernel -- drive by shootings, gotta know you, trust you -LINUXCON LAST WEEK
  • 201. CONTRIBUTING COMMUNICATE Shallow and Often . NOW you have TOOLS to COMMUNICATE and CONTRIBUTE TOO BIG: RKM learnt in weekend, core within a month or two. But noone on earth doing for linux kernel -- drive by shootings, gotta know you, trust you -LINUXCON LAST WEEK
  • 202. CONTRIBUTING COMMUNICATE Don’t be out on a limb! . NOW you have TOOLS to COMMUNICATE and CONTRIBUTE TOO BIG: RKM learnt in weekend, core within a month or two. But noone on earth doing for linux kernel -- drive by shootings, gotta know you, trust you -LINUXCON LAST WEEK
  • 203. SAY THANK YOU Occasionally send an email or make a post saying: “Thanks!” No matter how big or famous a project, there’s usually more criticism than thanks. It’s nice to be grateful :)
  • 205. DON’ T ASK ME NOW you have TOOLS to COMMUNICATE and CONTRIBUTE TOO BIG: RKM learnt in weekend, core within a month or two. But noone on earth doing for linux kernel -- drive by shootings, gotta know you, trust you -LINUXCON LAST WEEK
  • 206. Growing Open Source Seeds How (Not) To Build An OSS Community Kenneth Reitz * Hello * Enjoying PyCon? Food Coma? * Talk about something near & dear: community Questions? github.com/kennethreitz Thanks. Questions? @daniellindsley https://github.com/toastdriven Running an open source project
  • 207. BE CORDIAL OR BE ON YOUR WAY
  • 208. OPEN SOURCING A PROJECT “cookiecutter” projects on github. Detailed blog posts.
  • 209. EXISTING PROJECTS Do you actually want help? “My Precious” Let others in. Consider the benefits of help! All the things you no longer have to think about.
  • 210. EXISTING PROJECTS Think about what needs to be done. Write a post about how other people can do. If you want help, be specific. Explain exactly what and how. Write a list. Make tasks and issues.
  • 211. EXISTING PROJECTS INSTALLATION and DEPENDENCIES For the love of humanity ... Ensure it’s possible to compile/install! er, documentation? Write it down as you’re doing it.
  • 212. EXISTING PROJECTS TEST DATA For the love of humanity ... Give us something to play with! JSON, XML, Sqlite3, scripts ... anything ...
  • 213. GOOD LEADERSHIP Don’t REJECT or REVERT without an explanation. Contact the contributor before you do it. Don’t let them find out publicly first. It’s gutting to have something rejected, but there’s usually a good reason -- explain it! It makes it OK.
  • 214. EXISTING PROJECTS COMMUNICATE 95% of human problems ... are caused by and can be solved by ...
  • 216. EXISTING PROJECTS COMMUNICATE Things that seem obvious, often aren’t obvious. .
  • 217. EXISTING PROJECTS COMMUNICATE ... that includes listening. .
  • 218. EXISTING PROJECTS BURNOUT Take time off. Ignore everything except security issues. NOW you have TOOLS to COMMUNICATE and CONTRIBUTE TOO BIG: RKM learnt in weekend, core within a month or two. But noone on earth doing for linux kernel -- drive by shootings, gotta know you, trust you -LINUXCON LAST WEEK
  • 219. EXISTING PROJECTS BE NICE If someone leaves: Thank, don’t bitch Don’t bitch about open source project without contacting owners, reporting bug (random blog post!) >> if anyone you know does this call them out on it. NOW you have TOOLS to COMMUNICATE and CONTRIBUTE TOO BIG: RKM learnt in weekend, core within a month or two. But noone on earth doing for linux kernel -- drive by shootings, gotta know you, trust you -LINUXCON LAST WEEK
  • 220. LICENSES Don’t want to go too deep on licenses. It’s boring as batshit If you care, you care a lot.
  • 221. LICENSES Bad license decisions have long term consequences. Unfortunately there are no easy answers.
  • 222. LICENSES Original samba license: Copyright (C) Andrew Tridgell 1992. Permission to use, copy and distribute this software is given to anyone who wants to, for NON-PROFIT only. You may not charge for this software or any derivatives of it without first contacting the Author.
  • 223. LICENSES OSI lists 63 approved licenses, 9 as 'widely used' GNU lists 81 free software licenses plus 28 non-free licenses
  • 224. LICENSES GPL GNU Public License. You must keep the software open. You must give your changes back.
  • 225. LICENSES GPL V2 pre-GPLv3 (2007) FOSS Licenses were much simpler. 75%+ projects were GPL. If you liked a company, you would license as LGPL. Number of other licenses, notably: BSD (Berkely) LGPL: ● Allows linking with proprietary programs ● Also used to avoid inter-project licensing problems
  • 226. LICENSES GPL V3 (2007) Written to address: ● Internationalisation and clarification of legal language ● Stronger patent provisions ● Prevention of hardware restrictions (“tivoisation”) ● Optional clauses to aid license interoperability ● DMCA avoidance (“effective technological measure”) It is a very good license. Arguably too good. There has been a trend away from GPL. It would be impossible for apple to comply with the GPLv3 license requirements on iPad and iPhones unless they license devices' security systems as same. GPLv3 licensed software will not get in to any app store. full stop.
  • 227. LICENSES COMPATIBILITY Probably not fun. ~15% of all repositories had license files ~25% of those have the license only mentioned in the Readme file Read more: Armin Ronacher (author of Flask), Late July, 2013 Can tell because people like Apple and Google don’t want a bar of it.
  • 228. LICENSES POST-GPL Interesting Times Most popular: GPL Apache Software License 2.0 (ASL2) BSD (with additional clauses) (do whatever you like, just don’t sue me, even close source) MIT (do whatever you like, just don’t sue me)
  • 229. LICENSES Mongrel: popular ruby web server Zed Shaw Under one of “please don’t sue me” licenses. Later regretted decision. Until recently “Twitter” used it (on top of Apache).
  • 230. LICENSE: ZED SHAW “Open source to open source, corporation to corporation. If you do open source, you’re my hero and I support you. If you’re a corporation, let’s talk business.”
  • 232. TOOLS Learn to use: Text Editor (pick a good one, learn to use it well) Source Control Management (SCM) (eg: git) These take YEARS to learn!
  • 233. TOOLS Learn to use: Issue tracker (not as obvious as it seems) IRC Mailing-lists “Design decision needed”/“close” v. “feedback” fields you should and shouldn’t fill in
  • 234. TOOLS Learn to use: Command Line (CLI) (eg: bash) grep (or ack) and find Regular Expressions (aka: regex) NOW you have TOOLS to COMMUNICATE and CONTRIBUTE TOO BIG: RKM learnt in weekend, core within a month or two. But noone on earth doing for linux kernel -- drive by shootings, gotta know you, trust you -LINUXCON LAST WEEK
  • 235. TOOLS Learn to: WRITE (clearly) Popular markups: ReST Markdown Honestly these 10-odd tools are my day-to-day everything.
  • 236. SAYING: I DON’T KNOW Harry Kroto On feeling stupid: Everyone does. Everyone is about most things. The “best” leverage this to their advantage (usually very humble.) HE ... was IT’S a CONTINUUM
  • 237. ASK/LISTEN Rule of Thumb: stuck for ½ hour. Go to: IRC, mailing-list Don’t agonise, spare yourself the pain! Often: ~ experienced people can see/feel you struggling (but seldom say anything) ~ so, in short term you feel like gumby BUT: learn something, might actually look clever ~ in medium term: your corpus is building faster
  • 238. ASK/EXPLAIN State as simply as possible. State it up front. Time is precious: be terse terse təәrs/ adjective 1. sparing in the use of words; abrupt. "a terse statement" synonyms: brief, short, to the point, concise, succinct, crisp, pithy, incisive, No fluffy language, no big explanation. BE CORDIAL Just get to the core of it.
  • 240. TURN UP! Decisions are made by the people who turn up. Hackerspaces User Groups Conferences Congratulations you are already here. Connect and develop.
  • 241. SET PEOPLE’S EXPECTATIONS Probably the most valuable thing I’ve learnt in the last 5 years.
  • 242. CONTRIBUTING COMMUNICATE Find the venues to do so. Mail-list Might be several! IRC Issue Tracker Wiki NOW you have TOOLS to COMMUNICATE and CONTRIBUTE TOO BIG: RKM learnt in weekend, core within a month or two. But noone on earth doing for linux kernel -- drive by shootings, gotta know you, trust you -LINUXCON LAST WEEK
  • 243. BEING INVOLVED Real world is not uni. Flexible FOSS is really flexible. Young projects can turn on a dime for your idea. Envisioning and implementing all the fine details is expensive for new projects.
  • 244. TELL PEOPLE WHAT YOU’RE DOING For their sake. Save them from wondering.
  • 245. DO WHAT YOU SAY YOU’RE GOING TO DO But, if you can’t communicate! FOSS people are spectacularly understanding.
  • 246. Don’t get disheartened. All mistakes will eventually be washed clean by time and entropy. Communities are very robust.
  • 247. INTERESTING TIMES Stream-lined ability to contribute/communicate. Culture is changing: tech is becoming mainstream. Re-learning old lessons. Not just chicks, it’s older, multicultural.
  • 248. INTERESTING TIMES Stream-lined ability to contribute/communicate. Culture is changing: tech is becoming mainstream. Re-learning old lessons. Demographic imbalance is being addressed. Not just chicks, it’s older, multicultural.
  • 249. CHANGING DEMOGRAPHICS Difference is a continuum. Shared culture and technical knowledge. Skills! Not just chicks, it’s older, multicultural.
  • 250. INTERESTING TIMES Stream-lined ability to contribute/communicate. Culture is changing: tech is becoming mainstream. Re-learning old lessons. Demographic imbalance is being addressed. Copyright is being questioned. Patent-wars. WATCH THIS SPACE
  • 251. CONCLUSION There will always be some form of “Open Source”. People like us will make it happen. This is the version we’ve currently got and it’s changing.
  • 253. Contributors: Be Cordial • Keep all interactions with a maintainer as respectful as possible. • They have likely donated a significant amount of time and energy into their project. • They don’t owe you a moment of their time.
  • 254. Maintainers: Be Cordial • You have the crucial responsibility of being immensely thankful to all contributors. • • • They are the lifeblood of your project. Ignore non-constructive feedback. Some people just take things too seriously.
  • 255. Maintainers: Be Cordial • Be careful with the words you chose. Contributors sometimes take what you say very personally. • • Take the opportunity to educate the user. • A little bit of kindness goes a long way. This could be their first ever interaction with an open source project.
  • 256. Sustainability • Sustainability is one of the biggest challenges of open source. • • Everyone has a limited amount of time. It’s easy to become the bottleneck of your own projects.
  • 258. Learn to Say No • • Saying ‘No’ is extremely difficult. • If you say yes often, your project will be ruined. Tragedy of the Commons. People ask for crazy features. They send seemingly practical pull requests. They are trying to help. But it’s HOW YOU SELL IT ...
  • 259. Don’t make it complicated.
  • 260. Open source makes the world a better place.
  • 261. Focused Purpose Move together or be torn apart by momentum. * Be careful not to turn it into an end-all unless you’re sure it can be * Spin off advanced/specialized functionality as a plugin that builds on top
  • 262. Documentation Just because you built it doesn’t mean they will come. * Except for rare situations (absolute need or so sexy!), without this, no one will use it * Case in point: It’s why many of you know about Flask but virtually no one knows about Itty * Lack of docs means most people will get frustrated & move on
  • 263. Communication Will make or break you. * This goes along with focus * People want to know it’s actively developed on, what the future holds, how to get help, how they can help * IRC * Mailing lists * Website
  • 264. Make Contribution Easy It’s the only way you’ll get any contribution at all. * GH/BB model of fork & pull req * Define **how** others can contribute * I suck at this one
  • 265. Listen Graciously accept both positive & negative feedback. * You should consider yourself a success when you acquire haters * Remember there are lots of happy people who are quietly using the software * I’m super-thin-skinned, so I struggle with this one nightly