Hi Eric,

We apologize for the misunderstanding. The relationship of that field was 
confusing, since some files have authors that don't correlate to SVN history at 
all.

In relation to what eVb was saying, I have looked up the entire SVN history of 
the misc.c file, which originally started out in NTOS.

Your one and only actual contribution is here:

http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/hal/x86/misc.c?revision=1026&view=markup&pathrev=2188

Revision 1026, almost 10 years ago.

In that revision, you created the file and "implemented" HalHandleNMI.

It is interesting that your implementation of HalHandleNMI happens to print out 
the exact same messages that the NT4 HAL dumps on the screen.

To obtain the same messages "clean-room", you must've been able to generate all 
the possible NMI traps on your machine, which is unlikely.

Also, the choices of "0x40", "0x20" and "0x61" appear to be magic constants, 
instead of properly documented constants referring to the NMI status port and 
the NMI status bits.

Additionally, the same "KeEnterKernelDebugger" call is present both in the NT4 
HAL and your implementation of this function, even though, as of revision 1993:

http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/kd/kdebug.c?revision=1993&view=markup&pathrev=2188

That function only printed a string -- so there appears to have been little 
reason to make this API call other than to duplicate the original NT HAL's 
behavior.

Furthermore, why even implement this function at all back in 2000? There was no 
NMI task gate back then, no NMI handler, and no caller of HalHandleNMI -- 
therefore, this function was impossible to test in ReactOS. It seems to have 
been implemented just for the sake of implementing "an easy function", without 
any actual real use.

Whether this function, in 2000, was by coincidence an exact replica of the NT4 
HAL HalHandleNMI, and you happened to have experienced all possible NMI traps 
and their messages on the screen, and you decided not to document the port and 
status bit values, or whether it was reverse engineered does not change the 
fact that the code was 100% identical. Therefore, I believe this was eVB's 
point that the true "copyright" of this function belonged to nobody else but 
Microsoft, and so the PROGRAMMERS field seemed logical to include the 
maintainer, not the "copyright" owner.

So before lambasting about copyright ownership and licenses, perhaps you should 
be more careful.

It is an entirely different argument whether or not there is any other way to 
do this  -- clearly, by now, it is known what NMI messages the Windows STOP 
screen will display, and ReactOS must display the same NMI messages. Since both 
Windows NT and ReactOS use the same routine for printing to the screen, it also 
makes sense that they'd both be using the same HalDisplayString API. One could 
argue that since you'd probably want to debug the NMI, it might make sense to 
enter the kernel debugger, which, since it is an exported kernel function that 
ReactOS must implement, ends up being the same call as Windows. So whether it 
was clean roomed, copied, reverse engineered, or fabricated out of thin air to 
match this specification, the resulting code would look the same (however, it 
should be better documented so the values don't look like magic). Of course 
these are all rational arguments that can be made *after* the function has been 
written, the burden of proof as to IF this is how the function was already 
written is what matters.

There are many questions as to whether or not those 6 lines of code are 
actually copyrighted at all, whether you or anyone else has any rights to those 
6 lines of code since they are identical to Windows (by necessity), and whether 
or not the addition of ~460 additional lines to misc.c and improvement of the 
original function still enable you to refuse a GPL->BSD license change solely 
based on 6, 10-year-old, lines of code that are identical to an even older 
copyrighted source base.

To push this analogy further, I could decide that the following piece of code

"printf("%s\n","

is GPL, and block anyone from ever using it in a module that is BSD.

I think even GPL requires at least 10 lines of code before being able to claim 
the whole module is GPLed (and it's probably more complicated than that).

So to close the topic: it is unclear if you have any ownership of those 
original 6 lines of code, and it is even further unclear if 6 lines of 
interface code in a 466 line module allow you the right to dictate the license 
of the module.

-r

> Ros Arm wrote:
> > The "ownership" and "copyright" of this code is not belonging to either you 
> > or anyone else but the original source it came from.
> > 
> > The PROGRAMMERS field indicates who is responsible for a piece of code in 
> > this project, is it not? In this case, since you have quitted many years 
> > ago, it makes sense this code is now belong to us.
> > 
> > It is Linux concept of "maintainer".
> > 
> > Thanks you,
> > [eVb]
> > 
> 
> Hi Ros Arm,
> 
> you are totally wrong here. The PROGRAMMERS field could be called 
> AUTHORS or CONTRIBUTORS and lists those who claim copyright or 
> authorship to a file. So removing someone from the PROGRAMMERS field is 
> a very disrespectul act, is a copyright violation and must be reverted 
> as soon as possible.
> 
> You can claim sole authorship to a file if you created the initial 
> version of a file.
> 
> You can also claim authorship to a file if you modified it in a 
> significant way. In this case you can ADD your name to the END of the 
> list of programmers. So the author who wrote the first version should 
> always stay on top of the list. Changing a "+" to "-" or adding "+ 1" is 
> not enough to claim authorship.
> 
> And in no case you have the right to change the license of an existing 
> file without having prior permission to do so by ALL authors of that 
> file. As far as I can remember, I did NOT grant permission to relicense 
> my code under the BSD license. My contributions to ReactOS were, are and 
> will be published under GPL or LGPL only.
> 
> Therefore I ask you to revert the following patch:
> [ros-diffs] [ros-arm-bringup] 44860: NMI Support Patch 6: [HAL]: Fix NMI 
> recursion issues. [HAL]: Reset the display during NMI and paint the NMI 
> Screen of Death.
> 
> In case you fail to revert the patch within a week (aka 7 days) I will 
> revert this patch myself and restore the previous version.
> 
> And by the way, DON'T INTRODUCE YET ANOTHER FUCKIING CODING STYLE!!!! 
> Use the coding styles that are already being used!!!!
> 
> Oh, and before I'm done: I don't like to talk to meaningless nicks like 
> Ros Arm, RosLeg or ROSIDONTKNOWHOWTOFUKINGCALLMYSELF. Reveal your 
> identity! I don't see a reason why you have to hide behind you nick. If 
> you need to hide your identity you should better leave ReactOS because 
> these reasons can only endanger the project. And I will always prefer to 
> throw a single contributor out of the team rather than endangering the 
> whole project.
> 
> And finally, my name is Eric Kohl and I joined the ReactOS project in 
> December 1998. So I guess I have the right to voice my opinion here.
> 
> 
> Regards
> Eric
> 
> _______________________________________________
> Ros-dev mailing list
> [email protected]
> http://www.reactos.org/mailman/listinfo/ros-dev



_______________________________________________
Ros-dev mailing list
[email protected]
http://www.reactos.org/mailman/listinfo/ros-dev

Reply via email to