I’ve been thinking about this for a while and honestly pretty made up my mind months ago, but I finally go enough determination to edit almost all the files in the trunk source tree and change the license from the 3 clause BSD to GPLv3.
There’s actually a number of reasons for the change and I wanted to share the ones that were most important to me. I don’t expect everyone to like the decision, but probably most won’t care since it doesn’t really impact them. But sometimes people get all bent out of shape when a project that has been around as long as Tcpreplay (10 years? Damn, where did the time go?) changes its license so I wanted to give my side of it. The change doesn’t mean I don’t like the BSD license anymore, just that I now feel the GPL is more appropriate for the Tcpreplay Suite.
First, for those of you not familiar with the GPL and BSD, what this means for 99% of users is everything stays the same. Tcpreplay is still distributed at no cost and the source code is available for you to read, edit and redistribute. You can use Tcpreplay at no cost for personal and commercial use. The only difference is that if you redistribute Tcpreplay, you need to make the source code of Tcpreplay and any code which links to it available to anyone who asks for it. If your code runs as a separate process then you don’t need to share that. There’s no legal requirement for you to proactively send me a copy of your changes, but I would very much appreciate that.
As for why, it comes down to the following reasons:
- Values. I still want to give Tcpreplay away for others to use and build upon, but it’s been frustrating to hear about people who have added features and then for one reason or another decide they don’t want to share those with the rest of the Tcpreplay users. This willingness to take, but not give back to the community sucks and I’d rather not allow people to continue to do that. I’ve got hundreds of hours of effort in Tcpreplay and I suppose I don’t think it’s “fair” for people to build upon it without sharing back. I’ve not only seen this with Tcpreplay, but other BSD projects- one of my previous employers added an enhancement to fragroute, distributed the new binaries to their customers, but never sent the patches back to the original author. I think my old company would of sent their changes back if the author knew about it/asked, but because there was no legal reason to do so, they never took the 5 minutes to do it.
- Support. I’ve actually had people enhance Tcpreplay, distribute it to others and then have these users contact me for support. They couldn’t give me the code and I was stuck trying to explain to someone that even though it was my project, I couldn’t help them because I couldn’t fix the bug they were seeing.
- Future. Tcpreplay will have a library/API in 4.0 and I hope it will become much more useful to other developers. Going GPL helps to protect the main tree from others creating incompatible forks. Yes, anyone can still fork Tcpreplay for their own purposes, but at least this way I can incorporate the good changes if they start distributing it to others. If you want to fork Tcpreplay for your own internal/personal use, go for it- I just want to limit the chances running into your libtcpreplay.so with an incompatible API getting out in the world causing problems for people.
- Developers. I’ve discussed license choices with other existing and potential Tcpreplay developers and there appears to be a greater level of comfort with the GPL and it seemed that they would be more willing to contribute if their contributions would be GPL’d versus BSD. Honestly, I don’t expect to see a lot more people working on Tcpreplay due to the license change, but every little bit helps.
UPDATE: One thing I wanted to add, I chose the GPLv3 because I believe it affords better protections then v2. If you have an existing GPLv2 application and would like to incorporate any part of the Tcpreplay Suite into it, please contact me to discuss dual-licensing options.
I might as well offer some alternative views on your points:
1. What you’ll probably accomplish is not that people who did not previously distribute their code will start, but rather that people who want to make changes to the code for their own use and that of others without redistributing the source will simply stop using tcpreplay (or, at least, the GPLed version).
2. This is a pretty good point, and one that had not occurred to me as a reason for the change when I first read the headline.
3. The license change will actually most likely promote more sustained open source forks, based on the last BSD licensed version — if anyone cares enough (which easily may or may not be the case). While an open source, BSD licensed fork can still be mined for “the good parts” by your GPLed project, a potential BSD licensed project will likely harbor at least a small amount of ill will toward an open source project that cannot “give back” to the BSD licensed project, eventually — and third parties will still be able to produce variants from that fork that do not come with free source.
4. It’s possible that a would-be contributor will shy away from tcprelay — but it’s more likely that a would-be user will do so. I, for one, tend to be quite uncomfortable with copyleft licensing for most uses, even when I’m not sifting through the code myself (I don’t have the time to read the code for *everything* I use, after all). As such, given a choice between a copyleft licensed piece of software and a copyfree licensed alternative, I choose the copyfree licensed software. I know others there are others who feel the same way. Even among fans of copyleft licensing, there are those who quite dislike the increased restrictiveness of version 3.
Of course, it sounds like you’ve put some thought into the change, and are comfortable with your decision. Perhaps all will work out according to your preferences.
Thank you for the thoughtful and non-inflamatory comments apotheon. I agree with your points which basically boils down to potential unintended consequences of the license change. Perhaps this will make the BSD licensed versions more attractive to would be developers/users. Obviously I don’t know what everyone will actually do and the number of people I asked is a relatively small subset of Tcpreplay users. However, there are people who are interested in developing large features (like a QT4 GUI) who do prefer the GPL because they want it’s stronger protections.
That said, honestly, I seriously doubt an alternative BSD licensed Tcpreplay fork will develop. The developer community behind Tcpreplay is probably too small for that to happen (ie. I’ve written 99% of the code) and the few people who have created forks have shown no willingness to releasing their code to anyone.
If the license change means someone decides not to use Tcpreplay or contribute to it, well that’s their choice. Frankly, based on the small number of people contributing to Tcpreplay it can’t get much worse. Not to say I don’t appreciate the patches people have sent, just that I have learned not to depend on them. I plan on continuing to improve Tcpreplay and make it the best solution available, so if people want/need to use an inferior BSD-licened version, well that’s fine with me. Frankly, if someone won’t use the GPL’d version because it forces them to give back their changes, then I’ve succeeded in my goal of limiting their leaching. I have no intentions of removing the old BSD versions from the website or preventing people from downloading the code from SVN.
My only hope is to not make this a religious issue. That’s why I am offering a dual-license under the GPLv2 for existing GPLv2 projects. While I prefer the GPLv3, I understand that there is a lot of GPLv2 code out in the world and I’m willing to work with them. Yes this may mean that Tcpreplay becomes “GPLv2 or later” licensed for everyone if they start contributing back, but I’ll cross that bridge when I get to it.
For the most part, I was nodding along with your reasoning until this point:
Using myself as an example of the “type”, there are people who choose to avoid using GPLed versions of software for reasons other than a refusal to “give back”. Many, in fact, might like to “give back”, not just in the form of actual contributions but also in terms of advocacy and similar positive acts that may not even be visible to developers — but might shy away from doing so because of philosophical differences or concerns over engineering effects with a license that forces people “give back” if they use the software in a particular manner.
For instance, one of the reasons I felt inspired to give FreeBSD a try was my discomfort with the GPL-heavy Linux ecosystem, including all the negatives that go with it. Luckily, I found that FreeBSD is — both technically and in terms of convenience — much more to my liking than any of the many Linux distributions I’ve used, but one of the reasons for giving it a try in the first place was the preference in the project for copyfree licensing. I believe, in fact, that some of the positive technical benefits (for my own purposes, at least) of using FreeBSD are influenced and encouraged by the licensing policy.
It’s pretty obvious you have made your decision, and I’m not really trying to convince you to change it back. I’m not trying to get on your case about it, either. It does seem important to me, though, to help people understand that there are excellent reasons for using copyfree licenses that have nothing to do with a desire to hoard improvements to open source software or “leach” from one’s betters.
Heh, yeah, when I wrote that I figured that’d be the point of contention. :)
I may not agree or fully understand why you feel that way (no doubt you can say the same about me), but I can understand how a reasonable person can come to that conclusion. I’m willing to accept that this license change may cause some people to be less interested in Tcpreplay then if it was still BSD licensed. Of course, there is a subset of the population who are probably more interested in Tcpreplay now because it is GPL. I couldn’t tell you which group of people is larger or provides more “value”- however you wish to define it. As you’ve probably figured out I changed the license for my needs/goals more then what I think other people want. If there’s an overlap that’s awesome, if not, well hopefully they find something else which will meet their needs. Just like I don’t add every feature people ask for, I can’t pick a license which will make everyone happy.
No doubt my attitude is born out of my Linux background and a level of comfort I have with GPL’d software. And I’m sure a large part of it has to do with how I’ve seen companies leach BSD licensed software and then claim they’re “open source friendly” because they write small, unrelated bits of software and then “open source it” by throwing it up code.google.com as if throwing it over the fence, unmaintained, poorly documented and effectively orphaned some how makes them good members of the community. Then there’s companies who claim they, “avoid GPL code like itâ€™s the plague” and use things like Linux, Wireshark and a full GNU/gcc tool chain in their product. WTF?
I don’t think either perspective is right or wrong (other then the companies who pull crap like that), but it is a personal choice.
Thanks for the feedback,
This is certainly true, at least for now. Intuitively, I have a sense that in the long run the pro-GPL sentiment that balances out the anti-copyleft sentiment will wane, and pro-GPL sentiment tends to only really provide an advantage over anti-copyleft sentiment in the very early stages of a switch to the GPL before the ideological interest is replaced by more typical “that sounds like too much work” disinterest people have in contributing to a development project. I don’t have any really strong arguments to back up that sense, however.
I understand that, certainly. Part of the reason for discussing it here was to point out that license choice may affect the tendency of the user base to behave in ways that serve your needs/goals, though as you pointed out earlier that effect on the tendency of the user base to behave in a manner helpful to you could be vanishingly small.
That does happen. I tend to try to ignore that aspect of things and focus, instead, on whether something I release under a given license is helped or hurt by the license choice — regardless of whether someone else who doesn’t help me is also helped — and on whether my license choice helps or hurts others. From my perspective, copyleft licensing always seems more punitive than supportive of a spirit of cooperation; as a general rule, people who want to cooperate will, and people who don’t want to will find a way to avoid cooperating. With that in mind, something like a copyleft license seems in practice more oriented toward punishing people who don’t want to cooperate than toward rewarding people who do. That it catches some people who do want to cooperate in the “blast radius” of the punitive effect, as in the case of harvested copyfree licensed code that is enhanced and not “given back” to the source, only makes me feel even less inclined to write code under a copyleft license.
That, obviously, is a personal observation and a personal decision: your mileage may vary.
Because of how the GPL works, it’s generally the case that avoiding GPL code is possible without avoiding GPL software. You can write closed source software that runs on a copyleft platform such as a Linux kernel plus GNU userland; it is not so easy to legally incorporate copyleft licensed code into a closed source piece of software.
As a personal example, I avoid GPLed code like the plague, in that I always try to avoid writing code that must be licensed under the terms of the GPL because it’s incorporated into software already distributed under those terms — but I also use GCC to compile software on my FreeBSD laptop, at least until LLVM serves as a usable replacement for the ports system.
I would still rather use GPLed software than closed source, proprietary software, all else being equal. Such a decision is purely one of expedience and practical engineering concerns.
I have opinions about one approach being more right than the other, but that doesn’t mean I necessarily think those who disagree with that are “wrong” personally. I certainly believe you mean well, and can respect your reasoning.
I hope you at least found it informative of an alternate perspective.
Thanks for the comments, while I don’t necessarily agree with all the conclusions you’ve reached, they’ve given me some things to think about.
The only thing I’d like to clarify is on the “avoiding like the plague” issue. My point (poorly articulated) was exactly that- while people & companies blast the GPL as being too restrictive and evil, it turns out they have no problems using GPL’d applications because in practical terms, it’s not all that restrictive after all. Yes, there are times when it does make life difficult, but the other option is write your own compiler (until LLVM came around) or network protocol decoder from scratch. I still don’t get why people complain about the Linux kernel being GPL’d… just use something like FreeBSD, like Juniper did for their OS.
This is fantastic.
Choosing GPLv3 makes me far more interested in tcpreplay and more likely to use it.