DAVID: Wow. My wife just came in and threw Tater Tots all over the room.
That was kind of random.
JOSH: I really wish we were doing a video.
JEREMY: I would definitely appreciate video. Yes.
DAVID: So, All right. I guess I have to eat the Tater Tots off the floor.
[Hosting and bandwidth provided by the Blue Box Group. Check them out at bluebox.net]
[This episode is sponsored by JetBrains, makers of RubyMine. If you like having an IDE that provides great inline debugging tools, built in version control, and intelligent code insight and refactorings, then check out RubyMine by going to jetbrains.com/ruby]
[This podcast is sponsored by New Relic. To track and optimize your application performance, go to rubyrogues.com/newrelic]
DAVID: Hello and welcome to episode 75 of Ruby Rogues. I’m David Brady and I’m sitting in for Chuck and James at the same time, who are on vacation in Hawaii and can’t be bothered to do their weekly podcast. We are short two rogues, but we are up two guests! So, today on the podcast we have Avdi Grimm.
AVDI: Hello, hello!
DAVID: We have Josh Susser.
JOSH: Yes. I’m appearing here on a Creative Commons Misattribution License.
DAVID: (laughs) We have Jeremy Hinegardner.
JEREMY: Hello and I am not a lawyer.
DAVID: (laughs) And we also have Chris Wilson.
CHRIS: Yeah, same here.
DAVID: Okay. So, I guess just to start us off, we are going to be talking about Open Source Licenses today. This is a fun, complex issue. I remember sitting in on a panel years and years ago, talking about the subtle vagaries and evils of LGPL versus GPL and that good stuff. And people get completely, just been out of shape about this. But before we get in to that, I wanted to give our guests a chance to kind of do an introduction. Chris, why don’t we start with you? Your Twitter handle is “e” and that’s not very rational. So, do you want to introduce yourself?
CHRIS: Yeah. I’m Chris Wilson. I’m a developer up in Madison, Wisconsin at Ruby consulting development shop called “Bendyworks“. Yeah, so my handle and some of the other ways I identify myself is kind of a science nerd. So, I’ve sort of always been in science. I gave a little spiel at the Bendyworks internal conference recently, all about how to build a particle accelerator.
DAVID: Very cool. Jeremy, do you wanna tell us about you?
JEREMY: Sure. I’m Jeremy Hinegardner. I’m a developer in Boulder, Colorado. Used to work for Collective Intellect and now I work for Oracle. We were acquired this year. So, I have a couple of interesting titbits to talk about in terms of acquisitions and licenses and that should be part of an interesting talk too.
DAVID: Very cool. So in the pre call, we talked about all of the business that we forgot to start with. So, let’s pause with the way we podcast and we all have business to go through. Josh, do you wanna start with the Ruby Nuby project?
JOSH: Yeah. Sure. I’ll remind our listeners that we have an on-going listener challenge. We are doing something we are calling the “Ruby Nuby Challenge” and we have a link on our web page describing the contest. We wanna find a couple people who are new to the Ruby community to come on the show and talk to us about what it’s like being new to Ruby. And so, we are doing a record a video challenge.
We are making a slight modification to the rules; we are going to ask that you email us a link to your video when you put it up. And the point of that is, we wanna have your email address so that we could email you some cool stuff. So, we are sending some stuff up with various educational services who do Ruby stuff and we wanna get you some good free stuff as a thank you and an incentive for doing the video. We’ll have more information on that on the web page soon. And we’ll mention that in the next week’s show too. So, that’s it.
DAVID: So, there was another contest that we did and people have been pestering us about this pretty much nonstop ever since we forgot all about it. And then we said we were going to get right back on it and then we forgot all about it again. And we wanna get right back on it.
JOSH: And just to be clear, when David says “we”, he means “me”.
DAVID: Yeah. We speak in the royal “we”. Just to make you guys absolutely crazy, let’s go to Avdi now for the Best of Parley.
AVDI: I forgot all about it. No. So, my favorite thread on the Parley list recently was the thread about Object Initialization and Construction. And why there’s a new and initialize method. And why you might want to change those sometimes and sort of mix things up and make your own constructors that do different things. I like that thread so much, that I did a video response to it on Ruby Tapas and made that one of my free Monday episodes. If you wanna get on awesome threads like that and possibly help me make video replies, (although no promises) check out Ruby Parley list. I mean, Rogues Parley.
DAVID: Hey, does anybody remember Rogues Golf?
DAVID: No? Okay. Alright. Me neither. I guess we can move on then. Rogues Golf, we had a contest to help people submit the best awesome, most surprising delight kind of Golf short Ruby program that fits in the single tweet. The scope and breadth of the answers we got were just absolutely astonishing. We got back an interactive program that will let you download Ruby Rogues episodes. We got back two complete working To Do List Managers that fit in a single tweet. We got back a program that prints out the entire Ruby Object Model—object graph in memory.
And, this wasn’t—I got to say, part of the reason this got delayed is that when we finally did knuckled down and actually start grading these, we found that it’s almost impossible to figure out how to judge. It wasn’t like apples to apples; it was like apples to spaceships. I mean it was like, “How do you even make a comparison here?” It was just absolutely insane. It finally came down to; we all kind of went around the horn and cast our votes. And our votes pretty much came up in an even split. And so, rather doing runner up and winner, I went and talked to Chuck, (because he is the one who actually paying for the prices) and said, “We have to give out two prices” and he said, “Okay”.
And so, here are the results from the Ruby Golf contest. @moonbeamlabs is in a tie for first place with @sferik. We could not decide between the To-Do list app that @moonbeamlabs submitted. I also rated moonbeam’s Shark Attack animation. That was my number one favorite. It was astonishingly entertaining for just being 8-characters or 16-characters long of video display. And @sferik posted the object graphed number and that was just an amazing bit of screen art that actually comes up in high res graphics. And we thought those were pretty cool. So, as @sferik and @moonbeamlabs, if you will get a hold of us… I guess we’ll get a hold of you, won’t we?
JOSH: Are you saying “SF-Erik”?
DAVID: Sure. Why not?
JOSH: (laughs) OK. Erik my *** is over.
DAVID: OK so – Sferik if you will get… All right, fine. I don’t know who people are. SF-Eric. OK, all right. I assume from this that he lives in Cupertino, right?
JOSH: According to the Apple TV, yes.
DAVID: Okay. So yeah, @sferik and @moonbeamlabs I guess we’ll get a hold of you. We’ll actually do some leg work of our own, fine. And let you know that you’ve won and this will be the official announcement going up in the website next week.
JOSH: Congratulations guys.
DAVID: And everybody who submitted.
JOSH: (clapping) I’m doing a Golf clap.
DAVID: Nice! Ruby Golf Clap. Be sure you stop before you reach 140 characters.
DAVID: Okay. So let’s talk about open source licenses. (laughs) So, Chris and Jeremy had not fallen asleep.
JEREMY: Wait, what was that?
JOSH: Guys, I wanna start by asking you why you care about open source licenses.
JEREMY: This is Jeremy. I think it stems from my sort of like understanding the legal issues around open source software and just trying to play with them. Because to me, the law is almost like a program, you know, you got all these branches and conditions and things where stuff needs to take place in pre-conditions and what happens with this and what happens with that. And then, licensing is just one of the pieces that fits in to the mix. And I just find it kind of interesting to see how people license stuff and why they license things and why they are licensed the way they do.
JOSH: OK. Cool.
CHRIS: Yeah, I was going to jump in too like, I think all the… all of that, but also, I think it’s kind of an interesting philosophical position. You know, like kind of this sort of principle of sharing things and kind of a hacker ethic. I think that’s what originally drew me in to things like that.
JOSH: OK. Cool.
DAVID: So, is it jumping right to the end of the episode if we ask you guys what your favorite license is?
JEREMY: No. not at all. I have to say it probably depends on the reason. My personal license that I use is the Internet Software Consortium License, which is the same one as OpenBSD. I basically use it because I think it’s the absolute shortest one that makes the most legal sense. It’s a functional equivalent to the 2-Clause BSD, but its shorter.
DAVID: Okay. So the WTFPL is actually much shorter. How does it compare to… you guys are familiar with that one right?
DAVID: Okay. We can’t actually say the full name of it on the show without losing our family friendly rating. But that that’s the “do what the heck you want” license and has one clause which is do what the heck you want. Do you think that is a legal document? And if so, how does that compare with like… give me the difference between that and the BSD that you mentioned not the BSD but the Internet Consortium.
JEREMY: Yes. It is definitely—well, I’m not a lawyer know all that stuff in there. Yes, anything that two people agree on, I think is considered a legal document. I mean, you can write a legal check on a napkin if you wish. But, in terms of accepting when it come in to a more formal setting or something like that, I’d probably will prefer something was maybe somewhat vetted by lawyers before I use it.
AVDI: OK. So what is the OpenBSD/Internet Consortium License in a nutshell?
JEREMY: It’s basically acknowledged that, I wrote this code and you can do whatever you want with it.
AVDI: OK. So when you say “acknowledge”, it means like it when you distribute the code itself has to have a note in it that says somebody else wrote it?
JEREMY: Yeah, it’s basically put the copyright notice in and you are welcome to do with this as you please just keep the copyright notice in.
JOSH: My understanding is that, copyright is actually the foundation for all of the open source licenses. That establishing your copyright, saying your copyright is how you get to control the intellectual property such that you can license it in particular ways.
CHRIS: I think that is my understanding of it.
JEREMY: It all stems, I believe, from intellectual property law and I think there’s four an intellectual properties; you got “copyright”, “patent”, “trademark” and “trade secret”. I probably got them wrong. I’m pretty sure the patents, copyright and trade secrets are three of them. I forgot exactly what the fourth one is. And license is saying, “I’m licensing this creative work to someone else”.
JOSH: Now, how does that contrast with public domain?
JEREMY: Public domain is you– there’s interesting stuff with public domain. I think the creative commons has much better blog posting and information on public domain than I can probably say real quick, but for my understanding, public domains is, you are saying that this is non-copyrighted work. So, I am placing it in public domain. I do not claim authorship of it. I’m putting it to public domain.
JOSH: But that doesn’t mean someone else can pick up the copyright and claim it?
JEREMY: Yes, something along those lines. There’s weird legal issue there that I don’t know if it’s ever been invested. But if you want, like SQLite is public domain.
JOSH: Oh. Nice.
DAVID: Yeah. This is one of the things were I think we would need a copyright lawyer. Because I think you can pick up public domain and build a derivative work that you know, adds one comma to it and then you can copyright the whole damn thing. And you can’t enforce copyright against the public domain half of it, but you can enforce public domain on or you can enforce copyright on the thing that you made out of it. I think even if all you did is reprint it.
Remember the Mars Rover Landing getting shut down the news because they rebroadcast it? And NASA was basically saying, “No, we put this out for free” and some news channels rebroadcast it and then saw the rover landings. And they issued CNDs against it on YouTube.
And they got away with it for like two days before somebody said, “Pull your heads out guys.”
JOSH: (laughs) That’s awesome.
JEREMY: There’s some interesting stuff in Public Domain in that, not every country recognizes that there is a public domain. So everything is copyright by default. And so, you can’t actually place something in a Public Domain. And so that’s one of those interesting things where you don’t claim a copyright, then you have it by default.
DAVID: That was the other thing that I was going to say that we need a lawyer here because I’ve heard people make the argument that there’s no such thing as Public Domain. And I wanna know what that means because I’ve heard this term that copyrighted books works if the copyright is not renewed, it enters the public domain after so many years and Project Gutenberg is copying all these books because they are now supposedly in the Public Domain. But yeah, we need a lawyer.
JOSH: OK. So, you guys have talked about what your favorite open source licenses is.
JEREMY: We need Chris’. I don’t think we–
JOSH: oh, yeah Chris.
CHRIS: Oh yeah. Well, so personal projects, I generally use like a GPL and some website stuff that I’ve done, I actually used the AGPL. And I think there’s this like– I remember seeing this big chart somewhere (I should go find this, but) you know, it’s kind of a flowchart of like, “Which license is right for me?” And like AGPL one is like cuckoo banana, you know, bongo or something and it’s just like, that’s the “yes” then, you want the AGPL.
AVDI: Can you characterize those briefly? If that’s even possible and talk about why you like them?
CHRIS: Sure. So both AGPL and GPL are copyleft. The basic idea that kind of separates them something like BSD it just that, if you change anything, make any kind of derivative work, that derivative has to have the same license. It has to be also GPL. So this idea, you can’t kind of like, you know, proprietorize something. You couldn’t swoop in and grab the BSD or I mean in the way that you can do that with a BSD, you can’t do that with like the GPL. That’s really the essential difference.
DAVID: I’m trying to picture a flowchart that involves crazy on it because I’m like, “So what are the decision points?” like “Have you ever donated to the EFF?” “Are you willing to sue somebody over this?” And it’s like how many yeses do you have to go down to the AGPL?
CHRIS: (laughs) I think pretty far. Basically, the AGPL its just expanded a little bit, so that when you— it’s kind of (and this is just my understanding of it), when you are using something as a web app, then I, the user of your software service, should also be able to have the source code to it.
DAVID: Oh wow. Okay. That was the big dodge around the GPL too. People would basically say well I’m providing the service, not providing the software.
JEREMY: I think all these all boils down to what the distribution cost in all these licenses. Were you say, “Okay, if I’m going to distribute the software, then you have to distribute the derivative work.” and so from my understanding, what the Affero closes the loop on is, if you had a GPLed software as a service where you are not distributing software, you are distributing the data or the service application. So the Affero GPL closes that loop and says, “Okay, well, if you are distributing a service over this code, then you also need to be able to distribute then anyone who uses the derived work, which will be the service, also needs to have access to the source code.”
DAVID: So, this would be like WordPress. Almost.
DAVID: I don’t think they are using the license, but that would be an example of it, right?
JEREMY: There’s actually a good real world example right now is the MongoDB (the server) is Affero GPLed (at least the last time I checked). And so, then if you alter the MongoDB server and then started proprieting a service that gave people direct access via to the wire protocol the MongoDB and you are using your derived server, then you would be required to release the source code for your derived server.
JEREMY: So, this is also I believe why MongoDB, if you look at all the adapters, they are all Apache. So the adapters are Apache and the server is Affero GPL, specifically so that you can—the Affero GPL if you wanna call its virality, doesn’t leak out pass the adapter.
DAVID: That’s going to be my next question.
AVDI: That’s limiting. So one of the things that does is limits embracing extend. So, big vendor can’t take the software. Add one new and highly priced feature and start offering that software as a service. And then, everybody starts depending on that feature and then they are locked in because that is the only vendor that offers that feature. And maybe they got a software patent on it or something that says that if you add a feature to the server, it has to go – even if you are just offering it as a service and running it internally, that feature still has to go back in to the community.
JEREMY: Yeah correct.
JOSH: Okay. So, that prevents fragmentation of the community of people using that software.
AVDI: As well as preventing lock in. Yeah.
JOSH: Right. OK.
JEREMY: And there’s another– some people, if you look at “Neo4j”, it’s advanced and enterprise version are also Affero GPL. And so, another way you can go around is, for people, specifically I think for people that are creating a product that they want to sell, using the Affero GPL for your, say, your free version but then if someone actually wants to buy a proprietary license because they want to do something with it, then you opt that as a dual licensing. So you can say, “Hey if you wanna use it for free, you better contribute back to the community. But if you wanna use it for profit, then you can feel free to pay me for it.”
CHRIS: Well, if you want the license changed.
JEREMY: Correct. If you want the license changed.
JOSH: Can you talk a little bit about dual licensing? Because we see that a lot these days. Like, what does “dual licensing” mean?
JEREMY: Yeah, I’m not really… my guess is—well actually Ruby itself is dual licensed.
JOSH: Right. Yes. It’s like a Ruby licensed and…
JEREMY: I believe you can use the software under the license below or the GPL v2 or something like that. I think dual licensing just means, you as the person who is using the software you have downloaded, you can choose how you use it internal probably doesn’t make a difference. It’s how you then redistribute your derived work, whereas you can pick which of the previous licenses you like to use to redistribute your— when you distribute a derived work, you should be able to pick which of the licenses that it came from as the one that passes through to your derived work. If that made sense to anyone.
DAVID: Yeah I was actually going to ask about a related thing to that, which is relicensing. When somebody takes something that’s under the WFTL or the OpenBSD license and then they relicense it under like, let’s say MIT. Which is similar, but it offers some other freedoms but restricts a little bit more or so it changes the rules of license. Do either of you guys know what the rules of thumb are for relicensing?
JEREMY: Well, you can’t relicense something unless you are the copyright holder as far as I understand it. So you are taking a derived work and say you are adding code to it, then your additional code can be licensed, since you are the copyright holder of that code, then you can license your portion under one license. And then the piece that you are bringing in from your upstream project is licensed. You are redistributing it under its license, unless the license specifically said you can redistribute it under a different license.
CHRIS: Yeah I think a good example here is kind of the difference between Linux itself and like, GNU Project software. Because typically, they have you actually assign a copyright into the free software foundation versus Linux, which I believe, every holds their own copyright in that.
JEREMY: Yeah. So, I’m also a Fedora contributor, so I help package a few RPMs for them. And one of the things we do as a contributor is, you sign the contribution license of GNU which says everything you contribute to the Fedora Project is licensed appropriately. And so all of your works, the like RPM spec file and things like all becomes license under the licenses that the Fedora Project uses.
JOSH: OK. I can see how they would wanna have control over all ip that goes in to their code base. I can see that from their perspective. That makes sense. But, you don’t see that in a lot of things. There’s like people contributing to Ruby on Rails. Rails has license MIT, which is a very permissive license that basically says, “We are not responsible for what you do with our software.” is I think the limitation on it. Correct me I I’m wrong on that.
But, I don’t think I have ever seen or at least I have worked on an open source project that I had to agree to basically anything about what I was contributing. I’ve put in a bunch of patches to Rails, but I never signed anything. Assigning them rights to the stuff that I contributed.
AVDI: I have never done this, but I know that if you like want to get something to Emacs core, there is something that you have to sign.
CHRIS: Yeah. One of my co-workers has done Clojure stuff and I believe like there is a contributor agreement for Clojure.
JEREMY: I’m sort of in the opinion that Rails probably should have a Contributor License Agreement because down the road, some who contributed a patch to something because technically, by default, at least on my understanding is that, you know, Josh one of your patches that you contributed technically you own the copyright to that patch. So, you can assert whatever license you want on that patch. So, you could down the road say, “Well actually, my copyright on all the patches I have done are now Affero GPL.”
JEREMY: Yeah. So that is something you can do. But if you had signed the Contributor License Agreement at some point, and said, “As contributor Rails, I’m going to… I guarantee that I give to the Rails the consortium or something like that whatever the license is and its going to be licensed under MIT.” Just so there’s no confusion down the road, should legal issue ever happen.
AVDI: So it does kind of prevent some company coming along and trying to be a patent troll about it or something like that. That was like one of the causes of Emacs’ XEmacs (which I realize nobody listening has any idea what that even is) there was a fork of Emacs called “XEmacs”. And they sort of trailed behind for a long time because they didn’t have much cool stuff rolled into it. And the reason was, FSF (Free Software Foundation) were very serious about getting contribute these agreements, making sure that copyright for every change was signed over to them, so that none of these issues will ever come up and XEmacs was a lot more free willing about it. So, yeah, I think you are right. I think that is a little bit unsettling to think that somebody could assert a claim like that with Rails at some point at the future.
JOSH: OK. So that’s, “Oooh, we’re worried about the future.” Have we seen stuff like these happen in the past? Have people done things like that? Have there been legal fights over contributions to open source?
JEREMY: Oh, I’m sure there are. But I can’t think any right at the top of my head.
AVDI: (laughs) I’m having the same problem. I know there have been but I’m having trouble thinking of an example.
JOSH: Yeah, I’m not trying to belittle the issue, I’m just curious if there’s examples that we can look at.
CHRIS: There is a really good podcast called like “Free as in Freedom” and its two lawyers and they are mostly kind of concerned with like free software type stuff. I think they may worked for like the Free Software Foundation. But it’s pretty interesting educate they did an episode about enforcement and it seem like a lot what the enforcement boil down to was ,they would just kind of say, “Hey you are inappropriately using this license. Could you please just release the source code?” You know and it usually stop there it doesn’t really seem to ***.
DAVID: There was what’s his name… Stallman. Sorry Richard Stallman, he wrote email to the Emacs mailing list. This was about a year ago. Kind of made headlines in very small circles. There was a version, one of the versions of Emacs had a library that was they were distributing the ELC file for, which is the Compiled Elisp, but they did not have the .el for it and RMS found out about it. And he wrote an email to the list and said, “We are absolutely in flagrant violation of… you know, the entire reason I wrote this and gave it to the whole free software foundation all that. Basically everything I believe in is now being violated. So, here’s what needs to happen. We need to pull these things out of Emacs. We either need to add the source code in or we need to remove these libraries from Emacs. And we need to go back to the mirrors and find all the old copies that have it. And we either need to add source code or remove those libraries from the old versions”. And it made a ripple in the community because he was proposing, tampering with existing shippable known binaries with known MD5 Checksums and what not. And he was like, ‘No this has to go’. We are in violation of our own licensing agreement”.
JEREMY: Yeah, that is sort of along the same lines of what OpenBSD did in 2001 based on licensing, where in they get a systematic line by line audit of the entire source code base, to find out if every line of code that was not in compliance or BSD licensed or unlicensed. So, they contacted every single copyright holder of every line of code and to make sure that all was done and anything that they couldn’t track down was actually removed.
AVDI: I think my favorite example, this is an example of somebody asserting copyright over open source code but I guess my favorite example of just the effect that a license can have and the effect different licenses can have, is just contrasting the early Unix with Linux. When the Unix source code entered the wild, so to speak originally from AT&T right? It kind of splintered. And you have these kind forks spring up and they gradually sort of grew apart. You had different companies introducing their own versions that had new stuff built in, that was special and awesome to that company. And then you had programs that were only compatible with one company’s HP-UX or Sun’s Unix or whatever. And then you look at– you have this really splintered Unix ecosystem, that now you look at Linux which become kind of the dominant player these days. And after all these years, it still has not had a fork. I mean, people obviously forked the source code and played with it all the time, but everything still eventually gets rolled back in, if it’s worth getting rolled back in. And I think that would not have happened if it’s not for the GPL. So, I think for some of these infrastructure things that really does makes sense to be careful about licensing.
DAVID: You can also make the argument that there is a hundred forks of Linux, right? I mean there is Mandrake Linux, there’s Ubuntu…
AVDI: I’m talking about the kernel.
AVDI: We have not seen a kernel fork and that’s what you saw with early Unix is you saw kernel forks, you saw incompatible kernels going out there with different APIs, which has just not happened.
DAVID: Yeah and I’m in violent agreement with you in that the way Linux is structured is such that the place where people wanna be creatively different, is our nice little boundary outside the kernel. “Sure go ahead and put whatever, you know GNOME or KDE. Go for it. We don’t care.”
DAVID: But, if we wanna argue about how this kernel operator method works, then lets actually work it out and sort it out and merge it back into. Because nobody is going to pick up your Linux kernel if it’s not compatible and rolled in to the same Linux kernel which is awesome.
JEREMY: Chris and I mentioned our licenses. How about the rest of you guys? What do you prefer?
AVDI: I kind of follow trends in the Ruby community, which is just like you MIT license for most gems. I did recently GPLed something. I had a specific reason for that. I released my stack of eBook processing tools. Not really stack of tools really, just the tool chain that ties various other tools together and I GPLed that. And I GPLed that because, gosh, darn it, this is my special sauce and I put a lot of work in to it and if somebody else is going to— if somebody else wants to write eBooks and convert them into lots of nice formats and sell them, I’m all for that. That’s fantastic. But if they are going to improve the process, then I want those improvements to go back into the community.
DAVID: Did you GPL v3?
AVDI: I believe I did.
AVDI: I should probably Affero GPL it because I don’t want the service loophole either. What does “Affero” mean anyway?
CHRIS: I think it was a case or person, right? I know very little about that. (laughs)
JOSH: I don’t even know how to spell it.
DAVID: I was going to say, it’s usually “the-ffero” and he is the king of Egypt but–
I think he also have a Small Talk vm out there. I’m not sure.
CHRIS: Must be used in a pyramid.
DAVID: (laughs) you two guys go out and find two other guys to write software!
JOSH: According Wiktionary, it’s from Latin and it means “to carry forth” or “conduct” or “contribute or offer something”.
JEREMY: And according to the Wikipedia page, Affero General Public License was pulished by Affero Incorporated on March 2002.
DAVID: That’s interesting.
JOSH: Oh, so that’s interesting that it has that connotation of contribution.
DAVID: The Latin root “fer” means bearer or carrier. So like, “aquafer” is a water bearing region. “Lucifer” is the name that means light bearer. Yeah.
AVDI: So Josh, what’s your favorite license?
JOSH: I think the only license I have ever used to release my code is MIT. And some of that was just– I started doing that because that was what Rails did and it seems like–. I don’t think I have ever really written a code that was seriously valuable to anyone, so I just wanna put it out there in the way that it makes it most easy for other people for use. I thought about using the Apache License, but I don’t know that there is a huge difference between that and the MIT license.
DAVID: I do everything under MIT just because when I do a bundled gem, it puts the MIT license in there for me. It’s like, “Yeah, OK” And everything I’ve ,done I want the maximum amount of grease on it to get it to other people and if other people want it take that and parlay it into something. (Oh, correct use of the word “parlay” by the way. Correct use of the wrong spelling of “parley”. I should put it that way.) If they wanna parlay that into a commercial product, go for it. That’s fine. And maybe I should be doing like a creative commons because then I can assert that if you are going to turn this into a product, you have to give me credit for it. But right, now I just MIT license because it’s easy and I’m lazy.
JOSH: I have used the Creative Commons License for my blog.
JEREMY: That brings up another type of licensing. We’ve got licenses our source code but then you also got the licensing of additional creative works that you might consider blog post, data stream, more publication type things, where I think most people probably going to use creative commons type things. You know, images, those type of stuff.
AVDI: You know, I have been Creative Commons licensing my podcasts for over 50 episodes and nobody has remixed it yet!
DAVID: You need to be sending free copies of your podcast stuff to like *** and to Skrillex and…
CHRIS: These public license which requires that you remix it, right?
DAVID: I’m just going to throw this out as a listener challenge. I have no price to offer you except we maybe we’ll play it on the podcast. But yeah, I totally wanna hear Avdi’s voice mixed in to just some sick drops and just you know, should have been new or initialize. That would be great.
JOSH: (laughs) OK so moving right along. What are the “problematic” licenses? I know that I have– when I worked at Pivotal and we are doing a lot of client work, working a lot of client projects, we were really careful about what software licenses we—you know, if we included gems or libraries into the project, we are really careful about avoiding GPL license software because the lawyers set up the contracts with the clients it’s just, were just very careful to avoid that stuff because it can cause big problems with the clients down the road.
JEREMY: Yeah, so I sort of have almost the exact same experience. So, the company I work for, Collective Intellect was acquired this year. And part of that acquisition process was auditing all of our code for the various licenses to see what was appropriate and what wasn’t. And we actually did have to make a couple of changes and swap out some libraries we are using because the licensing was not acceptable by our acquirer. So yeah, there’s definitely some— and you know each customer or company something may have a different requirements. And in our case, GPL wasn’t a problem. In our case, it turn it out to be the academic free licenses is the one that they didn’t really like. And the Mozilla public and there’s a couple of others. And I think most of those are the longer ones that have more to do with patent issues depending on the companies involved. The ones that branch out into patents, I think a lot of companies might have some issues with.
JOSH: Are you talking about like reciprocal licenses? Things like that?
DAVID: What’s a reciprocal license?
JOSH: I think that is something you use if you wanna “cross license” things with other companies.
JEREMY: Oh, you mean like reciprocal patent agreements where you know Company A got 40,000 patents and they said, “Well, we’ll migrate the 40,000 patents with somebody else. And we’ll just swap patents.” That type of thing?
JOSH: Yeah, I mean. There’s a reciprocal public license page on Wikipedia and it says that it requires that you reciprocate the benefits you derive. It’s one of those viral licenses. Okay so it’s not what he’s talking about.
JEREMY: I think that’s some of the stuff that I think GPL V3 has to do with. You know, various different patent issues and litigations, so that if you sue someone for patent issues, then your license is revoked or various different things like that.
JOSH: Yeah. By the way, I love that Yammer and Twitter and a couple of other company, we mentioned this on our podcast before that they have the patent assignments that their employees sign when they file the patent software, is basically give the employee the right to basically license anybody—so if I work for Twitter and I invented something and Twitter patented it, and I signed the patent to Twitter, I retain a non-transferable right to basically indemnify someone against getting sued by Twitter for violating the pattern.
JEREMY: Yeah those—That’s actually something I wanted to chat with the lawyer about, because it sounds really interesting and I wonder how that would actually work. You know, if part of I guess is the innovator’s patent agreement.
JOSH: Yes. Right.
JEREMY: And I haven’t – because the inventor, it looks like (this is 2 seconds of looking at it real quick) it looks like the inventor is allowed to “sub license” a patent. So that means, they could give someone else a license to the patent without their parent corporation’s negating of it.
JOSH: Yeah, but I think that there is some provisions in there that you can’t do that if the parent company is suing the company for—
JEREMY: Yeah you are right, it’s paragraph two.
JOSH: And it seems like a nice thing to do. I don’t know how much of an effect it’s going to have on patent trolling, but it could be significant.
JEREMY: I think it could be significant. And I actually look forward to seeing some more stuff along these lines. So, now what would be interesting is if we get a patent troll to get all these and also tag this on to all the patents they are trolling. So, you know sort of positive patent troll.
JOSH: Oh wow. (laughs) Ideas want to be free.
DAVID: That is kind of the whole point of the virality of like GPL3 though, right? Is to attempt to try and basically and reverse patent trolls. So, I’ve had the same thing where businesses— Yeah, like the GPL, it’s like sunlight to a vampire. And there’s a part of me that has been very frustrated working in the corporate sector by, “Oh this is GPL. We can’t use it!” And then the whole thing with Hudson and Jenkins and Oracle happened and I realized, no this is exactly… this whole sunlight to a vampire thing. Let’s be clear here that corporations are the vampires.
And Oracle, they try to do the embrace, extend, exterminate thing to Hudson and the guys—
AVDI: Continuous integration server, right?
DAVID: Yeah and it was—they took Hudson and they basically threw a lot of money in the developer. I don’t know the exact details, but they threw some money at it and acquired it. But it was open source. It was GPL. And so, there’s still this open source community contributing to it and playing with it. And the open source community… Oracle then sat on it, did nothing with it and the open source community said, “Well, we’ve got all the stuff we wanna add”. And Oracle is like, “Yeah, well, when we get around to it”. And the open source community said, “Screw you. We are forking this and we are going to keep doing our own thing.” and Oracle said, “Well, we’ve copyrighted the name. We’ve trademarked the name ‘Hudson’. You can’t use it.”
And it took all of like one night on IRC for the entire community to agree, “Okay our new name is Jenkins”. And they released Jenkins the next day and it was better than Hudson. And because they were obviously in an open fight against Oracle, patches started flooding in because people actually felt like they have dog in the fight, so Jenkins accelerated very quickly in front of Hudson because it was the “underdog”, let’s go help them. And Oracle came to their senses a month or two later and said, “Okay guys, we’re sorry. You can have the name. Can we please have your code?” And they are like, “Yeah, but you can’t change the license”. And Oracle is like, “Okay”. And so it’s Hudson again. Its back under the auspices of Oracle, but the community made it very clear that, “We are not under your thumb. We are under your if you want to give us that, but we are not under your thumb”. It was very cool.
AVDI: Wooh! Open source.
DAVID: Yey. Dave told the story. Okay. Cool story bro.
JOSH: I’m curious, so clearly from Oracle’s perspective, they got pretty toasted by some open source licensing. So, from a corporate perspective, there’s definitely risk involved in what licenses are associated with the code that you are using. I’m kind of careful about things myself as I’m building software for my start up. In that, someday we may wanna take fundings, someday we might get merged or acquired. And part of that process is due diligence and people are going to come take a look at our code, (just like you were talking about Jeremy) and they might look at our code and say, “Hey there’s some GPL stuff in here. Your ip sucks we don’t wanna fund you”. Am I just being a little paranoid there? Or is that a real concern?
JEREMY: I think at least in my single experience with this type of situation is there is a process you have to go through and based on that process, you’ll have some more mediations that needs to take place. So like in our case, we swapped out one library for another. And you know, it took all of 30 minutes to “Rm-Rf”. And then, an extra 4 ours to replace the API calls that we have with a different library that provide almost the same functionality. So, I think just keeping track.
I mean from my total personal perspective, I think just keeping track of the libraries you use and knowing what their licenses are is good enough until you actually have to do something about it. And at that point, you have Company A that may be interested in your business and Company B that may be interested in your business. And Company A ‘s requirements on what types of source code they are going to like conflicts with Company B. So, how are you supposed to think about two potential acquirers with conflicting licensing requirements and satisfy both? So, this is not going to happen. Don’t even worry about it till the issue comes up.
JOSH: So, you are saying that gag me?
JEREMY: I would say that just be aware of what you are using and what their licenses are. And just you know, either keep track of them all or things among those lines.
JOSH: OK. That sounds reasonable to me. It does definitely feel like a little excessive paranoia to be worrying about that. And obviously for start-ups, the most important thing is making progress.
CHRIS: Yeah, I think I sometimes see that a lot. There is this kind of “fear” of touching the GPL at all. And I’ve heard people say things like, “Oh well. You can’t sell GPL software.” That isn’t true. I mean, there is nothing in there about the cost (dollar wise). It all relates to the source. So, there definitely are businesses that do sell GPL software. I mean, that’s kind of like RedHat’s thing.
JEREMY: Yeah, exactly. The big one there is it’s not the use of the source code; it’s the distribution of the product. So, that’s why we have the “Affero” and stuff for the distribution of the product of data or something. But if you are doing software as a service, then in my total personal opinion, I think that the vast majority, you could probably care less what license anything is; unless you have some “Affero” stuff in there.
JOSH: OK. Oh, you know, I remember something about TiVo and some issue that they had over open source licensing.
CHRIS: Yeah. I think the GPL V3 actually mentions that in there they talked about “Tivoization”, so they kind of developed that term. And I think what they are getting at there is this idea where, you could have GPL software like in the TiVo but it’s like “signed” like “hash” signed. So, like, if you actually want to go change any of the software, some on there would say, “Oh no, I’m not going to boot.” So that, even though kind of you might have the source and the product, you wouldn’t actually, really be able to change it.
JOSH: So it’s not a “derivative” work? You are just making use of it?
CHRIS: Yeah. I think just the idea that that is getting at, and the point of that is that as far as the GPL v2 is concerned, there is nothing wrong with that. But then the GPL v3, says, “Oh, no. There is actually something wrong with that because what we meant is that, you are supposed to be able to actually meaningfully modify the software that you are running.”
AVDI: Yeah, I mean like the whole, the spirit of GPL was always, “If you ship me a computer that has some software on it, then it’s my computer now and I should be able to change the software and have it do something different.” And when you have kill switches like that, where if I change a software on my computer, now it won’t work. That definitely violates that spirit.
JOSH: OK. That makes sense.
DAVID: I can kind of– (I’m going to be “that guy”) I can kind of see TiVo’s point, right? They are trying to prevent people from jail breaking their devices.
JEREMY: Right. But you also have the – so I think part of the thing about licensing is you can call them *** you can call them whatever. But, it’s basically, “I have a piece of software. I have a creative work that I’ve created and I would like to ensure that it exists in a certain form afterwards. And I’m going to choose a particular license that ensures my wishes. And if my wishes are ‘I don’t want anybody to change it’. ‘I want this in the original form’ or ‘I don’t really care’ that’s my choice as the creator and it’s your choice as the consumer or the user of it, to pick something that matches your aims too”. So it’s basically a contract between someone who is creating something and someone who is using something and finding a mutually agreeable license is part of the whole process.
DAVID: Yeah, I can see both sides. You can see the side that, “Okay, if you wanna prevent people from jailbreaking this, then write your own damn source code. Invest the money in programming it” and yeah like, “I can see this is going to be a legal thing where well, but we didn’t change the code and we are giving it out, so we are legally satisfying the creator’s wishes” Yeah, the creator is going, “Yeah, but that is not what we meant.”
AVDI: It’s kind of similar to if I write a pop song and some political campaign that I don’t agree with starts using it as their anthem. We kind of recognize the ability to kind of say, “No. That’s not something I want my work associated with.”
JOSH: Yes. I think that sounds similar. Hey, is it time for picks now? Do we have any last words before we move on to picks?
DAVID: Yeah it’s about that time. Chris, Jeremy, anything to wrap up?
JEREMY: No, I’m good.
CHRIS: Yeah, I think that’s about it.
DAVID: OK. Josh, you wanna kick us off?
JOSH: Sure. I have a relevant pick. So, Pivotal labs has created a software called “LicenseFinder”. The point of it is that, as Jeremy, you were saying just be aware of all the licenses of the code that you are using. So that, when you go through the process of auditing, you know what they all are and you can deal with it. That can be really hard when you are using Ruby Gems or bundler where you include one gem and that gem includes 25 other Gems as dependencies. So, it can be a pretty difficult process to understand what all the licenses are in the software. So, Pivotal wrote and has been actively maintaining a package called LicenseFinder. You run this and it will look through all of your dependencies in your project and tell you what all the licenses are. And it’s incredibly useful for someone who cares about what the licenses are, like consultant doing contract work.
JEREMY: I wish I had heard about that, say, I don’t know, three or four months ago. *** license of my own.
JOSH: Oh you did?
JEREMY: Yeah I did.
JOSH: And did you release it under an open source license?
JEREMY: I will, eventually. Right now it’s a half bunch of scripts so, I’m not really pleased with the code. So, I don’t wanna show it with anybody.
DAVID: Well, you *have* to release it.
JOSH: (laughs) That’s the “shame license”? I don’t know.
DAVID: Well, listen to our episode on getting started on open source. Yeah.
DAVID: Just release it dude.
JOSH: (laughs) OK. Or maybe you can look at Pivotal’s LicenseFinder and contribute what you did there and…
JEREMY: I think that’s what I’m going to do.
JOSH: OK. Cool. And the other that I wanna pick is, there is this thing called “The Global Day of Coderetreat”. This is something that Corey Haines is behind. He does these code retreats. And that, it’s like you get for a day somewhere and work on a bunch of coding exercises and you throw away everything that you create, because the point isn’t the work product, the point is the learning that you go through. So, Saturday, December 8, 2012, Global Day of Coderetreat. They have… I don’t know, like, 60 locations that are already signed up or maybe more than that now and they are shooting to be in many more cities. Last year, Corey did this… he flew around the planet, so that he could be in a bunch of different places and check in to the Coderetreats on that day. It sounded like quite the adventure. I haven’t been to a Coderetreat; I haven’t done Global Day of Coderetreat. I’m looking forward to participating in it this year. I think it could be pretty fun.
JEREMY: I’ve done quite a number of Coderetreats with Corey and I highly encourage everyone to go to at least once, if not, half a dozen.
CHRIS: I’ve actually done it before. We had kind of a video chat set up and so, we kind of kicked it over to like,, the next time zone. So, it was kind of cool.
JOSH: Oh. Nice. So that’s it for me now.
DAVID: Awesome. Avdi, you are on a tight schedule today. I didn’t see that note before. I would have picked you first. Do you want to go next?
AVDI: Sure. I have to say, I finally got to go to my first Coderetreat couple of weeks ago and very, very worth it. So, I too, have a relevant pick to last week’s episode. This occurred to me—we had the episode (I think it was last week) on working environments and there’s something in my working that is so organically a part of my working environment, that I barely even think about it anymore. But, I was comparing notes on desks with my friend Larry Marburger the other day and It turns out we have practically sister desks. And we both sort of came across ours by happenstance and it caused me to go and do a little bit of research. Well, actually he did the research and I just clicked on links. It turns out that the style of desks I have, is style that originated, I think about like 40’s, 1940’s and it’s called a “tanker desk”. (laughs) I laughed because in the chat, David just typed “tanker” like moments before I said tanker desks. So, I guess he has one too.
AVDI: So, anyway, it’s basically… I think it’s called a tanker desk because it is built like a tank. I don’t know if they make them anymore, but apparently, a number of companies made these back in the 1940s, 50s, 60s maybe 70s. And they are apparently pretty labor in terms of to put together. But, mine is made of heavy gauge steel. It is built like a locomotive and it weighs as much as one. Every surface on it is curved. There are like no sharp corners that you can stub something on. It’s all that like curvy, 50’s style. It’s painted this sort of non-descript greenish, greyish, bluish disgusting color and it’s got this I don’t know, like mysterious like surface which is soft. You can write easily on it and it’s actually impervious to anything. And this desk is probably existed for many decades at this point. I got it on auction for five bucks in an old job of mine. When I went and I actually looked this stuff up, it turns out that you can now buy these, people will sell these desks for like $1000. So, I could conceivably repaint mine and sell it $1000 but I never will because it’s the best desk ever. Even decades after its manufacture, every single drawer on it is completely silent and solid and silky smooth like the day it was manufactured. It’s amazing. I’ve never seen a piece of office furniture this solid. So, if you ever see one of this, like in an antique store and like auction or something like that, pick one up. They are great.
JOSH: Those are amazing. I remember I see them a lot when I was a kid. Like in, schools, doctor offices and places like that. And they are really heavy.
AVDI: Yeah. It fits into my philosophy for buying tools; like, physical tools is… find a few that look good and then pick the heaviest one.
AVDI: It definitely fits into that. It’s huge pain to move around, but my goodness, it will never, ever fall apart. I will, you know, will it to one of my kids.
DAVID: That’s the line from Jurassic park, right? It’s like, “What is it?” “I don’t know.” “Are they heavy?” “Yes.” “Then it’s expensive. Put it down”.
AVDI: (laughs) Yup. And it wouldn’t be my picks without booze pick. So, I’m going to pick one of my fine Pennsylvania local beers. It’s “Tröegs Troegenator Double Bock”. It’s a double bock, so you get two bocks for the price of one. And it’s a fine, rich beer for this time of year. If you happen to be in an area where you can actually get your hands on some Tröegs, I highly recommend it.
DAVID: Very cool. So, I have an executive model tanker. It’s a secretary’s desk. It’s all done in mahogany instead of stainless steel, but it’s in the exact same style. And the right-hand drawer actually opens on a hinge sideways and it’s an empty chamber with a gigantic swing arm to conceal a typewriter.
DAVID: And it had a mechanical underwood on it. I mean we are talking 1940’s era type writer on it. And I needed a desk. I needed a flat space on it. So, I donated the typewriter to a friend of mine, who actually collects antiques. The desk wasn’t in nice enough condition to donate; the handles are broken off and what not. But yeah, when I first got it, I opened up a little pencil drawer in the middle and there was a ruler that it was like “Clayton’s Carpet Laying” and it had a five digit phone number on it.
AVDI: Oh, wow.
DAVID: Yeah. Very, very cool. So, my picks are pretty easy. I can’t believe we didn’t pick this last time. Its straight out of the pre-call and it should have been on of Avdi’s picks but maybe he’s just too gracious and not crass enough to have picked it. It’s “Cards Against Humanity”. All I can say is… Avdi, did you say there is a clean version of this game called “Apples to Apples”?
AVDI: (laughs) yes.
DAVID: OK. So, Cards Against Humanity is a card game where everyone gets cards with words on them. And so, you get cards like what Avdi is telling us last week, like you will get a card that says “charisma” and then you get a card that says “dead baby”. And then you get a card that’s says “the Jews”. So, I mean this is not charged in any way, whatever. And then you get like a card that says “a romantic dinner just isn’t much the same unless you have…” you know and then somebody plays a card that says the kkk or whatever. And so, you end up making really inappropriate sentences and phrases with this game. Just flipping through the deck, I laughed so hard, I nearly cried. I do wanna warn the listeners that it’s definitely not work safe. Many of the cards are R-rated and a couple of them are actually X-rated, especially if you put them in the right configuration.
JOSH: And David, the price for winning is being excommunicated form the church?
DAVID: Yeah, exactly. Or in your case, being baptized. So you know, it’s a revolving door policy. So, if you lose, you lose big either way. So yeah, that’s my first pick.
The second one is “The Kitten Cam”. Animal planet has put up a webcam inside a pet store and inside the kitten playpen. If every bit is as cute as you think and then about two orders of magnitude more. Because you’ll think, “Oh, kitten cam, that is going to be cute”. And when you put it up and put it off to the side and I challenge you to not make cooing noises before the the end of the day is over. I actually fell asleep with it running on my laptop last week. I now will fly into a murderous rage anytime I see somebody banging on a glass of the pet store, because scared the hell out of me. I was asleep and then all of a sudden somebody bang, bang, bang, bang, bang! on the glass of the kitten cage. I was like, “Leave those cats alone!” I was napping. So, The Kitten Cam, that’s my other pick. I actually don’t have a programming pick today, so that’s where I am just going to stop. Chris, have you got a pick for us?
CHRIS: I was going to point people to this talk that Douglas Crockford gave called the “JSON Saga”. And it’s pretty funny because he took, sort of like the standard MIT license and then he added a clause in there saying, “This software shall be used for good and not evil.”
CHRIS: And it’s pretty funny because he goes on to say he gets lawyers contacting and saying, “Well actually, about that clause…” and so, it’s good.
JEREMY: Yeah, there’s a great piece on it. I don’t know if it was that one or something else that basically, he wrote an explicit exemption for some company. And then it says, “Yes, you can use this for evil if you wish”.
CHRIS: Right. So, he’s like, “I don’t wanna embarrass the company by saying their name, so I’ll just say their initials, I-B-M”. And you know, people were just laughing.
DAVID: (laughs) That’s awesome. They should just have a *** to do… just pull a “Google” and say, “Good is what we say is good”. OK, moving right along. (laughs) Jeremy?
JEREMY: All right. I had two and had to had a third because of Josh’s Coderetreat. The first one is a programming pick and if you guys don’t know about “Avro” file format, I think you guys should probably all use it. I like it in terms of these sort of the same vain as Protocol Buffers and Thrift and things like that, except that Avro also defines an on disk file format and that is the main reason I use it. So, you can have complex record structures and then you have an on disk format that is compatible and has checksums and compression and all that kind of good stuff. So, don’t use CSVs anymore; use something like Avro.
The other one is (since Josh mentioned Coderetreat), I’m going to give a shout out to Gustin and the Floyd Coderetreat. I’ve been to it twice and it is so much fun. You go to the mountains of Virginia and hang out. And it’s a two day Coderetreat. So, unlike most of them where it’s one, this is a two day code retreat. So, you should all look at that a nd then try to go if you can some time.
And then a totally non-technical one is, I’m totally on vacation in New York this week and I went to this amazing museum yesterday called the “Museum of the Moving Image”. And if you are interested in photography and film, or the technology behind the film or anything like that, or you just wanna see just a whole bunch of funny GIFs on the wall, then you should go to the Museum of the Moving Image. That’s it for me.
JOSH: Hey Jeremy, I’m just going to say kudos for pronouncing “GIF” correctly.
JEREMY: Oh, did people call it “gifs”?
DAVID: Lot of younger kids do.
JOSH: Yeah, but they don’t know that it came from CompuServe.
DAVID: Yeah. Just remember: choosy perverts choose gif. That’s how you remember the pronunciation.
DAVID: Back when we all got our porn from BBS, right?
JEREMY: You are fired. You are fired.
JOSH: Yeah (laughs)
DAVID: Yeah alright.
JOSH: What are you doing here, man? (laughs)
DAVID: And the sad thing is, is that anybody that pronounces it wrong is too young to remember the choosy moms choose GIF commercial anyway. So, oh well.
JOSH: Great. So, next week we are doing our book club, right?
DAVID: Holy crap! I got to start reading that.
JOSH: (laughs) I did. I started reading it. It’s pretty cool.
DAVID: I actually own… It’s “Service Oriented Architecture in Rails” by Paul Dix right?
JOSH: No. It’s “Service Oriented Design”
DAVID: OK crap. I’ve been reading completely the wrong book.
DAVID: It’s like way too high level for what we are going to talk about.
JOSH: But yes, we will have Paul Dix on the show.
DAVID: In my defense, I own that book and I read it like 2 years ago. And it’s… We’ll have lots of fun to talk about. So, that’s going to be fun. I think that’s actually a wrap. Are we done?
JOSH: I think we are done.
DAVID: This is where Chuck tells to follow us on iTunes and give us lots of happy votes and follow us on Twitter and sign up for the Parley mailing list and blah, blah, blah, blah, and Chuck does it better.
JOSH: And don’t forget the Ruby Nuby contest.
DAVID: Yes. Please give us your submissions. We’d love to hear from you and we’d love to have you on the show.
JOSH: Bye everybody!
DAVID: We’ll see you later! Bye.