Hacker News new | past | comments | ask | show | jobs | submit login
AI Horde’s AGPL3 hordelib receives DMCA take-down from hlky (dbzer0.com)
37 points by efreak 6 months ago | hide | past | favorite | 24 comments

I mean, read the diff and decide for yourself: https://github.com/Haidra-Org/hordelib/commit/568738d68b6343...

I find it hard to be sympathetic, personally.

You don't remove copyright notices when you copy code files from one repo to another.

This is seemly a clearly vindictive and deliberate action by the OP to remove credit for the files, due to whatever personal history:

> I would rather not have any mention or contribution of this person in our library, as they go against everything the Free Software movement stands for!

The GPL FAQ is unambiguous on this point: https://www.gnu.org/licenses/gpl-faq.en.html#IWantCredit

It's petty and seems quite dishonest to file a DMCA for something like this, and fixing it should give you a perfectly ok license to continue to use it.

...but just think, if you hadn't been petty and removed it in the first place, it wouldn't have been an issue at all.

To some degree, you reap what you sow.

Also - isn't it critical to maintain details of copyright holders in case of any future desire to relicence?

Absolutely. Or in case of a copyright claim, … It’s crucial to know where which piece of code came from and piecing it together from git history is going to be painful.

Hello, lead dev here. Yes there's ugly personal history, but as I said, I don't want to get into a he said/he said discussion because it won't go anywhere. Will just say that it's bad enough that it forced us to rewrite an AGPL library (in which I was personally contributing for months) from scratch instead of reusing it, as we had all the permission to do so. That's how bad it got in the background.

That said, I was under the impression that my actions were License compliant due to section 7b

> Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:

> Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or

I.e. since that blurb didn't request explicit preservation, it was ok to remove.

  > I don't want to get into a he said/he said discussion because it won't go anywhere
Nothing against you or your project, but this is hardly a "they said I said" thing, this is clearly a violation of the AGPLv3.

It surely could be handled nicer and all that, probably from both sides, not questioning that part, but messing with copyright statements willy-nilly is never a good idea if one isn't absolutely sure (i.e., got legal counsel) that it is OK.

  > Will just say that it's bad enough that it forced us to rewrite an AGPL library
One _can_ fork a AGPLv3 project, but one needs to adhere to the terms.

  > in which I was personally contributing for months
Again, not wanting to go against you, but you made those contributions accepting the License of the work.

And more importantly the AGPLv3 will also protect your contributions from being re-licensed or have your copyright notices removed, well at least if you did not sign some CLA, i.e., the protection goes both ways.

  > I was under the impression that my actions were License compliant due to section 7

  > *(if authorized by the copyright holders of that material)*
Did you get authorization by the copyright holders? As the terms of section 7 are not unconditionally, which is made quite clear, they are just to make the license a bit more flexible to adapt to the rights a project want's to grant to forks to differ what counts as (forbidden) "further restrictions" and what might not.

The point I was mentioning in section 7b is this

> Requiring preservation of specified reasonable legal notices

Given that this didn't appear. I felt it was OK.

> One _can_ fork a AGPLv3 project, but one needs to adhere to the terms.

We had already forked and had kept all the copyrights statements intact. We still ended up having to rewrite...

> We still ended up having to rewrite...


This is where we would be getting into the ugly background which I don't want to get into here because it's stuff that goes into private conversations and hearsay.

Suffice to say, hlky was absolutely hell-bent on us NOT using the previous AGPL library after we forked it, and used many underhanded means to cause us constant stress and worries. At some point we decided it wasn't worth it.

This kind of drama is just sad.

I dont know if you are OP, but plenty of other UIs have interrogator code, like https://github.com/VoltaML/voltaML-fast-stable-diffusion/tre...

There is a similar story about retaining/stripping copyright notices in the Linux kernel (btrfs).


I think stripping copyright notices is only appropriate if one entity unambiguously owns the copyright of all the code (which may imply not accepting outside contributions or requiring signing a CLA, and not copying code over from other code bases even when the license matches).

> In the process I stripped out the explicit license mention in those files, because our whole repository is licensed under AGPL3, and it goes against our style to add unnecessary licenses to each file.

It's not a matter of style. Also AGPL3 requires attribution, let alone retaining copyright information, like many other FOSS licenses.

Starting the discussion with the DMCA process is certainly a dick move, but we will never know if the other party started with it, or brought up the issue informally first.

> It's not a matter of style.

This is unnecessarily pedantic. Provided attribution is present in some form, cleaning repeated licensing headers from other files should be perfectly legal.

Hey there, lead dev here. The issue was not brought up informally. It was straight to DMCAs. That person has attempted to sabotage our project before.

Anyone know this hlky person and could get their take on this?

The post seems to imply this person is a total d*k, but there’s always more than one side to the story

