Hacker News new | past | comments | ask | show | jobs | submit login
Monit's DMCA takedown notice for Inspeqtor (github.com/github)
164 points by jbrowning on Oct 6, 2014 | hide | past | favorite | 70 comments

It looks like Mike Perham wants to bring the repo back up, but due to the DMCA request. It'll be at least 10 days [0]. He also says that he never looked at the code for Monit [1].

He has also filed a counterclaim with GitHub [2]

[0] https://twitter.com/mperham/status/519164948887257090

[1] https://twitter.com/mperham/status/519165523473358848

[2] https://github.com/github/dmca/blob/master/2014-10-06-tildes...

Monit is wining this discussion because their DMCA notice has caused the code not be visible, since anyone with both codebases could easily look at them and see that Inspeqtor is not a translation of the Monit code in any shape or form.

Because of this, I have put the code back up, please consult https://github.com/evanphx/inspeqtor vs http://mmonit.com/monit/dist/monit-5.9.tar.gz

The title on your repro currently says "DCMA comparison".

Thanks, fixed!

There are some very dubious claims in their DMCA takedown notice:

> The work, Inspeqtor which is hosted at GitHub, is far from a “clean-room” implementation. This is basically a rewrite of Monit in Go, even using the same configuration language that is used in Monit, verbatim.

There is no concept of "clean room" in copyright law, the only issue is whether or not substantial copying has occurred. While it may be easier for the author to avoid accidental copying if he has never looked at the Monit source code, having seen it, being inspired by its design, or deliberately building a compatible system do not constitute copying. The notion that it must be copying simply because it uses the same configuration language is without merit, due to the fact that the configuration language itself is not a creative work and is not eligible for copyright protection, in the same way that an API or a programming language is not eligible for such protection: it is a medium for expression, not an expression in itself - otherwise all programs written in a given programming language would be a derivative work!

I suspect that it is this misunderstanding that has led the authors of Monit to file this DMCA takedown, and that they have acted in good faith, but with an insufficient understanding of the limits of what copyright protects.

> a. [private] himself admits that Inspeqtor is "heavily influenced“ by Monit

Being heavily influenced is not the same as copying. OpenOffice Writer is heavily influenced by Microsoft Word, and can even open the same file format, but it does not copy any of Microsoft's source code.

> b. This tweet by [private] demonstrate intent. "OSS nerds: redesign and build monit in Go. Sell it commercially. Make $$$$. I will be your first customer.”

The quote was "redesign and build Monit in Go" which does not show intent to engage in substantial copying of Monit's source code. If anything, it suggests an intent to write a new, redesigned system with its own source code but compatibility with monit.

Without looking at the source code, it's hard to say more, if the author simply ported the source code of Monit to Go then it would certainly be a derived work, but the DMCA claim doesn't mention any such copying. It's important to remember that compatibility is not copying and that only the source code to a computer program is covered by copyright - its architecture, design, and even APIs (see Oracle vs Google) are not protected by copyright, because otherwise the copyright claim would effectively behave like a patent, preventing anybody else from creating something conceptually similar.

There is no concept of "clean room" in copyright law

Sure there is. "Clean room" just means you have good legal evidence that you created an original work not a derivative one. It is a bit like having an alibi during a murder trial. There is no law that says you must have an alibi to not be convicted of murder, just like there is no law requiring clean room to dodge the copyright bullet, but having one is strong evidence that you are not guilty.

even APIs (see Oracle vs Google) are not protected by copyright

You need to check the news more. The Federal Circuit Court ruled APIs are copyright able, and handed it back to the lower court to rule on fair use. https://www.eff.org/deeplinks/2014/05/dangerous-ruling-oracl...

What I mean is that there is no written law containing the words "clean room", and no requirement that an author has not seen similar works. While "clean room" might be a good defence, there aren't automatically grounds for making an infringement claim just because somebody hasn't followed such a hyper-cautious practice.

Oracle vs Google is complex and I reluctantly chose to gloss over the details. The case still has some appeals to go yet, posssiby to the supreme court. While the difference between APIs being copyrightable vs fair use is important, the practical impact should be negligible: if an API as large as the JDK can be copied without permission, then any API can.

Alas, there is also no concept of substantial copying in copyright law (for derivative work). The language used in Berne convention is "a work based upon one or more preexisting works".

Derivative work is not a factual statement of a work, but a narrative statement in how it came to be. It helps to look at other arts (film, books, music) in order to examine the legal theory as it is used.

Lets take a manga comic written in Japanese language, using Japanese culture in order to express a story. That is then rewritten into a movie script for an American audience, using language and culture that is familiar with that market. The two works might in the end share nothing substantial in common, but the narrative defines the movie as a derivative of the written manga.

For books, fan fiction is simply defined as derivative works. The word itself defines a narrative that do not include copying but a process which bases one work on an other.

For music, style from a couple of notes has been know as enough for derivative work to trigger. If a song provide an association of someone else song, the narrative has an implied infringement on the original work. Copying as an act is more or less completely absent from those cases.

So for all the different copyrightable arts, software seems to have the most narrow interpretation of derivative work. Look and feel was dismissed in a US court a while back, and API was thankfully also dismissed. My guess is that the beneficial effect a weaker copyright has on the software market is favored by the courts compared to the arts of films, books and music. That said, only looking at copying as the defining factor is unlikely to yield the correct conclusion. I do think inspeqtor has a decent defense. Since look and feel is not enough for software, Monit will have a uphill battle to claim a narrative that defines inspeqtor as based on Monit. The twitter statement seems to hint towards it, but a court might very likely want more to find inspeqtor guilty.

>There is no concept of "clean room" in copyright law, the only issue is whether or not substantial copying has occurred. While it may be easier for the author to avoid accidental copying if he has never looked at the Monit source code, having seen it, being inspired by its design, or deliberately building a compatible system do not constitute copying.

I'm far from a copyright expert, but I think there is. The equivalent of a clean room implementation would be "I read your cover text, and then wrote my own book". What Monit claims what happend would be the equivalent "I read your book in language $x, I translated it to language $y and change a few details to better target audience $z". (What Disney did, but with public domain works). That latter is relevant for copyright.

A public documented configuration language is a far cry from the source code for the implementation.

I may be wrong since IMNAL, but something is strange about this:

1) inspeqtor is written in Go and shares no code with Monit anyway.

2) The takedown claims violation of license. Licenses only apply to code, so patents and similar are out of this game.

1+2 don't stay together. How is a code license violated if the code is totally different between the two projects? I believe this is something that can be easily fixed with a good lawyer.

Imagine a non-technical judge or a random group of people that forms a jury, and imagine asking them if the two written utilities are two different programs. What would the reply be?

inspeqtor would likely argue that the programming language is different and no copying happened, while monit will compare it to a translated book. Which argument will be strongest, and what will be the central question of a lawsuit? Would art, interface, configuration language and API affect the question? Is the Twitter message relevant for the narrative?

I personally think inspeqtor has a decent defense since technically, no copying of bytes has happened. That said, legal theory is not so clean cut and context always matters.

The takedown claims copyright violation. They also say that copyright violation can be avoided by adhering to the license.

I don't have a general right to distribute Emacs; I must distribute it in terms of the license. If I were to distribute Emacs in a way that FSF didn't like, they would come after me for copyright violation.

NB: I'm not saying anything about the accuracy of their copyright claims.

Anyone can request DMCA-based takedown - it's up to inspeqtor guys to say "not true, restore the project, they can sue us if they want to" now. Hopefully they will.

With or without lawsuit to follow, this is an interesting case. I'd also agree that (unless it's an automatically done 1:1 codebase translation) AGPL doesn't apply.

This is an unfortunate double-standard in the DMCA -- to file all you have to state under perjury you are acting on behalf of the party whose work is claimed to be infringed. The claim of infringement itself does not have to be stated under penalty of perjury.

On the other hand, in the counter-takedown notice you have to state under penalty of perjury that the material was removed by mistake or misidentification. It's a scary thing to do unless you can afford a lawyer.

Their claim is only that Inspeqtor needs to keep the previous license.

    We will withdraw this takedown notice if and only if [private] and
    Inspeqtor adhere to the GNU Affero General Public License 
    which Monit is licensed under. This means;

    Our copyright notice is retained in the derivate work, and ALL 
    the derivate work is licensed and provided to users as “open
    source” under the AGPL. This include the so called pro features 
    of Inspeqtor which are closed source and licensed under a
    proprietary license.
