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)