At LinuxCon in Düsseldorf, I gave a talk about the many ways that you can turn your work in open source into a career, so that you can get paid for all of the awesome work that you do in open source. If you already have a job in open source, I also talked about some of the different options that you have if you eventually want to do something different.
I uploaded the slides, but several people (rightly) pointed out that the slides with one sentence didn’t really capture the details that I presented, so I decided that I would take my speaker notes and turn them into this blog post. Enjoy.
I ended up working in open source accidentally. When I was in college getting a computer science degree, one of the university sysadmins was teaching a UNIX system administration class. It was my favorite class – I liked it way better than programming, and when I was looking for my first job, I managed to luck into a junior sysadmin role at a local manufacturing company. Manufacturing companies really didn’t spend money on IT, so most of the tools that I used were open source. This was the mid-90’s, so it was way before you went to company websites to download open source products, and you didn’t want to install some random binary when you weren’t sure of the source, so I was downloading tarballs of gcc and other tools from ftp servers at places like the University of Wisconsin and CERN so that I could poke through the code before compiling and installing it on one of our UNIX boxes.
A few years later, after I had moved out of the sysadmin role and into more program management, I was at Intel in 2000 or 2001 when we were trying to get people to add support for the upcoming Itanium processors, and I was working on a team focused on working with developer tools. They needed someone to look at Linux developer tools, and especially the open source tools to see which ones were worth spending time on. Since I had used open source tools and had a UNIX background, they threw the project in my direction. A huge part of the evaluation was related to the community. Is there an active community? Are there regular releases? Are there users for the tools? I started to get more and more fascinated with how the communities worked. When I first started using open source, how a bunch of random people threw code together and actually ended up with something not only worked, but worked really well was a mystery to me. As I started looking more closely, I realized that there was actually some structure, with committers and maintainers, that just wasn’t obvious from the outside. I started getting more and more fascinated by how open source communities worked, and I started blogging about open source and speaking at conferences, which led me directly to my next open source job, which I’ll talk about a little later.
Now, obviously not everyone can be lucky enough to accidentally end up in an awesome open source job, so I’m going to talk about a few other options. I’ll will start with why you might want to make a career out of open source, but the bulk of the talk will explore the many ways to get open source to pay your bills along with examples of real people who have taken these paths. Even if you have already have one of these jobs, this talk will provide options for additional career paths and tips for what to do improve your chances of getting that next gig and how to avoid sabotaging your career. I’ll also share some time management tips to avoid letting this work take over your entire life (unless you want it to)!
A lot of my friends are people that I met in open source communities around the world, and I often use travel or vacations as an excuse to visit them. Yes, this includes occasionally attending tech meetups while on vacation
I’ve also been surprised at how many times I run across the same people in different projects. Last year, I was contacted by someone from the Openfire community, a Jabber / XMPP chat server community that I managed back in 2007 or 2008. He’s using Puppet now at the university where he works, and he was interested in working with us on a Puppet Camp.
This picture is from a werewolf game at a MeeGo conference years ago, and I’ve stayed in touch with some of these people. I’ve found that I tend to form lasting friendships with people that I spend a lot of time with at conferences. Werewolf is one way, but there are also people that I spend time hanging out with over dinner, drinks or other conference activities that I stay in touch with. I’m also surprised at how often my work intersects with some of these friends, and we’re often in a position to help each other out with some project or activity in the future.
This is me giving a talk at the MeeGo Conference in Dublin. Not everyone who works in open source gets to travel, but I think that we have more opportunities to travel than many of our peers who work on proprietary products.
There is a lot of Conference travel with events like the kernel summit, KDE Akademy, other gatherings of developers for the open source projects. We do Puppet Contributor Summits for project developers twice a year, once in Europe and once in the US at our annual conference, but we also do 20-30 Puppet Camps for users around the world. These are great opportunities to meet the people that I interact online in real life.
Part of this is because we are working on open source projects, so we can talk openly about the work that we do. We don’t have to worry as much about accidentally leaking some corporate secrets. Attending and especially speaking at conferences is often encouraged by employers who want people to know about the work they are doing. It also makes it easier to hire people.
If you work at a big company, there is often company travel where they send you to places like South Korea to work with other companies that are working on the same projects.
Why: Future career
Because our work is in the open where other people can see it, we have visibility that many people just don’t have. When someone is interested in hiring you, they can Google you and see all of your participation in these open source communities. Being able to see actual examples of your work is way more useful for hiring managers than reading a boring resume.
Working in open source projects also allow us to make connections with people whose companies are hiring from the community. At every company where I’ve worked, we’ve hired people out of our open source communities. This is especially true of Puppet Labs and Intel.
I love the fundamental ideals behind open source software. I have the freedom to use it, to inspect all of the details, make changes to it, and to redistribute it as I need to without getting permission from anyone else. As a result, I think that we end up with software that is innovative and interesting, and we get to work collaboratively with other people.
As community lead, I even spend a lot of time collaborating with my competitors, which may sound odd to people who haven’t worked in open source. As an example, every year, all of my favorite competitors get together to organize the Configuration Management devroom at FOSDEM and ConfigManagementCamp the following two days.
How: New Project
This is what a lot of people probably think of when they think about people who have made a career out of open source, but it’s also probably one of the hardest ways to make a career out of open source. Your options are to find a company who is interested enough in the technology to hire you to work on it full-time – that’s the easy way in this option, and it’s not really easy. The hard way might be one of the most rewarding ways to make a career out of open source, but it requires building a company around the technology, and that can be hard work. It also involves doing a lot of business-y things to build a company, which isn’t something that every developer is capable of doing or even wants to do.
- Linus Torvalds is a well-known example of someone hired by organizations to work on Linux full-time at Transmeta, and now at the Linux Foundation.
- Frank Karlitschek wrote the original ownCloud code, but joined up co-founders Markus Rex and Holger Dyroff to help with the business side of the new company.
- Luke Kanies is the founder of Puppet Labs – he picked the hard way. He wrote the original code and founded the company to support the work on his code. As the CEO of Puppet Labs, he has to focus on both the technological solutions and the business, and luckily for me, he’s become really good at both sides.
This is a much easier path than starting a new project, and this is probably the most common way to turn your open source work into a job. Most of the companies that I’ve worked for have hired quite a few people out of the community. We did this when I was at Intel, and we do it now at Puppet Labs.
This is one of the best ways to get your foot in the door with an open source job. Your participation in the community helps you learn the skills that you’ll need and make the right connections to get that dream job while also proving publicly that you can do the work.
- Chris Aniszczyk, now head of open source at Twitter, got started in open source by hacking on freeBSD / Gentoo and started participating in the Gentoo community. These Linux skills helped him land his first job at IBM.
- Selena Decklemann is currently at Mozilla and is well-known for her work with Postgres. In college, some friends taught her how to build a computer from scratch. She installed Linux on it. Within six months, she had a job in the law school at the University of Oregon as a sysadmin. When her boss quit, she was a sophomore in charge of the law school’s computers. Her active and helpful participation in other open source communities has been one key to her success and long career in open source.
- Dirk Hohndel, currently Chief Linux and Open Source Technologist at Intel, was one of the first kernel developers in 1991 and then got involved in XFree86. In the mid 1990s, this work on Linux and related technologies turned into a full-time job when he started working at SuSE in Germany.
How: Not Just Developers
Not unlike companies, open source projects need people to do all kinds of things. You can’t really just have developers and hope that all of the other stuff magically happens. Someone needs to write the blog posts, do documentation, promote the project, and so much more.
- Leslie Hawthorne, currently Community Manager at Elasticsearch, started her career working at Google as a staffing coordinator, and went on to create the world’s first initiative to involve pre-university students in open source software development. She’s been working in open source ever since.
- Rikki Endsley spent her early years in open source as a managing editor for more sysadmin and Linux magazines than I can count, while gradually doing more and more community management until landing her current gig as community evangelist at Red Hat.
How: Join a Company
Another good way to start your open source career is to work for a company that does a lot of work in open source software. You can join one of these companies in all kinds of different roles: writer, marketing, system administrator, developer, lawyer, and so much more.
This is how I first turned open source into an accidental full-time job. When my manager at Intel asked me to start looking into some Linux development tools, it sounded like an interesting challenge, and I’ve been working in open source since that time.
- Karsten Wade joined VA Linux as a project writer, moved to RH as a project writer and later moved into full-time open source project work. Contributing to the open source projects before it was part of his full-time job and networking with other people were key to his success.
- Kim Moir worked within OTI, which was acquired by IBM when she was asked “So would you like setup servers for a little open source project called Eclipse?” 13 years later she is still in open source where she works as a release engineer at Mozilla.
How: Bring Open Source Into Your Company
As I mentioned earlier, when I was a sysadmin at a manufacturing company, we used a lot of open source software, since traditional manufacturing companies didn’t spend money on IT. Open source tools were really the only option for me.
- Jeff Luszcz, co-founder of Palamida, a company focused on application security for open source software was working at NASA in the early 90s with a VERY small software budget. He ended up using tools, like GCC and others, which were “free” and powerful.
- Eric Shamow, who I worked with at Puppet Labs, brought open source into an existing job to fill a need. He helped a university move from Windows and UNIX servers to mostly Linux and turned working with Linux systems into a job.
How: Get Out There
Some of my most interesting opportunities have come about as a result of my writing and speaking. My first full-time community manager gig landed in my lap when Larry Augustin and I were both speaking at a small open source event. I was talking about community, and he was on the board of a company who needed some community help. One of my first big speaking gigs was at SXSW, and I was asked to be on a panel by someone who had been reading my blog, but who I didn’t actually know. When I was consulting, a lot of my work came from people who had heard me speak at some point (often years earlier) or who were reading my blog.
- Danese Cooper, currently the head of open source for PayPal, has done some really interesting work within open source, including creating the open source programs office at Sun and an open source strategist at the Bill and Melinda Gates Foundation. A big part of her success has come through her blogging and speaking at conferences on the topic of open source.
- Stormy Peters, currently at Mozilla, has a similar story. She co-founded, and was later the executive director of the GNOME Foundation. She also founded the open source program office at HP, but much of her success comes from her speaking at conferences about open source.
- Ibrahim Haddad, Head of the Open Source Innovation Group at Samsung Research America, was at university and the professor showed up holding a shoe box with Linux floppies as the first homework assignment, this was November 1994. In January of 1999, he wrote his first Linux Journal article.
This is mostly a job strategy for people who are already well-known for their experience working in open source, but it’s a great career path if you want a little more flexibility from freelance consulting or if you want to build a consulting practice that fits your unique skills.
- Christoph Hellwig’s experience with contributing to the Linux kernel and related technologies allows him to do consulting for a wide variety of companies while supporting his snowboarding habit.
- Florian Haas has years of experience in open source and is an expert in high availability open source solutions, which allowed him to co-found Hastexo to focus on helping customers with their open source implementations.
In my incredibly unscientific poll (asking people to tell me how they got started working in open source on Twitter and G+), the most common answer was that they got started with documentation. It’s a great way to get started in an open source project, which you can turn into a career by the various paths that I’ve already talked about.
- Eric Redmond, who now works at Basho, wrote documentation and plugins for both major open source projects he’s been involved in. In one case working his way to core committer then joining a startup, and in the other case joining a company to work on core, but both cases started with docs.
- Kris Buytaert, CTO at Inuits, started with documentation, then moved on to release management, then started submitting patches, then doing talks, then organizing conferences, like DevOpsDays.
- Jeff Osier-Mixon (aka Jefro), Community Manager for Yocto, also got his start in open source with documentation with Cygnus.
How: Be Nice
Now, I’m going to transition into some of the things that you can do to improve your chances of getting that first job in open source or improving your chances of getting the next gig. Your interactions within the community will live forever. You never know when that random person you are talking to on IRC might have a job for you years in the future – assuming you treat them well Be nice and avoid negative interactions with people. I continue to run into the same people in different communities, and you never know when you might end up working with or even for that person that you are interacting with online today.
Networking is another key to increasing your chances of being successful. This is true if you are looking for a new job in open source or just making the best of the job that you have now.
When you are looking for a job is not the time to start networking. This needs to be more long-term and something you should be doing all the time. It’s also not about being weird and sleazy or about exchanging the most business cards. It’s about having interesting conversations. When I think of these activities as “networking” or even as work that it tends to feel weird. I recommend approaching it as having conversations with people that you find interesting. If someone is boring you to death, you should make a nice, graceful exit and find someone whose work is more interesting to you. Talk to a wide variety of people and learn more about what they do. If it’s something that you want to know more about, then spend more time talking to them about it. Personally, I love hearing stories about how people ended up working in open source and hearing about what people are working on.
Once you get that awesome open source gig, one of the tricky things about working in open source is that these projects are 24×7, something is always going on, and they can suck up as much time as you allow, which can leave you exhausted and burned out. Finding the right balance between doing as much as you can, while not pushing yourself past your limits is something that I constantly struggle with. I always want to help out and do everything that I can to make the project successful, but there is only so much that I can do.
I try really hard to prioritize my activities, especially when I already feel like I’m starting to get burned out. I try to be brutal about which tasks I need to focus on because they are the most important, not necessarily the ones that other people think are the most urgent.
I also try to delegate – sometimes this is explicit, like asking someone to help out with a task, but a lot of times, it’s more subtle. I often wait to respond to requests or questions in hopes that someone else will respond. This works more often than you might expect, but it does mean that I often have to look at thread later to make sure that someone responded. Waiting also has the side effect of giving others the space to contribute. If you are answering too many of the questions, people start to expect that you will be the one to respond and won’t bother replying to questions from other people.
Most of us fail at documentation at some point. I know, I know, no one wants to write documents. It takes precious time, but it can save you so much time in the long run.
Documenting processes and procedures for the project is also what allows you to more easily delegate tasks. It’s way easier to delegate a task to someone else if you can point them to a document describing exactly what they need to do.
If I’ve answered the same question or written similar content 2 or 3 times, I always try to make sure that I document it. I have tons of email templates and canned responses floating around. I use canned responses as the start to my answer when I get those common questions. I usually customize it a bit, but the basic idea and usually a few links to more info are mostly the same. I also have a bunch of docs that contain email templates for common tasks, like accepting or rejecting speakers for events or asking people to do common tasks.
I take my vacations very seriously. For someone who works and travels as much as I do for work, I need some serious downtime. I take one “real” vacation a year, which usually involves a beach, fruity drinks, a Kindle full of sci-fi books and not much else. For these vacations, I ignore everything – my work email, which is where my mailing lists go, remains unopened, and I try not to think about work or any of my open source projects. I’m lucky that I’m in a community full of really great people, which makes this a lot easier.
I’m a lot more flexible on some of my other vacations. I try to disengage from work and only do things that seem like fun. I might play with some new technology that I’ve been meaning to try or write some blog posts or attend a few meetups, especially if I’m in another city.
I also try to make sure that I take some time every day for things that I just enjoy doing that allow me to completely disengage from work and other projects. Right now, this is mostly reading sci-fi and playing a few games of Hearthstone.
As a community manager working in open source communities, I’ve had a fantastic opportunity to explore strange new worlds, to seek out new life and new civilizations, to boldly go where only some people have gone before.
You can check out the slides from the presentation with many more images and a one sentence summary of each point.
I don’t have the patience for digging through the spam to find the legitimate comments on my blog, so comments here are disabled. However, I love feedback and you can reach out to me as @geekygirldawn on Twitter or via various other methods located in the sidebar.