Andrus Adamchik on why do open-source: it's either "scratching your itch" or honing your skills

open-source development interview

In this interview, we talk to Andrus Adamchik – founder, CEO and chief architect at ObjectStyle. ObjectStyle is a software development company that evolved out of the Apache Cayenne open-source project.

Andrus himself has dedicated a significant part of his life to open-source development and considers open software a passion. In this interview, we ask Andrus what tips he can give people who want to contribute to open-source and how the world of open software works in general.

Alesia Krush: As someone who works in IT but doesn't write code, I have always wondered what motivates developers to take part in open-source?

Andrus Adamchik: I guess, these days, nobody is surprised that people are working on open-source projects. But yes, the question "why" may still be a mystery to a lot of people. There can be a number of reasons, and the main reason is a classical one described by Eric Raymond in The Cathedral and the Bazaar, which is "scratching a developer's personal itch."

That is, you are trying to solve a problem that you have, but then you think that other people might have this issue as well. So, you share your code and hope that it becomes useful to somebody. And then, if your assumption is correct, you may get a whole community of people looking at your code.

But there are other reasons as well, especially now, since open-source is so pervasive. For instance, students might try to work on open-source projects just to hone their skills in a particular technology. And this is probably a good idea for them just to get their feet wet.

Still, the most typical reason is – if we are talking about open-source successes, not just participation – the typical reason is "scratching your itch."

AK: So, basically, any open-source project starts with a problem?

AA: I would say so, yes.

AK: Your company ObjectStyle began as an open-source project, and you have been an open-source developer for many years. Could you tell us more about that?

AA: Yes, absolutely. It happened back in 2001, sixteen years ago. Me and the group of people I was working with at the moment… we desperately needed a decent ORM technology. We saw expensive commercial implementations, but we thought that we needed something open-source, something that we could build for ourselves and then use freely. So, we started writing the Cayenne project, and later I organized a company to do consulting around this technology.

So, Cayenne came first; ObjectStyle came second. Nowadays Cayenne is an Apache project, which is why the full name is Apache Cayenne.

AK: Let's say I'm a young developer. Everyone around me is doing open-source and I want to jump on the bandwagon. How do I find a nice project for myself?

AA: I guess it depends on what area of technology you are interested in because there are dozens of languages... there are hundreds or even thousands of frameworks within those languages. So, I would recommend going with something you are already interested in.

If you are interested in server-side Java, you can find hundreds of those projects... or maybe you are writing in PHP, and you just want to improve some of the existing CMS frameworks..., or you are writing in JavaScript, and you are using some frameworks already, and you think that you can improve them.

However, if you are just starting out and you don't have any experience at all, you still need to make choices for yourself. It'll be a little harder in a sense that you will not have this initial motivation like "scratching your itch." But don't despair, you can try it once, you can try it twice, eventually, if you start programming, you will find plenty of things to improve out there.

And, of course, there are organizations like the Apache Software Foundation that has hundreds of projects by now. You can just go through the list and check if you already know a technology, or there is something that you may be potentially interested in.

AK: Your Cayenne project is part of the Apache Software Foundation. What are the implications of this?

AA: Cayenne joined Apache Software Foundation around 2006. We were a five-year-old project at that time. That was a significant step for us, and we've been at Apache since then. We are very happy with their philosophy, with the organization, with the people we are interacting with.

And the idea of the Apache Foundation is that it's a "software conservancy,” so to speak. It's a place for people to develop open software following the philosophy of Apache founders. This philosophy consists in, first, using the Apache license… all the software that we release is under the Apache license, and all the dependencies of that software need to be compatible with the Apache license.

This is actually a big deal for the end-user, because, when they start using your project, they can be sure that they are not polluting their end-product with incompatibly licensed libraries... because, within Apache, we are doing license evaluation of the code and the dependencies.

Another important aspect is community. One of the slogans at Apache that has been floated frequently is "community over code," which makes no sense to many developers because, you know, "why do we want to just hang out if we are not writing code?" And of course you are writing code, but this [slogan] just underscores the fact that Apache projects are organized without leaders, like, there is no single person who owns the code. It's a community development model.