What’s hlky’s version of this?

When projects vendor or copy from other projects, license bodies typically include all relevant copyright statements and licenses even if the license body is the same as the parent project.

NodeJS uses the MIT license [1] and reproduces the license for the MIT-licensed Acorn.

OP stripped the copyright statement and license attribution without mentioning hlky or the originating project in the license file. OP proceeded to confuse matters by assuming that "AGPL" suffices. It seems like the copyright statement was the offense here.

A simple email or github issue might have resolved the matter. Given the tenor of the relationship between the OP and hlky it should be no surprise that hlky opted for the "nuclear option"

[1] https://github.com/nodejs/node/blob/main/LICENSE

hlky wrote most of the original code for the project, and might understandably think it’s “his” project. Setting aside whether his actions (which pissed everyone off and led to the code being rewritten from scratch without him under this new ‘hordelib’ package) were right or wrong, I can see how he would object to the other devs trying to remove his name from the license and basically pretend he doesn’t exist.

This seems to be about copying a file from one AGPL3 repo to another AGPL3 repo and then removing the line "Copyright <YEAR> <NAME>", correct?

The license is here:


Does it allow that or not? I skimmed through it and can't find a section which forbids it.

IANAL, but I think it comes down to your interpretation of section 4:

> You may convey verbatim copies of the Program's source code as you

> receive it, in any medium, provided that you conspicuously and

> appropriately publish on each copy an appropriate copyright notice;

> keep intact all notices stating that this License and any

> non-permissive terms added in accord with section 7 apply to the code;

> keep intact all notices of the absence of any warranty; and give all

> recipients a copy of this License along with the Program.

So by removing the copyright notice from "each copy" of the "convey"ed source code, I think you could argue they violated this.

But as others have argued, even if you don't believe that this section forbids it, the polite thing to do would be to either a) get permission to remove the copyright notices, or at the very least b) create a file (e.g. CONTRIBUTORS.md, or a section of the readme) and place the copyright information in there. Saying "Ooh, we don't like X's name at the top of the file, it's too ugly" without any attempt to maintain some acknowledgement might not be a violation, but certainly isn't within the spirit of the AGPL, the main point of which is to "(1) assert copyright on the software".

Hey there lead dev. The reason we don't contact hlky is because he's extremely hostile and has attempted to sabotage us by taking down components of the AI Horde when he flounced. There's also acts from him against myself personally which make it too traumatic to reach out. Even a mention of his name is instantly raising my stress level. What I mean to say, it's not always so easy to "play nice".

As I said, I tried to stick to the facts in this post so it's easy in isolation to think we're being petty dicks, but there's a reason we had to rewrite a WHOLE AGPL3 ML library from scratch, instead of re-use the existing AGPL3 library we had, because it was associated with hlky.


So I discussed this situation generically, because the specific situation doesn't really matter given the question asked. And no, I said it was impolite - but I totally understand that impolite is a big step up from toxic.

The bigger issue is, and maybe this doesn't apply here, but creating a situation where there may be a legal copyright claim to be made simply gives the a-hole more leverage over you, which is exactly what you don't want, if even the mention of his username is triggering.

(I won't point out that you mentioned his username 10 times in your blog post!)

So weigh up the risk/reward. If he's done a DMCA, and you've batted it back, the next step is legal proceedings. A license is exactly that - a license, it never assigns ownership. If I remember correctly, AGPL3 has protections so that he cannot revoke the license on a whim - unless you break the AGPL3 license.

You will never own the copyright to that file, no matter how much you desperately want to, no matter how many times you change the file, no matter if you remove his name, no matter how much you feel like you've paid in dealing with him being a dick. If he can make a case that the file you have is not significantly different in nature to the one he wrote, he still owns that file.

Toxic people will be toxic, but never get into a pissing fight with a skunk.

Invoker Network is way better than AI Horde, also since it is decentralized, there is no one to send DMCA notices.

For those who know, what is that interrogator thing?

It's image -> words, the inverse of stable diffusion.

see: https://github.com/pharmapsychotic/clip-interrogator

P.S. It's strange to me that this is a big deal, there are plenty of libraries for this stuff afaik, but I don't pay attention to licenses personally.

bs claims i suppose reading this article. when you put a license in the root of the repo, you are saying "everything is covered by this license, unless otherwise stated specifically".

i don't see a problem in that. Unless the other party is alleging that they have removed AGPL license only to put the whole project under AGPL license, uh

As I read the article the issue is not the license. The issue is (allegedly) stripping the copyright information. If you use code under any license you get a permission from the authors to use it under the given terms. The authors still retain the copyright and most licenses require you to retain the copyright information, some even to display a prominent notice. This is important if the project ever chooses to relicense - they can’t just change the license of code that they don’t have the copyright for.

So, if you ever use code from someone else, track where it came from.

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