Kohsuke Kawaguchi - Inside the Mind of the Jenkins Master
In this episode of DevOps Radio, we hear from Kohsuke Kawaguchi, CTO at CloudBees and founder of the Jenkins project, talk about the origins of Jenkins, the evolution to Jenkins 2.0 and how the community has grown and changed since Jenkins 1.0.
Andre Pino: You're listening to DevOps Radio – the podcast series that dives into what it takes to successfully develop, deliver and deploy software in today's ever changing business environment. This show is sponsored by CloudBees, the enterprise Jenkins company and continuous delivery leader. This week we're joined by Kohsuke Kawaguchi, the founder of the Jenkins project and CloudBees chief technology officer. Kohsuke, thanks so much for joining us today.
Kohsuke Kawaguchi: Yep, you too. Thanks for having me.
Andre: You know, you're like a rock star in the Jenkins developer community. Tell us what that feels like, having been in those early days and started and today, you know, you're seen as this, you know, this rock star figurehead in the Jenkins developer world. What's that like?
Kohsuke:I guess I was at the right time at the right place. And then if enough people are using it, I feel like I have been just lucky. Sometimes I get stopped by random people and they've seen the _____ and ______. It's kind of great and also scary. I think I was in a Boston Market once and somebody walked up to me. A guy was trying to disguise to see if I was somebody like who I should know, it turns out that he suspected I'm me. And then that worked out well. Sometimes I see random people – I think once, I see random people walking by a local library who had the Jenkins Caesar conference t-shirts on. I was so tempted to walk up to him and say something, but I eventually didn't. But yeah, when that happens, that's great.
Andre: Great, so automation is one of your passions – isn't it?
Kohsuke: Yeah, I think so. It's partly because I like – it's always easier to solve a problem that you have. So that kind of problem I have tends to be the things on the computer. Basically my day job has been writing programs. So when I think about the kind of problems I face, they tend to be all automated – there's nothing _____ involved here. I started thinking about, well, I could make these people more productive, if I can kind of create more – easier box for them to be in and provide more automation help. So that sort of – for me, partly began, okay, I can help these other people inside my team by grooming the software. So that's easy to get motivated on.
Andre: So do you find yourself trying to apply any of your computer skills and talents to hobbies?
Kohsuke: Yeah, it's called cross-stitching – I don't know if you know that.
Andre: I am familiar.
Kohsuke: The program then I started writing, is given a picture, I want to turn that into a design for cross-stitching. There are some constraints, like in this way _____ _____. But on cross-stitching, the colors only come in _____ which is the thread that we can buy. So there are things like that. If I go to like a local – or like I say, if I go to make _____ _____ ______ those are usually like old ladies, the last thing they want to hear about is a geek coming up and talking about color matching categories. It stays in _____ _____ stuff like that. It's a challenge.
Andre: Very funny. Very funny [laughs]. Jenkins is clearly a large part of who you are, but I know there was a time in your life when Jenkins didn't exist. Why did you create the project in the first place?
Kohsuke: I was working in this group that's producing Java EE – Java enterprises – which is, you know, the framework. The foundation for producing the web applications. I was also like a guy who's known to break rules. I still am. So you know, imagine a small team of like a CO, four people working on the same project, and we are all taking unique code every few hours – something like that. And then sometimes I put the change in that breaks something, or I fail to push some parts, like I'm only committed the part of the work that I've done, also coding similar _____ _____. And so from time to time I get a phone call from my colleagues. I just handed in my soft code, and it doesn't compile anymore. I know you are touching it, can you take a look into it. And they are right, I usually did something not quite right. So I thought it would be kind of nice if I could write a program that basically detects those problems before my colleagues do. That would save my fate. So that was kind of the motivation that went into it, and I discovered it wasn't actually just me that was having these problems, it was programmers – anybody _____ this problem.
Andre: So now that we know why you started Jenkins, let's go back and talk about the very beginning and a project called Hudson. You were at Sun – Oracle acquired Sun. but pick it up from there and tell us exactly what happened?
Kohsuke: I started a small company to keep on doing Hudson things. And Oracle didn't care for a while. But I think after maybe another half a year or so they finally decided that they wanted to do something with Hudson after all. When they looked around, they realized – it basically was just my _____ project, there was no one else in the company that have any relationship with this community you're actually carrying the fight forward. So they didn't have no leverage at that point. So we decided, okay, like we don't _____ _____ _____ developers. If you wanted to keep the name Hudson, we are gonna argue that those things – we are just going to take the pop gap and the toys and take it elsewhere. When the CO of _____ Community came together and decided to take a different name for the project. And then we _____ the name of the project, and then basically everyone except one person that I remember came over to this new Jenkins project. So that was how Hudson became Jenkins.
Andre:And how did you get a community of followers around that?
Kohsuke: People could participate in these open source projects. They usually they have some ideas and they want to do it. And they want to see some happy users using their ideas – or the result of that labor. The last thing they want is like going to talk to other people, explain to them why this idea they have is a great idea, it's something they should be allowed to do. Because programmers, we all tend to be picky – if someone asks you a question we feel like we need to chime in .well, you know these things. So it tends to add more friction. Anyway, so I felt like I learned a lesson here like oh, this is how you structure the program or the community so that other people could do interesting things. So that insight, allowing everyone to have their own sandbox and do whatever they want to do, without messing around with what other people doing. To me that's a key trick to creating a big, viable community.
Andre: So where is the Jenkins community today? What are the numbers look like?
Kohsuke: I think we are – last number I see was around the 130 or something like that – I need to remember this number. But I'm – yeah, I think it's like 130 _____ installation we track around the world.
Andre: Wow, 130000 active installation, that's a huge number. Boy, you've really come a long way since the very early days when developers were running Jenkins under their desk.
Kohsuke: So in some ways it's business as usual, in that we have the same people who are moving things forward. But it's kind of even bigger scale. I think over time the project will be bigger and bigger, more people, more plug ins. I suppose another thing that helps –a s painful as that episode was – I think how it helped us, it created some sense of bonding in the community and perhaps the need to more clearly define the Java Notes structure. Now when people come to Jenkins project, I think they see a little bit more mature project than what it was a few years ago.
Andre: So today is actually a pretty big day for the community. After 10 years and 655 releases, Jenkins 2.0 just formally launched – the longest 1.0 release ever. So why now?
Kohsuke: So the project has managed to kind of gradually evolve over time quite nicely. But I think – so that kind of makes it even more significant. Like a first time in 10 years history of the project that we are taking on the major version 9upgrade. And then the reason we are doing it is I think when we step back and think about what Jenkins has traditionally focused on – the focus around the build and install formations. And despite the fact that there are a lot of interesting things have happened in terms of plug ins those are still left to the exercise of the user to get them together. So it was kind of a painful process if you're new to Jenkins to figure out where the cutting edge stuff is and to learn how to use those. We just weren't doing justice to all these new people who were joining Jenkins, coming to Jenkins now. But in there we were creating a more curated experience, the nicest plug-ins that we think – we the community developers think people should get out of the box. And then so like now for example, it is by far the most dominant version control system.
Andre: Okay, the .1 plugin is gaining popularity – tell me about that one?
Kohsuke: We've been developing the pipeline plugin which is a formal/flexible way of composing like a complicated – the automations. So we'd rather than have a user stop using it, so that by the time they discover the need for this _____ _____ automations, they're able to solve a number of longstanding problems that the people have been asking for, such as being able to tolerate the _____ to the master or like you can run different parts of your pipeline into different ______, things like that, or even the version control definition of this pipeline in the same place as the _____ Code or in other places, depending on how you do it. And it sort of tells the kind of story that the people doing the open today resonates with. So that's key part of the new Jenkins.
Andre: 2.0 is clearly a giant step in Jenkins' evolution. As we finish today is there anything else you'd like to share with us about it?
Kohsuke: I guess the one last but not least, it's also useful to have a good set of documentations, help people understand that if you're doing development, here is what we currently think is the best _____ opening these things together, create more carefully crafted sets of documentations to help people get up to speed more quickly or sort of help people. And so also – so that they don't have to like go through the scary world of installing new plug-ins, and then likewise by doing so – like we the development community can learn how these are the simplifying the community of people. So that they need to work better together. That's kind of a new project for Jenkins project, where everyone tends to have their own little plugins. So there's usually not much communication between plugin developers. So forcing that – the things that we are doing is forcing those kind of conversations. And I think it helps the usability of Jenkins for the user. So those are I think the key parts of what's in Jenkins 2.0.
Andre: I know you're such a humble guy. But it's incredible how much the Jenkins community has grown over the past few years. I can't imagine where the community is going next, but I know it's going to be great.
Kohsuke: Yeah, me too. Thanks for having me.
Andre: Well you know, there's so much in Jenkins 2.0 for our listeners to take advantage of, and I don't want to keep our listeners from running off to their computers and downloading it. So KK – it's been great. Thanks for joining us.
Like what you've heard today? Don't miss out on our next episode. Subscribe to DevOps Radio on iTunes or visit our website at www.cloudbees.com. For more updates on DevOps Radio and industry buzz, follow CloudBees on Twitter, Facebook and LinkedIn.