[Bug 20944] EME should do more to encourage/ensure CDM-level interop, and can be different per-user/device.

https://www.w3.org/Bugs/Public/show_bug.cgi?id=20944

Zack Martin <maratreans@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |maratreans@gmail.com

--- Comment #8 from Zack Martin <maratreans@gmail.com> ---
CDM can be made more interoperable using following design. (I made the same
update in Bug 20963 but it is relevant to this bug too.):
- Introduce a requirement that CDMs be downloadable and executable in a sandbox
-- Possible sandboxes might be JVM, .Net, NaCl, etc. Rather than require one 
   particular sandbox, implement a registry of sandbox IDs, and some way to
   request a particular version of that sandbox (e.g. Java version >= 7)
-- Have an XML manifest for the CDM that declares:
---- CDM identity and revision number
---- what sandbox it uses and what revision
---- URL from which it can be downloaded
---- list of native OS services it requires, if any
------ this list may be platform-specific, e.g. Windows API X from Y.dll
       Linux function X from Y.so. Define a naming scheme that works for
       common platforms, e.g. win32:dllname:exportname,
linux:dllname:exportname
       make it extensible to support further platforms
------ a sandbox specific API to invoke those native services. This could be
       e.g. P/Invoke under .NET, JNA under Java, etc.
---- UA or sandbox must verify the CDM, either before executing it or while 
     executing it, to ensure it only uses the declared native services. How the
     UA or sandbox should do so would be sandbox-specific.
- Before registering a sandbox, sandbox registry must require:
-- publically available spec or docs for how the sandbox works, sufficient for
   a third-party to reimplement it (I take it this is true for JVM, ISO/ECMA
   CLI, and could easily be made true for NaCL.)
-- Likewise, a spec for the native services invocation API.

With this design, it should be possible for a CDM to work with multiple UAs or
even multiple platforms. Of course, there are no guarantees - the CDM could
always detect the UA or platform and refuse to run - but it means that building
a UA or platform restricted CDM becomes more of a conscious decision and less
of
an accident.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.

Received on Thursday, 14 February 2013 00:30:57 UTC