alexbatalov / fallout2-re

Reverse engineered Fallout 2
Other
324 stars 34 forks source link

Please confirm the legal status of this project #29

Open Venthe opened 2 years ago

Venthe commented 2 years ago

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 commented 2 years ago

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

Venthe commented 2 years ago

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 commented 2 years ago

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 commented 2 years ago

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 commented 2 years ago

Somewhat similar discussions regarding legal concerns: