* Is sharpzdc_cs.o not a derivitive work of Linux?
@ 2005-10-28 16:30 Mark Jenkins
2005-10-29 9:10 ` Rob Landley
0 siblings, 1 reply; 5+ messages in thread
From: Mark Jenkins @ 2005-10-28 16:30 UTC (permalink / raw)
To: linux-kernel
Hello Linux developers,
Sharp Electronics Corporation manufactures a series of handheld
computers called the Zaurus. The new ones run Linux.
Sharp sells a digital camera, the CE-AG06 that works with the SL-5500,
SL-5600 and SL-6000. To use this camera, a Linux module sharpzdc_cs.o is
required.
There are several copies of the Linux Zaurus source on the web; none of
them contain the source code for this module. I am attempting to use the
official source code offer that came with the device instead of the web
copies. When I do manage to get Sharp to do this, I anticipate they will
not include the source for this particular module.
Sharp distributes sharpzdc_cs.o in the Zaurus ROM image alongside Linux.
You can look at the module here:
http://oz.pdai.org/mirror/camera-modules-2.4.18-rmk7-pxa3-embedix.tar.bz2
I have read, http://people.redhat.com/arjanv/COPYING.modules
Summary: A Linux module is a derivative work unless a strong case is
made otherwise.
I would like to know if this is one of those exception cases. That is
why I used the word 'not' in the subject line.
Is sharpzdc_cs.o *not* a derivative work of Linux?
Mark Jenkins
umjenki5@cc.umanitoba.ca
Appendix A
sharpzdc_cs.o is dynamically linked against the following functions and
variables:
Symbol Location
--------------------------------------------
CardServices drivers/pcmcia/cs.c
kmalloc mm/slab.c
__memzero arch/arm/lib/memzero.S
kfree mm/slab.c
memset arch/arm/lib/memset.S
memcpy arch/arm/lib/memcpy.S
__release_region kernel/resource.c
sprintf lib/vsprintf.c
printk kernel/printk.c
ioport_resource kernel/resource.c
udelay arch/arm/lib/delay.S
mod_timer kernel/resource.c
jiffies kernel/timer.c
register_chrdev fs/devices.c
register_pccard_driver drivers/pcmcia/ds.c
unregister_pccard_driver drivers/pcmcia/ds.c
unregister_chrdev fs/devices.c
del_timer kernel/timer.c
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Is sharpzdc_cs.o not a derivitive work of Linux?
2005-10-28 16:30 Is sharpzdc_cs.o not a derivitive work of Linux? Mark Jenkins
@ 2005-10-29 9:10 ` Rob Landley
2005-10-29 22:07 ` Mark Jenkins
2005-10-31 0:52 ` linux-os (Dick Johnson)
0 siblings, 2 replies; 5+ messages in thread
From: Rob Landley @ 2005-10-29 9:10 UTC (permalink / raw)
To: Mark Jenkins; +Cc: linux-kernel
On Friday 28 October 2005 11:30, Mark Jenkins wrote:
> I have read, http://people.redhat.com/arjanv/COPYING.modules
> Summary: A Linux module is a derivative work unless a strong case is
> made otherwise.
>
> I would like to know if this is one of those exception cases. That is
> why I used the word 'not' in the subject line.
>
> Is sharpzdc_cs.o *not* a derivative work of Linux?
I suspect that right now the Linux developers are trying an end-run around the
whole mess. At a wild guess, binary-only modules will probably be obsolete
in a few years. I could easily be wrong, but here's why I think this:
2.6 introduced sysfs and udev. When /dev is maintained by udev, then udev
gets the list of devices and each device's major/minor numbers from the dev
entry for the device in sysfs. At boot time, udev starts with an empty /dev
directory (generally tmpfs) and populates it from /sys, and hotplug events
tell udev to take another look at sysfs. I.E. if devices don't show up
in /sys, then udev doesn't create device nodes for them in /dev.
Of course you can work around this by running a supplemental script at boot
time to manually create extra devices (using the static major/minor numbers
from the lanana.org list), or by simply not using udev at all (and thus not
having modern features like good hotplug and persistent naming of things that
move around on USB hubs and such). The ability to use something other than
udev depends on the existence of static major and minor numbers.
But static major and minor numbers are not required for udev. Any system that
has udev recreates the contents of /dev from scratch on each reboot, and does
so based on major/minor pairs handed to it by sysfs. Those numbers can be
dynamically allocated by the kernel as each new device is hotplugged in,
there's no need for them to be preassigned.
At some point in the future, a config option will probably show up to make all
device numbers dynamically assigned. (This used to be a plan for 2.7, back
when we were going to have a 2.7.) For purely technical reasons, it's a
great simplifiation, making a lot of hardcoded magic numbers in the kernel
simply go away, eliminating the need to manage the hugely complex lanana.org
device number list, increasing scalability because now there's no real limit
on how many devices of a given type you can plug in since you won't run out
of major/minor pairs from the preallocated range to represent the new type.
It's been discussed before, and is a to-do item.
Of course under a dynamic major/minor scheme, udev would no longer be optional
but a requirement, and any device that wants a dev node _must_ show up in
sysfs or there's no major/minor pair to assign to it. And the really
interesting bit is that all the kernel-side sysfs bindings are
EXPORT_GPL_ONLY. A non-gpl module _cannot_ show up in sysfs. Thus under a
dynamic major/minor scheme, binary only modules couldn't have device nodes.
Interesting, isn't it? The normal churn in the kernel naturally renders old
interfaces obsolete, but the new interfaces are GPL_ONLY. Even if this isn't
the specific way they get rendered obsolete, the window for binary only
modules is slowly closing...
Rob
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Is sharpzdc_cs.o not a derivitive work of Linux?
2005-10-29 9:10 ` Rob Landley
@ 2005-10-29 22:07 ` Mark Jenkins
2005-10-30 2:30 ` [OT] " Rob Landley
2005-10-31 0:52 ` linux-os (Dick Johnson)
1 sibling, 1 reply; 5+ messages in thread
From: Mark Jenkins @ 2005-10-29 22:07 UTC (permalink / raw)
To: Rob Landley; +Cc: linux-kernel
Rob,
It is wonderful that a day will come when most modules will need to use
a symbol with attached documentation that says, "if you this symbol,
your code will be a derivative work, and by extension you must license
it under a GNU GPL compatible license".
A cynical person would respond to this and say "if somebody comes along
and uses one of those symbols in a proprietary module, the Linux
developers will let them get away with it".
I hold no such cynicism. I believe the Linux developers would act to
enforce their license in such a case.
This high regard that I have for the Linux developers is why I'm willing
to raise questions about a "binary only" module, despite the fact that
it doesn't use any symbols labeled EXPORT_SYMBOL_GPL. Linus makes it
clear that one can not conclude that he and others will say such a
module is *not* a derivative work. His position was that modules *are*
derivative works, unless a strong counter argument is made.
(see http://people.redhat.com/arjanv/COPYING.modules)
Therefor, if the Linux developers are faced with a module like
sharpzdc_cs.o, and if they conclude that good evidence is unavailable
that it is *not* a derivative work, I believe they would be willing to
listen to a complaint that their license of choice is not being
followed, and act on that complaint if they felt it was valid.
I will reply again later with an attempt to compare the criteria
available here:
http://people.redhat.com/arjanv/COPYING.modules
against the behavior of sharpzdc_cs.o and Sharp's distribution behavior.
In particular, I would like help with this part of it,
"anything that has knowledge of and plays with fundamental internal
Linux behavior is clearly a derived work. If you need to muck around
with core code, you're derived, no question about it.
"
as I am not a Linux hacker.
Mark Jenkins
^ permalink raw reply [flat|nested] 5+ messages in thread
* [OT] Re: Is sharpzdc_cs.o not a derivitive work of Linux?
2005-10-29 22:07 ` Mark Jenkins
@ 2005-10-30 2:30 ` Rob Landley
0 siblings, 0 replies; 5+ messages in thread
From: Rob Landley @ 2005-10-30 2:30 UTC (permalink / raw)
To: Mark Jenkins; +Cc: linux-kernel
On Saturday 29 October 2005 17:07, Mark Jenkins wrote:
> Rob,
>
> It is wonderful that a day will come when most modules will need to use
> a symbol with attached documentation that says, "if you this symbol,
> your code will be a derivative work, and by extension you must license
> it under a GNU GPL compatible license".
Someday as Linux's internal infrastructure evolves, they'll need to drive
internal Linux-only infrastructure to get Linux to do what they want to do,
yes. If Linux does things in a sufficiently different way than other
operating systems, then they can't say "oh, this is a simple port of ancient
unix crap, not a derived work of Linux". (A derived work can have plenty of
original content in it and yet still be a derived work.)
A general solution that pretty much comes about naturally, with time. If you
hate binary-only modules, offer to test out dynamic device numbering.
> A cynical person would respond to this and say "if somebody comes along
> and uses one of those symbols in a proprietary module, the Linux
> developers will let them get away with it".
>
> I hold no such cynicism. I believe the Linux developers would act to
> enforce their license in such a case.
Anybody who binds to a GPL_ONLY export from non-GPL code is explicitly
violating the license, yes. Linus has been very clear on this. There may
not be a bright line between light and dark here, but there's a bright line
between light and the gray area.
> This high regard that I have for the Linux developers is why I'm willing
> to raise questions about a "binary only" module, despite the fact that
> it doesn't use any symbols labeled EXPORT_SYMBOL_GPL. Linus makes it
> clear that one can not conclude that he and others will say such a
> module is *not* a derivative work. His position was that modules *are*
> derivative works, unless a strong counter argument is made.
> (see http://people.redhat.com/arjanv/COPYING.modules)
>
> Therefor, if the Linux developers are faced with a module like
> sharpzdc_cs.o, and if they conclude that good evidence is unavailable
> that it is *not* a derivative work,
Lack of evidence to the contrary is not proof. If you don't believe that a
case based what you're saying could potentially drag on in court for _years_,
then you have no business playing with the legal system at all. (Look at the
SCO mess, they've got _nothing_ but they've already whipped up enough smoke
and mirrors to drag things out for two and a half years, simply because they
have enough money to keep lawyers talking. Between the two sides, they've
probably burned through a hundred million dollars in legal fees and related
costs. With no actual _case_.)
When you go into court you either want a very, very, very bright line or you
want the stomach to outlast the other guy in trench warfare. If both sides
are reasonable, you try to stay _out_ of court in the first place.
Now let's back up and look at a few fallacies in your approach here. This is
almost a FAQ:
1) "The Linux developers" are only a group in the way science fiction fans are
a group. I'm a science fiction fan, but I don't subscribe to locus magazine,
am not on the Worldcon organizing committee, and could name a dozen other
organizations I have nothing to do with. I am an individual. There are
topics I sympathize with, but nobody speaks for me except me.
Asking "the linux developers" to do anything means finding somebody (an
individual) to do whatever it is, and passing around some kind of petition to
get permission from other people for that person to represent them in
whatever issue it is. This is a _massive_ undertaking. (There are certain
organizations, like OSI or OSDL, that already have the petition and
representation part down. For the fraction of the community, on the specific
issues, they've already done this work for. But on something like this,
they'd need a renewal of that commitment: they'd have to contact people,
gather support, lobby the undecideds, and so on. It sounds like politics
because it's democracy in action. You can't represent people without their
consent and endorsement, and it's a HUGE amount of work simply to _collect_
it even when they're already ready to sign up.)
2) Individual Linux developers aren't "faced with a module like
sharpzdc_cs.o". Most of them can happily ignore it, because they don't have
that hardware, don't need that hardware, and have at most an academic
interest in supporting that hardware. It's just not important to us. And
_that_ means we're unlikely to stop what we're doing and go deal with it as a
priority problem, since we've all got to-do lists a mile long. We have
finite time, finite attention. You're asking us to spend donate time and
attention to something you care about that we don't.
Are we lazy, or are we extremely busy? (Ask any kernel developer and see if
they can resist answering "Yes".)
Of course the other side of this is that if anybody comes to ask us to support
about a system with a binary-only module in it, we laugh them off the stage.
So yeah you who have such a flawed product have reason to care. But this is
definitely a caveat emptor situation. Doctor, it hurts when I buy hardware
with closed-source drivers...
3) You're asking for people to commit to a position on something we have no
information about. We haven't seen this module, and aren't about to come up
to speed on it just now (see #2). Giving you an informed answer would
require us to do work.
4) However, we'd like to leave the option open to do something about it if we
start to care later, for whatever reason. (Maybe just because one of us got
one for christmas.) The _last_ thing you want to do is go "Ha! This right
here is a violation, and we're not going to do anything about it! " And later
they'll bring up before the judge that we knew about it and did nothing, and
thus they had implicit permission or squatter's rights or something... They
don't, and we don't want to imply they do. If it becomes a priority, then
we'll do the analysis and state an opinion on the record, and follow up on
it. But you don't declare war before you're ready to march, and we have lots
of other stuff to do. (Including sneaky strategies to render the whole
question moot, ala last message.)
By the way, I can say all this because I very much do NOT represent the
community, and thus can speak freely without binding them to a position. I
relish my lack of authority on this topic.
5) Behind the scenes negotiation is WAY more effective than open belligerence.
People send nice letters to the other side's lawyers before any actual suits
are filed and the process starts costing both sides a lot of money. Once
you've made it clear the other side has to spend the money anyway, they have
no incentive to do anything a judge doesn't tell them to do at the end of
their appeals. They'll appease you to avoid bad PR, because it's cheaper
than a lawsuit, because the easiest/fastest/cheapest way to make you go away
is to give you what you want. (This is _after_ you prove that the easy way
isn't simply to ignore you.)
They do NOT do things because you showed up and yelled at them and they went
"Lo, you are mighty, see us cower before you, we have no pride." Diplomacy
involves walking softly and _carrying_ a big stick. Actually using the big
stick means the diplomacy part failed. If you can't pull of the diplomacy
bit motivating our side, don't even ATTEMPT it on the other side, you'll just
poison the well.
6) You don't need us. If you have a copyright interest in the Linux kernel,
you can pursue this yourself without anybody else's permission. (See #5!
See #5 first!) Or you can sign your copyright over to somebody like Harald
Weite of gpl-violations.org, who pursues this kind of thing on general
principles, as a sort of hobby. If you're interested in causing bad PR for
some company (in hopes they switch to BSD or something), you can try to get
the issue listed in Erik Andersen's hall of shame. These are all to get them
past the "ignoring you" phase of trying to make the problem go away.
If you don't have a copyright interest in the kernel, you have no business
getting upset about whether or not somebody _else's_ IP rights may or may not
be properly respected. Yes you care, and want to help, and that's cool.
Notifying them the problem exists is helpful. But getting upset when it
doesn't jump to the top of their to-do list? Not so much.
Do you think this is the _only_ binary-only module of questionable provenance?
Trying to push other people into opening a can of worms is fairly impolite.
7) Look into the difference between strategy and tactics. GPL_ONLY exports
gradually obsoleting the non-GPL ones is a strategy. (We rewrite each major
subsystem every few years anyway.) Playing whack-a-mole with binary-only
modules is tactics without a strategy.
> I believe they would be willing to
> listen to a complaint that their license of choice is not being
> followed, and act on that complaint if they felt it was valid.
A polite letter, please. (Their response will almost certainly be either to
ignore you, or to reply "We think it's not a derivative work" and then ignore
you, but hey. A polite letter is less likely to do more harm than good,
anyway.)
> I will reply again later with an attempt to compare the criteria
> available here:
> http://people.redhat.com/arjanv/COPYING.modules
> against the behavior of sharpzdc_cs.o and Sharp's distribution behavior.
>
> In particular, I would like help with this part of it,
> "anything that has knowledge of and plays with fundamental internal
> Linux behavior
As does any userspace program that uses sysctl or twiddles entries in /proc.
"Ah, but that's through an API!"
Yeah, and non-GPL exports are, sort of, an unintentional/unmaintained/unstable
API. The "sort of" is very grey here. And grey is what lawyers live on.
> is clearly a derived work. If you need to muck around
> with core code, you're derived, no question about it.
> "
Sez you.
Have you been following the SCO case? You'd be amazed what questions can be
raised about. They'll point to established practice and the existence of
GPL_ONLY as a _defense_, because there are forbidden symbols they're not
using, therefore the merely grey symbols they're using must be kosher, eh?
(I didn't say it would work as a defense, just that they can spin that out
for years in court if it came to it. And they know it. And if you _don't_
know it they write you off as a bumpkin.)
You don't have millions of dollars to spend on lawyers. They do. They don't
_want_ to spend millions of dollars on lawyers any more than the US _wants_
to use nuclear weapons, irradiate the planet, and provoke retaliation. But
having the _option_ to do big and painful things is very important in the
diplomacy parts of things. You _carry_ the big stick. Conspiculously.
Rattle the saber, not draw it.
Lawyers say "pound on the facts, pound on the law, pound on the table". In
that order. Don't argue about the law if the facts are on your side, and
don't make grandiose statements about fairness or constitutionality when you
can cite laws and cases that support your position. The fact that even their
_anecdotes_ have two fallback positions is a bit of a hint that your "X
obviously is a derived work, cough up the source" argument is not going to go
unopposed, eh? They will _find_ opposing experts to say it isn't, if you
push hard enough the wrong way. Idiots with a PhD aren't hard to buy.
And if they hold you of for five years so the product isn't even in the
bargain rack anymore and the kernel version the module was against is totally
obsolete anyway, who cares if you win?
Binary only modules are a real problem. Being legally in the right is
necessary but not sufficient. GPL_ONLY exports are a bright line test, and
adding them as new development means there's no vague "this used to be gray
and now it's black, its' pedigree is muddled, it's still gray!" line of
argument. (Well, the argument would be "binding against this symbol in the
_old_ kernel didn't explicitly confirm acceptance of the GPL, and we wrote
this module against the OLD kernel and forward-ported it, so why did forward
porting it make it a derived work? All you did was rename the symbols.
Simple renaming doesn't make us a derived work." Again, not necessarily
true, just a position for people to take that requires effort to disprove,
costing time and money and injecting uncertainty into the proceedings.)
GPL_ONLY symbols are not and never were available to non-gpl modules. That's
a bright line. And we're not arbitrarily yanking the old symbols (which
could be argued is just another type of renaming; yank the old one and add a
new one and you've renamed), we're just obsoleting them naturally with new
development, and the new ones are indeed different.
The kernel guys know what they're doing. The old symbols can be marked
"obsolete" once there's a new (GPL_ONLY) way that's justifiably better. And
then old exports don't have to be _yanked_. Not right now. Just mark them
obsolete and wait. It's not even saber rattling because we don't have to
rattle anything. It's just there, and they know it. Best kind. Build a big
stick, then carry it along, while walking softly...
Rob
P.S. All this is just my understanding. I could be completely wrong about
all of it. IANAL. YMMV. Void where prohibited by weight, not volume.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Is sharpzdc_cs.o not a derivitive work of Linux?
2005-10-29 9:10 ` Rob Landley
2005-10-29 22:07 ` Mark Jenkins
@ 2005-10-31 0:52 ` linux-os (Dick Johnson)
1 sibling, 0 replies; 5+ messages in thread
From: linux-os (Dick Johnson) @ 2005-10-31 0:52 UTC (permalink / raw)
To: Rob Landley; +Cc: Mark Jenkins, linux-kernel
On Sat, 29 Oct 2005, Rob Landley wrote:
> On Friday 28 October 2005 11:30, Mark Jenkins wrote:
>> I have read, http://people.redhat.com/arjanv/COPYING.modules
>> Summary: A Linux module is a derivative work unless a strong case is
>> made otherwise.
>>
>> I would like to know if this is one of those exception cases. That is
>> why I used the word 'not' in the subject line.
>>
>> Is sharpzdc_cs.o *not* a derivative work of Linux?
>
> I suspect that right now the Linux developers are trying an end-run around the
> whole mess. At a wild guess, binary-only modules will probably be obsolete
> in a few years. I could easily be wrong, but here's why I think this:
>
> 2.6 introduced sysfs and udev. When /dev is maintained by udev, then udev
> gets the list of devices and each device's major/minor numbers from the dev
> entry for the device in sysfs. At boot time, udev starts with an empty /dev
> directory (generally tmpfs) and populates it from /sys, and hotplug events
> tell udev to take another look at sysfs. I.E. if devices don't show up
> in /sys, then udev doesn't create device nodes for them in /dev.
>
> Of course you can work around this by running a supplemental script at boot
> time to manually create extra devices (using the static major/minor numbers
> from the lanana.org list), or by simply not using udev at all (and thus not
> having modern features like good hotplug and persistent naming of things that
> move around on USB hubs and such). The ability to use something other than
> udev depends on the existence of static major and minor numbers.
>
> But static major and minor numbers are not required for udev. Any system that
> has udev recreates the contents of /dev from scratch on each reboot, and does
> so based on major/minor pairs handed to it by sysfs. Those numbers can be
> dynamically allocated by the kernel as each new device is hotplugged in,
> there's no need for them to be preassigned.
>
> At some point in the future, a config option will probably show up to make all
> device numbers dynamically assigned. (This used to be a plan for 2.7, back
> when we were going to have a 2.7.) For purely technical reasons, it's a
> great simplifiation, making a lot of hardcoded magic numbers in the kernel
> simply go away, eliminating the need to manage the hugely complex lanana.org
> device number list, increasing scalability because now there's no real limit
> on how many devices of a given type you can plug in since you won't run out
> of major/minor pairs from the preallocated range to represent the new type.
> It's been discussed before, and is a to-do item.
>
> Of course under a dynamic major/minor scheme, udev would no longer be optional
> but a requirement, and any device that wants a dev node _must_ show up in
> sysfs or there's no major/minor pair to assign to it. And the really
> interesting bit is that all the kernel-side sysfs bindings are
> EXPORT_GPL_ONLY. A non-gpl module _cannot_ show up in sysfs. Thus under a
> dynamic major/minor scheme, binary only modules couldn't have device nodes.
Well no. Unless you modify the tools so it's impossible to show
a symbol map, nobody gives a hoot about EXPORT_GPL_ONLY. One doesn't
need to "export" any symbols at all. In fact, "export" seems to have
been created by somebody who didn't have a clue. It's not needed
at all. Even though it's currently used, it doesn't need to be.
>
> Interesting, isn't it? The normal churn in the kernel naturally renders old
> interfaces obsolete, but the new interfaces are GPL_ONLY. Even if this isn't
> the specific way they get rendered obsolete, the window for binary only
> modules is slowly closing...
>
> Rob
> -
It's not, as you say, the "normal churn". It is absurd that so
much effort is put into doing such destructive work as the
GPL_ONLY crap. And, in case you haven't noticed, /dev is the
place where device-names are normally placed. The special
device-files don't have to be there, either. They can be
anywhere. Any attempt to "force" the use of the "sys"
directory for "dev" files will fail. The Unix variant will
get forked off and the "modify-just-to-change" variant
will disappear.
Cheers,
Dick Johnson
Penguin : Linux version 2.6.13.4 on an i686 machine (5589.55 BogoMips).
Warning : 98.36% of all statistics are fiction.
.
****************************************************************
The information transmitted in this message is confidential and may be privileged. Any review, retransmission, dissemination, or other use of this information by persons or entities other than the intended recipient is prohibited. If you are not the intended recipient, please notify Analogic Corporation immediately - by replying to this message or by sending an email to DeliveryErrors@analogic.com - and destroy all copies of this information, including any attachments, without reading or disclosing them.
Thank you.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2005-10-31 0:52 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-10-28 16:30 Is sharpzdc_cs.o not a derivitive work of Linux? Mark Jenkins
2005-10-29 9:10 ` Rob Landley
2005-10-29 22:07 ` Mark Jenkins
2005-10-30 2:30 ` [OT] " Rob Landley
2005-10-31 0:52 ` linux-os (Dick Johnson)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox