Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Please confirm the legal status of this project #29

Open
Venthe opened this issue May 9, 2022 · 5 comments
Open

Please confirm the legal status of this project #29

Venthe opened this issue May 9, 2022 · 5 comments

Comments

@Venthe
Copy link

Venthe commented May 9, 2022

Hello, as far as I understand this project is not 'reverse engineered', but is a decompile.

If so, I don't believe that it's actually legal to publish. Can you please clarify it's status?

see:

@legacy3
Copy link

legacy3 commented May 9, 2022

So what is reverse engineering if not de-compiling it? Reading it all in a crystal ball?

@Venthe
Copy link
Author

Venthe commented May 9, 2022

Reverse engineering can be done in a multitude of ways. One of which is (attached) clean room design.

Typically, a clean-room design is done by having someone examine the system to be reimplemented and having this person write a specification. (...) The specification is then implemented by a team with no connection to the original examiners.

With Fallout, case is quite simple, as the specification is mostly already done (see https://falloutmods.fandom.com/wiki/Category:Fallout_and_Fallout_2_file_formats).


API parity can still be achieved, as under the US law (where the IP holder is situated), due to 'Google LLC v. Oracle America, Inc.' it cannot be copyrighted.

Brief overview of the topic can be found on the EFF website.

Edit: The problem for me is that this is visibly a straight decompilation, with unnamed symbols still in the code. I would be quite happy to fork this project, but at the current state I believe that it is illegal to do so. I MIGHT be wrong, however, that's why I'm asking the maintainers for clarification.

@alexbatalov
Copy link
Owner

It was inevitable question. I cannot clarify it's status, simply because I don't know. This is definitely not a clean room design, and I never wanted it to be one. The goal of this project is to restore something that was lost a long time ago. Call me sentimental, it's just the way it is.

There are two similar projects I'm aware of - Devilution and RE3 - which can be used as examples of some sort. Both were reverse engineered/decompiled.

Devilution is there for several years already (since 2018). It's author suggests the project falls into "interoperability-via-documentation" exception (at least as stated by readme):

Under the DMCA, reverse-engineering has exceptions for the purpose of documentation and interoperability. Devilution provides the necessary documentation needed to achieve the latter. However, it falls into an entirely gray area. The real question is whether or not Blizzard deems it necessary to take action.

Its team went even further and placed binary-exact decompiled source code in a Public Domain.

RE3 was less lucky. It received DMCA Takedown Notice from TakeTwo within a year. As far as I get the team in their Counter Notice tried to clarify, that the actual source code owned by TakeTwo was not used, i.e. was not stolen or obtained from TakeTwo by any means. Since the team recreated source code by reverse engineering, RE3 was to be reinstated under "fair use" exception. However it ended up with a lawsuit, something I definitely don't want to deal with.

As regarding to your suggestion on unnamed symbols. I doubt renaming those address-like variables and functions to even more cryptic a, b, c, (think JS minifiers output) or fancy long names like I tend to use across the source code will change something. By the way both projects used debug symbols discovered in non-PC binaries (Devilution, RE3), so their variable/function names are exactly the same as they were originally written. It didn't harm Devilution, and it didn't help RE3.

To reiterate I don't have answer to this question.

@Venthe
Copy link
Author

Venthe commented May 10, 2022

As regarding to your suggestion on unnamed symbols (...)

Sorry, I was bit unclear.

Maybe a bit of background - I'm developing game mechanic clone for F2 in other language. It's purely a toy project, with no real value and no real aim - just something to keep my mind occupied after enterprise development :)

As such, your project - as it 'is' open source - would be a perfect place for me to at least understand few places.

But, and here lies the crux of the issue - I intend to have it open source by myself; and I wish it to be 100% legal. If I haven't noticed the symbols my code would loss it's clear-cut legality by extension.

tl;dr:

In that case, I'd ask if you could place an information in the README that this is a decompilation of proprietary assembly, to warn people like me.

alexbatalov added a commit that referenced this issue May 10, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants