All of lore.kernel.org
 help / color / mirror / Atom feed
From: HoP <jpetrous@gmail.com>
To: Mauro Carvalho Chehab <mchehab@redhat.com>
Cc: Andreas Oberritter <obi@linuxtv.org>,
	Linux Media Mailing List <linux-media@vger.kernel.org>
Subject: Re: [RFC] vtunerc - virtual DVB device driver
Date: Wed, 22 Jun 2011 14:37:30 +0200	[thread overview]
Message-ID: <BANLkTimpVu+Hz0j+WUmSAsyON4u=W3cr+g@mail.gmail.com> (raw)
In-Reply-To: <4E01DD57.3080508@redhat.com>

2011/6/22 Mauro Carvalho Chehab <mchehab@redhat.com>:
> Em 21-06-2011 14:38, HoP escreveu:
>> 2011/6/21 Mauro Carvalho Chehab <mchehab@redhat.com>:
>>> 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@linuxtv.org> 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.

That I understand very well. I never want to force anybody to change
his licence.

I simply don't believe you that it is necessary. Why the same was not needed
with USBIP driver? If you check theirs nice big picture on
http://usbip.sourceforge.net/
you see that it is exactly same technology like vtunerc, but for USB subsystem.
Why such driver exists at all?

And I'm sure I can find more examples inside kernel tree. What about NBD
(http://nbd.sourceforge.net)? Do you want find me more examples?

> 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).
>
>>> If people have different understandings, then we'll likely need to ask some
>>> support from Open source lawyers about this subject.
>>
>> My very little opinion is that waving GPL is way to the hell. Nobody told me
>> why similar technologies, in different kernel parts are acceptable,
>> but not here.
>
> If you want to do the networking code at userspace, why do you need a kernel
> driver after all? The proper solution is to write an userspace library for that,
> and either enclose such library inside the applications, or use LD_PRELOAD to
> bind the library to handle the open/close/ioctl glibc calls. libv4l does that.
> As it proofed to be a good library, now almost all V4L applications are using
> it.

LD_PELOAD is out of bussiness for normal work. It is technique for development
and/or debugging. Library would be possible, but then you kill main advantage
- totally independece of changes inside userland DVB applications.

And about networking in userspace - do you know other way then using
userspace daemon for management of connections and other control
jobs? Can you describe me how to do it w/o userspace application (daemon).
Why all are using it? Check networking filesystems.

I hope you can learn me how to do it correct way. I'm open for any
discussion. But no talks like "it breaks GPL" without any evident
argument from you.

/Honza

  parent reply	other threads:[~2011-06-22 12:37 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-19  0:10 [RFC] vtunerc - virtual DVB device driver HoP
2011-06-20 17:37 ` Rémi Denis-Courmont
2011-06-20 17:41   ` Devin Heitmueller
2011-06-20 18:17     ` HoP
2011-06-20 18:24       ` Devin Heitmueller
2011-06-20 19:10         ` Sébastien RAILLARD (COEXSI)
2011-06-20 19:36           ` Devin Heitmueller
2011-06-20 19:56             ` HoP
2011-06-20 20:02               ` Devin Heitmueller
2011-06-20 20:24                 ` HoP
2011-06-20 20:47                   ` Mauro Carvalho Chehab
2011-06-20 21:31                     ` HoP
2011-06-21  1:35                       ` Mauro Carvalho Chehab
2011-06-21 11:04                         ` Andreas Oberritter
2011-06-21 12:05                           ` Mauro Carvalho Chehab
2011-06-21 12:34                             ` Andreas Oberritter
2011-06-21 12:54                               ` Issa Gorissen
2011-06-21 12:34                             ` HoP
2011-06-21 12:59                               ` Mauro Carvalho Chehab
2011-06-21 13:44                           ` Devin Heitmueller
2011-06-21 14:15                             ` Andreas Oberritter
2011-06-21 14:34                               ` Devin Heitmueller
2011-06-21 14:35                               ` Mauro Carvalho Chehab
2011-06-21 15:09                                 ` Andreas Oberritter
2011-06-21 17:10                                   ` Mauro Carvalho Chehab
2011-06-21 17:38                                     ` HoP
2011-06-22  1:06                                       ` Markus Rechberger
2011-06-22  6:08                                         ` HoP
2011-06-22 12:17                                       ` Mauro Carvalho Chehab
2011-06-22 12:30                                         ` Andreas Oberritter
2011-06-22 12:55                                           ` Mauro Carvalho Chehab
2011-06-22 13:07                                             ` Andreas Oberritter
2011-06-22 13:21                                             ` HoP
2011-06-22 12:37                                         ` HoP [this message]
2011-06-22 13:03                                           ` Mauro Carvalho Chehab
2011-06-22 13:13                                             ` Andreas Oberritter
2011-06-22 13:45                                               ` Mauro Carvalho Chehab
2011-06-22 14:03                                                 ` HoP
2011-06-22 14:23                                                   ` Mauro Carvalho Chehab
2011-06-22 14:24                                                 ` Andreas Oberritter
2011-06-22 15:19                                                   ` Mauro Carvalho Chehab
2011-06-22 15:45                                                     ` Andreas Oberritter
2011-06-22 19:18                                         ` Rémi Denis-Courmont
2011-06-22 22:24                                           ` Mauro Carvalho Chehab
2011-06-21 14:56                             ` Bjørn Mork
2011-06-21 15:06                               ` Mauro Carvalho Chehab
2011-06-21 14:59                             ` Mauro Carvalho Chehab
2011-06-21 17:12                               ` Markus Rechberger
2011-06-21 11:41                         ` HoP
2011-06-22 16:20                       ` Steven Toth
2011-06-20 22:11             ` Bjørn Mork
2011-06-20 22:36               ` HoP
2011-06-20 22:43               ` Devin Heitmueller
2011-06-20 19:40     ` Rémi Denis-Courmont
2011-06-22 17:08 ` Michael Krufky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='BANLkTimpVu+Hz0j+WUmSAsyON4u=W3cr+g@mail.gmail.com' \
    --to=jpetrous@gmail.com \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@redhat.com \
    --cc=obi@linuxtv.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.