[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
RE: [eclipse-pmc] Adoption of newer Eclipse versions, and API Deprecation Policy
|
Hi all,
after chatting with Philippe on the phone, here is an
alternative wording:
In the Eclipse Project, we see that many clients have big problems
migrating their products to the yearly new Eclipse version:
-
API Compatibility: In spite of striving hard to
remain binary compatible, there are always cases where wrong API needs to be
rectified. This leads to effort on the client side. How can inevitable migration effort be
eased?
-
Bundle Internals: Clients use internal non-API
for a variety of reasons (e.g. "monkey see, monkey do" programming; not
understanding the clean API; functionality not available as API, or introduced
only after functionality was initially written). Becoming API clean would be
the obvious solution, but in many cases this is not possible in the time frame
available. How can we help clients become
API-clean, and how can we help protect investment where API cleanliness is
impossible?
-
Feature additions: Even if clients are API
clean, introduction of new features can make the clients look "old-fashioned"
or non-conforming in the latest incarnation of the Platform. Take Colors in
SWT trees for instance: before this feature, textual markup had to be used for
decorations, now colors are used. How can we
help clients detect usage of obsoleted features, and migrate to the new
feature more easily?
These are only some
examples where we see that in spite of remaining binary compatible, clients
cannot always migrate to newer Eclipse versions easily. Do others see similar
issues, or is this a pain that only IBM products see? Are there other pain
points to add to the list above? What can or should be done to ease the
situation? Here are some initial ideas:
- For (1)
API Compatibility: Create new Javadoc tag(s) and associated
tooling, such that clients can see when they use functionality that has
somehow changed. For instance: "@changed 3.4 passing null argument now leads
to no-op instead of performing default operation". API Tooling converts usage
of @changed API into task markers that clients can work on.
- For (2a)
Internals: Allow clients to run a report on their (closed-source)
code, such that all usage of non-API is properly reported and documented. This
report could be the discussion base such that we can understand what non-API
is "important" and/or help them find the correct API-clean counterpart for
non-API use. Ideally, such a "redirection" of non-API to API could be captured
in a way that is automated, i.e. the next client who sends in a report about
using a particular non-API is automatically pointed to the correct API-clean
way of doing something.
- For (2b)
Internals: Also, create a programme for contributed regression
tests: Allow clients to send in regression tests that mimic their specific
usage of non-API. Have the test run at Eclipse, but have the client be
resonsible for the test. Thanks to the test, changes in non-API are detected
much earlier and can be acted on properly.
- For (3)
Feature additions: Create a "soft deprecation" javadoc tag, which
tells clients that their use of functionality is still available (and won't go
away too soon), but also point them at how to use the newer, superseding
functionality (This is actually a variant of 2a).
As a corollary of
(3), we should also talk about formal API (and non-API) deprecation
policies, i.e. for how long we as a Community think that deprecated
functionality needs to be kept around, and how the Community should be informed
about deprecation. The goals of this discussion should be to
- Produce a clear set
of rules for Plugin Providers that, if followed, helps adopters of new
versions (e.g. how to document and tag changes).
- Produce a process
and tooling for Plugin Consumers that helps them (a) become more API clean,
(b) improve discussions about non-API, and (c) protect their investment in
non-API if necessary.
So
well that's quite a bit more than the 2 or 3 sentences that I asked for, but
that's how I tried to capture what I understood from what Philippe
said.
Comments and thoughts welcome...
Cheers,
--
Martin Oberhuber, Senior Member of Technical
Staff, Wind River
Target Management Project
Lead, DSDP PMC Member
Sure. How about ?
The cost
for migrating an Eclipse-based product to the next release is often far from
negligeable and for a range of reasons (including API compatibility, use of
other bundle internals, becoming obsoleted by feature additions, ...). We
should construct the list of pain points, and start thinking on how these
could be eased, baring in mind that ultimately, moving to a service release
should be a no brainer.
From:
| "Oberhuber, Martin"
<Martin.Oberhuber@xxxxxxxxxxxxx>
|
To:
| "Mike Wilson"
<Mike_Wilson@xxxxxxxxxx>, Philippe P Mulet/France/IBM@IBMFR
|
Cc:
| eclipse-pmc@xxxxxxxxxxx
|
Date:
| 01/07/2009 10:13 PM
|
Subject:
| [eclipse-pmc] API Deprecation
Policy
|
Sent by:
| eclipse-pmc-bounces@xxxxxxxxxxx |
Hi Mike, Philippe et al,
regarding the API Deprecation
discussion at the AC: I'm planning to send out a short reminder E-Mail to the
AC some time tomorrow. As part of that E-Mail, I could simply mention that the
Deprecation discussion is scheduled for the meeting. If you guys could come up
with a few brain teasers for that discussion (just 2 or 3 sentences), that
might help sparking off a nice discussion. What do you think?
Cheers,
--
Martin Oberhuber, Senior Member of Technical
Staff, Wind River
Target Management Project Lead, DSDP
PMC Member
http://www.eclipse.org/dsdp/tm
_______________________________________________
eclipse-pmc mailing
list
eclipse-pmc@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipse-pmc
Sauf
indication contraire ci-dessus:/ Unless stated otherwise above:
Compagnie
IBM France
Siège Social : Tour Descartes, 2, avenue Gambetta, La Défense 5,
92400 Courbevoie
RCS Nanterre 552 118 465
Forme Sociale :
S.A.S.
Capital Social : 609.751.783,30 €
SIREN/SIRET : 552 118 465
02430