[Xorg] The big multiconsole nasty

Thomas Winischhofer thomas at winischhofer.net
Wed Jul 7 07:32:29 PDT 2004


Egbert Eich wrote:
> Thomas Winischhofer writes:
>  > 
>  > I said "look at", not "copy". "Writing identical values to registers" is 
>  > certainly not violating the GPL.
>  > 
> 
> This is exactly the problem: It isn't clear to me (and others here
> probably have the same problem) how far one can go. Register values
> are not the only problem, it may be the order in which they are
> written (which often is not trivial to get right) or some other algorithms
> which when I have seen them I probably would implement in a similar way.

This is getting a little OT now... but anyway:

[Disclaimer: The following is quite simplified.]

None of this is covered by copyright. Only the *very* *implementation* is.

Algorithms or ideas are never subject to copyright (and hence the 
license), but eventually patents (in those poor countries where this 
idiocy has been incorporated in law).

See:

	outb(0x3c4,0x11,0x0f)

is two things:

1) what you see (the letters, digits etc) is eventually subject to 
copyright. (Copyright originally was intended for literature or music or 
other works of art. The idea was to protect the author's creativity in 
terms of language, expressions, or - in case of music - the melody = the 
sequence of tones = the language of music.)

2) what it does (setting all i2c data and clock bits on sis chips :) - 
never try this at home ;)) is eventually subject to software patents.

To be subject to copyright requires the code in question to be somewhat 
non-trivial which in copyright law is called "creative" (otherwise there 
would be a copyright on for()-loops using i as the loop iterator - or, 
even worse, for every-day phases in any spoken language).

Writing values to registers (which translates more or less 1:1 to 
assembly) is not "creative". You can't copyright code that writes 0x0f 
to sequencer register 0x3c4 index 0x11 (especially when considering that 
there is only one possible statement to do so).

If such code is covered by a calculation or a special algorithm that 
writes the registers in a certain order, this very implementation (=what 
you see) is copyright-ible. If you do the same, but in a different 
implementation, it is no copyright infringement. Simple for()-loops 
writing registers in order, reading the data from a CARD8-array is not 
copyright-ible.

 From a practical point of view: Make the code look as different as 
possible. For us, getting sued is enough trouble, and winning or losing 
is secondary. If you want to avoid anybody even getting ideas, the code 
should look really different.

To make absolutely sure, use macros for even trivial statements. The 
fact that the linux kernel, for example, uses outb(data,port) whereas X 
uses outb(port,data), is a good start anyway ;)

And please: This is no invitation for copyright infringements ;)

> You probably know much more about these things than I do.

Well, my doctor degree in law is more or less the result from a thesis 
on software patents.

German speaking people on this list are welcome to read this thesis (in 
a shortened version) which is freely available on my website.

Thomas

-- 
Thomas Winischhofer
Vienna/Austria
thomas AT winischhofer DOT net	       *** http://www.winischhofer.net
twini AT xfree86 DOT org




More information about the xorg mailing list