Mike Kienenberger schrieb:
Looking at someone else's code and then writing your own version is a no-no.

However, there's a legal way to deal with it.  Clean-room reverse engineering.

Here's an example of how it was done with wireless driver support for
linux -- good overview of the proper process.

http://bcm-specs.sipsolutions.net/ReverseEngineeringProcess

Werner can write specs of how it should work (which it sounds like he
has already done).  Just be careful not to say how to implement the
behavior.



Ok this will become long because the entire area is not as easy as it first looks:

First of all I did not post anything regarding all this for two days because I kind of was frustrated to push down valid work down the gutters, but anyway I decided to sleep things over to calm my temper which is always the best to get a clean head before going into the discussion again. So I can post again now:

Ok if we need to go with clean room the following stuff is feasable.

So what can we do in a real clean room environment:

Run your code against the RI binaries, and check the protocol details
yes

Patch the original code to run your code against the RI which I did with the tag handler, no unless you never ever touch the patched part again - although definitely valid with the Apache license.

Looking at the code to find out about unspecified implementation details which otherwise might corrupt the compatibility also a no go, although I personally think it still is valid regarding the Apache license, and legal pretty much confirmed me that with their answers, but we are not talking about the Apache license here.

Reading the Specs, yes, reading the javadocs of the spec, probably the same although they might be under the same license as core code (gotta check that), now that becomes even fishier, because about 30%-40% of the spec are within the javadocs. So there is no way you can even remotely deal with the implementation without having read the javadocs.
So unavoidable to read those.


Those are the only things I can think of on how to deal with clean room stuff.

Also what we need is someone who checks the commits against RI code so that no code is slipped in which might stem from the other project that must be a person who himself cannot commit himself but can look at both codebases, sort of a constantly ongoing auditing. So that means this person cannot ever again touch the core codebase and is delegated to auditing only
and probably cannot even talk about details of the other implementation.
(So we purely can only rely on the spec and send in some holes we found instead of fixing them as good as possible by asking someone)


Have in mind this is all corporate criteria not Apache criteria , Apache criteria is that we cannot mix the codebases due to incompatible opensource licenses, and Harmony has applied the tighter rules because they went against a closed source implementation (with attainable sources) and the project was under legal fire from day zero. Which was absolutely correct at that time.


Curtiss please correct me if I was wrong in this regard, but thats how I understand the policy of the corporate entity you work for with all the background I know from the last 20 years of computing history.



Werner

Reply via email to