Getting Involved in Open Source
Responsible Users and Effective Contributors
Brett Meyer
- Project Lead: Artificer
- Committer and Core Dev: Hibernate ORM
- Contributor: Apache Camel, Ininispan, and several JBoss projects
- Senior Software Engineer, Red Hat
- Owner/Consultant, 3River Development LLC
- @brettemeyer
Talk Rules
- There are none
- Open discussion
- Interrupt me
(Ok, maybe there are a couple of rules...)
Proprietary Software
- Not much to discuss...
- Black box
- Closed-off development process
- Exclusive control
- Car with its hood welded shut
Proprietary Software == No Rights
- Users must complain when something's broke
- Cannot fix on your own
- Cannot modify on your own
- Restricted usage
- Frequently, don't even own it
- Company ceases? You're screwed
Open Source
- No black box
- Source code is publicly viewable
- Does not explicitly grant:
- Ownership
- Modification rights
- Redistribution rights
- Not implicitly free of cost
- Not implicitly "open" development processes
Open Development
- Transparency
- Open processes
- Open discussions (mailing list, forums, etc.)
- Not implicitly open source
"Free" Software
- Open source, plus...
- Free as in speech (freedom), not as in beer
- Still not implicitly free of cost
- Freedoms:
- Run for any purpose
- Study the code
- Redistribute copies
- Improve the code
- Freedoms tweaked by license differences (whole other talk)
- Typically (hopefully) includes "open development"...
- ...but not always (at least not always done well)
FLOSS Software
- Good: FOSS ("Free Open Source Software")
- Best: FLOSS ("Free/Libre Open Source Software")
- FLOSS emphasizes "freedom" over misleading "free"
- Talk assumes FLOSS over OS...
FLOSS Religion
FLOSS Religion
- Not Free == Not Ethical
- Appreciate the mentality, but...
- IMO
- FLOSS == superior engineering
- Proprietary != The Devil
- No Ownership == The Devil
FLOSS Superiority
- Control & ownership
- Superior engineering
- More eyes == less bugs
- More eyes == stability
- More eyes == security
- Community == new features
- Breadth of features (ex: Apache Camel)
- Speed (ie, not waiting for a fix)
"The Open Source Way"
- Not limited to software
- Openness, collaboration, transparent communication
- Meritocracy (best ideas win)
- Community service
- opensource.com
Open Source Your Projects
- Obvious: beneficial to the software community
- Rarely detrimental to your competitive edge
- Again: superior engineering
- Again: potential new features
Why should I get involved?
- Necessity
- Community
- Increased opportunities (both individually and for the company)
- Better understanding of the specific tool
- Professional network
- Resume & personal brand
Proprietary Software Users
- Purely a customer/consumer
- No control
- Request and wait on fixes/features
"Bad" FLOSS Users
- Continue to act like proprietary users
- "WHY HASN’T THIS BEEN FIXED YET?!"
- "YOU need to fix this!"
- Threaten to use a different project
- Talker, not "doer"
- Encounter bug -> abandon or workaround
"Bad" FLOSS Users: Bug Reports
- "It doesn't work."
- "I don't have time to create a test case."
- "Here's my entire application, zipped up."
- "I know this was rejected before, but opening again."
- "Bump."
- "I know this branch is 10 years old and not maintained, but fix this and release?"
Effective FLOSS Users
- Entirely different mentality
Customer/Consumer
- Contributor, not user
- Vital part of the development process
- Everyone has different priorities...
- ...and yours may not be mine
- Willing to discuss and be open
- Simple issues -> immediately fix and contribute
- Lighten up
- Finish what you start
- Appreciate it? Tell us! Goes a long way.
Effective FLOSS Users: Bug Reports
Effective FLOSS Users: Bug Reports
- Test cases are king!!!
- Minimum: Enough code fragments and config details
- Better: Small, standalone reproducer
- Best: Pull request, adding test case to existing testsuite
Ways to Contribute
- Code (of course)
- Weigh in on discussions
- Documentation
- VERY HELPFUL
- Often over-looked
- Again: Simple issues -> immediately fix and contribute
- Translation
- Most large-scale projects have internationalization support...
- ...but very few languages
Ways to Contribute
- Marketing
- Social media
- Blogs
- Website and branding (frequently open source as well)
- Presentations
- Vital, but also over-looked
- Many teams simply don't have adequate time available
Ways to Contribute
- Testing
- For large projects, single most helpful thing you can do
- Attempt to reproduce/analyze bug reports
- Can't emphasize that enough
- Seriously
- Guys, seriously...
- Hibernate has 2000+ open issues
- (Please send help...)
- Test alpha/beta releases (and provide good bug reports)
Ways to Contribute
- Support
- User forums
- Mailing lists
- Chat
- StackOverflow
- Again: Limited time available
Ways to Contribute
- Most importantly: Be a good and responsible user!
- FLOSS does not work without it
Discover Projects to Help
Discover Projects to Help
- Most important: You use it (@ work, on-the-side)
- Scratches an itch
- Need a capability
- Could do it from scratch...
- ...but Project X is close (missing a few things)
- Add to it!
Discover Projects to Help
- Not unlike startups: requires passion to be effective
- Community driven: What would be the most enabling?
- Humanitarian Free and Open Source Software (HFOSS)