Skip to content

Instantly share code, notes, and snippets.

@lclarkmichalek
Created November 26, 2010 01:35
Show Gist options
  • Save lclarkmichalek/716164 to your computer and use it in GitHub Desktop.
Save lclarkmichalek/716164 to your computer and use it in GitHub Desktop.
In defence of Marak Squires
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:
http://www.reddit.com/r/programming/comments/ebge2/code_thief_at_large_marak_squires_jimbastard/.
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
header:
/*
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!
— Marak
*/
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:
https://github.com/Marak/pdf.js/blob/master/lib/pdf.js
http://code.google.com/p/jspdf/source/browse/trunk/jspdf.js
"""
Let me just check that...
In terminal.
wget https://github.com/Marak/pdf.js/raw/master/lib/pdf.js
wget http://jspdf.googlecode.com/svn/trunk/jspdf.js
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:
3,8c2,7
< 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:
http://james.padolsey.com/javascript/extending-jquerys-selector-capabilities/.
Marak's code can be found here:
https://github.com/Marak/jquery.dataSelector.js/blob/master/jquery.dataSelector.js.
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:
http://www.reddit.com/r/programming/comments/ebge2/code_thief_at_large_marak_squires_jimbastard/c16w8hy
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
ServerResponse:
https://github.com/Marak/response/blob/master/lib/response.js
"""
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
debunking:
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?
Thanks,
Laurie
####
Total disclosure. I have NO relation to Marak that I know of. I use Python with
Django, and JQuery for JavaScript. I have shunned Node.js 100% since I heard about
it. I have nothing but professional respect for good programmers.
@Marak
Copy link

Marak commented Nov 26, 2010

@leegao , What about the part where I deleted every line of code even remotely related to that crappy codebase and PAID Scott Gonzalez to clean-room engineer the entire project? Look at the ReadME / ask him if you don't believe me.

https://github.com/scottgonzalez/figlet-js

Did you know that side of the story? No, you didn't.

@leegao
Copy link

leegao commented Nov 26, 2010

You're right, I didn't know that side of the story nor did I care if you stole the code or not, and my guess is, neither does the rest of Reddit. The best way to gain their support then would be to prove to them that you're not a jerk. Seriously, only about 10% of the people who rips on you actually do so because they think that you are a code thief.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment