In defence of Marak Squires
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
|In recent days (the last 12-24 hours), there have been a couple of posts on a one
|'Marak Squires', who goes by the tag JimBastard. He stands accused of stealing code,
|and being a general douchebag. Stealing code isn't good. Being a douchebag isn't
|acutally illegal. However, the way that the campaign against him has been carried
|out worries me.
|The post to reddit that brought this issue to attention was entitled 'Code Thief at
|Large: Marak Squires / JimBastard'. It can be found here:
|It was a link to a github gist that can be found here:
|https://gist.github.com/714852. The link was posted by an account named
|'supporting'. The submission history for this account is 2 posts, both of which seem
|to be attacking Marak.
|In the gist written by supporting (I assume they are the author), the author lists
|several examples of how projects have been stolen. I would like to take the time to
|make sure that these examples all compute.
|The first example given is that of AsciiMo, a 'Text Ascii Art Generator'. supporting
|gives us the link http://patorjk.com/blog/2010/06/21/asciimo/ to educate us about
|Marak's misdeeds. I recommend you read the post, though I doubt many people will.
|The post is penned by 'patorjk', and explains how annoyed he is that Marak has taken
|his code, from his Taag project, modified it (in essence, forked it), and added this
|asciimo.js – written by Marak Squires
|saved from the internet @ http://patorjk.com/software/taag/
|i had to do unholy things to make the original code work, seriously.
|check the commit logs on github and you’ll see how much “code” i had to delete and refactor.
|what’s left isnt really acceptable, but it does work.
|let’s clean this up and get a more comprehensive font database!
|I think I can understand why patorjk is annoyed. I would be peeved by the use of the
|verb to write in the 2nd line. However, Marak has attributed the author, though he
|does not seem to have taken the licence from the original author. However, this may
|not be an issue. If we are to check the commit message on Marak's first ever commit
|we find the following:
|"removed all potentially copywritten code. deleted repo and cleared history to ensure legacy code cannot be viewed or downloaded by anyone. all code is copyright Marak Squires 2010, MIT."
|So, there seems to be, ummm, no problem? Unless of course the software was patented?
|Or Marak lied? I encourage the reader to check for themselves.
|So the first example seems to be a false alarm. Lets hope that supporting is better
|informed on his second example. I quote:
|Exhibit B: Marak's PDF.js is a blatant copy-and-paste ripoff of
|jsPDF, including comments:
|Let me just check that...
|head -10 pdf.js >/tmp/diff.1
|head -10 jspdf.js >/tmp/diff.2
|diff /tmp/diff.1 /tmp/diff.2
|So that shows the differences between headers. Hmm. Well would you belive it:
|< pdf.js - Marak Squires 2010
|< MIT yo, copy paste the credit
|< based almost entirely on jsPDF (c) 2009 James Hall
|< some parts based on FPDF.
|> * jsPDF
|> * (c) 2009 James Hall
|> * Some parts based on FPDF.
|So the dastardly being that is Marak altered the header! While keeping attribution
|and existing copyright headers. Darn it. Seems the response to supporting's Exibit B
|is that yes, he copied it. Welcome to opensource. Copying is kinda the point...
|Exhibit C now. Let's hope supporting gets a bit more reliable eh. Exibit C is an
|accusation of theft from a blogpost by James Padolsey, found here:
|Marak's code can be found here:
|Sorry. How is this news? The blog post is very obviously a tutorial, with code meant
|to be used by other people. I think Marak's crime here was making it public, sharing
|the code he had used with the world. However, for the sake of fairness, we must
|award this round to supporting. Marak probably should have added attribution to the
|code if he was planning to make it public. However, given that the github repo has
|one commit, by an unknown commiter, I hardly think that Marak cared, or intended it
|to be used by the world. The very fact that the commiter is unidentified indicates
|that the git installation that was used to commit was rather new, without global
|config options set. This could indicate a certain level of amateurism, though I
|shall not create excuses for him.
|Time for Exhibit D. This involves a file named session.js, with Marak's copy being
|found here: https://github.com/Marak/session.js/blob/master/session.js. supporting
|seems to have been lax on this one, and has not given us the original. However,
|looking at the commit list, Marak seems to have added to the documentation several
|times (something lacking from opensource projects in my opinion), and added a few
|functions. He once updated his repo against the original author's, 'inimino'. This
|is referenced in the commit message. If this is theft, then could he please rob my
|projects, I hate writing documentation.
|Exhibit E now. Last but not least? Exhibit E seems to be 3 entries to be honest.
|supporting brings to light that Marak's Gemini 'is simply the stdlib EventEmitter
|from Node.js with a bit of "TODO" code surrounding it.'. Again, supporting does not
|give us any links to compare with, so we shall just have to take their word for it.
|Looking at the commit log, we can see several mentions of this 'EventEmitter' (I am
|not a js person, forgive my ignorance). The commits in question come from someone
|else however... has Marak been framed??? I jest, but I do not see the problem with
|the gemini project. A project that is simply a wrapper for an EventEmitter is
|perfectly legal. I'm surprised that people would think otherwise. Using a publicly
|available library is not stealing. It's just using the library. I enjoy developing
|applications using the Django framework. That is not me stealing. That is me using
|the framework. I am not sure what supporting is complaining about here. Their
|complaint makes almost no sense.
|It should also be mentioned that the author of Exhibit D has said he has no
|objection to Marak's use of the code, as stated here:
|Exhibit E, part 2. Marak's '"say.js" is just a shell-out to the Mac's "say"
|command'. This is a stupid argument. The code in question can be found here:
|https://github.com/Marak/say.js/blob/master/lib/say.js. It simply takes an argument,
|and runs the mac's `say` command. This is perfectly legal. It's even perfectly
|ethical. I am confused as to how this could ever be seen as a 'bad' project. Any
|attack on Marak's say.js has no grounds. And I'll put money on that (Unless you
|happen to represent a large software cooperation, in which case I shall run away).
|The last part of supporting's attack on Marak is about his response.js project.
|His "response.js" project is 15-line monkey-patch to Node's
|Let's take a look at the github project description "beefs up and extends node's
|http.ServerResponse object". Sounds fine by me. Sounds a lot like the project is
|being attacked for being what it says it is. A patched version of 'node\'s
|http.ServerResponse object'. What a non-issue.
|So we seem to have come to the end of that enjoyable trawl through what turned out
|to be rather imaginary accusations against Marak. Lets do a little score chart of
|Outcome | Exhibit name(.part number)
|True | -
|False | A, B, D, E.1, E.2, E.3
|Take it to court | C
|However, in the words of every other slashdot poster, IANAL. And I will not pretend
|to be one. However, I do believe I am a member of the opensource community, and I do
|not think Marak has committed any kind of atrocity that warrants the kind of witch
|hunt that has been produced.
|It is interesting to look at the comments of those who seem to hate Marak. There are
|2 main accounts who hate Marak with a passion, it seems, though there do seem to be
|a lot of downvotes flying around, so it's hard to be sure. But some comments strike
|me as odd. Such as this one:
|http://www.reddit.com/r/programming/comments/ebge2/code_thief_at_large_marak_squires_jimbastard/c16u8os. If I could take a quote from that please. "You should care
|because he's a toxic presence in the Node.js community, and is trying to start a
|Node hosting company.". In particular, "is trying to start a Node hosting company.".
|Why does the poster care? There is no need to try and ruin the guy's financial
|situation (which a failed venture could do), as well as his online profile. Infact,
|looking at the comment history of supporting (found here:
|http://www.reddit.com/user/supporting/comments/), they seem to be purely in response
|to the user JimBastard, which is the account belonging to Marak.
|It seems odd, that a person could hate a person so much that they go to the trouble
|of engineering a campaign of hate against them. However, supporting seems to truly
|hate Marak. I assume supporting is not the perpetrators main account, so they must
|be lurking somewhere, not posting.
|The other person who seems to have something against Marak is a user named
|'FlySwat', who seems to be a legitimate user. His comment history can be found here:
|http://www.reddit.com/user/FlySwat. One notable post by him gives the link to a
|youtube video (included here for science: http://www.youtube.com/watch?v=IrkDqh9ZVog
|) created by Marak. The video is rather silly, ridiculous even.
|However, it has exactly zero relevance to the topic that was being discussed, and
|seeks only to embarrass and/or ridicule Marak.
|In short, what we are seeing on reddit is close to character assassination, via some
|perverted sense of justice. The majority of people who read the post may be
|sceptical, but the vast majority of the comments agree with the original post, thus
|intimidating any would be commenter who feels differently from the group. I wrote
|this post because I do not believe that the lynchers of the deep south in the 1920s
|were acceptable. Because I do not believe in the hyper partisan dialogue in the USA
|we are seeing at the moment. And I do not believe that Marak deserves the treatment
|he is receiving. Any kind of mob mentality based on slander must be countered by
|rational argument. In any way. So this is my message to you, reddit. Grow up. Try to
|be articulate now and again. What you have done to Marak is awful. Maybe take a
|better look at the facts, instead of the talking points, next time, eh?
|Total disclosure. I have NO relation to Marak that I know of. I use Python with
|it. I have nothing but professional respect for good programmers.