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...)

Open Source Overview

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

Example: John Deere (Wired)

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

FLOSS Users

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

How to Contribute

(http://opensource.com/business/15/4/how-do-you-contribute-open-source-projects)

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)