Translating languages of a GPL codebase and then removing the license is not within the spirit of the license. Otherwise I can translate your code from C to Go, remove the license, then translate from Go to C, and voila, license-free code.

The spirit of the license is irrelevant, since the question is whether the license applies at all. Assuming it is in fact a clean-room implementation - and I have no position on that regard -, it doesn't.

"Translating" a program from one language to another is not a straightforward mechanical process.

In US copyright law and most of the countries that adhere to the Berne Convention there is a concept of a derived work. What the legal standard is varies, usually a translation of a work of literature would qualify, but whether a "translation" of a work of software would be considered a derived work is an open question that will not be resolved without litigation.

But it certainly seems that this takedown is bogus in terms of the DMCA since it is not a copyrighted work itself, but an ( allegedly ) derived work.

It certainly looks like an attempt to misuse intellectual property law to protect a product from functional equivalents that would not otherwise be excludable from the market.

A derived work is still protected by the original copyright. Because there is a substantial creative contribution the derived work is also copyrighted in its own right, but that doesn't diminish the original copyright.

Translating a book into a foreign language is also a creative process, but the author of the original still has the right to say whether such a translation can be distributed and would expect a royalty.

1) At the extreme example, putting code through a mechanical transformation would result in no overlap, yet obviously would not change the license. Monit is arguing that inspeqtor is insufficiently dis-similar to escape the GPL.

2) You can have patent licenses, trademark licenses etc. Though I don't believe Monit are claiming that here.

If you rewrite Harry Potter in a different script, language, or some plot twists, it's still "derived work".

Analogies between novels and code bases are misleading. For the former, the consumer experiences the copyrighted material directly. For the latter, many different expressions (which are protected) result in the same effect (which is not).

That Inspeqtor works with Monit configuration files is definitely not proof of copyright violation. Neither an admission of "heavy influence". As far as I know, the only thing that would prove that this is a derivative work (and therefore possibly a copyright violation) would be a comparison of the source code, one demonstrating a number of features in the Inspeqtor code base that show that Inspeqtor's implementor was doing something more like a port to Go than a compatible implementation.

That's sure not part of the takedown. From the way it's worded, I worry that Monit's authors are not totally clear on the distinction between patents and copyrights, and that they have not taken the advice of a competent IP attorney before taking this step.

Say I wrote a story about a young orphan boy who meets a mysterious stranger that reveals to him that he has magical powers and must now go defeat a villain with shocking connections to his parents, what would you say?

And if I called that story Star Wars?

Which in turn is derived (on purpose) from the various sources as composed together by Joseph Campbell in "Hero with a Thousand Faces". Narrative is even more absurd to call duplicate than a totally new implementation in a different computer language.

Just a note for others: antires is talking about 'License', and tomp is talking about 'Copyright'.

I am not sure I get your meaning. A license is how you access a copyrighted work. Therefore they are speaking about the same set of laws.

Antirez is taking a very narrow copying must include a figurative Ctrl-c Ctrl-v. Where as tomp is taking the wider and I think more legally supported(at least as far as art goes) stance that a work can be 100% your own effort but still be a derivative work if it was inspired by an existing work.(i.e. taking a photo of a sculpture is a derivative work )

It appears (IANAL) that Monit is alleging a copyright violation which would be eliminated if the License was followed, thus the two words can probably be used interchangeably.

If the work meets the established criteria regarding transformative changes, then it can be considered its own.

Rewriting a program in a new language is a large change in its own right; even more so, if it it uses features in the new language which were unavailable in the original.

I'm a developer who does just enough server management to keep my systems running, and Monit is an invaluable part of the toolkit.

However, the one thing I don't like about Monit is the pseudo natural language syntax that inspeqtor surprisingly borrowed, based on which Monit raises the DMCA claim. I wonder what the general feeling about this is in the sysadmin community, and whether people would prefer a different syntax instead.

Skill-wise I'm similar to you and feel the same way. I too would be interested to hear from full-time sysadmins.

Well, I certainly will not be using Monit ever again should this be accurate. There is no illegal activity from what I can tell, so it's entirely baseless. Are they unclear about what copyright means? Did they hire a lawyer? Does not inspire a lot of confidence.

edit: I've reached out to Monit for an explanation, and will amend if they reply.

Are they unclear about what copyright means?

Something I've learned over the years is that, when it comes to legal issues, things are rarely black and white. In this case, whether or not Inspeqtr should be required to adhere to the AGPL probably comes down to whether or not it is legally a "derived work". And I'm going to go out on a limb and guess that there isn't a large body of case law covering the situation where a product is completely re-implemented in a different language. But it certainly seems within reason to say that a court could find that this is a derived work, and therefore in violation unless the AGPL license is used.

Now, whether or not this sort of thing is covered by the spirit of the GPL/AGPL is another question. But it probably is, if you consider the stance of Stallman and the FSF vis-a-vis Free Software. Remember, they basically consider all proprietary software to be a sort of immoral, unethical affront to humanity.

Fair enough point, though I don't feel this is a gray area. The chilling effect alone, being that I could be sued for simply looking at open source code is disturbing. Because that's what it boils down to. Most of our software today is a derivative work of something. I looked at rails code, so does that mean I can never write a web framework lest I be sued?

> "I looked at rails code, so does that mean I can never write a web framework lest I be sued?"

No. At most it means you might have to adhere to the license Rails uses, if your work is sufficiently related to be a derived work.


> "Licences do not apply to copyright,"

I'm going to stop you there and suggest that you go do some reading. Your understanding of the legal terminology is too woefully wrong for you to participate in a productive discussion of the issue. You are making sensationalist statements ("sued for simply looking at open source code") that are either extremely misguided or disingenuous. If you want to participate sincerely, you need to put forth more effort to understand what's at issue and to communicate using the correct meaning of technical terms.

What parts of the statements made in the DMCA request are wrong?

re-writing an open source application in a different language is not a copyright violation.

see Oracle v. Google.

That's correct only if the implementation was made without using the original implementation - for example, made off of a common specification, or using only the inputs and outputs of the application. (AKA, a "clean room" implementation)

If the reimplementation was made by perusing the original, it can be considered a derivative work subject to copyright.

How would you ever prove "perusing the original" conclusively?

Sure you could say "so and so downloaded Monit using IP address of at this time", but I don't think that really is legally conclusive.

Unless the alleged violator actually posted public comments about "perusing" the original source code there's not a lot you could do. Unless you do discovery on all of his computers and he didn't delete the Monit source code. To go through all that trouble for a copyright violation on free, open source software seems hardly worth it.

Things are seldom "proven" in court the way they are in mathematics. Instead, Mike would swear that he had never looked at the source code, which, if his lawyer is any good, he will only let him do if it's actually true, because it would open him up to perjury charges. Later, if Monit had evidence this wasn't true, they would present it. IANAL.

The clean room was argued by Google to aid with the justification, but this isn't a requirement of law. An author can read another authors work, and create a novel with similarities.

You might want to find a different example until it is settled. From the wikipedia article on the matter Oracle currently is currently winning From wikipedia: the judgement was released on May 9, 2014. The circuit court reversed the district court on the central issue, holding that the "structure, sequence and organization" of an API was copyrightable. It also ruled for Oracle regarding the small amount of literal copying, holding that it was not de minimis. The case was remanded back to the district court for reconsideration of the fair use defense

This will be sorted out quickly I guess: Monit's DMCA notice claims this is a rewrite of Monit. This tweet[0] claims the opposite. (I take "rewrite" as a manual translation to Go as they also say it's not a clean-room implementation).

It remains to see if the part where they note the similarity with the configuration syntax can actually be covered with the AGPL.

[0] https://twitter.com/mperham/status/519165523473358848

The timing of this seems odd to me. Why now, of all times? Is Inspeqtor getting too big or stealing too many Monit customers?

It's also a little strange that the tweet Monit references as being demonstrative of intent happened six months ago [0]. If that was really the issue, shouldn't they have issued the DMCA takedown then, instead of waiting so long?

I think we have about 24 hours before the DMCA's version of the Streisand effect kicks in.

[0]: https://twitter.com/mperham/status/452160352940064768

They saw it on HackerNews about a week ago, and it took this long for their lawyers to research, make a case, and do the paperwork.

Even if you become aware of something today, you can always use historical tweets as evidence.

Ah, I didn't realize it'd recently surfaced on HN. That makes sense, then.

"Inspeqtor which is hosted at GitHub, is far from a “clean-room” implementation. This is basically a rewrite of Monit in Go"

I don't understand this. How is a re-write a license violation?

Regardless of what current licenses dictate, should someone be able to port someone else's code to make a profit? Seems pretty shady to rewrite someone's code just to get around a license. Maybe this is where patents come into play.

Depends on the kind of rewrite. Automatic translation - that's effectively the same code. Written from scratch - that should definitely be allowed. Otherwise Linux would have to be licensed the same as previous Unixes (it's similar enough, isn't it?), Microsoft would have rights to ReactOS, we'd have only one owner of copyrights to all shells, and one to all DNS servers, etc.

What Monit does is a defined interface, anyone should be able to implement from scratch something that does exactly the same thing.

> Maybe this is where patents come into play.

No, it's a copyright issue. Patents have nothing to do with it.

Unless any method or procedure (parsing of natural language configuration files or something) is patented.

Even if that were the case, it's still beyond the scope of the allegations that can be made in a DMCA takedown notice. If they were asserting any patent rights, that would have to be through a regular cease & desist letter. It is possible though unlikely that patents could come into play here, but they clearly haven't yet.

The Monit licence (Affero GPL) requires that the copyright notice be retained in derivative works, so the question is whether a from-scratch implementation of a tool heavily influenced by Monit, is itself a derivative work of Monit.

You can't make that claim without then undermining the licenses of many / most GNU software implementations, even say GCC.

It's a copyright violation if it isn't cleanroom, that means you don't get to re-license it under different terms. It will count as a derivative work under copyright law.

I'm sorry but this doesn't make any sense. If you merely read the code for another open source implementation before implemented something totally different that shares a separate publicly documented configuration language it's derivative. I'd be appalled at a judgment that upheld that view.

For what it's worth, Monit says it's not clean-room but Mike says it is (https://twitter.com/mperham/status/519165523473358848).

That will be the sticking point. Up to Monit to prove that it it isn't, which should not be too hard if it isn't.

They are claiming copyright violation. Following the license would (in Monit's view) let Inspeqtor avoid that.

At first glance, the tweet [0] was sent a while ago, expressing desire for a port, with the idea of $$$$ as an incentive/joke. It appears that the author later decided to implement it themself. I hardly think that makes his intent to commercialize it clear.

[0] https://twitter.com/mperham/status/452160352940064768

He was already trying to sell it, starting at $25/mo.


Didn't the tweet predate the selling by a good few months?

I'm pretty sure Inspeqtor was only released last week. Mike basically saw a pain point he was having 6 months ago, then quit his job to solve that pain point. Monit's position makes no sense.

It seems Monit has issued a retraction [1]

[1]: https://github.com/github/dmca/blob/master/2014-10-06-tildes...

ChillingEffects.org revamped their website a few days ago.

Submit your DMCA takedown notice!

There are too many similarities between the code that suggest the source for Monit was indeed looked at, contrary to what Mike has stated on Twitter.

For instance some of the file names are the same, ie, Inspector's events.go and Monit's Event.c

Further, the code is very similar in places. Mind you it's not a direct copy, but this can't be coincidence.

Monit: https://bitbucket.org/tildeslash/monit/src/1686ffd4baa16b16d...

Inspeqtor: https://github.com/evanphx/inspeqtor/blob/master/events.go#L...

This is silly.

    {Event_Nonexist,   "Does not exist",          "Exists",                     "Existence changed",        "Existence not changed"},

    ProcessDoesNotExist EventType = "ProcessDoesNotExist"
These are not particularly similar, except that they express some of the same concepts, which are the concepts of the domain. A user of monit would be aware of these concepts.

Event? Really?

Well, I guess monit had better hire a few more lawyers.


These examples look nothing alike. At least not in the sense that one is copied from the other. Any program that has to check on the existence of processes might potentially have code that looks similar to that.

> For instance some of the file names are the same, ie, Inspector's events.go and Monit's Event.c

You can't be serious. "Events", as a filename is an indication of plagiarism? An "event" is a basic concept of programming! That's like if a teacher accused students of copying because they both handed in a file called "homework.doc".

I see absolutely nothing interesting here, it's just an error management with an error list. I'm pretty sure that I have similar handlers in my own code too.

You can even find this pattern in strerror.c which is handeling errno.h [1]. this is a really old concept.

[1] http://opensource.apple.com/source/gcc/gcc-926/libiberty/str...

Applications are open for YC Winter 2022

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact