Tomas Petricek
email: t.petricek@kent.ac.uk
twitter: @tomaspetricek
office: S129A
MIT Hacker Culture
The Tech Model Railroad Club
Access to computers should be unlimited
All information
should be free
Free software
Free as in freedom, not as in free beer
GNU GPL (1989)
Restrictive - you must release changes using the same license
Hacker-centric - user is also a programmer
Commercial software
Free software
Microsoft Linux
Commercial interests not selling software but providing services
New generation of OSS open-source without the "cancer" license clause
A lot of software is not a final end-user product
Search for sustainable open-source funding
Who is in control of open-source software?
Contributing and accepting contributions
Sustainable open-source funding
Crucial safe internet infrastructure receives donations of $2000 per month to pay one developer.
Welcoming community
Please just kill yourself now. The world will be a better place.
Becoming contributor
is hard without guidance
Attracting contributors
takes a lot of energy
Code of conduct
"Be nice" is not enough
Clear set of rules to be followed, even by "key" contributors
Process for resolving and reporting issues that arise
Philosophy and ideals
Licenses and tools
Philosophy and ideals
Licenses and tools
Philosophy and ideals
Licenses and tools
Philosophy and ideals
Licenses and tools
Community open source model
Alternative for community projects
Free as in free beer
(with donations)
Like corporate model without corporations
Is this sustainable?
Life of an open-source project maintainer can be tough!
Maintainer - 1 hour a day, week or month
Someone to merge changes, build releases, explain issues
Core developers - irregular, but more time
To implement major new features in the software
Contributors - a couple of hours or days
Improvements, fixing bugs, better documentation
Even small things matter
How to do it well
Good contributing
Read the guidelines
On Github typically in CONTRIBUTING.md
file
Follow guidelines
Where to discuss, how to comment and explain
Good contributing
Follow coding style
Code indentation, brackets, etc.
Explain things well
Good title and detailed description
Minimal - As little code and data as possible
Complete - Provide all relevant parts of code
Verifiable - Describe and test the behaviour
Broken function to check palindromes
1: 2: 3: 4: 5: |
|
Mostly works, but not always!
palindrome("step on no pets") == true
palindrome("hello world") == false
palindrome("step onto pets") == true
I tried calling palindrome(text)
and it does not work!
Complete - what is the message used as input?
Verifiable - in what way does it not work?
I tried palindrome("step onto pets")
, it does not work!
Complete - sample input is now included
Verifiable - in what way does it not work?
When I call palindrome("step onto pets")
,
I get true
but the input string it not a palindrome!
Complete - sample input is included
Verifiable - gives expected and actual result
Minimal - input is longer than necessary
When I call palindrome("x12x")
, I get true
but the string "x12x"
it's not a palindrome!
Recent history of open source software
How Microsoft adopted open source
Sustainable funding and welcoming community
Open source philosophies and funding
Free software or dual licensing model
Consulting, corporate and community model
Contributing to open source software
Following style, code and comment guidelines
Reporting minimal, complete, verifiable examples
What you should remember from this lecture
Tomas Petricek
t.petricek@kent.ac.uk | @tomaspetricek
Online resources