SoftFever / OrcaSlicer

G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.)
https://discord.gg/P4VE9UY9gJ
GNU Affero General Public License v3.0
6.44k stars 750 forks source link

Flashforge is violating OrcaSlicer's GPLv3 license. #5154

Open nativeit opened 3 months ago

nativeit commented 3 months ago

Is there an existing issue for this problem?

OrcaSlicer Version

v2.1.0-dev

Operating System (OS)

Linux, macOS, Windows

OS Version

All

Additional system information

No response

Printer

FlashForge Adventurer 5M/Pro

How to reproduce

  1. Go to Flashforge's website
  2. Navigate to Support > Downloads
  3. Download "Orca-Flashforge" for either MacOS or Windows
  4. Notice their own restrictive commercial license packaged with this release
  5. Try to find the published source code (hint: the fork on their official Github is not related to the packaged binaries on their website).

Actual results

  1. End User Software Licence

You are granted a limited and non-exclusive licence to access and use the Software (as defined in Section 1.1) on only one Flashforge device or computer, subject to, and in accordance with the terms and conditions of this Agreement. The Software cannot be sold, transferred, or used for any other commercial purposes.

  1. Your Obligations

By using the Product and agreeing to this Agreement, you assure:

3.1 You may not use Flashforge technology or Flashforge intellectual property to develop software or design, develop, manufacture, sell, or licence third-party devices/accessories associated with Flashforge Product without Flashforge's prior consent.

3.2 You may make a copy of the Software on a computer hard disk drive or other storage media for the purpose of archiving. You may not distribute or provide the Software through networks so that it is available to multiple devices or computers at the same time.

3.3 You may not sell, rent, lease, lend, sublicence or distribute the entirety or part of the Software to any third party without prior written permission from Flashforge. Nonetheless, you may make a one-off permanent transfer of the entire licence to the Software to another party along with the transfer of ownership of your Flashforge device, provided that: (1) the transfer must include your Flashforge device and all the Flashforge Software; (2) you do not retain all or part of the Software copies; (3) the party that receives the Flashforge Product has read and accepted all the terms and conditions of this Agreement.

3.4 Except as otherwise expressly permitted, you shall not, nor allow any other person to abuse, intrude or make other inappropriate use of the Product, including but not limited to modifying, decoding, copying, disassembling, publishing, publicly disseminating, decompiling, reverse engineering, exporting codes, or creating derivatives of the Product in any way.

Expected results

Literally anything else.

Project file & Debug log uploads

English.zip

Checklist of files to include

Anything else?

License file from Orca-Flashforge.pkg > Contents > Resources > English.lproj

nativeit commented 3 months ago

I received the following response after reaching out to their technical support seeking information on the source code for the "Orca-Flashforge" binaries they are distributing on their website:

On 2024-04-26 01:00, FFsupport wrote:

Dear Sorry for the late reply.

We have consulted our engineer,we don't have the Orca-Flashforge source code.

Wish you a happy life.

点击满意度评价 [1]

Best Regards,

Lisa(邵莉沙)|Aftersales

nativeit commented 3 months ago

I received an email from their support overnight, they have posted the source for Orca-Flashforge on their GitHub: https://github.com/FlashForge/Orca-Flashforge

I have not had an opportunity to audit this repository, but it's the first step in the right direction anyway. I will run a diff later today and post back with any notable findings.

EDIT: The new repository is not affiliated with their official Github, where they maintain an OrcaSlicer fork. That's not necessarily suspicious, in and of itself, but considering the context, I would say it's not ideal. If nothing else, they are still including an incompatible restrictive commercial EULA with their copy link.

Avpman2 commented 3 months ago

Hi, Any findings yet on your diff? Thanks!

nativeit commented 3 months ago

Just wanted to link to a few other issues relevant to this one:

Related:

Disclaimer:

This may be beating a dead horse, but communication with anyone from Flashforge has not seemed to be completely clear, thus far. So for now, I'm sticking a disclaimer on everything related to this: I am not trying to dogpile on Flashforge with this. I am their customer, I very much enjoy their product, and I am sincere in my desire to see Flashforge succeed in a fashion that allows me to proudly support them, and purchase their products in the future. They need to engage properly in the open source communities from which they have already chosen to base their Adventurer 5M series of products upon. They only stand to benefit from making the right decisions here, and I believe their doing the right thing is owed to the hard work and ongoing efforts of volunteer contributors working to make OrcaSlicer, Klipper3D--and by extension, the Flashforge Adventurer 5M series of products--the fantastic projects that they are.

But this is also serious violation of the trust inherent with such endeavors, and as much as I am rooting for Flashforge to do what's right, they have so far not responded with anything one might call "confidence boosting". Rather they have only responded when pushed, and appear to be reticent to follow through with their own commitments to the GPL license requirements that govern the firmware and slicing software they have already adopted as the official features of the Adventurer 5M series.


Repository diff results

I am posting the results of the summary repository diff-trees below, but they are extremely long and I am still working through them.

I encourage anyone else who shares my concerns to run this diff and replicate my efforts:

Setting up your environement

### 1. Clone Orca-Flashforge to the directory ./OrcaFlash-Diff && cd into repo
git clone https://github.com/FlashForge/Orca-Flashforge.git OrcaFlash-Diff && cd OrcaFlash-Diff

### 2. Add OrcaSlicer repo as a new remote "branch" named "OrcaSlicer-Origin"
git remote add -f OrcaSlicer-Origin https://github.com/SoftFever/OrcaSlicer.git

### 3. Fetch & update
git remote update

### For initial summary
git diff-tree main remotes/OrcaSlicer-Origin/main --compact-summary

Summary output

You can see the output of my initial diff-tree summary at https://app.warp.dev/block/RtZUczkuuibC1S86GjkXNp, however it is far too long to simply paste into a comment here.

Notes on running diffs

Because of how these repositories are constructed, the large array of dependencies that are likely common to both repos, but may have been pulled with different versions or signatures, and because of all of the contributed profiles for printers and filaments that aren't necessarily relevant to this particular situation--it's going to be necessary to drill down and run targeted diffs on things more likely to show substantial and/or meaningful changes--things like the Makefiles, GUI components, localization/language, tests, and build scripts.

Broader concerns

Even without the diff, there are immediate violations and other concerning issues front and center:

@@ -328,28 +283,28 @@ int wmain(int argc, wchar_t **argv)

     wchar_t path_to_slic3r[MAX_PATH + 1] = { 0 };
     wcscpy(path_to_slic3r, path_to_exe);
-    wcscat(path_to_slic3r, L"Orca-Flashforge.dll");
+    wcscat(path_to_slic3r, L"OrcaSlicer.dll");
 //     printf("Loading Slic3r library: %S\n", path_to_slic3r);
     HINSTANCE hInstance_Slic3r = LoadLibraryExW(path_to_slic3r, nullptr, 0);
     if (hInstance_Slic3r == nullptr) {
-        printf("Orca-Flashforge.dll was not loaded, error=%d\n", GetLastError());
+        printf("OrcaSlicer.dll was not loaded, error=%d\n", GetLastError());
         return -1;
     }

     // resolve function address here
