Is this your first visit? You may want to subscribe to the feed.

Articles tagged with community

Give back to the community

In our latest client project, we make use of at least 20 open source projects, from our beloved Rails, to great testing frameworks like RSpec, to plugins like Paperclip, to server-side software like Passenger, and many more. While we are appreciative of the hard work that goes into creating those projects for the first 2 seconds after we find them, we often take these libraries for granted.

As a small development company, we need any advantage we can get. It is the vibrant open source ecosystem that gives us a competitive advantage against the big guns. And not only do we benefit from the work of the community, our clients get more sophisticated software that costs less. Everyone wins.

Every project we get paid to write makes extensive use of open source software. We try to do our part to contribute back to the community, but our contributions definitely aren’t worth what we get out of the community. So we’ve come up with an idea…

At Collective Idea, any time we use an open source library in a project, we’re going to make a $10 donation on behalf of our client to that project. For our client, the cost is small: a couple hundred dollars in exchange for thousands of dollars worth of savings and better software.

We encourage you to do the same.

Project Maintainers

If you maintain a project on GitHub, do yourself a favor and make it easier for us to donate. GitHub lets you add your PayPal account to the project so all we have to do is click a button.

Code: community Jan 09, 2009 ● updated Jan 12, 2009 8 comments

Acknowledge contributions

If you have ever released useful code into the open source wilderness, then you know that at some point, you get patches or contributions that are well-intentioned but don’t quite meet your standards. Either the quality is not what it should be or they use a different style than the one you prefer. Often people make contributions that you just don’t want to incorporate, but If the contribution is valuable, there are two ways of going about resolving this.

On large projects, or when you’re just too busy, you give the original contributor some feedback as to what you’d like to see changed and ask them to re-submit it. But other times, you just fix it yourself. When going this route, it’s tempting to discard the original contribution, simply taking the intent and redoing it.

I’m guilty of this. But by failing to acknowledge their hard work, you remove their motivation to contribute to your projects. So, honor the original author’s effort by accepting the original contribution, and make your desired changes on top of that.

Update: from Brian Ryckbost:

Code: community Jan 08, 2009 ● updated Jan 09, 2009 2 comments

Push Upstream

Scenario 1: You’re half way through a really productive day on a wicked new feature for an app and everything is going smoothly. Then, from out of nowhere…SMACK! A nasty bug in a library you depend on splatters right in your face. “Seriously, nobody has come across this before?” you mumble.

Scenario 2: You’re using some fancy library and you think to yourself, “Geez, wouldn’t it be sweet if it did <insert fancy feature here> for you?”

The temptation, especially with Ruby, is to solve both of these problems in your app’s code base by modifying your copy of the library. This may seem like the path of least resistance and the quickest way to move forward in the short term, but in the long term all you are doing is delaying the cost of properly solving that problem. You are incurring debt, which over time compounds and will end up costing you more to fix.

First, when you’re making the change just for yourself, you’re less likely to solve the problem properly or do the appropriate testing. You’ll do some hack job for the problem you have, without considering how it might affect other scenarios.

Second, if you found a bug or have a desired feature, chances are that someone else has or will run into the same situation. Fixing it locally doesn’t help everyone else.

Lastly, fixing the bug or adding a new feature directly in your app makes it nearly impossible to upgrade the library. I spent over 4 hours this week trying to upgrade an open source app to the latest version of Ruby on Rails, and still have over 100 failing tests. The biggest problem isn’t Rails itself, but all the plugins that also need upgraded, many of which had been patched in some form.

At Collective Idea, we use git submodules for as many external libraries as possible. While submodules have their own issues, and probably aren’t a recommended approach, the positive side-effect is that it strongly discourages us from patching libraries in place. If we do need to make a change, each library is already its own git repository, so we can push our changes and send a pull request to the original maintainer.

If you need to modify an open source library, don’t just do it in place. Push your changes upstream. Irresponsible patching hurts us all.

Code: community Oct 22, 2008 ● updated Oct 22, 2008 1 comment

Subscribe

Browse by Tag