Bug 311931 - [Help] Announce future removal of extension point org.eclipse.help.base.luceneSearchParticipants
Summary: [Help] Announce future removal of extension point org.eclipse.help.base.lucen...
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: User Assistance (show other bugs)
Version: 3.6   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.6 RC2   Edit
Assignee: Chris Goldthorpe CLA
QA Contact:
URL:
Whiteboard:
Keywords: api
Depends on:
Blocks:
 
Reported: 2010-05-06 12:55 EDT by Chris Goldthorpe CLA
Modified: 2012-06-28 16:56 EDT (History)
4 users (show)

See Also:
john.arthorne: pmc_approved+
ChrisAustin: review+
curtispd: review+


Attachments
Patch in org.eclipse.help.base to add comments announcing future removal (2.35 KB, patch)
2010-05-06 13:32 EDT, Chris Goldthorpe CLA
no flags Details | Diff
Detailed instructions for porting to the new extension point. (4.41 KB, patch)
2010-05-19 19:21 EDT, Chris Goldthorpe CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Chris Goldthorpe CLA 2010-05-06 12:55:50 EDT
The extension point org.eclipse.help.base.luceneSearchParticipants exposes classes from Lucene and this has created a binary incompatibility if we were to switch to Lucene 1.x to 2.x. In Eclipse 3.6 a new extension point "searchParticipant" was created as a replacement.

While Lucene 2.x is binary incompatible Lucene 3.x removes some classes which were deprecated in 2.x and could completely break any clients of the old interface. We should start the process of eliminating luceneSearchParticipants by flagging it for deletion in a future release.

See Bug 298510 -  [Help][Search] org.eclipse.help.base API uses classes from Lucene for more background.
Comment 1 Chris Goldthorpe CLA 2010-05-06 13:32:15 EDT
Created attachment 167348 [details]
Patch in org.eclipse.help.base to add comments announcing future removal
Comment 2 Chris Goldthorpe CLA 2010-05-06 13:45:42 EDT
John - a couple of questions. I was looking at http://wiki.eclipse.org/Eclipse/API_Central/Deprecation_Policy#Announcing_API_Removal - does the announcement of future removal (as opposed to the actual removal) require full PMC approval? Also which page of the porting guide should the announcement go in, incompatibilities.html or recommended.html?
Comment 3 John Arthorne CLA 2010-05-06 17:21:14 EDT
(In reply to comment #2)
> - does the announcement of future removal (as opposed to the actual removal)
> require full PMC approval? 

Yes, the idea here is to let the PMC discuss it and decide if it makes sense, before broadcasting to the wider community and avoid unnecessary churn.

> Also which page of the porting guide should the
> announcement go in, incompatibilities.html or recommended.html?

There is a new "removals.html" page that it should go in.

This removal sounds quite reasonable to me - if you send out the request I can argue in favour of this one at the next PMC call.
Comment 4 Chris Goldthorpe CLA 2010-05-07 13:18:33 EDT
This is the summary of the changes to be made, the impact and the rationale.

The following extension point will be removed:

org.eclipse.help.base.luceneSearchParticipants

The following API classes will be removed:
org.eclipse.help.search.LuceneSearchParticipant
org.eclipse.help.search.ISearchIndex
org.eclipse.help.search.XMLSearchParticipant

Rationale for change. The class LuceneSearchParticipant exposes classes from Lucene in it's method parameters, specifically org.apache.lucene.document.Document and org.apache.lucene.document.Field. Between Lucene 1.x and 2.x there is a binary incompatibility in these Lucene classes which is inherited by LuceneSearchParticipant, this has prevented the help system from upgrading to Lucene 2.x. With Lucene 3.x the situation gets worse because some of the methods in Document and Field which existed in 1.x were deprecated in 2.x and removed in 3.x, clients of this extension point could easily run into this problem.

Impact on downstream clients. Any users of this extension point will be required to use the replacement extension point org.eclipse.help.base.searchParticipant instead. We do not believe that this extension point is widely used.
Comment 5 Martin Oberhuber CLA 2010-05-10 05:35:28 EDT
I have two questions here.

1.) The replacement extension point 

    org.eclipse.help.base.searchParticipant

    is currently documented as "since 3.5", but in the Galileo Docs I do not
    find it:
    http://help.eclipse.org/galileo/topic/org.eclipse.platform.doc.isv/reference/extension-points/index.html

    could it be that it was added in 3.6 only? - Also, as per 3.6M7, the 
    "example" in the docs of the new extension point still references the
    old one (luceneSearchParticipant)!!

2.) Do we know for sure that the new extension point covers all cases that
    the old one could cover? How "expensive" is migration for clients? I 
    would like to see some documentation in a migration guide that explains
    what's involved in migrating from the old extension point to the new
    one, before I can give my +1 for announcing removal.

Announcing removal of API is a serious issue. With announcing removal, we need to expect that clients will want to migrate. We should make sure that we have paved the way for migration as much as we can.
Comment 6 Martin Oberhuber CLA 2010-05-10 05:39:29 EDT
Also, in the patch I'm missing usage of the official "deprecated" element in the .exsd for the extension point. Using this element is important in order to allow (future) tooling detect usage of deprecated extension points and report them as warning or error. That's an important aid for clients to migrate.

      <annotation>
         <appInfo>
            <meta.element deprecated="true" replacement="foo.bar" />
         </appInfo>
      </annotation>
