In the following of last IRC meeting, here is a draft of a FAQ with what 
was said. Comments are welcome.

Regards,

José Fonseca


Binary compatibility
====================

1. What does binary compatibility means?

        It means that that driver binaries made on previous releases 
should work with newer versions.
         

2. Why is it so important?

        To avoid potential havoc. For example:

        - If a user installs that latest version of XFree86 -- they don't 
always know they need a new kernel module too -- and end up running with 
the older ones.  
        - A vendor has intelectual property they don't want to release. 
Binary only components can be released, but they will need to support many 
different flavors of release.

        - For sake of our driver suite binary releases.


3. Binary compatibility in practice.

3.1 Of the DRM...

        We have to maintain one direction of compatability in order to 
stay in the Linux kernel release. This can be acomplished by:

        - semantic change should create a new IOCTL and leave support for 
the old semantics in the DRM module as well
        - bumping the minor revision number to give a mechanism to know if 
the new semantics were available

        NOTE: Check for different versions and fail gracefully is not a 
viable scenario acording to Linus.

        NOTE: Even when we ignore this and break compatability completely 
-- we have to use versioning properly or we don't even get warnings and 
disabling. We get CRASHES!!!

         
3.2 In the SAREA...
         
        Removing a field is generally a "no, no" as it will readily break 
backward compatability.  

3.2 Between the DDX and the GL driver...

        These are less likely to get out of sync as the DRM module -- but 
it's still possible. Again, having good revision checking can save a lot 
of headaches later. If the versioning isn't accounted for we get hangs and 
crashes with mismatches.

        We need to account for older versions, but not necessarily fully 
support -- we could fail gracefully --, although a driver suite supporter 
could decide to support older versions of one module or the other -- at 
their options. For example, let's say a hardware vendor released a binary 
DDX module for a special video out mode, then it would be nice if the 3D 
open source component worked with that module for as many versions as the 
initial interface allowed.  So, even though we did many updates and 
releases, the old closed-source binary still worked.


_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to