When you put open source software out there in the wild there is a mutual understanding that, you are going to see my source code, and probably take some influence from it into your own source code. Maybe sometimes you even take a little more than influence, and copy some lines of code. As an open source developer, we all know this is happening and we all know this is alright, encouraged, and to be expected.
When it gets to the point of out right copying of whole files it becomes a different story all together. And that is what I am addressing today. I should start out by saying that Datastax is a great contributor to open source software, and has provided the Cassandra community with a great amount of free docs and tools, and is one of the primary drivers behind recommending the FluentCassandra library to clients. I wish that is where we could leave it.
One of their developers decided to take some shortcuts and started copying FluentCassandra without attribution and passing the work off has his own. Everybody has deadlines and I understand that, but it takes a certain kid of malevolence and disdain for open source software, to out right copy certain parts of a competing code bases code for the expediency of getting your own out to market.
The developer who did this, Pawel Kaplanski, contributed a couple issues and some minor code that ultimately had to be rewritten to FluentCassandra back in September 2012. You can see that he does work for Datastax here and that the only thing he has done for open source software ever to contribute a few minor things to FluentCassandra over a 3 day period in September. (side note: I would hope that a company like Datastax who loves open source software, would hire developers who love open source software, however that doesn’t appear to be the case with Pawel who seems to only troll for code to make his day job easier)

Pawel was first introduced to me back in September by Michael Figuiere. In the email Michael was explaining to me that Pawel was going to be helping me out on FluentCassandra while working on their own client library. Which was wonderful news for me, because I always appreciate help, I thought this was a win-win for everybody involved. But as you can see from the above Github interactions, Pawel didn’t quite live up to his end of the bargain, and as I will show next in seemed to only be a win for Pawel.

So lets get down to the dirty stuff. Which I have started to track in an issue on FluentCassandra. The first and most egregious copying of code, and the part of FluentCassandra that has literally taken many many weeks of my time, over the past year, in tweaking and getting just right is the LINQ Expression Evaluator.

As you can see in this picture the white spaces in the indicator on the left hand side is code that was copied. These pieces of code contain the exact method names, program code, positions, and everything, so it is undoubtedly copied as a whole and then tweaked for his own needs. This is just lazy and dishonest.
There are others too, notice any similarities here:
https://github.com/datastax/csharp-driver/blob/28d8958873f55727bf515cf97b32c9cbfa31af9f/Cassandra.Data.Linq/CqlQueryEvaluator.cs
https://github.com/datastax/csharp-driver/blob/28d8958873f55727bf515cf97b32c9cbfa31af9f/Cassandra/GuidGenerator.cs
https://github.com/datastax/csharp-driver/blob/28d8958873f55727bf515cf97b32c9cbfa31af9f/Cassandra/GuidVersion.cs
https://github.com/datastax/csharp-driver/blob/28d8958873f55727bf515cf97b32c9cbfa31af9f/Cassandra/DateTimePrecise.cs
No attribution at all for our hard work:
https://github.com/managedfusion/fluentcassandra/blob/master/src/Linq/CqlQueryEvaluator.cs
https://github.com/managedfusion/fluentcassandra/blob/master/src/GuidGenerator.cs
https://github.com/managedfusion/fluentcassandra/blob/master/src/GuidVersion.cs
https://github.com/managedfusion/fluentcassandra/blob/2c77dfca83891a9559e14a2b58797095c0486050/src/System/DateTimePrecise.cs
The last one is the most interesting because it dates when he copied the FluentCassandra source code as somewhere between August 25 and September 6. Which line up nicely to his 3 days that he looked at FluentCassandra. I know this date range because I removed DateTimePrecise from the code base on September 6 because it had a nasty bug in it.

To be clear I am just very irritated that Datastax promised some help to FluentCassandra and the only help we seem to have gotten was a developer who decided to steal our code and not contribute anything back. And the two bugs that Pawel opened on FluentCassandra were bugs that he fixed in his own copy of the source code, but couldn’t be bothered to contribute back to FluentCassandra. That takes a real set of brass ones to be that blatant.
There is one bright spot and really all that I ask for, developer kcieslinski does actually attribute FluentCassandrawhen he copied the BigDecimal code.

That simple one line is all that I ever ask for.


Screenshots in the post are shrinked horizontally that makes them very hard to read
About the whole situation – it’s ugly. It would be nice from DataStax’s side to fix it via open-sourcing all beneficial changes to fluentCassandra.
I know I need a new blog format. This one is too constraining, I am going to fix that soon. Sorry in advance.
It’s really their problem not yours!
If he really told them it’s his works, and gave them a modified version, they will miss out on the update and on the knowledge where to get more / info / support!
As for you.. you just lost one source of fame / advertising, by that I mean one anonymous person. There is plenty of fish left in the sea, don’ worry!! ^^
There is a saying that goes “Once a thief, always a thief.”
Eventually his employer Datastax will be stung by piracy.
Nick,
I know exactly what you are talking about. It’s even worse when someone steals your code for his own project then gets a huge bonus and promotion for it. When I complained about it and proved that it was my work, I got smacked down for being negative and “not a team player”. Needless to say, I didn’t stay there long. What people like that don’t realize is that when you give credit to the code originator(s), you look even better than if you had created it yourself, because you obviously knew the state of the art well enough that you were able to leverage the work of someone else to bring your project home faster, cheaper, and with better quality than if you were starting from scratch. Dishonest people will never figure that out though because their own ego gets in the way.
Good for you for publicizing this! Honestly, when I read the headline, linked from the CodeProject daily email that I receive, I thought this would be an article about Java and Larry Ellison… or Gates and Jobs. Or Jobs and Xerox-Parc… or … or… or..
If you’re going to contribute to Open Source and put your source code out there for everyone, you just need to recognize that you run the risk of crooks misappropriating your code and representing it as their own. Being vigilant and shaming them to cost them customers and revenue — or better suing them and the company they work for (many lawyers in this economy will happily take on a contingency case with no fees to you) — are probably the best two things you can do. Look, if a slimeball wants to advance his career at your expense, a nice lawsuit that results in the company paying for the lawyer, court costs, and fees involved, will have exactly the opposite effect that the slimeball intended, inasmuch as they will either change their ways or lose their employment. Hit them where it hurts!
“When it gets to the point of out right copying of whole files it becomes a different story all together. ”
Ok, so the big deal here is this guy didn’t follow the Apache license right?
I mean you give permission to steal the whole file and now you complain somebody did? I don’t understand why this is such a big deal.
What do you mean? Plagiarism is stealing and that is widely recognized. But when a developer does it, it is the fault of the person who published it? In what world do you live in?
I hear you, and hope that much good things come to you in regards to this problem.
Nick,
I think I’ve also read this story on GitHub and I was wondering if you heard anything from Michael Figuiere or anyone else (except Pawel) from DataStax’s side. Mistakes are human, but they should be accompanied by apologies
.
Hi Alex,
I didn’t really receive an apology from Martin or Michael. They both said they are committed to open source, and with out trying to burn any bridges here, it was sort of a let down both of their responses.
Michael
Martin
I am going to leave it at that, and let you draw your own conclusions. But what you see on the issue #114 is the only responses I have received from them.
Take care,
Nick