Apache projects are organized without leaders, like, there is no single person who owns the code. It's a community development model.

Which means there is no special permissions or karma attached to being the founder of the project, for instance, or being on a project for a long time.

And, of course, there is some vetting process. Other people will review your code, but you usually feel included from the start. When you come in with some ideas, chances are you won't be ignored just because you are new.

AK: Who vets the submitted code?  

AA: Initially, when you come in, you don't have any commit rights. You are a contributor, essentially. The way the process goes... you start sending, say, pull requests via GitHub, and the existing developers – committers or PMC members - look at this code and discuss whether it's proper to become a part of the project, whether it's a good idea and whether it's implemented well.

And, the place where discussions like this happen… of course, they can happen on GitHub as well, but usually, they occur on a project mailing list. Everybody has a say, and you have a say as an author, and you can explain what you did and why you did it this way. If the current set of developers is happy, your pull request is accepted.

If your contributions continue or if they are big enough from the start, the community will vote, and you will get commit rights. The level of entry to become a committer is low. So, once you have commit rights, it's up to you to decide whether something needs review, or whether you can just commit it. 

AK: Could you talk a little about Apache License? How is it different from other types of open-source licenses like MIT, and so on?

AA: Well, there are dozens of open-source licenses out there. They broadly fall into two different categories: "viral" and "non-viral" or, to put it more mildly, reciprocal and non-reciprocal licenses - I'd categorize them along this axis. There are lots of small differences of course, and we could spend the entire day just going through them.

So, Apache license is in the category of non-viral, non-reciprocal licenses because the only real requirement is attribution. When you use code under Apache license you must put somewhere, front and center - for instance, in some file or your code distribution - that you are using this code from the Apache Software Foundation.

Apache license is in the category of non-viral, non-reciprocal licenses because the only real requirement is attribution.

So, it's just copyright attribution clause that's central to the Apache license. As opposed to more "viral" licenses like GPL that require you to open-source your code if you combine a GPL library with your code, your entire thing must become open-source, or otherwise, you are in violation of the license.

Apache License is friendly to anybody, whether you are another open-source project or a commercial company, or you have your internal systems using your code, or you have a product that you ship to your client that includes our code. It's very liberal.

AK: You've been working on a few other open-source projects besides Cayenne. Are you planning to bring them under the Apache license?

AA: That's true, there are several newer projects that I've been taking part in such as Bootique.io. In fact, all of them are released under the Apache license. You don't have to be a part of Apache Software Foundation to release your code under Apache license. The Apache license is written in a way that it can be applied to any piece of code.

You don't have to be a part of Apache Software Foundation to release your code under the Apache license.

AK: OK, because I thought that you must be in the Foundation to do that?

AA: No, the license is also something that the Foundation created for the world to use, so it can be applied to any code.

AK: Once you mentioned that Apache Cayenne took part in Google Summer of Code. Did that work well for you regarding getting more hands on the project?

AA: Yeah, we took part at least three times. It was a confirmation of what I said earlier about open-source participation. In a sense that the best contributions came from students who had, you may say, a "vested interest" in Cayenne, they were interested in working on those tasks. They were prior Cayenne users and felt that something needed to be improved. Those were the most successful engagements with Google Summer of Code.

Cause a few times students did a good job, but they were doing tasks that were too abstract and often it didn't go anywhere, really. I mean, they finished the project, and this code was of no use in general. It wasn't a bad code, it just was developed in a vacuum.

In the end, looking back, I can see that the most successful participation was when there was a guy [a student] who was using Cayenne at work, and he had a chance during the summer to work on tasks that would improve Cayenne.

AK: So, eventually, it all boils down to the developer really caring about the technology she/he is contributing to?

AA: Well, in all fairness, it's more complex than that… because nowadays there is also corporate open-source where people get paid to contribute to different projects.

But if we leave out the topic of commercial open-source (because it's a big and complex subject in itself), then, yes, the main point is that the developer cares about the project.