Alec Flett wrote:
[EMAIL PROTECTED]">
A bunch of folks on the embedding team had a discussion about rev'ing a frozen interface. I whipped up a quick document describing the 4 ways that I saw you could "rev" an interface.

Check it out:
http://www.mozilla.org/projects/embedding/rev-interfaces.html

(the flowchart image is broken right now because I forgot to check it in as binary - I've re-checked it in but it will probably be an hour or so before www.mozilla.org picks it up)

Please post comments/questions to the newsgroup.

Alec

Some notes:

Except for case 1, all interfaces should be uniquely named. Calling something nsIGlobalHistory2 when it's not derived from nsIGlobalHistory just confuses people.

Case 3 is only acceptable for private interfaces. Pulling the rug away from some interface which is public and supported should avoided at all costs. If an interface *has* to go then there should be a period of grace before it happens, for example by marking it deprecated or whatever.

Additionally I think you can rule out case 4 because ensuring the interface is binary compatible with the old one means you may as well use case 1 and be done with it.

The moral of all this is that is a very good idea to think long and hard about an interface and it's uses before freezing it. Some Microsoft interfaces in their DirectX stuff are in their seventh or higher iteration!

Reply via email to