Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 365425

Summary: End of support for Galileo (3.5) and Helios (3.6) with EGit 2.2 (planned for 2012-12-15)
Product: [Technology] EGit Reporter: Matthias Sohn <matthias.sohn>
Component: CoreAssignee: Project Inbox <egit.core-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: caniszczyk, curtis.windatt.public, daniel_megert, hubert+eclipseorg, john.arthorne, markus.kell.r, pascal.rapicault, pascal, pwebster, remy.suen, robin.rosenberg, robin, steffen.pingel, Szymon.Brandys, tomasz.zarna
Version: unspecified   
Target Milestone: 2.2   
Hardware: All   
OS: All   
Whiteboard:
Bug Depends on:    
Bug Blocks: 327381, 372112    

Description Matthias Sohn CLA 2011-12-02 08:27:45 EST
When we drop support for Eclipse 3.5 (Galileo) we need to cleanup a couple of workarounds:

- EGit commit 25ea320918635f8a42bce9f0625592004e3edee2 "Fix build broken on Galileo"
- add more
Comment 1 Tomasz Zarna CLA 2011-12-14 05:20:19 EST
- the org.eclipse.egit.ui.internal.history.GitCreatePatchWizard.getOrCreateSection(IDialogSettings, String) method could be removed as this is a copy of org.eclipse.jface.dialogs.DialogSettings.getOrCreateSection(IDialogSettings, String) added in 3.7
Comment 2 John Arthorne CLA 2011-12-15 11:10:46 EST
Matthias, is your plan to drop 3.5 but still support 3.6? Or, what will the new minimum version be?
Comment 4 Tomasz Zarna CLA 2011-12-15 12:51:04 EST
So no chance for 3.8 and bug 366790 in the nearest future? Note that support for SCM URLs has been added to Team in 3.7 (bug326926, bug 330490).
Comment 5 Szymon Brandys CLA 2011-12-16 08:02:50 EST
(In reply to comment #4)
> So no chance for 3.8 and bug 366790 in the nearest future? Note that support
> for SCM URLs has been added to Team in 3.7 (bug326926, bug 330490).

Not moving to 3.8 would mean no chance for a nice fix for bug 327381 which has been a major regression for us since we switched from the Eclipse CVS client to EGit. 

Unless EGit moves to 3.8, we could address bug 327381 in two other ways:
1) Add a separate bundle to EGit that contributes extensions described in bug 327381. This bundle would have a dependency on team.core version from Eclipse 3.8. So it would be loaded and used only when EGit is installed on Eclipse 3.8.
2) Just add these extensions to egit.core manifest. AFAIK if there is no right extension, they will be silently ignored. So for EGit on Eclipse prior to 3.8, it would do nothing.

Thoughts?
Comment 6 John Arthorne CLA 2011-12-16 08:34:20 EST
(In reply to comment #5)
> 2) Just add these extensions to egit.core manifest. AFAIK if there is no right
> extension, they will be silently ignored. So for EGit on Eclipse prior to 3.8,
> it would do nothing.

You only need to specify a dependency if you are referencing classes from another bundle. You don't need to declare a bundle dependency just to create an extension to another bundle's extension point. So, this sounds like a possible option but I think we should continue that discussion in bug 327381.
Comment 7 Tomasz Zarna CLA 2012-03-01 04:38:27 EST
Another one to be added to the list from comment 0:
- https://git.eclipse.org/r/#/c/5134/ : "InstanceScope() and DefaultScope() constructors are deprecated", should read: _will_ be deprecated after switching to 3.8
Comment 8 Matthias Sohn CLA 2012-04-06 17:50:41 EDT
I propose we drop support for Galileo and Helios with EGit 2.0
Comment 9 Robin Stocker CLA 2012-04-07 10:06:17 EDT
We can also get rid of org.eclipse.egit.psf-feature, which was only needed for a dependency on org.eclipse.core.runtime.compatibility for 3.6 and earlier.
Comment 10 Dani Megert CLA 2012-04-10 02:18:03 EDT
(In reply to comment #8)
> I propose we drop support for Galileo and Helios with EGit 2.0

+1.
Comment 11 Robin Rosenberg CLA 2012-11-02 10:09:47 EDT
Can we close?
Comment 12 Dani Megert CLA 2012-11-05 06:06:34 EST
It looks like changes got merged that make this a fact, e.g.
https://git.eclipse.org/r/5134
Comment 13 Robin Stocker CLA 2012-11-05 07:59:12 EST
(In reply to comment #12)
> It looks like changes got merged that make this a fact, e.g.
> https://git.eclipse.org/r/5134

InstanceScope.INSTANCE and the others they are available since 3.4 (at least that's what the Javadoc says), so we still support 3.5. Or are there other changes breaking compatibility?
Comment 14 Dani Megert CLA 2012-11-05 08:19:23 EST
(In reply to comment #13)
> (In reply to comment #12)
> > It looks like changes got merged that make this a fact, e.g.
> > https://git.eclipse.org/r/5134
> 
> InstanceScope.INSTANCE and the others they are available since 3.4 (at least
> that's what the Javadoc says), so we still support 3.5. Or are there other
> changes breaking compatibility?

Bundles start at 1.0 when added/introduced and use @since tags that refer to their own bundle number. The bundle version is not connected to release numbers at all unless that bundle was present in Eclipse 1.0.

So, either that change needs to be reverted or 3.5 and 3.6 support ended and this closed.
Comment 15 Robin Stocker CLA 2012-11-05 08:45:32 EST
(In reply to comment #14)
> (In reply to comment #13)
> > (In reply to comment #12)
> > > It looks like changes got merged that make this a fact, e.g.
> > > https://git.eclipse.org/r/5134
> > 
> > InstanceScope.INSTANCE and the others they are available since 3.4 (at least
> > that's what the Javadoc says), so we still support 3.5. Or are there other
> > changes breaking compatibility?
> 
> Bundles start at 1.0 when added/introduced and use @since tags that refer to
> their own bundle number. The bundle version is not connected to release
> numbers at all unless that bundle was present in Eclipse 1.0.

Ugh, ok. I assumed it corresponded to the Eclipse versioning as the package is "org.eclipse.core", and nobody corrected my comment on the review. Sorry for causing this confusion.

Is there an overview of these versions somewhere? So org.eclipse.equinox.preferences 3.4 was first in Eclipse 3.7?

> So, either that change needs to be reverted or 3.5 and 3.6 support ended and
> this closed.

I would say revert, as the above change just removes some annoying deprecation warnings, and we still have some users on 3.5 and 3.6.
Comment 16 Robin Stocker CLA 2012-11-05 08:49:18 EST
Review for revert:

https://git.eclipse.org/r/8514
Comment 17 Dani Megert CLA 2012-11-05 10:27:42 EST
(In reply to comment #15)
> Is there an overview of these versions somewhere?

You can look at a build (About dialog or 'plugins' directory) which bundles are included but there is no documentation that shows which version is in which release. But that doesn't really matter. If a project like EGit defines that it runs against 3.5 then the developers should set the PDE target to a 3.5 install. This avoids the usage of improper APIs or the acceptance of patches with such.


> org.eclipse.equinox.preferences 3.4 was first in Eclipse 3.7?
Yes, in 3.7 its version was increased to 3.4.0.
Comment 18 Robin Rosenberg CLA 2012-11-05 14:34:26 EST
(In reply to comment #16)
> Review for revert:
> 
> https://git.eclipse.org/r/8514

Can't we move forward. We've long ago established the principle of only
supporting the two latest versions. By accident 3.5 and 3.6 have continued
to work.
Comment 19 Robin Rosenberg CLA 2012-11-05 14:49:15 EST
(In reply to comment #17)
> (In reply to comment #15)
> > Is there an overview of these versions somewhere?
> 
> You can look at a build (About dialog or 'plugins' directory) which bundles
> are included but there is no documentation that shows which version is in
> which release. But that doesn't really matter. If a project like EGit
> defines that it runs against 3.5 then the developers should set the PDE
> target to a 3.5 install. This avoids the usage of improper APIs or the
> acceptance of patches with such.

You really need to test against both older and newer Eclipse versions.
Comment 20 Matthias Sohn CLA 2012-11-05 17:42:27 EST
(In reply to comment #12)
> It looks like changes got merged that make this a fact, e.g.
> https://git.eclipse.org/r/5134

(In reply to comment #18)
> (In reply to comment #16)
> > Review for revert:
> > 
> > https://git.eclipse.org/r/8514
> 
> Can't we move forward. We've long ago established the principle of only
> supporting the two latest versions. By accident 3.5 and 3.6 have continued
> to work.

yes, I think we should move forward, this was my intention when filing this bug.
If we agree on that I'd update the title of this bug accordingly to EGit 2.2 and close it.
Comment 21 Robin Stocker CLA 2012-11-05 18:34:58 EST
Ok, let's move forward. Can we keep this open until we have done all the cleanup?:

- Remove org.eclipse.egit.psf-feature (no longer needed)
- Remove old target platforms (pom.xml and .target files)
- More?
Comment 22 Dani Megert CLA 2012-11-06 03:49:40 EST
(In reply to comment #19)
> (In reply to comment #17)
> > (In reply to comment #15)
> > > Is there an overview of these versions somewhere?
> > 
> > You can look at a build (About dialog or 'plugins' directory) which bundles
> > are included but there is no documentation that shows which version is in
> > which release. But that doesn't really matter. If a project like EGit
> > defines that it runs against 3.5 then the developers should set the PDE
> > target to a 3.5 install. This avoids the usage of improper APIs or the
> > acceptance of patches with such.
> 
> You really need to test against both older and newer Eclipse versions.

Well, test yes. But using the lowest target is enough regarding API - at least for the Eclipse SDK code which is upwards API compatible. At any rate, using the lowest target is better than using the latest.
Comment 23 Dani Megert CLA 2012-11-06 03:52:46 EST
(In reply to comment #21)
> Ok, let's move forward. 

This is something that the project lead(s) or even the PMC have to decide and comment here. As said in comment 10 I'm also in favor of moving forward.
Comment 24 Matthias Sohn CLA 2012-11-06 12:10:45 EST
AFAIK we never promised to support older releases than the last two platform releases, this is documented in [1]. That we still support Galileo is due to the fact that nobody found time to start the clean-up.

[1] http://wiki.eclipse.org/EGit/FAQ#What_versions_of_Eclipse_does_EGit_target.3F
Comment 25 Chris Aniszczyk CLA 2012-11-06 12:19:59 EST
+1 to moving forward

We've long ago established a very sensible and transparent policy that we will only support the two latest versions of Eclipse: http://wiki.eclipse.org/EGit/FAQ#What_versions_of_Eclipse_does_EGit_target.3F

We can also be used as a carrot for people to move forward to a newer release of Eclipse if they want to use a newer version of EGit. If not, they use an older and officially supported version.
Comment 26 Robin Stocker CLA 2012-11-06 14:43:01 EST
Prepared changes:

> - Remove org.eclipse.egit.psf-feature (no longer needed)

https://git.eclipse.org/r/8542

> - Remove old target platforms (pom.xml and .target files)

https://git.eclipse.org/r/8543
Comment 27 Matthias Sohn CLA 2012-11-09 17:56:35 EST
(In reply to comment #26)
> Prepared changes:
> 
> > - Remove org.eclipse.egit.psf-feature (no longer needed)
> 
> https://git.eclipse.org/r/8542

merged as 70c892198c8519422abec216c505c28523e72a2c

> > - Remove old target platforms (pom.xml and .target files)
> 
> https://git.eclipse.org/r/8543

merged as ad9ef860a073f03f541303e38d0a33f02ff04962
Comment 28 Dani Megert CLA 2012-11-12 06:53:24 EST
(In reply to comment #27)
> (In reply to comment #26)
> > Prepared changes:
> > 
> > > - Remove org.eclipse.egit.psf-feature (no longer needed)
> > 
> > https://git.eclipse.org/r/8542
> 
> merged as 70c892198c8519422abec216c505c28523e72a2c

This can break clients who refer to that feature, see e.g. http://dev.eclipse.org/mhonarc/lists/egit-dev/msg02924.html
Comment 29 Matthias Sohn CLA 2012-11-22 19:09:07 EST
> This can break clients who refer to that feature, see e.g.
> http://dev.eclipse.org/mhonarc/lists/egit-dev/msg02924.html

Any hints how to fix this ? Does p2 provide a way to uninstall the feature on upgrade ?
Comment 30 Dani Megert CLA 2012-11-23 03:10:55 EST
(In reply to comment #29)
> > This can break clients who refer to that feature, see e.g.
> > http://dev.eclipse.org/mhonarc/lists/egit-dev/msg02924.html
> 
> Any hints how to fix this ? Does p2 provide a way to uninstall the feature
> on upgrade ?

Pascal, can you give an advice here?
Comment 31 Matthias Sohn CLA 2012-11-27 08:54:49 EST
isn't that fixed by https://git.eclipse.org/r/#/c/8857/ ?
Comment 32 Dani Megert CLA 2012-11-27 09:02:11 EST
(In reply to comment #31)
> isn't that fixed by https://git.eclipse.org/r/#/c/8857/ ?

Not 100%, I guess since that fixes the p2 / install problem but not the case where a product directly references/requires the feature. Not sure how important that case is though.
Comment 33 Pascal Rapicault CLA 2012-11-27 16:34:10 EST
Let me first start by summarizing the situation:
- You want to get rid of a feature, however there are other features or products depending on it, so people won't be able to move forward.

Solution (for what I understood is the problem :))
- Since you can't get rid of the dependencies on the feature to be removed, you have two possibilities. 
  1) Don't remove the feature from the build, but instead just empty it. This way the dependencies are still satisfied. The advantage of this approach is that it is simple to put in place. The drawback is that you still build and ship this feature.
  2) Remove the feature from the build, but have another feature or plugin pretend being the removed feature. This is what I refer to "identity theft". A plugin or feature pretend being another IU. This can be achieved by having a p2.inf providing the capabilities of the removed feature. The advantage with this approach is that you actually get rid of the feature.
Comment 34 Matthias Sohn CLA 2012-12-06 18:45:43 EST
(In reply to comment #33)
> Let me first start by summarizing the situation:
> - You want to get rid of a feature, however there are other features or
> products depending on it, so people won't be able to move forward.
> 
> Solution (for what I understood is the problem :))
> - Since you can't get rid of the dependencies on the feature to be removed,
> you have two possibilities. 
>   1) Don't remove the feature from the build, but instead just empty it.
> This way the dependencies are still satisfied. The advantage of this
> approach is that it is simple to put in place. The drawback is that you
> still build and ship this feature.
>   2) Remove the feature from the build, but have another feature or plugin
> pretend being the removed feature. This is what I refer to "identity theft".
> A plugin or feature pretend being another IU. This can be achieved by having
> a p2.inf providing the capabilities of the removed feature. The advantage
> with this approach is that you actually get rid of the feature.

I think my change https://git.eclipse.org/r/#/c/8857/ implements 2) or do I miss something ?
Comment 35 Matthias Sohn CLA 2012-12-19 09:02:58 EST
I think this is fixed with change https://git.eclipse.org/r/#/c/8857/