Quit Today

I’m a slow blogger.  I’ve been meaning to post some thoughts about Greg’s [in]famous LPC keynote for a while now, but it’s taken me nearly two months to get to it.  I’ll start off by saying the same thing that I told Greg in person: I don’t think it was an appropriate setting for for Greg to single out Canonical for criticism.  It doesn’t matter who started it, it doesn’t matter what the merits of a particular argument are, and it doesn’t make sense for Greg to say he was not speaking as a Novell employee, since he is a Novell employee.  But I don’t really want to get drawn into that debate.

The slide that really stuck with me from Greg’s talk is the one from the conclusion that says, “Developers who are not allowed to contribute to Linux should change jobs.”  In the text for the talk, Greg writes, “The solution, quit and go work for one of the companies that allow you to do this!”  And I have to agree with this advice, because I think contributing to free software is in the rational self-interest of nearly any software developer.

When I started in this game about a decade ago, I was a typical Silicon Valley “senior software engineer” type: bright guy, knows how to code, decent resume.  I had a circle of people who I had worked with who knew me, but if I went for a job interview, the people interviewing me were usually meeting me for the first time.  But I was fortunate enough to end up in a job where I was working on open source InfiniBand drivers for Linux, and ended up becoming the Linux kernel InfiniBand/RDMA maintainer.  I should mention that it wasn’t a question of being “allowed” to contribute to Linux — I knew that InfiniBand needed open-source Linux support, and I didn’t listen to anyone who said “no.”

It has been great fun and very rewarding to build the Linux InfiniBand stack, but I just want to focus on the venal career side of this.  And the point is that tons of people know me now.  They know what I can do in terms of kernel coding, and maybe more importantly, they can see how I do it, how I respond to bug reports and how I handle the techno-diplomacy of collaborating on mailing ists.  And this has had a definite effect on my career.  I’m not just YASSE (yet another senior software engineer); I get calls from people I’ve never met offering me really interesting and very senior jobs.  And when hiring, I am certainly much more comfortable with candidates who have a visible history of contribution to open source, simply because I can see both their technical and social approach to development.

I do think that the contributions that have this value to individuals can be beyond Greg’s kernel/gcc/binutils/glibc/X view of the “Linux ecosystem.”  If people have done substantial work on, say, bzr or the Ubuntu installer, that’s still something I can go look at when I’m thinking about hiring them.  Of course, making contributions to a highly visible project carries more weight than contributing to a less visible project, but on the other hand, maybe there’s more room to shine in a project with a smaller community of developers.

Finally, Greg’s advice to “quit” made me think of a book from a few years ago, Die Broke that has as one of its main pieces of advice to “quit today.”  However, this advice is just a provocative way of saying that workers should be conscious of the fact that their employer probably has little to no real loyalty to employees, and so individual workers should focus on their own best interests, rather than what might be best for their employer.  And I think that metaphorical view applies just as well to Greg’s advice to quit: if you feel that you can’t contribute to open source in your present job, what’s stopping you?  Do you really need to change employers to start contributing, or can you just tweak your current job?  What will happen if you tell your manager, “Open source is good for our business for reasons X, Y and Z, and also it’s important to me for my career development, so can we come up with a way for me to start contributing?”

6 Responses to “Quit Today”

  1. Anonymous says:

    I work for a company that develops proprietary Linux drivers (no we do not produce graphics cards). Because of this I am not allowed to do any open source work on the Kernel even in my free time. When I complained I was granted permission to work on one open source project that was completely unrelated to anything our company does. This is fine, but I would greatly prefer to work on the kernel. So why do I stay? Well, I’m a key technical contributor to our Linux strategy and I see hope that I may be able to convince management that open source drivers will benefit the company. Additionally I’m a little scared that it will be difficult to find a job that allows me to contribute to the kernel as I am not an existing Linux kernel “rock star”.

  2. roland says:

    @Anonymous: Your situation is exactly what I had in mind when I said that Greg’s advice to quit doesn’t need to be taken literally. You have a job that you like right now, but the restriction on kernel contribution chafes. If I were you, I would keep pushing on the ban on any open source kernel work; it’s good for your employer and good for you if you are able to contribute to parts of the kernel that have no conflict with your business.

    Just by being a kernel developer, you must run into kernel bugs completely unrelated to your core work that you are able to fix. For example, some of my commits such as 4c41d3ad (“ACPI: Always return valid ‘status’ from acpi_battery_get_property()”) or bb10ed09 (“sched: fix wait_for_completion_timeout() spurious failure under heavy load”) have nothing to do with InfiniBand or RDMA. It’s just that when you run a bleeding edge kernel and you know how to debug the kernel, you end up answering questions like “why does my laptop crash on boot with two batteries installed?”

    With that said I think it’s not a bad idea for you to quietly explore what open source kernel jobs you can get. If you find something that you like better than your current job, then you can take it. There are certainly plenty of companies hungry for Linux kernel developers, and since you never have more leverage than when a company is trying to hire you away from your current job, you should be able to negotiate contributing publicly (or just use the job offer to get concessions at your current job).

    I definitely don’t think it’s necessary to be a “rock start” to get hired. Certainly my work as a subsystem maintainer gets me noticed by a lot of peope, but my experience with the kernel community has been that it actually is meritocratic. No one had any idea who I was when I showed up with an InfiniBand subsystem, and while it took a lot of work, it did get merged when it was ready. Certainly having no public track record makes finding job opportunities more of a challenge, but that just underscores why it’s in your interest to build that track record.

  3. Changing jobs is a daunting prospect at the best of times, in the current economic climate even more so. May of us would love to contribute to open source software on a full time basis but instead get relegated to doing it in our spare time which isn’t ideal. The best outcome for the majority then, as suggested, is to eat away at the inside; suggest open source to your company, actively promote it and be knowledgeable enough that when the company has questions, you can give good answers.

  4. AnonymousB says:

    I have a similar problem to Anonymous. I’ve written, on my own time, an experimental improvement to ‘git bisect’ (not actually integrated into git) which knows about the case where the test has false negatives (because the bug is intermittent). But, my employer thinks they own everything I do (even though that seems to be invalid in my legal jurisdiction). I talked to my manager about this, and the result was not encouraging: even though she thought the company had no interest in the code, releasing it would apparently ‘ring alarm bells’.

    The best suggestion she had was to write an academic paper (which would apparently fall into the category of acceptable professional development) and release the code with that. But I’m a bit stuck on the paper. Ideally I would release my tool now, and see if anybody thought it was worth pursuing, and maybe had some bug which they could try it out on and give me feedback. It’s much harder to try and work it up to a publishable level when I don’t even know if it’s actually of use to anyone.

  5. [...] Roland’s Blog Linux hacker, recovering mathematician, former athlete « Quit Today [...]

  6. Fab says:

    Hey Roland, I was just reading your blog, kinda randomly. Yes, the post is pretty ancient, but I want to point out a very important issue you raise, that of employer loyalty. It amazes me the number of people who expect(ed) their employer to have compassion and feelings towards them, just because they do(did) for the employer, and are completely blind sided when the numbers don’t add up anymore and they’re given their two weeks notice.