Re: [RFC] vtunerc - virtual DVB device driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2011/6/22 Mauro Carvalho Chehab <mchehab@xxxxxxxxxx>:
> Em 22-06-2011 09:30, Andreas Oberritter escreveu:
>> On 06/22/2011 02:17 PM, Mauro Carvalho Chehab wrote:
>>> Em 21-06-2011 14:38, HoP escreveu:
>>>> 2011/6/21 Mauro Carvalho Chehab <mchehab@xxxxxxxxxx>:
>>>>> Em 21-06-2011 12:09, Andreas Oberritter escreveu:
>>>>>> On 06/21/2011 04:35 PM, Mauro Carvalho Chehab wrote:
>>>>>>> Em 21-06-2011 11:15, Andreas Oberritter escreveu:
>>>>>>>> On 06/21/2011 03:44 PM, Devin Heitmueller wrote:
>>>>>>>>> On Tue, Jun 21, 2011 at 7:04 AM, Andreas Oberritter <obi@xxxxxxxxxxx> wrote:
>>>>>>>>>> Mauro and Devin, I think you're missing the point. This is not about
>>>>>>>>>> creating drivers in userspace. This is not about open or closed source.
>>>>>>>>>> The "vtuner" interface, as implemented for the Dreambox, is used to
>>>>>>>>>> access remote tuners: Put x tuners into y boxes and access them from
>>>>>>>>>> another box as if they were local. It's used in conjunction with further
>>>>>>>>>> software to receive the transport stream over a network connection.
>>>>>>>>>> Honza's code does the same thing.
>>>>>>>>>
>>>>>>>>> I'm not missing the point at all.  I realize exactly what Honza is
>>>>>>>>> trying to accomplish (and from a purely technical standpoint, it's not
>>>>>>>>> a bad approach) - but I'm talking about the effects of such a driver
>>>>>>>>> being introduced which changes the kernel/userland licensing boundary
>>>>>>>>> and has very real implications with how the in-kernel code is
>>>>>>>>> accessed.
>>>>>>>>>
>>>>>>>>>> You don't need it in order to create closed source drivers. You can
>>>>>>>>>> already create closed kernel drivers now. Also, you can create tuner
>>>>>>>>>> drivers in userspace using the i2c-dev interface. If you like to connect
>>>>>>>>>> a userspace driver to a DVB API device node, you can distribute a small
>>>>>>>>>> (open or closed) wrapper with it. So what are you arguing about?
>>>>>>>>>> Everything you're feared of can already be done since virtually forever.
>>>>>>>>>
>>>>>>>>> I disagree.  There is currently no API which allows applications to
>>>>>>>>> issue tuning requests into the DVB core, and have those requests
>>>>>>>>> proxied back out to userland where an application can then use i2c-dev
>>>>>>>>> to tune the actual device.  Meaning if somebody wants to write a
>>>>>>>>> closed source userland application which controls the tuner, he/she
>>>>>>>>> can do that (while not conforming to the DVB API).  But if if he wants
>>>>>>>>> to reuse the GPL licensed DVB core, he has to replace the entire DVB
>>>>>>>>> core.
>>>>>>>>>
>>>>>>>>> The introduction of this patch makes it trivial for a third party to
>>>>>>>>> provide closed-source userland support for tuners while reusing all
>>>>>>>>> the existing GPL driver code that makes up the framework.
>>>>>>>>>
>>>>>>>>> I used to work for a vendor that makes tuners, and they do a bunch of
>>>>>>>>> Linux work.  And that work has resulted in a bunch of open source
>>>>>>>>> drivers.  I can tell you though that *every* conversation I've had
>>>>>>>>> regarding a new driver goes something like this:
>>>>>>>>>
>>>>>>>>> ===
>>>>>>>>> "Devin, we need to support tuner X under Linux."
>>>>>>>>>
>>>>>>>>> "Great!  I'll be happy to write a new GPL driver for the
>>>>>>>>> tuner/demodulator/whatever for that device"
>>>>>>>>>
>>>>>>>>> "But to save time/money, we just want to reuse the Windows driver code
>>>>>>>>> (or reference code from the vendor)."
>>>>>>>>>
>>>>>>>>> "Ok.  Well, what is the licensing for that code?  Is it GPL compatible?"
>>>>>>>>>
>>>>>>>>> "Not currently.  So can we just make our driver closed source?"
>>>>>>>>>
>>>>>>>>> "Well, you can't reuse any of the existing DVB core functionality or
>>>>>>>>> any of the other GPL drivers (tuners, bridges, demods), so you would
>>>>>>>>> have rewrite all that from scratch."
>>>>>>>>>
>>>>>>>>> "Oh, that would be a ton of work.   Can we maybe write some userland
>>>>>>>>> stuff that controls the demodulator which we can keep closed source?
>>>>>>>>> Since it's not in the kernel, the GPL won't apply".
>>>>>>>>>
>>>>>>>>> "Well, you can't really do that because there is no way for the DVB
>>>>>>>>> core to call back out to userland when the application makes the
>>>>>>>>> tuning request to the DVB core."
>>>>>>>>>
>>>>>>>>> "Oh, ok then.  I guess we'll have to talk to the vendor and get them
>>>>>>>>> to give us the reference driver code under the GPL."
>>>>>>>>> ===
>>>>>>>>>
>>>>>>>>> I can tell you without a doubt that if this driver were present in the
>>>>>>>>> kernel, that going forward that vendor would have *zero* interest in
>>>>>>>>> doing any GPL driver work.  Why would they?  Why give away the code
>>>>>>>>> which could potentially help their competitors if they can keep it
>>>>>>>>> safe and protected while still being able to reuse everybody else's
>>>>>>>>> contributions?
>>>>>>>>>
>>>>>>>>> Companies don't contribute GPL code out of "good will".  They do it
>>>>>>>>> because they are compelled to by licenses or because there is no
>>>>>>>>> economically viable alternative.
>>>>>>>>>
>>>>>>>>> Mauro, ultimately it is your decision as the maintainer which drivers
>>>>>>>>> get accepted in to the kernel.  I can tell you though that this will
>>>>>>>>> be a very bad thing for the driver ecosystem as a whole - it will
>>>>>>>>> essentially make it trivial for vendors (some of which who are doing
>>>>>>>>> GPL work now) to provide solutions that reuse the GPL'd DVB core
>>>>>>>>> without having to make any of their stuff open source.
>>>>>>>>>
>>>>>>>>> Anyway, I said in my last email that would be my last email on the
>>>>>>>>> topic.  I guess I lied.
>>>>>>>>
>>>>>>>> Yes, and you did lie to your vendor, too, as you did not mention the
>>>>>>>> possibilities to create
>>>>>>>> 1.) closed source modules derived from existing vendor drivers while
>>>>>>>> still being able to use other drivers (c.f. EXPORT_SYMBOL vs.
>>>>>>>> EXPORT_SYMBOL_GPL).
>>>>>>>
>>>>>>> AFAIK, the legal issues on writing a closed source driver using EXPORT_SYMBOL
>>>>>>> are not proofed legally in any court. While EXPORT_SYMBOL_GPL explicitly
>>>>>>> adds a restriction, not using it doesn't necessarily mean that the symbol
>>>>>>> can be used by a closed source driver.
>>>>>>>
>>>>>>> If you take a look at Kernel's COPYING file, the only exception to GPL license
>>>>>>> allowed there is:
>>>>>>>
>>>>>>>       NOTE! This copyright does *not* cover user programs that use kernel
>>>>>>>       services by normal system calls - this is merely considered normal use
>>>>>>>       of the kernel, and does *not* fall under the heading of "derived work".
>>>>>>>
>>>>>>> IANAL, but, as EXPORT_SYMBOL is not a "normal system call", my understanding is that
>>>>>>> it is also covered by GPL.
>>>>>>
>>>>>> Of course. But as you should know, the GPL only covers derived work.
>>>>>> Whether or not a driver is a derived work of the kernel can only be
>>>>>> decided individually. It is my understanding that a Windows driver
>>>>>> ported to Linux is unlikely to be a derived work of Linux.
>>>>>>
>>>>>>> I was told that several lawyers defend the idea that all software inside the
>>>>>>> kernel tree is covered by GPL, even the aggregated ones. That was the rationale
>>>>>>> used to split the firmware packages from the kernel itself.
>>>>>>
>>>>>> However, I wasn't referring to the kernel tree at all.
>>>>>>
>>>>>>>> 2.) a simple wrapper that calls userspace, therefore not having to open
>>>>>>>> up any "secrets" at all.
>>>>>>>
>>>>>>> A wrapper for a closed source driver is illegal, as it is trying to circumvent
>>>>>>> the GPL license.
>>>>>>
>>>>>> Is it? First, you are not a lawyer. Second, a wrapper is unlikely to be
>>>>>> illegal by its pure existence and a wrapper does usually not try to do
>>>>>> anything by itself. Third, you can implement a wrapper using normal
>>>>>> system calls (read, write, mmap, ioctl ...). That's what vtuner does,
>>>>>> too, to accomplish a totally different goal. Do you think vtuner is
>>>>>> illegal? I would be very surprised if it was. It perfectly matches the
>>>>>> license exception cited above. And even without the exception, a closed
>>>>>> driver in userspace would only very unlikely be a derived work of the
>>>>>> kernel.
>>>>>
>>>>> I think we're diverging from the subject. Most of those discussions are
>>>>> interesting on some lawyers forum, not here.
>>>>>
>>>>> My view about this subject is that vtuner can't give any additional permissions
>>>>> to the kernel GPL'd code, as vtuner were not made by the Kernel Copyright owners,
>>>>> nor were approved by them. So, the extra permission at the COPYING clause
>>>>> from kernel doesn't apply here, while the code is not merged into the Kernel.
>>>>>
>>>>> So, while it should be legal to use vtuner with a GPL'd client application,
>>>>> using it by a closed source application violates GPL.
>>>>>
>>>>> My understanding is that an addition of a code that exposes the internal
>>>>> DVB core API to userspace like that will require that all dvb developers
>>>>> that have copyright rights at the dvb core should explicitly ack with such
>>>>> change, otherwise adding such code will violate the original license.
>>>>>
>>>>> On the other hand, if vtunerc won't act as a proxy to userspace, it should
>>>>> probably be ok.
>>>>
>>>> Are you serious? Why there is not same violation on NFS? Or even beter
>>>> example NBD (network block device)? It sits in kernel for ages and nobody
>>>> cares. It looks for me like you should send some patch for removal such
>>>> "weak" places in kernel which allow to violate GPL.
>>>>
>>>> Do you really think that it is possible (in real, no in threory) to create
>>>> any networked subsystem for sharing anything over net the way
>>>> when it is not exposed (somehow) to the userspace? How will be
>>>> such system managable? Why there is usually companion daemon
>>>> there, which is responsible for managing connections etc?
>>>>
>>>> I think it is very evident you want find the way how to get yours word
>>>> back and return to your original position = such code is not acceptable.
>>>> Even if you still are not able to give anything clear.
>>>>
>>>> If I understand your last few mails, you won't accept such driver, isn't it?
>>>
>>> You got wrong. You can't change someone's else license without their acks.
>>> It is as simple as that. Getting everybody's ack is not that hard, if they
>>> accept that what you're doing is the right thing. We've got everybody's
>>> ack in the past to change the licensing for videodev2.h for example, to allow
>>> using the V4L2 API under BSD license (just the license API was changed, not the
>>> code itself).
>>
>> Is there anybode else who thinks that adding GPL'd code to the GPL'd
>> kernel would require any change in licensing? This is insane. What
>> change to whose license are you referring to, please?
>
> Kernel licensing is not a pure GPL license. If it were a pure GPL license, all software
> that would run on the top of it would need to also be released under GPL.
>
> Kernel license is GPLv2 + additional rights to allow binary code to run on the top
> of it, for the system calls that are introduced in order to allow the usage of
> the hardware resources managed by the Kernel (drivers, network, memory, CPU's, etc).
>
> There are no doubts that dvb developers wanted their drivers to be controlled from
> userspace, but, from previous discussions about this subject, several developers
> explicitly said that they didn't want to allow any kind of wrapper module to be added.

OK, if I even accede to your (rather strange) argument, then, staying strongly
on licencing rules - can you answer me if such "discussions" has any lawyer
base? I didn't see anything like "code is released under GPL2 with one exception
- no wrappers, please" in any commit. My really weak knowledge of GPL
make me wonder
if it is possible.

And of course - you wording about wrapper. Then every other
virtualization driver
can be named wrapper. But it is still driver, if you like it or nope.

/Honza
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux