Tonight a viewer of the Summer of NHibernate screencast series I was having an IM conversation with was kind enough to point me to a blog post (http://dotnetmagic.spaces.live.com/Blog/cns!709F68A62F06375F!184.entry) wherein an enterprising young blogger (I’m going to assume its a ‘young’ blogger since I’d like to think that a more mature developer would have more respect for the work of others ) has taken some effort to document exactly how to setup the UnitTest Utility class I wrote to interact with NDbUnit to support loading and resetting one’s database environment to support database-dependent unit testing.
Imitation is the Sincerest form of Flattery…
They say that Imitation is the Sincerest form of Flattery so perhaps I should be flattered, but I’m not. Plagiarism isn’t a form of flattery in my book.
This blogger has even produced screenshots for his posting which are apparently taken lock-stock-and-barrel from the actual Summer of NHibernate code download(s) — this author didn’t even bother to change the project name, the class names, the filenames, or anything else about even the test project he’s documenting to exercise the unit tests before he clicked ‘PrintScreen’ to capture his screenshots. Its all taken 100% from my work. Even the DTO model, for god’s sake.
Worse, this person has clearly taken the Microdesk.Utility.UnitTest.dll and torn it open using Reflector or some other similar MSIL decompiler tool and then posted the actual source code on his blog (interestingly, after of course removing the Microdesk from the class namespace designations in the code he’s posted so it looks as though its his own effort).
This blogger is even kind enough to provide his ‘version’ of the utility (with the binary and the namespaces having the Microdesk removed) for download for anyone who might be interested.
Very kind of this person indeed.
…but Theft is Theft is Theft!
I intentionally didn’t bother to obfuscate the binary of this library that was provided in the Summer of NHibernate code download for several reasons:
- I and my company never intended to make any money off this ‘product’ (and its doubtful anyone would pay for it anyway since developer tooling is a very tricky market in which to make any $$$ now that the VBX days of yore are over)
- Its a little niche utility that contains no IP worth protecting; any other competent developer who might think about the problems this library is intended to solve would likely arrive at a very similar solution (even if whether or not they too would spend the 2006 superbowl halftime show hacking together the first working prototype might remain to be seen )
- I always considered that if there was sufficient interest in the thing I would probably create some kind of ‘NDbUnitContrib’ project to parallel the main NDbUnit project and make the whole thing OSS for anyone interested to do with it what they will
But even given all this, to do what this person has done in the way this person has done it is just plain THEFT no matter how you ‘slice’ it, no matter how much or how little ‘technical’ protection I chose to put in place, and no matter whether any license accompanied the download.
We can leave it to the lawyers to decide whether its OK to decompile the binary if I didn’t provide an explicit statement that this was disallowed and downloaders had to first mouse through a clickware notice to accept my ‘license agreement’ but no matter that — this was and is outright theft.
I’m sure many will say that I shouldn’t be at all surprised by this; after all, in a place the size of the Internet if something isn’t explicitly disallowed, someone somewhere is bound to actually DO it (and in fact even a lot of things that are explicitly disallowed are in fact still going on on the Internet as anyone who wants to find an mp3 file can readily attest to~!).
But consider for a moment that for a blogger to do what this person has done would seemingly require all of the following efforts…
- Watch my screencasts (at least the one that introduced this utility)
- Decide the Utility is useful to them
- Decide the Utility might be useful to others (and so is worth a. stealing it and b. blogging about it)
- Decompile the binary
- Fix the usual minor troubles that arise from decompiling any binary
- Strip the leading Microdesk from the namespace hierarchy
- change the compile output target name to eliminate the Microdesk from the assembly name
- change the tests in the NHibernateDataProviderTest class to actually get Customers whose first name is ‘Paresh’ instead of ‘Steve’ (no, I’m not kidding about this one, this guy actually did that — go download his crap copy from the link on his post if you don’t believe me! )
- Write the blog post
- capture the screenshots
- post ‘his’ code and ‘his’ sample project for download
What I really cannot reconcile is how someone could actually choose to do all those steps (which are clearly a not-inconsequential effort) and yet also be of the mind that says ‘its ok for me to pretend that this is my work’.
Sudarshan Paresh= Blogger, != Developer
I don’t know that I will ever come to understand what neurons have to misfire in the brain of someone that would consider this ‘ok’ behavior, but if you, dear reader, or anyone you know happens to have any idea who this ‘Sudarshan’ actually is (I’m assuming his name is ‘Paresh’ since that’s what he replaced ‘Steve’ with in all the unit tests of mine he ‘claims’ to have written ), give him a message for me: tell him he’s really nothing but a blogger and will never be a software developer because nobody I could ever call a software developer with a straight face would be caught dead doing what this ‘Sudarshan’ has perpetrated here with these actions.
Sudarshan Paresh is voted off my Island…for good
Respect for the work of others is an absolute prerequisite for entry into the club we call software engineering; its a pretty wide-open club that accepts nearly all-comers, but this is an unforgivable offense that has been perpetrated against all of us. We all owe it to ourselves to let Paresh Sudarshan know that this kind of activity is grounds for being voted off the software developer island.
Shame on you, Sudarshan Paresh.
And that’s all I have to say.
Oh, except for one more thing: Sudarshan Paresh, I just posted a version of the utility that is compiled against the RhinoMocks 3.5 RC1 release, so you should download it and get started decompiling that one and making it available to everyone too.
Update: A commenter has pointed out that my original deduction that the blogger’s name was ‘Paresh’ from investigating his unit tests was apparently wrong, and his actual name (or at least Windows Live! identity) is ‘Sudarshan’. In the interests of ensuring that my ire is correctly focused and nobody named ‘Paresh’ is inadvertently target by my disappointment, I have updated this post accordingly.
BTW, thanks to any and all that actually visited this guys site and posted comments for him that were…uncomplimentary. I’m sure it won’t change his mind about what he did, but for me its the thought that counts so I appreciate the thougths of all of you on this.
Nice one Steve, I am actually thinking of running the Spring of NHibernate, I think I will just use your screen casts and overlay my voice on top, change some code and presto my own work :P.
Pretty crappy thing for this guy to do, not much else to say about it. Sorry you got burned 🙁
(However, as someone who has been frustrated by NDbUnit in the past, I’m glad that you decided to share your utility.)
Perfect. I can’t wait to see the screencasts. Oh, wait — I don’t have to 🙂
FWIW, this experince doesn’t change anything at all about my approach to that or make me second-guess my decisions on making that available.
I *am* disappointed, but this joker isn’t going to put me off my pace or my choices about how *I* want to operate.
Sorry to see this happened. With all the time and effort put into these screencasts, it’s a shame to see outright theft of this nature. In addition, it could discourage others from putting time and effort into projects such as your that have tremendous community value.
Thanks again for your efforts. They are appreciated!
This blogger should be ashamed of stealing an original work and getting more traffic from the original source for being caught red handed. I recently came across such an incident from a rails developer whose speeding tips where copied ruthlessly by one who got many credits for the same. As rails community is very rage they succeeded in entirely deleting the copied blog from blogger. Paresh name suggests he is from India and in the rails case also the culprit was Indian but most of the developers despite the country will respect others work if they had really written some original lines of code. I appreciate your efforts.
It’s good to see that the actions of this so-called “developer” haven’t put you off to the community at large. It’s a shame that someone would see something as useful and informative as your screencasts and have to try to brand it as their own. As always, thank you for the great service that *you* do for all of us trying to learn.
This guy wins my Douchebag of the year award.
Mine too; who was the previous front-runner for that award before this guy rocketed to the top –? 🙂
Yeah, this is annoying but I’m not going to let one idiot spoil it for everyone else. Like I said, the Internet is a *huge* place with all kinds of people in it, but I’m happy to say that this guy is the *exception* and not the rule. I have rec’d more than enough positive feedback from others about the screencast series for it to drown out the little noise made by this one guy’s insensitive actions. Never-fear.
Jeez, he’s a thief, no question about that.
You can’t call him lazy though. As you pointed out, he had to put in a significant amount of effort to create that post. (This does certainly _NOT_ mean that I condone his action in any way !!!!!)
What I don’t get is why he didn’t spend that time/effort to create some original content.
>This guy wins my Douchebag of the year award.Mine too; who was the previous front-runner for that award before this guy rocketed to the top<
Well, I’ve seen some Sarah Palin videos on YouTube and ….. nah, let’s not discuss politics here 🙂
I dunno about theft, but fraud for certain!
What you are doing has been a great help to those of us learning nHibernate. I cannot speak highly enough of what you are doing for the developer community. Then for someone to come and do this to a champion of the nhibernate community is reprehensible.
Mate, keep going. Love your work.
I still cannot believe it, what a muppet!
I happened to be re-listening to an episode of the Polymorphic Podcast from early this year where JP Boodhoo was being interviewed and he happened to offer a quote that I think hits this problem right on the head: “You can steal someone’s code, but not their creativity.”
I don’t know exacty why that podcast seemed to call out to me to listen to it again (I *rarely* listen to any podcast more than once), but it sure seems appropo of this situation to me.
Funny how some things work sometimes.
[…] (BTW, Sudarshan, this invitation doesn’t extend to you for reasons clear to anyone who ready this post from last […]
also seems to be on code project..
great work on summer of nhibernate…
Thanks for the heads-up; I have contacted the CodeProject admins and requested that they remove the article. As of 1/9/2009 they have indeed done so (and it appears to be GONE from their site).
Thanks for the info on this — without your mention of it I doubt I ever would have stumbled upon it.
[…] Many viewers of one or more of my screencast series, Summer of NHibernate or Autumn of Agile, have seem me make use of several utility and base class libraries that I have developed over the years. Some have expressed interest in using some of these libraries in their own work projects. Some have asked permission to do so (granted!). Still others have even de-compiled some of these and attempted to pass them off as their own work […]