LearnGive Away Some Code


writes on May 5, 2011

This is the second post in our series about raising your profile in the web industry. Be sure to check out Ryan’s first post, about how to get a conference speaking slot.

I was super excited when Ryan mentioned that he would be writing a series about raising your profile in the web community. It’s something we’ve all dealt with at some point, right? How do I get my name and ideas in front of others while at the same time avoiding being that person? Whether it’s good or bad, I think everyone wants to be known and heard, because we want confirmation that what we’re doing means something to others. This series isn’t about how to be a douche – it’s about how to share your ideas and work hard to make the web community even better than it is today.

With that in mind, today we’re going to look at raising your profile by contributing to the community by working on open source projects.

What should I work on?

So of course, the first question you hit when you decide that you’re interested in getting started with open source is what project to actually work on. That can be a pretty tough decision to make, but I can say from my own experience that your best bet is to scratch your own itch with your project. If you’re going to commit your free time to working on something, it had better be something that you’re interested in, but if you’re anything like me you know that what you’re interested in has a tendency to change. That’s why I try to work on projects that solve a problem that I have at work. When I started working on Handlebars.js I was in the process of starting on an app that had as much front-end JavaScript as it had backend code. When I wrote PayDay I was about to have to write yet another invoicing system and write the code for generating PDF invoices again. It’s just easier to stick with a project when you actually use it in your day to day work.

You can absolutely come up with an idea using whatever technology you use. There are open source CSS frameworks and JavaScript frameworks. Don’t let it hold you back that you don’t feel like you’re an elite rockstar ninja creature-from-the-black-lagoon unicorn. Nobody feels that way, and if they do they’re probably jerks. Just go for it.

Where should I put the code?

At first, nowhere except your hard drive. Seriously. Don’t show your open source project off until your proud of it. Ideally don’t even talk about it, except if you feel like you need feedback from a few friends. Let it be yours. That may seem silly, but there are a several important decisions you have to make early on in your project that you’ll want to make yourself, before you have outside influence from contributors. Decisions like how your API is structured, what your coding style is, and what testing framework you’ll be using.

Once you’re ready to share your code, I highly recommend hosting it on GitHub. GitHub is where most independent open source projects seem to be happening these days. They’ve got great collaboration tools like their issue tracker and wiki features, and nice download functionality. You can even host a website for your project with them. And, when you start receiving contributions, GitHub’s pull request feature is literally life changing.

If you really can’t stand git, there’s BitBucket for Mercurial and a ton of other similar sites for almost any other version control system. They’re almost all free for open source projects. Just be sure that your code is in a version control system and that all the world can see it. Otherwise, it’ll be hard for potential contributors to work with you.

Pick A License

If you don’t pick a license before you launch, someone will inevitably ask you what license you’re using. The Open Source Initiative’s license directory is a great place to figure out what the terms of all of the different open source licenses are. I almost always go with the MIT license, which basically says that people can use your software for about anything they’d like (even for commercial uses) as long as they distribute the license and copyright notice for your part of the software along with it. I like the MIT license because it makes sure that anyone using a project I’m working on it can use it how they see fit.

Write some kick butt documentation.

Great open source projects have great documentation. If you don’t have great documentation, your software will be hard to use and potential users may even create their own code instead of using yours because they can’t figure yours out. Include a README file with your source that summarizes how to install and use your software. If you’re distributing a library, be sure to write API documentation. The best projects have a real home page as well, with the information from the README and links to the source repository for the project and any other information. Don’t worry if you don’t have crazy design skills. Just trade some programming time with a designer to talk them into designing the project site for you.

Kyle Kneath gave a really great talk at Magic Ruby this past year about documentation. I’d highly recommend checking out his slides.

Eek! It’s time to launch!

So you wrote your project. The source is up on GitHub. You’ve got documentation and an amazing new website that you bartered with a designer for. It’s time to launch! But wait, how will anyone hear about your project? This step is actually really important. What good is giving something to the community if no one knows that you gave it?

Thankfully, it’s pretty easy to get the word out these days. Pretty much every technology community has a few news sites and podcasts that you can contact about posting a release announcement for you. In the Ruby community that means sites like Ruby Flow and Ruby5. There are a lot more broadly focused community news sites like Hacker News and Reddit that are great for making announcements too. If you think your library is a great fit for the web community, email me and it may be something we can share here on Think Vitamin.

If you’re emailing bloggers, be sure to read Shawn Blanc’s great post about sending App Emails. It’s about iPhone apps, but it’s completely valid for almost any emails to bloggers where you’d like them to post about something.

One other great way to let people know about your app is to speak about it at conferences. In the Ruby community there are literally 12 bazillion conferences every year, and pretty much every single one of them includes talks about open source libraries and tools. Ryan’s post about how to get a conference speaking slot will certainly help out there.

This sounds like a lot of work. Is it worth it?

Absolutely. Especially if you’re a programmer, open source is the easiest way to prove to a potential employer that you can do what you say you can do. Instead of listing things like “Proficient at JavaScript” on your résumé you can share a link to your JavaScript project’s source code. Instead of saying that you know how to lead a team of developers, you can show the fact that there’s a community that you lead around your open source library.

Open source projects are also a really wonderful way to meet people in your community. I’ve gotten to know some really amazing people that I know I wouldn’t have met if I hadn’t been working on projects with them. If you’re from a town without a huge web community like I am, that’s a really big deal.

Last I’d say that once things come full circle and you’re helping other people start their own projects, you really realize just how valuable this all is. The web is much more a community than an industry, and it’s amazing to have the opportunity to help the next generation of developers and designers start contributing to the community.

Thanks to Sebastian ter Berg for the great photo above.


Learning with Treehouse for only 30 minutes a day can teach you the skills needed to land the job that you've been dreaming about.

Get Started

5 Responses to “Give Away Some Code”

  1. Anonymous on May 12, 2011 at 12:49 pm said:

    Kudos to you Alan, for having the bravery to post a terrifically colorful comment like this in a commercial blog post, “This series isn’t about how to be a douche – it’s about how to share your ideas and work hard to make the web community even better than it is today.” Thank you too for a useful article. I’ll be heeding much of your advice. Much obliged!

  2. Hey buddy! Thank you for giving away this knowledge. =D

  3. Anonymous on May 6, 2011 at 2:52 pm said:

    in deed, those information is a blast!!! gonna remember this time to time when i will be engaged in with this stuffs.. Thanks to you :))))


  4. good documentation is vital if u want others to use the code.
    steroids blog

  5. oh… that all is so close to me…. i liked your article very much and say abig thanks to you for that!!!!!!!!

Leave a Reply

You must be logged in to post a comment.

man working on his laptop

Are you ready to start learning?

Learning with Treehouse for only 30 minutes a day can teach you the skills needed to land the job that you've been dreaming about.

Start a Free Trial
woman working on her laptop