[theora-dev] Re: Ogg Internet Drafts - create application/ogg-vorbis, application/ogg-tarkin, etc.

David Wheeler dwheeler at ida.org
Thu Jan 2 10:48:59 PST 2003

I remain convinced that there need to be both generic Ogg MIME types
and specific MIME types for common codecs placed in Ogg.
Having _only_ a generic MIME type will be serious problem over time.

Details below.

Carsten Haese wrote:

> On Thu, 2003-01-02 at 10:48, David Wheeler wrote:
> I guess my initial description was not clear enough. The way I imagine
> it, there's no added complexity for the user at all. I imagine a very
> thin application that the user won't even have to see. That application
> would peek into the Ogg file, and determine which application to launch
> to handle the file. It could even have a reasonable default
> configuration, like launch the default audio player for Vorbis and the
> default video player for Theora, so the user won't have to do anything
> beyond installing it.

<p>I believe that extra level of indirection is a serious problem
if that is the ONLY way people can get Ogg files.
Basically, this approach would impose a nonstandard method for accessing
Ogg files, reducing the likelihood of Ogg use.  In a standard, you want
to "play nice" and work well with other existing standards.

The whole point of the MIME standards is so that recipients will
know what application to kick off when they receive binary data;
by giving them more information, you make it easier for them to
accomplish that.

Imagine that you're a developer of a sound-playing application.
The operating system environment already has lots of tools to
automatically deal invoking a MIME type, e.g., "audio/ogg-vorbis".
If I register that specific type, I can depend on pre-existing
environment tools to register, unregister, set preferences, etc.
I have an entire library all set... and users & administrators who
know how to manipulate it.  Windows, GNOME, KDE, all have such tools
and conventions.

Now let's imagine that there is _only_ "application/ogg".
That means for every environment, I have to build yet another
multiplexor that figures out what app to run.
If you install a program, it needs to install the multiplexor
if it isn't installed yet (since it's not part of the OS),
I have to register with the multiplexor -- but wait, that means I
need to create a standard interface with the multiplexor for
installing & deinstalling.  I need GUIs for the
multiplexor so that users can control how things get invoked,
on all platforms.  And I need all vendors to agree on these
interfaces.  Basically, you have to re-build a part of the
environment, AGAIN, just so you can multiplex.

Users _HATE IT_ when you recreate a part of the environment for
no apparant reason.

Now, if you really need all that infrastructure to handle the
weird file, okay.  But nearly all Ogg files are going to be
simple streams of just one audio codec, or just one
video codec + a standard audio codec.

Please, let the "common case" be simple for USERS.  Give the
applications enough data so that it's duck-simple for
programs to install themselves and get invoked when needed.

<p>> As you say below, MIME types have an inherent limitation, so the
> OS/browser multiplexor is clearly insufficient.

<p>It's quite fine for normal use.  Define a generic MIME type to
handle weird cases, and define specific MIME types to handle normal use.
That way, you can do all things... and the normal cases are
handled simply.

By the way, doing this also greatly simplifies the multiplexor too.
If you only get "audio/ogg", then a good default is to send it
to whoever handles "audio/ogg-vorbis" unless configured otherwise.
So.... even if you really think that EVERYONE needs a multiplexor,
you STILL want very specific information on codecs in the MIME type.

<p><p>> As I explained above, the user won't see the generic tool. It is a thin,
> transparent layer that directs the file to the appropriate (specific)
> application.

<p>But programmers now have to deal with two levels: the multiplexor
and the OS environment, as described above.
And occasionally users have to manipulate their MIME type processing -
in Windows, this is actually quite visible as a right-click operation
(though they often don't realize that's what is happening).

In short, PLEASE set things up so they work the "standard" way.
A standard that interferes with other standards may sound more clever,
but users hate them.

<p>> It should be clear from the above that the application vendors don't
> have to merge or cooperate at all for a generic '.ogg' extension to
> work.

<p>Yes they do.  They must coordinate on the new non-standard
Ogg multiplexor interface.  Whereas, if you give specific MIME types,
they can just use the predefined standard intefaces for registering
MIME types in the OS environment.

<p>>>Sounds like you're a Mac user.  This _is_ an expectation of Windows/MS-DOS,
>>Unix, and Linux.  If ogg is going to be successful, it _must_ support the
>>conventions of these operating systems, and easily work _within_ them.
> Actually, I am a Linux user. The Linux OS doesn't impose anything on
> anything, as determining a file type is not a task for the OS, despite
> anything that Microsoft want you to believe. It's up to higher level
> tools to do this, and there are tools that look into a file's contents
> to determine its type. If a file manager determines the type of a file
> by its extension, that means the file manager needs to be made smarter.
> [In case you want to know what filemanager is already that smart, I
> don't know. My filemanager is the command line ;)]

<p>I use Linux, Solaris, and Windows.  If you only use the command line,
then MIME types are less used.  Frankly, if you only use the command
line, why do you care?  Just invoke the program you want on the command
line, and you can be your own multiplexor :-).

It's not a Microsoft issue.  All the graphical user environments for
Linux and Unix (e.g., GNOME, KDE, CDE) primarily depend on filename
extensions to determine the MIME type.  You can do more, but it's
more painful and less portable.

Anyway, I would suggest the following for "normal" use:
  video/ogg-tarkin  {may have embedded ogg-vorbis in it}

And also define these for "generic" use.  Here's where your multiplexor
can come in, but note that by giving files more specific types,
most users won't need or use the multiplexor.  By default, the multiplexor
could simply call on the default application for audio/ogg-vorbis and
video/ogg-tarkin respectively:
  video/ogg {may also embed audio}

<p>Thanks for listening!

<p>--- David A. Wheeler

--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'theora-dev-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.

More information about the Theora-dev mailing list