DM's Soapbox
You Got Fucked.

Huh, look at that, it actually worked. I honestly did not expect things to go so smoothly. It was a pretty stupid plan to begin with, relying on Toumal making precisely the wrong moves at just the right time. Thankfully, he proved to be a most reliable tool.

What’s going on, you ask? Well, the hosting companies keeping SoFurry’s server up have told Toumal to take down the chat code that’s mine. But wait, why didn’t Toumal take action to protect himself - and his users - against something like this sooner? That is a very good question. I have no idea. Though there seems to be some misconception that this just came out of left field, totally unexpected, no warning whatsoever. Well, thankfully, that’s what email logs are for. Here, I’ll let you take a look.

date Sat, Nov 19, 2011 at 2:04 AM
subject Cease & Desist Notice

Dear SoFurry Staff,

It has come to my attention that your work, SoFurry.com, is hosting and utilizing software functions and methods (from hereon referred to as the Work) created or altered by myself, without permission to do so.

The list of Work contents includes, but is not limited to: Chat sidebar (the entirety of chatsidebar.js), chat online user list (and later derived versions), chat room selector, all chat options (including storage, retrieval, and any visible or invisible modifications performed by altering said options), chat message colors, chat whispers, chat name mention alert/”nicknames”, chat message background colors, chat name link functions for message direction, chat statuses and status messages, improved/altered chat auto-scroll, improved/altered chat message parsing on both client and server side, improved/altered chat message display, chat room information retrieval, chat pop-up “mini-profiles” and the functions related to retrieving and transferring related information, chat ignores, improved/functional chat bans, chat pause capability, chat user information retrieval, chat announcements, improved/modified chat command parsing, chat-specific BBCode parsing function, chat message retrieval interval adjustment and related server-side functions, underage user recording and associated chat restrictions, and the site personal message outbox display, as created or altered by me.

As the copyrights for the Work have not been transferred, these functions remain my personal intellectual property, which I may allow, deny, or revoke the privilege to use at will. As you do not have permission to use my Work on SoFurry.com, you have infringed my rights under 17 U.S.C. Section 101 et seq. and could be liable for statutory damages as high as $150,000 as set forth in Section 504(c)(2).

I demand that all software functions, methods, and files initially created by me be removed in their entirety. All software functions, methods, and files edited by me at any point must be either removed or reverted to a version prior to the alterations I made. This includes derived works that are based upon or utilize my Work. You are to desist from using work copyrighted to me until such a point that explicit permission otherwise is granted. International copyright law does not prohibit you from creating your own functions or methods that perform a similar role, if you so choose, as long as the resulting code differs substantially from my own.

As a courtesy to you, I have chosen not to contact or CC your web host with this initial notification. If I have not received an affirmative response from you on this matter by the 26th of November, 2011, further legal action will be taken that could result in SoFurry.com being taken down and/or civil charges. You may contact me for clarification on any of the matters presented herein.

Please understand that this letter is not a warning or threat. It is being sent to you as part of a legal process that must be followed in an effort to maintain my legal rights. You can put an immediate stop to this process by acting in accordance with this offer of good faith.

Note that I very explicitly spell out what code I want removed. It is not the entire chat - only what I created. At no point do I claim the entirety of the chat as my own, or that he has to take the entire thing down. Only the work I did must be removed, as that is the only part of the chat I legally own. Pretty obvious stuff, and completely standard.

For information on why this works, check here and here.

Also note that that was sent about two days ago, from the time of this posting. Toumal was given one full week to comply with said demands - or, hell, even just to respond at all. He could have used that time to get the SF2 chat up in some mostly usable condition. He could have spent that time actually reverting the code to a point prior to my editing it. Or, honestly, he could have just sat on it for a while before rejecting (or even agreeing to) it, in which case I’d just be twiddling my thumbs here in the dark wondering how things would turn out. Any of these options would have been a suitable alternative that would leave the SF community A) With their old chat for that entire week, and B) with a presumably non-temporary chat afterwards.

Instead, he did this.

date Sat, Nov 19, 2011 at 3:20 AM
subject Re: Cease & Desist Notice

DM, don’t do this. You’ve been part of the dev team and like any member you knew your contribution becomes part of sofurry 1.0

You cannot join a project as volunteer coder and then later retract permission, such a practice is unheard of.

You have the right to use your contributions elsewhere but you cannot “pull out” something you contributed to a bigger piece of software.

I could’ve sent you a letter like this when you used the entirety of sofurry 2.0 code to create your site, something you had no right to. Getting such a letter from you now is frankly quite silly.

You are wrong. Stop this now, and save us both the grief.

Fun fact, there is a proper way to respond to a Cease & Desist letter. This is not it. First off, he just jumps right into it. There is no way that he got in-depth legal advice within an hour and fifteen minutes, and that’s exactly what you’re supposed to do immediately after receiving a C&D. And second, he’s basically just trying to blow me off. “Cut that out.” No, that’s not the proper response to a legal procedure.