-    orca_flashforge_main = (Slic3rMainFunc)GetProcAddress(hInstance_Slic3r,
+    orcaslicer_main = (Slic3rMainFunc)GetProcAddress(hInstance_Slic3r,
 #ifdef _WIN64
lines 9325-9360

Thoughts following an initial review

I'm not 100% sure where this kind of piecemeal feature-swap/re-badge falls under licensing requirements, but I would expect that if nothing else, such changes should require them to remove all identifiable OrcaSlicer/BambuLabs branding, and release this as something forked from, or wholly unaffiliated with, OrcaSlicer.

I don't think it would be appropriate for Flashforge to prepend its own brand name with the word "Orca" without permission. I would think that everything would need to then comply with GPLv3 requirements for releasing derivatives, including making the source fully available, licensing it with the same GPLv3 license, and including all credits and licenses for upstream projects appropriately.


My own next steps


Steps Flashforge may take to address/remedy these issues:

This is not an official or exhaustive list, but rather a friendly guide from a loyal Flashforge customer, intended for @FlashforgeOfficial, @dayaue, @linnaiyuan, and anyone else affiliated with these projects to get started on the right path:


Steps OrcaSlicer may want to consider:

I hope OrcaSlicer defends its rights in this, and in the process maybe helps to bring Flashforge into the fold, or at the very least, prevents Flashforge from diluting an incredibly well-executed and functional application by failing to give it its due credit, and by conflating its own hobbled and potentially closed-source binaries with OrcaSlicer and its developers.

I won't offer the same kind of specific recommendations for OrcaSlicer and its contributors as I did previously for Flashforge, mainly because they are all almost certainly more qualified and more informed than I am regarding GPL licenses, the generally accepted conventions for these kinds of projects, and because I have not paid them like I have paid Flashforge, and do not feel that OrcaSlicer owes me a thing.

Thank you

Thank you very, very much for the efforts and contributions made by everyone who has worked on this project. OrcaSlicer is an outstanding open source software project, and you all deserve all the success you can get. Please let me know if there is anything I can do, including taking my hyper-verbose lectures for Flashforge elsewhere, to help make OrcaSlicer better.

SoftFever commented 3 months ago

Thank you @nativeit I will take some time to read through it first. I really appreciate your efforts to defend open source!

Avpman2 commented 3 months ago

Ditto +100

vgdh commented 3 months ago

❤️

keithel commented 3 months ago

Re: "Orca" being used in the name of their forked product - that is governed by trademark law. If Orcaslicer has been trademarked, if suit was brought, a lawyer could argue, and a judge could rule that use of "Orca" violates the trademark (even though the trademark in my example isn't over "Orca" but "Orcaslicer"), but I'm not sure how likely. Better would be if "Orca" was trademarked for use in 3d printing areas - seems likely that both "Orca" and "Orcaslicer" could be trademarked with the narrow focus of additive manufacturing or maybe even manufacturing as a whole.

Re: not making "official forks" -- this isn't something that the GPLv3 or any other OSS license (that I am aware of) mandates, so this demand/request is just a nicety that it would be good if Flashforge were to do. Makes the job of tracking down differences much easier, but not required for them to comply.

@nativeit Thank you for spending your free time working on this very important issue. For the consumer 3D printing industry to succeed as it has for the past 15+ years, we need to make sure that companies are held to account for their use of all the hard work that people have put in over the years.

@SoftFever have you trademarked "Orca" and/or "Orcaslicer" anywhere? I think maybe that should happen if it has not already.

kylek29 commented 2 months ago

@SoftFever have you trademarked "Orca" and/or "Orcaslicer" anywhere? I think maybe that should happen if it has not already.

IANAL, but this gets a little tricky with software because of the international nature of it, but in the US you can trademark passively, known as a "common law" trademark (normally indicated by putting ™ on the branding/slogans) -- this signifies that you intend to defend and are laying claim to the use of. If you officially register the trademark, you'd want to put the ® (for registered). The latter gets you more protection.

https://digital.gov/resources/u-s-trademark-law/

nativeit commented 2 months ago

I really appreciate the attention on this! I work I.T. with a professional baseball team, and have been quite busy the last few weeks, but I have not forgotten about it, and will continue to pursue some sort of mutually beneficial outcome that helps everyone involved here, but especially the users of OrcaSlicer's incredible software, and FlashForge's otherwise solid intro hardware.

My current position is that there doesn't appear to be any good reason to fork OrcaSlicer at all, and the more open and convenient approach would be to integrate FlashForge hardware as fully into the OG OrcaSlicer as best as possible. Probably won't be super popular with the suits in China, but I will talk to the folks who have already done a lot with the firmware, and see if there's some way to bring next-level FlashForge support to OrcaSlicer unilaterally.

Keep up the great work, @SoftFever and team!

nativeit commented 2 months ago

One of many issues with companies co-opting open source software like this!

A few quick notes about the image below:

  1. They haven't even bothered to change the developer on the MacOS binaries.
  2. It's highly unlikely such a lazy effort will receive any meaningful support.
  3. It's unreasonable to expect @SoftFever to support this, as they have no way of knowing what's been tampered with.
  4. Because of the aforementioned laziness of this unlicensed clone, the original OrcaSlicer name and branding is all over the place. So if their releases are buggy, no matter what the actual source of the issues are, it will reflect badly on OrcaSlicer and negatively impact their reputation. Something that, from my personal perspective, is currently about as good as one could ever hope for on a FOSS project such as this.

OrcaSlicer deserves all the success and good reputation they have earned, and are still coming to them! Usurping their good name for a half-baked, vendor lock-in, stripped down, objectively worse version of the original is a really pathetic move, and as much as I want to print directly to my networked Adventurer 5M, I will hack its firmware before I support "OrcaFlashforge". I will document the effort, I will donate to the software projects involved, and I will publish tutorials for future Adventurer 5M owners to do the same, complete with full credit and donation links to the people that actually committed the hard work necessary for OrcaSlicer, Klipper3D, and the reverse engineering effort for the Adventurer 5M firmware.

So, anyway, tldr; @FlashforgeOfficial - your sofware is crashing on MacOS:

image

SoftFever commented 1 month ago

Re: "Orca" being used in the name of their forked product - that is governed by trademark law. If Orcaslicer has been trademarked, if suit was brought, a lawyer could argue, and a judge could rule that use of "Orca" violates the trademark (even though the trademark in my example isn't over "Orca" but "Orcaslicer"), but I'm not sure how likely. Better would be if "Orca" was trademarked for use in 3d printing areas - seems likely that both "Orca" and "Orcaslicer" could be trademarked with the narrow focus of additive manufacturing or maybe even manufacturing as a whole.

Re: not making "official forks" -- this isn't something that the GPLv3 or any other OSS license (that I am aware of) mandates, so this demand/request is just a nicety that it would be good if Flashforge were to do. Makes the job of tracking down differences much easier, but not required for them to comply.

@nativeit Thank you for spending your free time working on this very important issue. For the consumer 3D printing industry to succeed as it has for the past 15+ years, we need to make sure that companies are held to account for their use of all the hard work that people have put in over the years.

@SoftFever have you trademarked "Orca" and/or "Orcaslicer" anywhere? I think maybe that should happen if it has not already.

Nah, it doesn't. As long as one follows the GPL license and clearly credits OrcaSlicer, I have no problem (in fact, I'm happy) with anyone forking Orca. This is what Open Source is meant to be.

However, I also agree with what @nativeit said: if a company isn't committed to investing heavily in a slicer (which is a complex and large project), it's probably not a good idea to fork Orca just for the sake of "owning" one. It’s not fair to their users, as maintaining software requires a lot of skill, knowledge, and dedication.

keithel commented 1 month ago

@SoftFever I think maybe you misunderstood me. I also don't have a problem with folks forking GPL projects and adding their own modifications, presuming they follow the terms of the GPL, including crediting the prior authors.

What I am suggesting though - is making sure there are some protections over the name "OrcaSlicer" as it is applied to something in the additive manufacturing world. Fork, yes, but use the name "OrcaSlicer" - that's where I personally think a company has gone too far. I'm certainly not speaking for you, so if you feel differently then by all means, that's how things should be treated.

SoftFever commented 1 month ago

@SoftFever I think maybe you misunderstood me. I also don't have a problem with folks forking GPL projects and adding their own modifications, presuming they follow the terms of the GPL, including crediting the prior authors.

What I am suggesting though - is making sure there are some protections over the name "OrcaSlicer" as it is applied to something in the additive manufacturing world. Fork, yes, but use the name "OrcaSlicer" - that's where I personally think a company has gone too far. I'm certainly not speaking for you, so if you feel differently then by all means, that's how things should be treated.

Thanks @keithel I totally agree with you here.

nativeit commented 1 month ago

I had a friend send me this earlier, apparently this thread got a quick screen cap on a YouTube video[1] posted a few days ago on the channel @thenextlayer.

Considering it's a lot of inside baseball on some fairly niche topics, I'd say it's performing rather well, getting to nearly 50k views in the last two days.

I am not familiar with the person who made the video, but I assume they're sincere, and they have a lot good things to say. It's focused on the 3D printing industry in particular, but a lot of the points they raise are the same kinds of issues--very legitimate and ongoing issues--that the FOSS community have been working for decades to confront, but sadly this kind of struggle to protect our own is never ending.

I have already filed a complaint with the Free Software Foundation (GNU)[2] and I highly encourage everyone reading this to take just a brief minute to do the same. Links are below.

Whatever else happens with this, I just want to underline that OrcaSlicer is a f'cking impressive accomplishment, and it's made my own experiences with this new hobby way more enjoyable and productive. Thank you, so much.

If anyone's got an extra few bucks, please consider sponsoring @SoftFever and OrcaSlicer to support their ongoing development efforts.[3]

Links:

  1. An Open Letter to the 3D Printing Community [video]: https://youtu.be/YRayFmMYFxM
    • This thread appears at 4:49
  2. GNU License Violations Reports: https://www.gnu.org/licenses/gpl-violation.en.html
  3. Donate to OrcaSlicer - https://github.com/sponsors/SoftFever
AJolly commented 2 weeks ago

I wish they would publish proper sources for Klipper on the 5m, they are completely out of compliance with that as well :/

kylek29 commented 1 week ago

I noticed the latest Creality Slicer is based on OrcaSlicer, has anyone more knowledgeable on these licenses checked them for compliance?

https://www.creality.com/pages/download-software

It's getting silly how many of these companies are forking just to add their logo and a few features. Why not just sponsor the project and add features to the main?