[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
|
Re: [eclipse-dev] eclipse sdk v5 ❤
|
on resources: i agree on the constraints, but gently disagree
on the inference. a v5 commitment is not a demand for more
volunteer hours from existing contributors, but a clear
message to companies that investment here has a direction and
a destination. setting a clear vision and roadmap can help
drive more contributors.
How would you get contributors interested in doing that work that
wouldn't be possible without a "v5 commitment"? Also note that I
think that most companies earning money from Eclipse (and the RCP
applications they are building) would be scared off by hearing
about a v5. Not getting enough resources "despite" being a
rewrite/big new thing is pretty much the main problem Initiative
31 is facing so I don't see why this would be different.
on per-change compatibility windows: here our difference is
very tiny! you describe multiple changes with individual
migration windows moving at different speeds. the issue with
that is, in the absence of overarching commitment to remove
those, the layers can become permanent, and Eclipse 4 is the
evidence. the e4 compatibility layer had no coordinated
sunset, so it is still there.
Many products would probably never migrate, this isn't really an
option in my opinion.
on AI: my AI argument is about Eclipse's survival and
relevance, not about forcing personal preferences or changing
any individual's workflow.
I still have no idea why a rewrite would be necessary or even help
with integrating AI when everything necessary is there. And AI
shouldn't be the reason for a rewrite breaking compatibility
anywhere else. Anything done "for AI" shouldn't negatively impact
anyone who doesn't want it. (I'm also tired of the "AI is
necessary to survive" argument, you don't need to repeat it to
me.)
the changes need to happen
If you are talking about agreeing on specific changes that need to
happen, I don't see that. While there are some things I'd like to
see (including work on CDS which doesn't require anything
impacting compatibility for example), I don't think there are that
many changes relevant here that I think need to happen. As you
mentioned wanting to set a "clear vision and roadmap", I don't
think you even know the changes that "need to happen" which I'd
argue is a prerequisite to agreeing on these changes with anyone.
changes need clear migration paths
migration need explicit expiry
I'm not so sure about this. While I don't have an issue with
migration paths, there are many reasons why plans like that need
to change. If people didn't finish getting rid of a deprecated
feature, that might be an argument for keeping it (at least for
some time) and people can still get the advantages of the new
feature while the old version is still around. While it can be
helpful to define a plan for when something should be removed,
that would rather be a "minimum" time.
rcp as a class I citizen.
I guess that is something I personally agree with (despite not
working on any RCP applications).
To be honest, I also don't like the idea of a compatibility
"layer", I prefer having building on top of existing things (e.g.
capability to use JPMS modules within OSGi and e.g. generating
module descriptors at compile-time (tycho) and using the existing
approach where necessary) without really deprecating the "old"
approach.
As I previously mentioned with regard to scaring people with a
v5, I would strongly recommend not calling it v5. I don't think
people want that.
That being said, please note that I'm not a committer on any
Eclipse project, I am not involved in decisions. I am just saying
my personal opinions (which may or may not help you with improving
your proposal). However, in addition to the mailing lists, I think
you might be interested in the devcall every two weeks: https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/wiki/Eclipse-IDE-%E2%80%90-Developers-Community-Call.
There, some people working on Eclipse including some people
working on RCP apps meet and you might be able to gather other
opinions on that topic. You can find an invite in the calendar
linked on the top of that page. However, I would still recommend
providing concrete evidence on why you think it's necessary to
break compatibility in a significant way (at least I'm not
convinced of that at all).
On 29/05/2026 17:37, GIREESH PUNATHIL
wrote:
Daniel: great! thankful to see you acknowledging i) competitive
gap exists ii) lazy activation could eventually become default
and iii) need of compatibility window. i think we are converging
on many aspects!
on resources: i agree on the constraints, but gently disagree on
the inference. a v5 commitment is not a demand for more
volunteer hours from existing contributors, but a clear message
to companies that investment here has a direction and a
destination. setting a clear vision and roadmap can help drive
more contributors.
on per-change compatibility windows: here our difference is very
tiny! you describe multiple changes with individual migration
windows moving at different speeds. the issue with that is, in
the absence of overarching commitment to remove those, the
layers can become permanent, and Eclipse 4 is the evidence. the
e4 compatibility layer had no coordinated sunset, so it is still
there.
on RCP: agree 100%. any v5 process should consider RCP as the
exemplary use case when defining migration paths, deprecations,
sunset and timelines. if a v5 migration path works for RCP, it
works for everyone.
on AI: my AI argument is about Eclipse's survival and relevance,
not about forcing personal preferences or changing any
individual's workflow.
in summary, i think we agree on most parts:
- the changes need to happen
- changes need clear migration paths
- migration need explicit expiry
- rcp as a class I citizen.
where we may differ is whether the compatibility layer needs a
coordinated migration path and expiry. to me, that definition is
what a v5 draft could contain.
WDYT?
This Message Is From an External Sender
This message came from outside your organization.
> while
each of these is technically valid, they all are proposals to
optimize within the current architecture, not helping
evolution based on changing technologies, programming
practices and expectations.
That
is the point I'm making. There are a lot of opportunities for
improvement within the current architecture (and some with
possibly major non-breaking changes). With people not having
enough time/resources to improve performance within the
"current architecture", I don't have any reason to think why
people would be willing to take on the even bigger effort of
making major changes to how everything works. For example, you
could take a look at Initiative 31 (https://github.com/swt-initiative31/documents/blob/main/report/overall_report.md)
which was about changing SWT to use a single (more modern)
stack across operating systems. It concluded that it would be
possible (some things are even being integrated - without
significantly breaking compatibility) but it would be too much
work without companies willing to invest the necessary amount
of resources.
> lazy
activation? add a system property
That
system property would be a compatibility layer that could
eventually default to lazy activation (but using eager
activation at first).
> here
is my take: the traditional IDE shell (the menus, the views,
perspectives, the edit-compile-debug loop) is under genuine
pressure from AI tools. they are already replacing significant
parts of the classical developer workflow and making many of
these views and actions redundant.
While
this may be applicable to many people, there are also a lot of
people that don't want to use AI tools. Any change made should
not negatively affect that workflow (in my opinion).
Another
thing you should consider is RCP applications which is one
thing where Eclipse is used a lot (and which contributes a lot
to the resources spent on developing the Eclipse IDE). With
there being many applications based on the Eclipse Platform,
changes like that (especially something like replacing the
class loading approach with JPMS modules) have a noticable
(not to say disproportionate) affect on these applications as
well whereas forcing them to rewrite their application to
improve the standard IDE is not reasonable.
To
sum it up, I think it's probably better to make smaller
changes in a compatible way (and deprecate and remove these
compatibility helpers/layers in the future) rather than
creating a v5 where there are a lot of changes at once (which
also won't be completed within the next few years). That would
also allow moving faster with some parts of that effort than
with others. Instead of one compatibility window, there can be
a compatibility window for each change requiring it.
On 28/05/2026 13:49, GIREESH
PUNATHIL via eclipse-dev wrote:
at this point i want to step back from individual topics, as
i think otherwise the top level point gets lost. every time
a structural concern is raised, the response has been a
local fix:
startup too slow? some JDK flag gives us 20%
lazy activation? add a system property
lingering stale APIs? policy is in place
while each of these is technically valid, they all are
proposals to optimize within the current architecture, not
helping evolution based on changing technologies,
programming practices and expectations.
the competitive reality is that eclipse is losing ground[1].
it is not an option or an opinion, instead reality. AI SDK
integrations ignored us. IMO, other IDEs didn't become
popular through better Java support but with better
architectural choices from day one. The 20% startup
improvement from AOT is real and great, but that 20% of 5
seconds is still 4. VSCode starts in 2. that gap is
architectural and is not tunable.
my v5 proposal is not "rewrite everything and break the
world.”. it is a request for a draft:
- what the next major version should look like
- a formal statement about architectural directions. with
reasons and contexts
- a defined compatibility window for the old path [
example: apple migrated from ppc (p) to inel (x) to arm (a).
easily. each time, a compatibility layer ran the old arch
while the new one matured. and each time, there was a hard
deadline. and each time the ecosystem moved because it had
to! ]
Stephan asked the most relevant and honest question: "does
anybody still need us?" lets all try to answer that directly
rather than deflect it. here is my take: the traditional IDE
shell (the menus, the views, perspectives, the
edit-compile-debug loop) is under genuine pressure from AI
tools. they are already replacing significant parts of the
classical developer workflow and making many of these views
and actions redundant.
This Message Is From an Untrusted Sender
You have not previously corresponded with this sender.
From
what I recall, the "expected" startup improvement with
these things for most applications wouldn't be much more
than 20% so I'm not sure how much that would actually
improve in that area. Also, my point was that there may be
a possibility to get some of that improvement by
supporting externally loaded classes in some way.
If
you think about improving startup time using lazy
activation, you could try asking Heiko Klare (who
participated in that aforementioned discussion) how
changing the activation policy to lazy (or eager) would
affect their startup time since they are interested in
better startup time. If you really want lazy bundle
activation by default, I think the way to go would be
creating a system property or similar that affects the
default (and if some plugin explicitly specifies the
bundle activation policy, I guess that should still be
respected).
However,
I don't see any reason why breaking changes in a "v5"
would motivate people to do performance work.
On 28/05/2026 06:58, GIREESH
PUNATHIL wrote:
thank you Daniel for the link - impressive work and
impressive numbers! but pls note that the 20% startup
improvement with JDK assistance will further benefit if
assisted by eclipse' own re-architecture: probably in
order of multiples. for example VS code has extension
lazy loading by default, enforced at the platform. any
extension needs to request explicitly to get activated,
or else it simply is not loaded. so you are not loading
most of the IDE until its actually needed.
i too haven't heard any one talking about moving away
from OSGi. and i agree, moving away from OSGi isn't
practical too. but OSGi with lazy load enforced at the
platform is is different from the current OSGi. lazy
activation existed since long ago. The fact that it
hasn't solved Eclipse's startup performance problem in
~20 years is an evidence on the architectural
improvement opportunity. in summary, bold experiments
would not happen without bold thoughts, and major
enhancements (such as fast bootstrap) will not happen
without major architectural shifts either.
This Message Is From an External Sender
This message came from outside your organization.
> OSGi
classloading is slow due to one loader per plugin,
among other reasons. JPMS is light weight and can load
classes faster. can v4.x accommodate / entertain this
change? even as an experiment?
I am not sure
whether anyone would be willing to move away from OSGi
in any capacity. If there is a possibility to change
equinox to use module layers with one class loader for
some of the bundles (if there are no split packages or
other things, possibly with tycho automatically
creating a module descriptor for bundles where this is
possible), I guess that could be worth an experiment
but it would be quite a bit of effort (though probably
nothing in comparison to rewriting all bundles). Since
you mentioned startup time here, you might want to
take a look at this discussion I created which is
about using JDK features for better startup time:
https://github.com/eclipse-platform/eclipse.platform/discussions/2060 However,
I think that parts of that may work better with a
somewhat stable classpath and it might be useful to
get in touch with the JDK team to find a solution
where Eclipse/OSGi can tell the JDK about that in some
way (e.g. where these classes come from, possibly one
archive per class loader).
I don't think
getting rid of OSGi is reasonable even for a v5 if
that requires all plugins to change without there
being a compatibility layer of some sort.
> - plugin
registry loading is heavyweight and slow because all
the installed plugins are loaded up front. can we do
lazy activation in v4.x?
I am not sure
but I thought that at least some plugins are loaded
lazily? See also
https://stackoverflow.com/a/17592449/10871900. I
guess what might be needed here is making sure that it
is actually used where it is possible?
On 27/05/2026 18:01,
GIREESH PUNATHIL wrote:
Thank you Daniel! a couple of examples:
- OSGi classloading is slow due to one loader per
plugin, among other reasons. JPMS is light weight
and can load classes faster. can v4.x accommodate /
entertain this change? even as an experiment?
- plugin registry loading is heavyweight and slow
because all the installed plugins are loaded up
front. can we do lazy activation in v4.x?
there are many ways through which we could make
eclipse light weight, above are just few examples.
when you say lightweight is a "matter of
willingness", pls remember none of the v4.x releases
were willing to do this, and we kept on losing
ground. and "we could do this in v4.x itself but
havent" has become indistinguishable from "we
won't." a major version on the other hand creates
the forcing function and opens up opportunities to
experiment.
why do you think eclipse agent project is slow
moving? IMO it is due to the complexity of the code
base. a light weight IDE would make AI integration
seamless.
but from the fact that eclipse agent project is
slow, do you allude that eclipse users do not want
AI SDK? and from a lot of people don't was AI
assistance in SDK, so does the majority of the user
base?
This Message Is From an External Sender
This message came from outside your
organization.
Hi,
> * an IDE
that is lightweight and fast. why this is needed?
because all the competing IDEs are light and fast.
are they more attractive because they are light
and fast? yes. This requires breaking changes with
a major version.
Can you
elaborate what "breaking changes" would be needed
for this? It is already possible to remove plugins
from the default packages (e.g. Mylyn) to make
parts of it faster and make some changes to the
default perspectives for a more "lightweight"
experience (that is just a matter of willingness).
When it comes to performance, there are probably a
lot of optimizations that could be done without
breaking compatibility (which haven't been done
yet). Furthermore (on the "lightweight" side), it
may also be possible to refactor some things into
different OSGi bundles if most users don't need a
part of the functionality and keep the existing
bundle with the extracted bundles as dependencies
to preserve compatibility.
> * an IDE
that AI assistants can easily integrate into.
major LLM SDKs build first class integrations for
other IDEs. AI assisted development is the new
baseline and when we don't have a credible AI
story. developers switch IDEs and do not return.
and we can't do modern AI integration cleanly onto
a 20 year old plugin architecture. This requires
breaking changes with a major version.
I think the
Eclipse Agents (https://github.com/eclipse-agents/eclipse-agents/)
proposal/project already does that but there isn't
sufficient interest to actually put it forward. I
don't see any reason why any of this would require
any breaking changes.
What exactly
are the APIs you need to make breaking changes for
and how "breaking" are they? How would you get
most of the existing plugins working with v5
(including ones that may not be maintained)? Could
you point out what deprecated APIs (or design
decisions) are actually causing the issues you
mentioned? From what I can see, both of the issues
are things that could be addressed without major
breaking changes but I don't feel like having a v5
in sight will make people more willing to
implement these things. I think the main problem
is not being bound by staying on v4 but by the
development capacity for improvements. And if
minor removals are needed, these are probably
still possible.
That being
said, there are a lot of people who don't want AI
assistents at all on their systems. Building the
tools they use around AI assistents would likely
cause annoyances for those people.
Yours,
Daniel
On 27/05/2026 15:37,
GIREESH PUNATHIL via eclipse-dev wrote:
thanks Aleks for the links. the incremental API
removal policy looks good. i did some random
search and found APIs that are 15+ years old
living with deprecated tag. if the policy is
working smoothly, why are some of those APIs
still present? i guess the answer is API removal
is hard when they are fused into the core design
of the IDE.
and that was just one item from the list of
concerns (breaking changes accumulating over
time, exponentially harder for future
migrations, introduction of awkward
workarounds...) i raised.
to me, what are the compelling case for v5? what
are things that cannot be developed without
breaking v4?
* an IDE that is lightweight and fast. why this
is needed? because all the competing IDEs are
light and fast. are they more attractive because
they are light and fast? yes. This requires
breaking changes with a major version.
* an IDE that AI assistants can easily integrate
into. major LLM SDKs build first class
integrations for other IDEs. AI assisted
development is the new baseline and when we
don't have a credible AI story. developers
switch IDEs and do not return. and we can't do
modern AI integration cleanly onto a 20 year old
plugin architecture. This requires breaking
changes with a major version.
This Message Is From an Untrusted Sender
You have not previously corresponded with
this sender.
i want to resume this discussion , but i
lost the old mail thread (more than an year
old), hope the title will help sync with the
thread in the email discussion archive.
what do people think about moving to v5?
i strongly support this.
What would be the
driving new feature/api/design for v5? If such
a development is happening yet - it would
better be shared with the community so more
context could be put in the discussion. At
least I'm not aware of anything like that.
if backward incompatibility and ecosystem
breakage is a concern, the one time manual
efforts for migration is now drastically
reduced with several AI tools available.
on the other hand, if we don't move,
breaking changes accumulate over time,
making it exponentially harder for future
migrations, while code gets filled with
awkward workarounds, old APIs still linger
while better designs are possible....
That's totally not the
case:
Are you actually
looking for the "marketing" effect of v5? I
ask as so far I fail to spot any technical
reason for v5.