TaxCloud posted sample code for Zencart in December 2010, and it appears to me that the variable names were already established. Some of it is below.<p><pre><code> // func.taxcloud.php
function verifyAddress($address, &$err) {
global $client;
// Verify the address through the TaxCloud verify address service
$params = array( "uspsUserID" => USPS_ID,
"address1" => $address->getAddress1(),
"address2" => $address->getAddress2(),
"city" => $address->getCity(),
"state" => $address->getState(),
"zip5" => $address->getZip5(),
"zip4" => $address->getZip4());
[...]
</code></pre>
Post: <a href="http://dev.taxcloud.net/2010/12/30/taxcloud-example-code-ready-for-zen-cart-developers/" rel="nofollow">http://dev.taxcloud.net/2010/12/30/taxcloud-example-code-rea...</a>
Code: <a href="http://morecarts.taxcloud.net/cartcode/" rel="nofollow">http://morecarts.taxcloud.net/cartcode/</a>
I'm curious what license you're using (since there's no mention in the readme). It seems clear that you wrote this to be open source and help people. Since there's no license information, third parties (ie, people who aren't you) should assume that they have no right to use it (that it's proprietary since there's nothing offering other rights). You've said it's open source, but under what terms can I (or TaxCloud) use it?<p>A lot of open source licenses don't require attribution. If you had licensed this under the GPL2 or MIT licenses, would you still consider what they did wrong?<p>It's crappy (in the plagiarism way) to take someone else's code and try to make people think you wrote it. You haven't explicitly licensed your code under any license and so, to be conservative, third parties should operate under the assumption that the code is proprietary. However, many times open source does allow you to fork something and make it your own. For example, Joomla is a fork of Mambo. The codebase has evolved, copyright notices have been changed, and there isn't credit back to Mambo on the website. If it were a less known project, many people might assume that it all originated with Joomla (and, in fact, with Mambo seemingly dead and it having been quite a while since the fork, I'm guessing a lot of newer people wouldn't find out).<p>Often times, open source licenses don't require attribution. It might have been that the person at TaxCloud got your email telling them about your open source project and assumed an MIT license for it. One shouldn't assume things like that, but people make more egregious errors.<p>Anyway, it would be nice to know what license the open source code is governed by (and this is true for many more projects that just don't have a license file) and I hope you're able to resolve the situation in a way which makes things better for you.
Looking at the examples it's really hard to know if this stuff was copied. How else would you write this sort of stuff? This seems like really simple, straightforward code.<p>A lot of it seems to be about creating a hash based on a well-defined data type. Is there some other way of doing this that makes sense in Ruby?<p>Similarly, he points out similar variable names. If you have a variable containing an API key what do you call this besides "api_key"?<p>Maybe these are just poorly chosen examples, but if these are the best evidence the author has I don't think there's grounds for flipping out quite yet.
The author writes about his love of contributing to open source, but since his code has no license this may not even be open source code at all. The author should put some kind of license with his code so that it is used the way he wishes. If he wants credit, there are attribution licenses out there. GPL may help to get contributions back to your code. Different licenses will have different results.<p>Also, hypothetically, if the official API was GPL and he used that as a starting point - in fact he could be the one in violation of the GPL for not including copyright info in his code.
Although you still get copyright protection without it, a comment at the top of every source file with your name and the license makes it very easy for people to figure out who owns what. You didn't have any license, you didn't have any authorship or copyright headers in your source code, and then you asked the company that "stole" your code to take a look and share the code with others.<p>The problem is that you're communicating in a very vague manner: you should be explicit about all of your expectations and intentions so others interacting with you don't have to guess what you're thinking.<p>Imagine how this interaction would have gone if your source file started with:<p><pre><code> # Copyright (c) 2012 My Consulting Firm
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
</code></pre>
And you emailed them saying:<p>"Hello. I've created a gem that's licensed under the GPLv3 for interacting with your service. Please feel free to link to it or redistribute it on your website under the same terms."<p>My guess is: this problem would have never occurred.
What do you really expect from them? Being vague isn't helping the situation.<p>- If you just want attribution and an apology, ask for that.<p>- If they dont know what you want, they may just remain silent.<p>It was probably a lower-level mixup, some programmer was in a hurry, had too many tickets under his name, and rushed out a solution. The company was probably unaware.<p>Making veiled references to some action you might take just means they will refer it to a lawyer, who will say, "Just keep quiet and dont change anything right away. It's unlikely he has an Oracle-vs-Google sized budget to make a case, and anything you say or do might work against you. Rewrite it as soon as you can think of another justification, and be sure to create an email trail for that."
A general request (not specifically towards the author): If you release a project under open source license, please be specific about what kind of attribution you would like to get when your project is used within a product.<p>Giving credit would be so much easier if one could use for example Maven or npm to automatically create a list of attributions that could be then formatted and included in the "About page".
I think you are creating a storm in a tea cup. I agree that there has been some copy pasting of code blocks. But that's life and the nature of writing.
That require is a smoking gun for sure, but I'm not too sure about the copyright claim. It's <i>their</i> copyright on the API in the first place, and there are a limited number of ways to wrap an API in Ruby.<p>It's sleazy to cut and paste code without attribution, but this post comes off as way too confrontational considering the company hasn't had a chance to respond yet. (Which response is perfectly likely to be "Ah shit, brain fart, sorry.")
I think the arguments here are weak. Using a builder is extremely common in API wrappers like this (I just did this myself wrapping an API in Ruby). In the second example, the code you pointed out was similar really wasn't that similar. Someone else made a good point: because this is an API wrapper there's really only a limited number of ways to do things.<p>Still, there's a good chance that someone looked at it to see how you did things -- these things are hard to prove. Regardless, I think your response is a bit over the top? Does it warrant this nasty blog post, or could you have just emailed the dude and said, "Hey, I noticed you guys may have been inspired by my code, a lot of appeared similar. I am licensing under GPLvXXX [or whatever your license is] and it requires some attribution if you guys did use some of my code." I suspect they would have happily given it to you. If they refused, well, then maybe then would have been the time for the rant. :)<p>No offense, but the way you handled this, you are coming off like some guy having a temper tantrum on the internet, instead of a developer with valid grievances handling this maturely.