Comment 7 Martin Oberhuber CLA 2010-05-10 07:01:38 EDT
(In reply to comment #6)
> Also, in the patch I'm missing usage of the official "deprecated" element in

Please disregard this comment - I found that the deprecated element does exist in the .exsd as expected already, so there was no need adding it to the patch.
Comment 8 Chris Goldthorpe CLA 2010-05-10 16:29:47 EDT
In response to the questions in Comment 5.

The extension point "searchParticipant" was added in Eclipse 3.6. 

Do we know for sure that the new extension point covers all cases that the old one could cover? - Because the old API exposed Lucene classes a client could do things in the old API that are not possible in the new API but the new API can do the one thing which is the essence of the extension point which is to add documents of any type to the search index

Migration to the new extension point was pretty simple for the two bundles in Eclipse which use the luceneSearchParticipants extension point.

Allowing the user to have access to the Lucene API also exposes the client to changes in that API, I experimented with using Lucene 3.0 with Eclipse 3.5 after changing the required bundle version for Lucene and found that I had compilation errors in org.eclipse.ui.cheatsheets which uses methods which were deprecated in Lucene 2.x and removed in Lucene 3.x.

There is definitely a trade off here - I am proposing announcing the removal of an extension point which we know will cause problems for users in the future if the SKK is upgraded to Lucene 3.x, which is something we eventually will want to do. On the other hand removal of the extension point in itself will cause work for the clients. The deprecation of luceneSearchParticipants should encourage clients to migrate away from the use of this extension point but for those clients who choose not to migrate the question is whether it is preferable to leave the extension point in place even though it may force them to recode whenever Eclipse switches to a newer full version of Lucene or remove the extension point altogether and force clients to do a single migration to the new extension point.

I think removal is in the long term going to be less painful for users than to try to keep this deprecated extension point alive but I could be persuaded to wait till next year to announce the removal.
Comment 9 Martin Oberhuber CLA 2010-05-11 06:57:05 EDT
Thanks Chris.

I think that announcing removal is OK, and the sooner we do it the better (because it increases chances that clients actually respond back and potential open issues are uncovered). Announcing removal doesn't mean that we actually must remove it -- it just opens the door for doing so.

I would still suggest that along with announcing removal, we also provide a "good toolset" for clients to understand the implications of moving. In this case, I think this should include 

 1.) fixing the current ISV docs for the new extension point 
     (example, @since tag)
 2.) adding a sample to the migration guide that shows how and where 
     the Eclipse SDK did migrate from the old extension point to the new one
 3.) adding a feedback channel for clients to the migration guide that enables
     them to ask questions, provide input or veto the removal. I believe the
     channel would just be this bug.
Comment 10 Chris Goldthorpe CLA 2010-05-11 14:23:40 EDT
I agree that announcing the removal leaves open the possibility that we do not remove the API at the first opportunity if the feedback from the community is negative. I also agree with the suggestions for the migration toolkit.
Comment 11 John Arthorne CLA 2010-05-15 21:05:20 EDT
We discussed this at last week's PMC call and agreed to announcing the deletion. As with any deprecation, there should be a migration guide entry in the "Adopting 3.6 mechanisms" section of the migration guide as described by Martin.
Comment 12 Chris Goldthorpe CLA 2010-05-18 17:58:16 EDT
Chris, Curtis, please review the JavaDoc changes. I will be writing instructions on how to port from the old extension point but as doc changes those do not need approval for RC2.
Comment 13 Curtis d'Entremont CLA 2010-05-18 18:15:35 EDT
Is it possible to be more specific about when it will be removed? I usually see notices like "This will be removed in [version]". I'm guessing you phrased it the way you did because you don't know the future version number "n releases after 3.6?"
Comment 14 Chris Goldthorpe CLA 2010-05-18 18:31:55 EDT
The plan is to remove the extension point in the June 2012 release (3.8/4.2). If the community gives us feedback that this is too early the removal would be delayed.
Comment 15 Chris Austin CLA 2010-05-19 11:12:53 EDT
This looks good to me, though I admit I have not reviewed a deprecation before (so I don't know much about the process).  I did notice that the <documentation> tag of  /org.eclipse.help.base/schema/luceneSearchParticipants.exsd does not have the year updated to 2010 - so that may need to be updated.
Comment 16 Chris Goldthorpe CLA 2010-05-19 13:23:30 EDT
You are right, I should update the copyright to 2010. If I make that change can you approve the bug? I don't think there is a need to add a new patch with the new copyright date.
Comment 17 Chris Austin CLA 2010-05-19 13:26:00 EDT
Yes, of course.  I approve.
Comment 18 Chris Goldthorpe CLA 2010-05-19 13:36:29 EDT
Patch committed to HEAD, Fixed
Comment 19 Chris Goldthorpe CLA 2010-05-19 19:21:20 EDT
Created attachment 169246 [details]
Detailed instructions for porting to the new extension point.