Thorsten Behrens wrote: > I'm talking about _every_ release. To reiterate: we cannot rely on > _any_ extension (except the most trivial ones, or those that don't use > API at all) running correctly with a new release, without somehow > assuring that API contracts haven't changed. We can achieve this by > either QAing all known extensions against the new release, or by very > strict API testing, or by effectively forbidding any changes to code > paths reachable from API calls. Mozilla does the former, and the > approach appears to be the most feasible to me.
No, seen from the extensions I use that is not entirely true. Extensions are "tested" ;-) for every major release but not for every release. Many extension developers rely on compatibility on a major release code line. This is expressed by e.g. "2.0.x" in the version file. That means to me "this extension should run as long as the API is guaranteed to be stable" (what AFAIK mozilloid apps do for a major code line). So in case we keep our API compatible or at least identifiable parts of it that allow extensions to stay "API compatible" I see the current approach as feasible. If changed behavior created a problem I would treat this as a bug, in the same way as a regression caused by an "unexpected side effect" of changes in a used library. No fundamental difference. For the same reason why we don't test all applications completely if a single line of code was changed in VCL or SFX2 I don't believe that we should declare all extensions incompatible automatically just because any implementation behind one of the APIs it uses might(!) have changed in a way that the extension can't cope with. This is exaggeration. If you change the behavior of a particular service in a way that you don't dare to name it compatible any longer: deprecate the old service name and create a new one! Services that are so implementation dependent maybe should get names like "my.service.name.version.2.3.1" anyway?! Extensions looking for the old service will automatically become incompatible then (provided that we get the "dynamical compatibility detection" I asked for). But why forcing all other extensions using completely unproblematic APIs to become incompatible automatically? That's again exaggeration. >> What we are doing now has worked for COM developers for a long time. It >> might not be the most comfortable thing for the developers but IMHO we >> should try to achieve comfort first for the users, developers second. >> >> About COM: you still can take StarOffice 3.0 from 1995 and embed a >> Writer 3.0 object into an Excel 2003 container. Of course nobody will do >> that for anything than testing and combining apps with more than 12 >> years difference in age is an exaggeration. But I hope you get the message. >> > Did you try? Yes. I found the same bugs in SO3.0 that I remember from the "good old days". :-) > IIRC, there _have_ been subtle differences that we'd have > to cater for, over the years. And I can counter with various other COM > examples, e.g. in the DirectX area, where interfaces stayed, for sure, > but ~nothing works unless one uses the very latest IDirect3DFoo21 > interface. So, I consider your example just that - an example that in > a defined area, a stable contract might be maintainable for an > extended period of time. But nobody would supposedly be able (nor > willing) to assert that for all of our 3000+ interfaces... IMHO that is not necessary. I claim that we have less bugs in OOo caused by changed behavior of API implementations than we have caused by unclear or misused "internal" (C++) APIs and "unexpected side effects" of their implementation. So I will give you a point when you show me that you test every line of code that depends on the code you have changed. If you don't do that I don't see why we should demand that for extensions using UNO APIs that are much less prone to such errors (I didn't say they are not prone to that at all!). So please let's stop that theoretical arguments and come to the real point: > we've already 7+ million LOC, and it's already a > heavy burden to maintain that. Compatibility is not a holy grail for > me - it's a tradeoff. And honestly, I'd currently rather spend > development resources on other stuff, than to workaround API > idiosyncrasies, or changing implementations to also handle > XWindow5... I don't question that. I understand that aiming for compatibility is hard and sometimes a PITA. What I miss is the user's perspective. Your arguments are very developer centric. There *is* a value in having extensions that work in many OOo versions even if their creators have stopped working on it. That's the reason why I want us to think about perceptible type incompatibilies that allow an extension to detect whether the types it uses are still compatible with the OOo release it is embedded into or not. I don't want to become all types incompatible in every major automatically so that no extension for e.g. OOo2.x will run in OOo3.0 even if some of them could. Let's make incompatibilites explicit, no matter if they are caused by API or behavioral changes. And allow extensions to deal with that but don't force them to become incompatible "just because". Ciao, Mathias -- Mathias Bauer (mba) - Project Lead OpenOffice.org Writer OpenOffice.org Engineering at Sun: http://blogs.sun.com/GullFOSS Please don't reply to "[EMAIL PROTECTED]". I use it for the OOo lists and only rarely read other mails sent to it. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]