What I’ve learned from open-source
and how to get started
Oh my octocats.
I first heard about the idea of “open-source” around four years ago during my second year of college. The thought of people of sharing code and working on projects together sounded really cool, but I didn’t fully understand the excitement around it. I had a GitHub account, but all the stuff on it was just coursework and hackathon projects that were unintentionally open-source because I didn’t really want to pay for private repos. (Yay, student life.) I didn’t think much else about it, and life went on.
Last Fall, I graduated from Penn and started working at Venmo’s San Francisco office as an iOS engineer. I started using GitHub every day for work. My team started using CocoaPods for managing third-party dependencies and trying out cool open-source projects. That’s when it first occurred to me that it might be fun to make something of my own.
My first intentionally open-source project
Sometimes, I buy a domain name for the sake of owning a domain name. One of the domain names that I happened to own was www.parsimmon.com (a pun on “parse” and “persimmon”). I enjoyed playing around with Python’s NLTK (Natural Language Toolkit) in school but realized that Cocoa didn’t offer anything like that except for NSLinguisticTagger, which I had heard about in an NSHipster article. Again, I didn’t think much about it. But this time, I tried something. And over a weekend, www.parsimmon.com became real. I released Parsimmon, a wee Objective-C linguistics toolkit for iOS, and my first intentionally open-source project.
Within moments of releasing it, I got my first ever pull-request all the way from the other side of the world in London. Two days later, I got my second pull-request, and this time it was from Zurich. I thought, “Oh my octocats, there are people out there. This is exciting.”
Shortly after, I open-sourced a couple of UI components under Venmo: VENCalculatorInputView, and more recently, VENTokenField. As a team, we’ve released a tonne more projects and have gotten contributions from all over the world, including but not limited to the Netherlands, Denmark, Brazil, Germany, Switzerland, Taiwan, Brazil, and Canada. I feel more connected with the world, and it has even inspired me to start using GitHub for my Dutch learning adventures by open-sourcing my notes, but that is a story for another time.
Learning healthy habits
Getting to work with people from around the world is fun, but the most important part is the kind of people you get to work with.
Instead of scoffing at the fact that Parsimmon had no tests, this pull-request added them. Instead of judging the fact that VENCalculatorInputView didn’t have continuous integration, this pull-request added Travis CI support. Instead of noticing something and walking away, this community acts with their feet via pull-requests.
Since then, I’ve learned to write tests and add CI to my projects whenever possible. Furthermore, I learned the one of the best habits to get into:
If you notice something that can be improved, fork it.
I’ve been trying to apply this habit to my day-to-day life and work, and I think it has helped a lot. It gives me a lot of positive energy to bring about change in general, and I’m grateful for the open-source community for this. So thank you everyone that I’ve worked with thus far, and everyone that I might have the pleasure to work with in the future.
How to get started
It’s easy for me to say how fun it is to do open-source work, but I know firsthand that it’s hard to fully understand the excitement of it without first trying it. Luckily, there are easier ways than writing your own framework or library to get a taste of it. Here are some ideas:
- Fix a typo in a README
- Improve the documentation (this is particularly relevant if you’ve tried using a library and had trouble following the docs)
- Fix a small bug
- Add tests
Just try it. You might love it. ✌️