Using MIT license means the developers cannot look at GNU source code when writing code for uutils. This feels like a unnecessary hurdle given that uutils wants to be 100% compatible with GNU tools.
That’s not accurate. They can look at it, but they can’t port it. But looking at how it works and then coming up with their own implementation is fine.
It’s a gray area, legally. What you say is theoretically correct, but there’s practical issues once you’ve looked at the code that will open you up to legal liability anyway.
For instance, what if you need a utility function during your reimplementation for which there is really only one obvious implementation? You can no longer claim to have come up with it by yourself.
I doubt the FSF would sue over it, but companies are known to avoid the risk.
Maybe not the best example then, but not the only example. If you unintentionally create something that resembles the original too much you may still become liable. It’s hard to draw the line, which is why many in such a position would prefer to be safe rather than sorry.
How so? People come up with the same idea all the time independently of each other. When doing clean room implementation (the ideal best case), you are not liable if what you create at the end matches 1-1 with the original. You never know anything about the implementation detail of the original. Academia also acknowledged independent discovery and publication of many things. Why would clean room implementation be different?
Because coming up with the same implementation independently is legal, while copying someone else’s implementation isn’t. Which method you used to arrive at your implementation can be difficult to prove either way, which is why it’s important for implementors to be able to say they never looked at the original. It’s a legal defence, in case you ever need to stand in front of a judge or jury who will question how you arrived at yours.
That’s… what I’m saying. Clean room implementation is legal. You accidentally arrive at the same conclusion independently. And yes, it is tedious to do it but it is legal.
@jenesaisquoi@Ordoviz It’s a gray area, legally. What you say is theoretically correct, but there’s practical issues once you’ve looked at the code that will open you up to legal liability anyway.
For instance, what if you need a utility function during your reimplementation for which there is really only one obvious implementation? You can no longer claim to have come up with it by yourself.
I doubt the FSF would sue over it, but companies are known to avoid the risk.
This means that we cannot accept any changes based on the GNU source code.
You are totally allowed to look at it. For example if there was some weird behaviour that you couldn’t work out, you could look at the GNU code to understand it.
What you can’t do is closely base your code on the GNU code. I.e. you can’t just translate it from C into Rust.
On the other hand a new GPL licensed version of coreutils will run into the exact same adoption problems that brought us the current mess of “you can use this parameter on GNU but not on the BSD version”,…
Using MIT license means the developers cannot look at GNU source code when writing code for uutils. This feels like a unnecessary hurdle given that uutils wants to be 100% compatible with GNU tools.
That’s not accurate. They can look at it, but they can’t port it. But looking at how it works and then coming up with their own implementation is fine.
It’s a gray area, legally. What you say is theoretically correct, but there’s practical issues once you’ve looked at the code that will open you up to legal liability anyway.
For instance, what if you need a utility function during your reimplementation for which there is really only one obvious implementation? You can no longer claim to have come up with it by yourself.
I doubt the FSF would sue over it, but companies are known to avoid the risk.
If a piece of code is so trivial there is only one obvious solution then it does not fall under copyright. There is jurisprudence for this.
Maybe not the best example then, but not the only example. If you unintentionally create something that resembles the original too much you may still become liable. It’s hard to draw the line, which is why many in such a position would prefer to be safe rather than sorry.
How so? People come up with the same idea all the time independently of each other. When doing clean room implementation (the ideal best case), you are not liable if what you create at the end matches 1-1 with the original. You never know anything about the implementation detail of the original. Academia also acknowledged independent discovery and publication of many things. Why would clean room implementation be different?
Because coming up with the same implementation independently is legal, while copying someone else’s implementation isn’t. Which method you used to arrive at your implementation can be difficult to prove either way, which is why it’s important for implementors to be able to say they never looked at the original. It’s a legal defence, in case you ever need to stand in front of a judge or jury who will question how you arrived at yours.
That’s… what I’m saying. Clean room implementation is legal. You accidentally arrive at the same conclusion independently. And yes, it is tedious to do it but it is legal.
@jenesaisquoi @Ordoviz It’s a gray area, legally. What you say is theoretically correct, but there’s practical issues once you’ve looked at the code that will open you up to legal liability anyway.
For instance, what if you need a utility function during your reimplementation for which there is really only one obvious implementation? You can no longer claim to have come up with it by yourself.
I doubt the FSF would sue over it, but companies are known to avoid the risk.
It’s not quite that bad. They say
You are totally allowed to look at it. For example if there was some weird behaviour that you couldn’t work out, you could look at the GNU code to understand it.
What you can’t do is closely base your code on the GNU code. I.e. you can’t just translate it from C into Rust.
On the other hand a new GPL licensed version of coreutils will run into the exact same adoption problems that brought us the current mess of “you can use this parameter on GNU but not on the BSD version”,…