There has been a lot of talk about how Toumal could sue me for using SF2.0 code. I want that. No, like, really, really want that to happen. Because a judge will look at it, and see that not one single damn line is the same, and tell Toumal to fuck right the hell off. So, if you want to make me happy, please, do anything you can to push Toumal in the direction of filing such a lawsuit. The prospect of seeing him in utter ruin damn near makes me splooge my pants.

Now, where was I? Oh yes, I had a reply.

date Sat, Nov 19, 2011 at 3:08 PM
subject Re: Cease & Desist Notice

Whether or not something has been heard of is irrelevant, and does not alter my legal rights, especially if it actually has been done in the past anyways. I never granted any permission for the chat to be utilized or modified without me. I have on log a multitude of instances of me saying it’s “my” chat, that I was not working “for” you, that others are not to touch my code, and that I do not work as part of a “team”. Even the conduct displayed in relation to chat development clearly identifies it as a stand-alone project of my own, not a collaborative effort, regardless of how integral it may seem to site functionality or how it may appear to users.

With the exception of site framework components (Yii, jQuery, color picker and other small add-ons) and roughly 10 lines of code given to me by friends (that I can and will promptly remove if they so request), the New Anthro Empire is completely, entirely my code, from scratch, and created at a speed estimated at a minimum of five times faster than any professional programmer ought to go; that’s just based on Basic COCOMO (Intermediate estimates 16), nevermind the literal months of research plus time spent on graphics and other non-code elements. The SoFurry 2.0 code was not used in whole, in part, or even as a reference - except in two or three cases where it was very specifically used, by myself only, as a reference on what coding practices to avoid. I can and will defend this in court, and I welcome you to divert all available funds towards such an attempt. But I warn you, I did not get to be valedictorian by cheating. I did not maintain a 4.0 GPA by using someone else’s work as a springboard. I did it by, quite literally, being the very best around.

So let me ask you. How long has it been since I started researching this? How many angles have I approached it from? Who have I asked about it? How many of my friends’ parents, or parents’ friends, or relatives, constitute a portion of the nearly 1.2 million lawyers in this country? Has that guy with a hint of atychiphobia who’s obsessive about research forgotten to do his homework for once? Or is the so-called DigitalMan hovering his finger over the proverbial big red button, trembling with anticipation as he waits for that week to expire? Looks like we’re gonna find out!

See, here’s another fun fact. The chat did have other developers! Really, it’s true. … Just, not while I was there. There are two instances I can recall of another coder editing my chat code. I them proceeded to flip the fuck out at them, and revert it to my previous version. Absolutely every single new or altered bit of chat code between January 28th and October 20th 2010 is something I wrote myself, alone, without any other coders adding to it during that time. If you know how SVN works, you know what a pain in the ass it is when anyone else has modified a file you are trying to commit. I was not working as “part of a team”, and the moment Toumal tried to make me act like part of a team, things fell apart. Why? Because I’m not part of a team. I work in my own, secluded little world where no one is allowed to touch what I’m working on. Basically, an independent contractor.

Anyways, we’re not done yet. Let’s see what Toumal had to say about it.

date Sat, Nov 19, 2011 at 3:16 PM
subject Re: Cease & Desist Notice

The core of the chat was written by me. You did contribute code but it was never “your” chat.

I spoke with my lawyer. He advised me about this, and since i do not plan to do anything with your contribution that would require your explicit permission (such as open-sourcing 1.0 which we will not do as it would indeed require agreement of all involved), i will not follow your illegitimate demands.

Since i have all the proof in form of svn logs and emails, i consider your claim to be void.

There have been plenty of precedence cases in the US and the EU. Your permission to use your contribution was implicitly given, you cannot suddenly change your mind.

Besides we’re switching to the 2.0 chat soon anyway. Why do you insist on this sillyness?

Right off the bat, we have one of those communication problems that Toumal is infamous for. In this correspondence, I never claimed the entire chat as mine. What I said (really, look up a bit), is that I referred to it as “mine”. Repeatedly. Things like, “Get off my chat”, or “Stop messing with my chat”, or “It’s my chat, so I think I’d know the rules”, and so on. This is important because of conduct. The way a matter is handled can have a substantial impact on the law. I never perceived the chat as some big team collaboration, I treated it as my own personal project (which goes along with yelling at anyone who touched it).

It’s also funny how he thinks he would only need permission to use software if he wants to open-source it. That… I don’t know, I honestly have no idea where that concept came from. In all my research, I have never encountered anything along the lines of, “You may use any code you wish, as long as you don’t show it to other people.”

Why do it now? Because research takes time. You can not just build a winnable case overnight, you need to cross your t’s and dot your fuckin’ i’s. Yes, it really sucks ass that it took until now to actually get it all together, because Toumal is so damn close to having a new chat. But these are the cards I’ve been dealt, so I played them.

One last note before moving on; Before, it was “unheard of”. Now, there are “plenty of precedence cases”. Someone’s confused.

date Sun, Nov 20, 2011 at 1:01 AM
subject Re: Cease & Desist Notice

If that is the conclusion that your research has led you to, I can’t stop you from taking that route. However, please be aware that you forfeit the remainder of the compliance leeway by declining my offer at this point. The issue will be escalated immediately.

And that was that. The end. He had a week to work with, to research, to think, to stall, to do what-the-fuck-ever he wanted to do. But he blew it on the first day. Not even 14 hours after it started. That is why you have a crappy temp chat. Because your mighty leader, with his alleged arsenal of legal support, didn’t even know how to handle a fucking Cease & Desist.

To finish up, here’s one last fun fact: an ISP does not have to comply with a DMCA takedown notice. They may choose to outright reject it. Deciding whether to actually take it seriously involves actually looking at the code. The companies hosting SoFurry looked at the code files I sent them, and then looked at the files currently in use on SoFurry, and said, “Well shit, these are way too close for comfort.”

What, you wanna see the DMCA notice? Fine, fine, but it’s all legal-y.

date Sun, Nov 20, 2011 at 2:59 AM
subject Copyright Infringement Takedown Notice

Hello,

My name is ____________, and I am a software engineer for ________________. It has come to my attention that the web site SoFurry.com is illegally utilizing and distributing copyrighted content. You are one of the hosting companies for this site, as identified by DNS queries and whois lookups:

;; ANSWER SECTION (2 records)
sofurry.com. 600 IN A 174.123.68.2
sofurry.com. 600 IN A 82.103.132.73
http://whois.domaintools.com/174.123.68.2
http://whois.domaintools.com/82.103.128.73

I have a good faith belief that use of the material in the manner complained of here is not authorized by myself or the law. I have never been an employee of SoFurry.com, nor have I transferred the copyrights to them, nor have I granted permission to use my code without me. Therefore, this letter is an official notification under the provisions of Section 512(c) of the Digital Millennium Copyright Act (“DMCA”) to effect the removal of the infringing material described below.

Attached are my personal copies of files that were either created or substantially modified (ie derivative works) by me. Files identical to or barely different from these are being hosted on SoFurry.com, either in use for server-side functionality, or distributed to users.

The following server-side files are composed, in whole or in part, of my Work: http://sofurry.com/lib/bans.inc (entirely), http://sofurry.com/lib/chat.inc (partially), http://sofurry.com/lib/pm.inc (partially), and http://sofurry.com/lib/class/ChatMessage.class.php (partially). Accessing these files may require manually browsing the folder structure, if they have been locked to outside access. The specific functions created or substantially altered by me include: Personal Message outbox (PM_GenerateSentList), chat ban system (BAN_banFromChat, BAN_unbanFromChat, BAN_checkChatBan), underage user recording and restricting (BAN_banUnderage, BAN_checkUnderage), chat online user and user information retrieval (CHAT_onlineUsers, CHAT_userInfo), chat room information retrieval (CHAT_roomInfo, CHAT_listRooms), chat sidebar layout and content (CHAT_GenerateSidebar), chat message retrieval (CHAT_fetchMessages, getRecentByRoom), chat message rate retrieval (CHAT_getMessageRate), chat command parsing, whispers, ignores, statuses, and announcements (CHAT_postCommand, CHAT_postMessage), chat ban time parsing (parseBanTime), and old chat profile retrieval (getChatProfile).

The following distributed files are composed, in whole or in part, of my Work: http://sofurry.com/js/chat.js (partially) and http://sofurry.com/js/chatsidebar.js (entirely). These files have been sent through an automated minification/obfuscation program that alters their appearance, but not their function. I am attaching both the original versions, as well as versions sent through a similar minification process (as I do not have access to the one they used specifically); the result is not identical, but it is more than obvious that both minified versions have the same origin. The specific functions created or substantially altered by me include: user preference loading, saving, modifying, and all related functionality (readPrefCookie, savePrefCookie, setNewCSS, saveListFlags, toggleShowHidden, toggleStatusGroup, toggleModsFirst, toggleAlert, toggleColOverride, toggleAltBG, toggleAdaptiveSpeed, colorAsk, changeOwnColor, changeModColor, changeAlertBG, changeWhisperBG, changeFontSize, changeActionStyle, changeListOrder, moveOptionPane, toggleOptionPane, createOptions), chat message colors (changeMsgColor), chat name mentions/”nicknames” (saveNicks, changeNicks, setRegEx), chat statuses (setStatus, closeStatus, showStatus, updateUserStatus, resetUserStatus), chat user information display/”Mini-Profiles” (closeMiniProfile, showMiniProfile), chat online user display (assembleUserEntry, parseUserJSON, updateUserList, getUserInfo), chat room selection and information display (updateSizing, showRoomInfo, parseRoomJSON, updateRoomList, changeChatRoom), chat message posting (postChat, hiddenPost, sendPost, cancelPost, outboxMsg), chat message display (updateChatWindow, parseMessages), chat pausing (pauseChat), and chat message direction on name click (setToUser).

I swear under penalty of perjury that I am the copyright holder of the cited material, and that all information in this letter is accurate.

Please respond to email: ____________ by the end of the work day on Monday, November 21st, 2011 indicating the actions you have taken regarding this matter.