Traditionally, IT ran off the shelf commercial software while datacenters ran proprietary Unix hardware and x86 based Windows servers.  But recently, the end user computing environment has been disrupted by the advent of smartphones and tablets with Linux becoming increasingly a dominant force in the data center.  Not to mention, that there has been predictions from IDC analysts in August 2015 noting that there is already a shift to open source systems like Couchbase and Couchbase Mobile in the server and mobile market.

Contributing to Open Source code is not as daunting as it seems.  First off, the Open Source community is large and diverse with people working together on common problems.  Stackoverflow is an example of how collective minds are able to solve related issues faster and share in everyday findings.  The benefits are that you are able to get direct feedback from a vast community of experts with different skill levels while building out a support system of champions. 

Swift

Even Apple opened up their coding language, Swift, and so developers outside of Apple will be able to look into Swift and contribute to its development thus bringing it to new platforms like Windows and Android.  Another benefit being that it is open source now, is that you can see the product road map and evolution of Swift too for future feature release dates.

Getting Started

It is not as daunting as it may seem.  Many times we may believe that the only major contributions that Open Source project leads are interested in are in feature extensions or major bug fixes.  But in reality all it takes is a couple of lines of code and starting small.  Working on a domain knowledge that you already know will allow you to quickly dive in and you will also be more motivated in improving the project overall.  The other benefit is learning and picking up new domain skills too.  There are plenty of available projects on GitHub that you may contribute, such as Library For All’s eBook reader, all the while learning new technology such as React Native. 

Reporting Issues

How can you start?  Well one way is to be part of the collective group contributing to the source code but another way is to look at improving on existing bug report tickets.  This is an opportunity to contribute by filling in useful information and setting the bar for quality error reporting.  A strategy on how to go about this is to:

  1. Verify the issue is still happening
  2. Outline steps to reproduce the issue
  3. Provide version informations
  4. Add in code snippets, screenshots and error log or texts 

The key here is to help with closing an existing issue and providing clear details will go along way with resolving the open ticket; thus making the overall experience and code better.  Once identified, you may also reference specific members on the project team to investigate the issues further.  Below you can see the outstanding Couchbase Mobile Android issues that is being reported my users in the community. 

Developer Documentations

Developers rely on great documentations to learn and understand technologies.  It is the first place developers would visit before diving in and having great documentations is key to developers adopting a technology quickly.  This is another area where you may contribute greatly as project docs are not always maintained on pace with the rest of the project.  You may help with providing clarity for yourself and other developers by:

  1. Update description of methods
  2. Provide example of method and usage
  3. Add diagrams
  4. Fix typos and update version numbers

Much like the Couchbase Mobile Android README.md file below, your contributions in the documentations or guides will go a long way in providing success for developers as this will be the primary resource developers interact with day in and day out.

Resolving Issues

Here’s where you can combine everything you’ve learned from the four options above into the ultimate open source contribution: the bug patch. Of course, don’t feel pressured to solve every bug you find, but if you have the bandwidth, take a shot at sleuthing out the solution. Even if you don’t find the fix, report your findings on the existing issue, or open a new one with full details on everything you tried.

When you do find the fix, keep in mind that the best patches are as non-disruptive as possible. Specifically, your fix should introduce as little new code as possible, and any new code should be written in the same style as the rest of the codebase. Keep your scope small; your pull request should address a single, limited issue with minimal changes overall.

When you’re ready to open your pull request, be sure to cover the following:

  • Reference the open issue your pull request is solving. If there’s no existing ticket, open one yourself (following the guidelines above).
  • Provide a clear description of your changes — what issue you’re solving and how.
  • Update any corresponding documentation (as described above).
  • Write a test case for the test suite that covers your fix (as described above).

– See more at: http://blog.flatironschool.com/how-to-contribute-to-open-source-code-5-steps-for-beginners/#sthash.OxOfFtkV.dpuf

Now that you have reported issues and updated developer documentations, why not take your open source contributions to another level and work on resolving tickets on the outstanding issues?  Focusing on introducing as little code changes as possible, you may start on this path by:

  1. Documenting test cases
  2. Detail write up on findings
  3. Reference open issue(s) you are resolving
  4. Update code base accordingly

Looking at existing issues and trying to resolve them will help not only yourself but other developers who is using the code base.  You are making the product better overall and even though if you do not resolve the issue directly in the end, the detailed descriptions added will help someone else solve the ticket.  Below you can see how the Couchbase Mobile community members are helping each other out and resolving the issue together openly. 

  

Summary

As you see there are various ways to be part of the Open Source world and contribute to Open Source technologies like Couchbase and Couchbase Mobile [Android / iOS].  Not only is a great way to collectively work on projects and code with people around the world, but the resolution time is so much faster too.  You may also learn more on how to contribute by going over the GitHub guidelines for how to be involved in Open Source and browse for available projects.

Author

Posted by William Hoang, Mobile Developer Advocate, Couchbase

William was a Developer Advocate on the Mobile Engineering/Developer Experience team at Couchbase. His love for coffee and code has transcended him into the world of mobile while appreciating the offline in-person experiences. Prior, William worked on the Developer Relations team over at Twitter, BlackBerry, and Microsoft while also having been a Software Embedded GPS engineer at Research In Motion. William graduated from McGill University in Electrical Software Engineering

Leave a reply