It’s Open Source Week at SitePoint! All week we’re publishing articles focused on everything Open Source, Free Software and Community, so keep checking the OSW tag for the latest updates.
Gather ’round kiddies, Uncle Cal has a history lesson to share.
Back When the World Was Young
Back in the early days of Open Source – when Dinosaurs roamed the earth and Rasmus was a young man – there were two types of open source projects we talked about: those that didn’t cost any money, and those that gave you the freedom to redistribute and modify the code. The analogy we used was that projects were “Free as in beer” if they didn’t cost anything, and “Free as in libre” if they gave you the freedom to share with others.
That was how we explained Open Source to muggles back then, and there were muggles everywhere. It should be noted that this was also back in the time when the first step in learning PHP was compiling the Linux kernel on your server.
Fast forward a few dozen years and here we are, Open Source is now an ecosystem, not a user group that you and five friends attend, or a magazine to which you subscribe. The problem is that most of us have stopped talking about the different types of open source, we just assume it is both. Most of the projects in our corner of the world – PHP – actually is both. The PHP license – a derivative of the BSD license – is very open about giving you freedom with very few responsibilities. Other projects use GPL, MIT, Apache, and other licenses. Each developer or group has the right to select whatever license they feel most comfortable with for their code. If you use their code, it is your responsibility to abide by the restrictions and responsibilities of their license.
Most developers who use open source understand everything I said in that last paragraph. We get it. If it’s GPL, we have to ship the code, if it’s MIT, we have to leave the copyright and name on it, etc. Most of us understand the basic ramifications of licenses, even if we haven’t delved into the dark details. But using Open Source code carries with it another responsibility, another price if you will.
That is the price of Open Source: giving back. It is the price that some developers and most companies that make their living or profits off of Open Source forget to pay. Giving back is not a tip that you are giving back to Open Source, giving back is an implied responsibility.
How to Give
“Ok, Uncle Cal, we get it, whom do we pay?”
See, if you are thinking that, then you really don’t get it.
Yes, almost any of the PHP Core Developers would love to have you slip them a couple hundred for their time. If enough of us did this, some of them could dedicate all of their work hours to making PHP even better.
But that’s not how we give back. Money can be earned. When I say giving back, I mean giving the one thing that can’t be earned and once given, cannot be replaced. When I say you need to be giving back to Open Source, I mean giving your time. For companies, that means giving each developer on your staff time to give back to the Open Source project of their choice (their choice, not yours). For individuals, this means getting involved in your favorite project. For some of us that is writing code, for others, it’s documentation. For some like me, it means writing tutorials, giving talks at user groups and conferences, and doing whatever we can to educate; to help build the next generation of developers.
All of us have a favorite project. For me, it just happens to be PHP, but my second favorite is a small component of Zend Framework. I can’t contribute directly to PHP – I am not a C programmer. I can, however, help spread the word about the fact that PHP is awesome. I can contribute directly to my favorite Zend Framework component. It is a piece that I use a lot, so when I found out that it wouldn’t do something, I rolled up my sleeves and wrote the code to make it do what I needed. Then I sent the changes back up the line so that others could benefit as well.
“WAIT! Hold on, back the bus up! You only contribute when it benefits you, don’t you?”
Maybe? So what? I didn’t say it couldn’t be self-serving as well, I said you have to give back so that others could benefit. Open Source is all about “I wrote this and if you want to use it you can.” We are helping ourselves, but we are also helping others.
What if they don’t want my gifts?
I love WordPress. As much crap as I give Matt Mullenweg – and in the past few years, I’ve given him a lot – I respect what he has built. I use WordPress for almost all of my projects because it is a tool that is easy to use and I can get stuff done with it. Even so, the few times I’ve contributed back to WordPress, my changes have been roundly ignored.
As part of my job when I worked at Pantheon, I was required to spend time each day giving back. WordPress is a very large and complex system with hundreds of developers working on it daily. Believe it or not, they weren’t sitting around waiting for Uncle Cal to come rescue them by fixing bugs. None the less, I went to the bug tracker, found a couple that I felt I would fix, forked the project, wrote the code, and submitted PRs.
One of them was ignored. I’m not sure why sometimes WP takes long to fix non-critical bugs. One of the bugs I submitted a PR for, I had to submit a ticket for as well because no one else had noticed it yet. That one was simply rejected because it was so trivial that they didn’t even feel like putting it through the review process. Along the way, I “fixed” a couple of issues I saw in the code I was working on. Lack of curly braces in IF statements, etc. Trivial things but important to me. I got a polite comment on my PR that in effect said; “Please stop”.
WordPress has a very rigid process for changes. A system that large and used by that many websites has to have one. I failed to read their guidelines, and I failed to follow their community conventions.
WordPress – and every other Open Source project you care to name – is not obligated to accept my PRs. They are under no obligation to accept yours either. I don’t know of a single Open Source license that requires a project to either accept a PR or give a valid reason why they didn’t. It’s just not there. They can reject for a reason, or for no reason at all. The project does not owe you, you owe the project.
That having been said, if you write the code, if you contribute to the documentation, or if you give of your time in other ways to a project, and the project decides, for whatever reason, that your change is not necessary or desirable, that’s fine, you have done your part. Your debt is partially paid. You gave some of your time and talents and that is all that is asked of you.
Pay the Price
What ever project you are working with, take the time to give back. Don’t let Open Source die in our generation.
Preserve this great concept; this ecosystem that we have helped build and that has allowed us to build so much. If you are a developer, find your favorite project and give back. If you run a company or a team of developers, give them time on your dime to give back to a project. Help keep the Open Source ecosystem thriving for the next generation of developers.