public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Craig Milo Rogers <rogers@isi.edu>
To: "Nemosoft Unv." <webcam@smcc.demon.nl>
Cc: Linus Torvalds <torvalds@osdl.org>,
	Xavier Bestel <xavier.bestel@free.fr>,
	Christoph Hellwig <hch@infradead.org>,
	Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: Termination of the Philips Webcam Driver (pwc)
Date: Fri, 27 Aug 2004 16:04:55 -0700	[thread overview]
Message-ID: <20040827230455.GG24018@isi.edu> (raw)
In-Reply-To: <200408272342.30619@smcc.demon.nl>

On 04.08.27, Nemosoft Unv. wrote:
> > So I'd personally much prefer the user mode approach. At that point it's
> > still closed-source, but at least there is not even a whiff of a "hook"
> > inside the kernel.
> 
> My problem with that is that it makes using such cams a lot harder for both 
> users and developers of webcam tools. Basicly, every tool that wanted to 
> use webcam X that has some binary-only library would need to specifically 
> support it, use probing routines, check which formats are supported, set up 
> the decompressor, push the data through it, etc. Conversely, every user 
> that wanted to use webcams X, Y and Z would need to check first if they are 
> all supported by the program(s) he would like to use.

	Pardon me for arguing, but my experience says that it need not
be as difficult for the application program as you describe, although
a tad complex for the driver & library writer(s).  Applications see a
user-mode API, and whether the codecs (in this case) reside in the
kernel or in their own process need not be of interest to them: it is
quite possible to make an API that isolates the application from this
detail.  Probing routines, interrupt support, etc. would be handled by
kernel drivers, which for the purposes of the present discussion we've
been assuming are open source kernel modules.  The decompression
libraries, which may or may not be closed-source, would be loaded from
a standard library location using an agreed-upon naming convention.

	The mechanics to make this work are well known, although
tedious.  The kernel driver(s) will supply an identifier for the
type(s) of card(s) that are presently available.  The identifier(s)
will be use to load a library(s) based on a mapping scheme; here are
three common schemes: 1) use the identifier as part of the library
name , 2) provide a module map file (ala kernel modules), and 3) scan
the available libraries on application startup and have them
self-register (ala mozilla).

	Distribution of the drivers and libraries is also a well-known
problem.  Linux distributions will typically come with certain drivers
and/or codes preinstalled (depending upon the purpose of the
distribution, the intellectual property issues involved, etc.)
Vendors (enlightened ones!) will provide drivers and libraries on the
CDROMs (or other media) that accompany their products.  Web sites
(vendor supported or not) will offer online upgrades for drivers
and/or libraries.

> The point is, the current API for video devices is the Video4Linux of 
> Video4Linux2 interface. It's relative simple one, but it _works_ the same 
> on all hardware, either TV card or webcam. What you're proposing is 
> fragmenting that support into programs that support X, Y or Z, or only a 
> subset, or none, based on whether or not the developer of said tool had the 
> time, skill and desire to incorporate these libraries into their program.

	Not at all.  The application writers might not see any difference
at all from the present V4L2 interface, depending upon the details of
the API for encasulating the decompression libraries.  There may very well
be card-specific features that the applications have to know about, but
that issue is independent of the location of the decompression routines.

> So instead of putting the support burden on one person (me), you want to 
> distribute it among a few dozen software developers. I don't think that's 
> really smart. It also takes the fun out of hacking a small webcam tool 
> together for whatever purpose, if you need a ton of extra tools, libraries 
> and program just to get one image.

	I'm struggling to compile GnomeMeeting from CVS.  I certainly
suffer at times from having to deal with dozens of libraries, each
loaded from their own little niche on Sourceforge or Apache.org, etc.,
for various projects.  However, and again please permit me to disagree
with you, I don't think that Web camera support will be quite that
complex.  All you need is a common framework, and the driver(s) and
library(s) for the card(s) installed on your machine.

> A solution could be something like JACK for the ALSA sound cards, but then 
> for video. But you need a compelling reason, and somebody (somebodies) to 
> design, write and maintain it.

	So long as someone is available to maintain the closed-source
codecs (while, we all hope, working in parallel with the manufacturers
involved to secure open-source licensing for any currently
closed-source components), I am confident that we can put together
a team to implement the rest.  I would be pleased to be on the team.

> Anyway... wether or not PWC was illegal under the GPL, technically 
> undesirable or just not good enough, is irrelevant now. The damage has been 
> done, and that's just sad.

	Please... don't tell me that you've deleted the source files
for pwcx!!!  That would be sad.  Also, I hope that you are willing to
consider continuing to maintain the closed-source codecs in pwcx for a
while longer, under some circumstances.  Your expertise and
willingness to help others is really the most valuable resource here,
and it would indeed be truly sad if it has been exhausted.

					Craig Milo Rogers


  parent reply	other threads:[~2004-08-27 23:05 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-08-26 23:32 Termination of the Philips Webcam Driver (pwc) Craig Milo Rogers
2004-08-26 23:47 ` Christoph Hellwig
2004-08-27  0:03   ` Linus Torvalds
2004-08-27  8:43     ` Christoph Hellwig
2004-08-27  9:48       ` Craig Milo Rogers
2004-08-27 17:28       ` Linus Torvalds
2004-08-27 17:37         ` Xavier Bestel
2004-08-27 18:13           ` Linus Torvalds
2004-08-27 18:55             ` Craig Milo Rogers
2004-08-27 19:06               ` Linus Torvalds
2004-08-27 19:34                 ` Jeff Garzik
2004-08-27 21:42                 ` Nemosoft Unv.
2004-08-27 22:49                   ` Marek Habersack
2004-08-27 23:40                     ` Dmitry Torokhov
2004-08-28 17:42                       ` Pavel Machek
2004-08-27 23:04                   ` Craig Milo Rogers [this message]
2004-08-27 21:59                 ` non-i386 architectures (Re: Termination of the Philips Webcam Driver (pwc)) Daniel Egger
2004-08-27 19:06               ` Termination of the Philips Webcam Driver (pwc) Martin J. Bligh
2004-08-27 19:12             ` Alex Belits
2004-08-27 21:36             ` Anton Altaparmakov
2004-08-27 21:42               ` Anton Altaparmakov
2004-08-27 22:26                 ` Geert Uytterhoeven
2004-08-27 21:52               ` Linus Torvalds
2004-08-27 22:22                 ` Jeff Garzik
2004-08-28  0:45                   ` Paul Jakma
2004-08-28  0:53                     ` Craig Milo Rogers
2004-08-28 10:29             ` Norbert van Nobelen
2004-08-29 14:37         ` Alan Cox
2004-08-28  9:26     ` chris
2004-08-29 14:41       ` Alan Cox
2004-08-29 14:36     ` Alan Cox
2004-08-29 18:09       ` Linus Torvalds
2004-08-29 18:57         ` Alan Cox
2004-08-29 19:40         ` Greg KH
2004-08-30  9:35         ` Craig Milo Rogers
  -- strict thread matches above, loose matches on Subject: below --
2004-08-27 10:14 Koos Vriezen
2004-08-27 11:03 ` Marcus Metzler
2004-08-28  2:16 lkml-mail
2004-08-28  5:30 ` Greg KH

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=20040827230455.GG24018@isi.edu \
    --to=rogers@isi.edu \
    --cc=hch@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@osdl.org \
    --cc=webcam@smcc.demon.nl \
    --cc=xavier.bestel@free.fr \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox