Recently I was watching an episode of Top Chef, from Season 1. Yep, All the way back. In fact it may have been episode one. Anyway, watch this scene, where a contestant was given an opportunity to work for a world renown chef for 30 minutes (or until the chef decided they weren’t cutting it). This contestant was asked to taste the sauce he was making, dipped his finger in to taste, and was immediately shown the door. It lead to this awkwardly tense moment.

Watch the video here.

Coding in someone else’s kitchen

Software development, at it’s core, is a lot like cooking. Everyone has their own take on how something should be done. It can even be difficult repeating EXACTLY what we did last time. Just because you make one great cake, doesn’t mean the next will turn out perfect. In software, these are bugs…in cooking, we’ll refrain from calling them ‘bugs’ and just refer to them as ‘variances’ ;).

If you were to walk into the kitchen of another chef/cook, at the end of the day, it’s their domain. When producing end results, the customer’s don’t know it was you who produced the dish, they think it’s the head chef, so their reputation is on the line. The same goes for contributing to open source software.

Respect the chef

In the commit history of the project, sure, your name shows. When it comes to the larger release notes, the primary developer or team, puts their name on the overall project. That means your code represents them. With that in mind, here’s five things to remember when you submit code to someone else’s project:

1. Coding standards are not universal

This is a hotbed of controversy in development. Spaces vs. Tabs. Camel Case vs. Snake Case. 2 vs. 4. I could go on, but you get the picture. The only thing that matters when contributing, is that you follow the projects defined standards. If they ask you to update a change to match, please oblige. It’s a matter of consistency.

…but,

If the project doesn’t have a standard, suggest they implement one and use a .editorconfig file.

2. Suggestions are not personal

Sometimes, when you work really hard on a set of changes, it’s hard not to take suggestions personal. You feel like you’ve done a great job, thought of all the cases, and even double checked it…but when the project lead comes back and suggests a few things, it can take the wind from your contribution sales. Don’t let it, at the end of the day they are more intimate with the code than most people, so their suggestions may be taking other issues into consideration.

…but,

As always though, if you have a valid case for your changes, explain it in a detailed and non-emotional response for the best reception.

3. Pull Requests can sit…for a while

This is more specific to GitHub but for any requested changes, keep in mind there is more than just your change queued in the pipe. At one point on Easy Digital Downloads we had over 25 pull requests waiting for review. To be honest, it’s on purpose. Not that we keep things waiting, but that we set aside a specific time of our week to go through open pull requests to review them. If we reviewed everyone as they came in, we’d never get anything done. There’s a mental state to be in when doing code reviews, to allow for maximum quality.

…but,

If you think it’s been excessively long…just ping them on the issue/ticket. See if they need anything else.

4. Don’t over-extend yourself

One of the most frequent issues, is absentee contributors. It’s ok, as a repo owner, we understand you are doing this in your own time, and usually for free. We are fine with it, and totally get it. Sometimes the status of an issue or change can be lost though as we wait for a commit/change or comments/updates. If you feel you are overextended and won’t get to something in a timely manor, just let them know in a comment with your timeframe, or if you need to pass along the work to someone else. It helps stop the ‘Where are we at with this?’ question.

…but,

There’s not really an alternative here, it’s about the owner respecting your time and you respecting their timelines. Work it out, play nice and it’ll be ok.

5. Focus on your area of expertise

We all have our own areas of proficiency. When finding projects to contribute to, find areas you can assist where you can provide the most impact. If you are a great JavaScript developer, go look through the front end files and see where you can offer improvements to the performance or reusability. Sometimes they may not always agree with your changes, and thats when we have to go back to #2. If you can offer yourself as a Subject Matter Expert (SME), work with the repo owner to help own those issues, if you have the time (See #4).

…but,

If the project already has someone with your expertise, work with them to help review each others work. Unchecked work is dangerous, and if someone of a high skill level is being reviewed by someone with less skill, things will get missed. Two high level developers working in tandem can be a really powerful thing.

Go Fourth and Contribute!

That’s about it…go find somewhere to contribute! I’d never live it down if I didn’t say Easy Digital Downloads is a great place to start.

Cheers!

Posted by Chris Klosowski

Chris Klosowski is the Director of Technology at Sandhills Development, LLC, creators of fine WordPress plugins, and ecommerce solutions.

29 Comments

  1. “We all have our own areas of proficiency. When finding projects to contribute to, find areas you can assist where you can provide the most impact. If you are a great JavaScript developer, go look through the front end files and see where you can offer improvements to the performance or reusability.”

    That’s everything to me.

    Reply

  2. @sean

    It really is. One of the most amazing things I’ve noticed since joining the EDD team is the code review process we instituted. Not only do I get to share my knowledge, but I get to learn from others as well. Such a great two-way street.

    Reply

  3. […] you are new to contributing to an open source project, it can be a bit intimidating, but I wrote a few tips on some things to keep in […]

    Reply

  4. Amazing blog! Do you have any tips and hints for aspiring
    writers? I’m hoping to start my own blog soon but I’m a little lost on everything.
    Would you recommend starting with a free platform like WordPress or go for a paid option? There are so many choices out there
    that I’m completely confused .. Any recommendations? Thanks!

    Reply

  5. Hi there to all, the contents present at this website are in fact awesome for people experience, well, keep up the nice work fellows.

    Reply

  6. I am regular reader, how are you everybody? This post posted at this website
    is in fact fastidious.

    Reply

  7. cialis 100mg cost – buy online cialis tadalafil tablets in uk

    Reply

  8. cialis viagra buy brand viagra canada krvghsf – viagra helsingborg

    Reply

  9. buy viagra without prescription? cheapest generic viagra jncyztu – generic viagra price

    Reply

  10. viagra chep viagra 100 – generic viagra au

    Reply

  11. buy doxycycline monohydrate order doxycycline – order doxycycline

    Reply

  12. zithromax for sale 500 mg generic zithromax – buy azithromycin zithromax

    Reply

  13. cost of prednisone in canada buy prednisone – india buy prednisone online

    Reply

  14. doxycycline 100mg dogs cheap doxycycline – doxycycline hyclate 100 mg cap

    Reply

  15. stromectol 3mg ivermectin for humans – ivermectin 12

    Reply

  16. buy ivermectin uk generic stromectol – ivermectin 3 mg tablet dosage

    Reply

  17. stromectol australia ivermectin for sale humans – ivermectin purchase

    Reply

  18. ivermectin buy nz stromectol ivermectin for humans – cost of ivermectin lotion

    Reply

  19. cheapest ed pills online pump for ed – buy drug online

    Reply

  20. ed cures that actually work prescription meds without the prescriptions – buy ed drugs

    Reply

  21. lipitor india generic atorvastatin – lipitor india generic

    Reply

  22. plaquenil 400 mg hydroxychloroquine – buy plaquenil in india

    Reply

  23. plaquenil 100mg price plaquenil brand – hydroxychloroquine 300 mg tablet

    Reply

  24. ivermectin cream ivermectin tablets for humans for sale – ivermectin cream canada cost

    Reply

  25. lexapro pills for sale buy lexapro without prescription – lexapro coupon

    Reply

  26. lipitor canada pharmacy lipitor generic – lipitor 40 mg generic price

    Reply

  27. clomid for sale generic clomid – where to buy clomid

    Reply

  28. Today, I went to the beach with my kids. I found a sea shell and gave it to my 4 year old daughter and said “You can hear the ocean if you put this to your ear.” She
    placed the shell to her ear and screamed.
    There was a hermit crab inside and it pinched her
    ear. She never wants to go back! LoL I know this is totally off topic but I had to tell someone!

    Reply

Leave a reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.