Hi Ingrid,
Ingrid Halama wrote:
Hi Jürgen, all,
Jürgen Schmidt wrote:
Frank Schönheit - Sun Microsystems Germany wrote:
Hi Stephan,
Second, we neither have nor plan to have in place a mechanism to
detect that some UNO component/OOo extension uses an old revision of
some unpublished API. That is, there will not be any warning if you
deploy such a component/extension into an environment where it will
not work, and at runtime using that component/extension can have
unexpected effects.
Perhaps we should have such a mechanism then.
that would mean that we go back or better improve and extend our
component xml descriptions. This description already contain
information about the implemented services and additional used types.
This information + some kind of versioning would enable the
possibility of an early check.
But it means also that components may not work with future versions
and we have to rethink our compatibility paradigm.
Going away from the "every released API must be stable" paradigmn by
introducing the "published" keyword/feature was a great relief, and
prevented some immature interfaces already (we have enough of them in
the API created before).
Now what you're saying is that efectively, we're in the same situation,
again: Don't change any released API, as existing extensions might rely
on it, and will disbehave (and probably crash, if they're C++) if used
in conjunction with the new API. This makes, IMO, the "published"
concept absurd.
I would agree that we still have some missing functionality here.
But with ~700 unpublished API's you can get the impression that we use
unpublished API's to be flexible for the future.
Yes. And this shows a principle problem with our goals. We have three
goals for the API which do conflict:
A) Easy - We want to have an easy to understand, easy to use, easy to
maintain, clean API
here are three different goals in one ;-)
i would combine easy to use and clean API and would disagree in the
point "easy to maintain". If a more difficult maintenance process would
allow us more flexibility i would vote for it because we would have it
under control and probably know what we are doing.
B) Stable - We want to have a stable API which never changes thus
separately developed components do work forever with all versions of
OpenOffice.org
C) Flexible - We need to have a flexible API where it is possible to
introduce additional features which are requested later on.
In principle you can not have all three things together. Only two of the
goals do fit together:
A+B: You can design, implement and review an easy and stable API for a
known fixed feature set. But additional features will likely not fit
into that design. So should we stop implementing additional features?
B+C: I think what we do at the moment is focusing on stability and
flexibility. The published API is kept stable and new features are added
by additional interfaces newinterface2 newinterface3 and newinterface4.
As a result the API is not easy and will become even more complicated
over time. I am really worried if I imagine how the API will look like
in 10 years. Who would be able to implement against that API, who would
be able to just maintain it?
A+C: The best approach looking to the future I think would be to
concentrate on an easy and flexible API. There are a lot of features
that are known to be missing and there will arise additional not yet
known ones. Implementing those features by changing the API incompatible
if necessary would keep the API understandable and maintainable. Thus
it's power could evolve in future.
i agree and i am personally are flexible but we have to think carefully
about this change of our API paradigma and should ask our customers if
they can live with solutions that work only with version XY or older and
potentially not with future versions.
I am always happy when one of my demo components developed for
StarOffice 6.0 (before OO.org) work with StarOffice 8 as well. I think
it can be a good reason for customers to switch to SO/OO.org using our
API (with java for example) because they know that the implementation of
macros, some integration and/or extension is a one time investment and
would work with future versions as well. It is not really calculable for
professional ISV's or bigger companies if they have to check their code
with every new version of the product.
MS has shown how successful they were with their compatible API's over
years.
API's intended to be used public should be published asap. It show me
more that we have to be more careful with API's, i think we have to
include API's in the spec process and we really need complete tests,
examples and documentation before the API's get released. Writing
tests, examples and documentation often shows potential specification
errors and at this time we have the chance to change it.
The biggest problem with a lot of API's is that we have developed and
implemented them but neither we have used it internally nor somebody
have used them externally over round about 2 years and we have made
the mistake to keep this initial API compatible (for probably only a
few external customers).
Better testing and design review of API would be definitly a good thing,
but it would not solve the problem that arises from additional feature
requests.
Furthermore i would say that the API's are more important than the UI.
But don't misunderstand me the UI has to be clear, intuitive and easy
... But when we find a problem in the UI we can easy change or correct
it with the next release and probably no user has a problem with this
change.
Hm, I don't think that it is likely that no user has a problem with a
GUI change. But that is a different topic maybe.
But changing API's we can break potential extensions o customer
applications using the API and that is more critical from my point of
view.
Considering just the moment of API change you are right, but considering
the evolution of the API over years we might win much more customers
when the API gets cleaner and easier.
Juergen
Said that, I strongly vote for having a versioning mechanism.
So I also would strongly vote for having a versioning mechanism, also
for published API.
i would love to have a working versioning for UNO types but i think
Stephan has already described why it is not possible.
I can only promise that we will think again about it and any kind of
ideas are welcome.
Juergen
Just my two cents,
Ingrid
Ciao
Frank
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]