There is only one serious course about Free and Open Source Software Development delivered in Australia annually, the postgraduate level COMP8440 at ANU. Moreover the course is delivered by Andrew "Tridge" Tridgell who authored the seminal open source projects samba and the rsync algorithm. During this course he discusses his wealth of experience and trains then assesses students on contributing to the open source community.
This talk will be conveying as much of this week-long course as is possible in the time available, as seen through the eyes of a graduating student who was always keen about open source yet who hadn't made their first pull-requests until during this course. Now, more than a year later, the presenter is actively involved in several open source projects and will be talking about some of the characteristics of the open source community today and describing in specific detail about how to become involved. The presenter will discuss the highs, the lows, the awkwardness and unique sense of connection and achievement that can only be fulfilled by contributing to open source.
Elena Williams is a python/django web developer now working in Perth. She graduated from Master ITS program from CECS ANU in 2012. She's taught Django/Python, been involved with the Django, Python and Linux communities around Australia and organised the Python user group in Canberra whilst studying at ANU. She presented about open source participation at PyConAU 2012. She is also enthusiastic about teaching programming to non-programmers, kitesurfing, snowboarding, endurance navigation sports; is an active hacker/maker and was only called a Douglas Adams "tragic" by the Canberra Times once.
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
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
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
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
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
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
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.
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
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 ...]
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
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
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.
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
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.
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
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
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.
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.
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”)
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.
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
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.
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.
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
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
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.
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.
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.
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 ...
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