16 Feb 2013

Being Stolen From Sucks

13 Comments FluentCassandra

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)

copycat-pawel-kaplanski

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.

email

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.

compare1

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.

history-datetimeprecise

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.pawel-issues

There is one bright spot and really all that I ask for, developer  does actually attribute FluentCassandrawhen he copied the BigDecimal code.

kcieslinski

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

written by
Nick Berardi
subscribe
If you found this post valuable and would like to see more like it you can follow me.

13 Responses to “Being Stolen From Sucks”

  1. Reply Alex says:

    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.

  2. Reply Lloyd says:

    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!! ^^

  3. Reply Leslie Satenstein says:

    There is a saying that goes “Once a thief, always a thief.”

    Eventually his employer Datastax will be stung by piracy.

  4. Reply Robert says:

    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.

  5. Reply DidYouKnowPawelSucks says:

    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!

  6. Reply John Farrell says:

    “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.

    • Reply Nick Berardi says:

      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?

  7. Reply Vince says:

    I hear you, and hope that much good things come to you in regards to this problem.
    :-)

  8. Reply Alex Popescu says:

    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 :) .

    • Reply Nick Berardi says:

      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

      Thanks for bringing this to my attention, Nick!

      While building our driver, Pawel did reuse a few code from FluentCassandra for some very targeted issues leveraging the fact that our two projects both use ASL2 and that this is made possible by sections 2 and 4 of this license, regarding derivative works and distribution. As you’ve noticed yourself, we wish to go even beyond it by specifically acknowledging Fluent Cassandra where appropriate just as we (Pawel Kaplanski and Krzysztof Cieśliński who work together) did in https://github.com/datastax/csharp-driver/blob/master/Cassandra/GuidGenerator.cs and https://github.com/datastax/csharp-driver/blob/master/Cassandra/BigDecimal.cs. It was a simple oversight to omit this acknowledgement in some files that we will rectify.

      Please be assured that DataStax is committed to engaging with the OSS community at all levels.

      Martin

      Nick, as the VP of Engineering at DataStax I can assure we are committed the guidelines and spirit of the open source community. As Michael mentioned in his comments our use of the code conforms to the terms of the Apache license, however we don’t want there to be any bad feelings and are happy to add additional attribution to the code and to contribute changes back to Fluent Cassandra as appropriate. DataStax is a strong supporter of Open Source, We employ full time developers who contribute all of their code to open source, host community events, and maintain community web sites. We are sorry about this misunderstanding and encourage you to contact us in the future if you have any concerns.

      Martin Van Ryswyk

      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

Leave a Reply