1What is Eclipse?

Not to be confused:

  • Eclipse Foundation
  • Eclipse Platform
  • Eclipse SDK (Platform + JDT + PDE)
  • Eclipse IDEs (Platform + plugins such as JDT)
  • Eclipse p2 is used to "Install New Software".
  • Eclipse working groups
  • Eclipse projects

Wikipedia explains Eclipse better than Eclipse explains itself?1

What projects are in the Eclipse Foundation? Wikipedia answers this better than Eclipse itself does.2

<2019-06-11> No Eclipse events in Asia. Eclipse events seem to be mostly in Europe.

Eclipse is like Emacs but in Java instead of Elisp.

"The original vision of Eclipse was to accelerate the creation of IDEs"3

I find the code unpleasant. For example, WorkbenchPage, why is openEditors not implemented in terms of openEditor? Also, the p2 API can be made easier to use.

2Using Eclipse as a Java IDE

2.1How to use Eclipse?

Download Eclipse SDK (not to be confused with Eclipse Platform).

<2019-06-11> Eclipse 4.11 does not work on Ubuntu 14.04, but this is fixed in Eclipse 4.12.4

Switch View / Editor / Window / Tab ? What's it called? What are the things/ontologies? Workbench? Workspace?

2.2Keyboard shortcuts

The mother of all shortcuts:

  • Shift+Ctrl+L: Show Keyboard Shortcuts
  • Ctrl+3: Quick Access
  • Alt+Shift+Q: Show View

Perspectives:

  • Ctrl+F8: Next Perspective
  • Ctrl+Shift+F8: Previous Perspective
  • Ctrl+O: Quick Outline, like IntelliJ IDEA Ctrl+F12

Mylyn5

  • Ctrl+F9: "Activate Task" dialog
  • Ctrl+F12: "Open Task" dialog
  • Shift+Alt+Q K: Open "Task List" View
  • Shift+Ctrl+F9: Deactivate Task

Are there shortcuts for these?

  • Open a Perspective

Learn Eclipse keyboard shortcuts?6

2.3Why do we need IDE?

To keep complexity under control, because we have extremely limited capacity for complexity.

You don't need IDE for small programs (hundreds of lines of code, or maybe even in the low thousands of lines of code).

2.4Eclipse for Java development

Install M2E7.8

3Unanswered questions

3.1Some unanswered questions

  • How to make Eclipse feel more like IntelliJ IDEA?
  • What is the best way to navigate?
  • How do I see the summary of all Eclipse projects? Where is the data source?

How do I ensure that all Eclipse installations at different machines use the same coding style for my project?

  • Export my Eclipse preferences?
  • Are per-project settings carried to different machines?
  • Write a plugin to enforce that?

How do I import a Maven project (one with pom.xml)?

Who is the target audience of the eclipse.org website? "Eclipse.org always seemed more interested in promoting the Eclipse Foundation than the IDE. The website feels like a collection of independent projects which are not maintained."9 Some counter-arguments?101112

Why does Eclipse "Toggle Comment" have three shortcuts: Ctrl+/, Ctrl+7, Shift+Ctrl+C? Who is in charge of designing the user experience?

3.2Is a "Foundation" a software graveyard?

"A private actor giving away software to a foundation might be interpreted in different ways. In this case and despite all reassuring talks around the move, this is not a good sign for the future of Ceylon."13

(JetBrains Kotlin, Red Hat Ceylon, and Eclipse eXtend?)

There seems to be a trend of companies "donating" projects, that they no longer want, to non-profit foundations such as the Eclipse Foundation and the Apache Foundation.

Apache Foundation also has lots of Java projects. What is the difference between Eclipse Foundation and Apache Foundation?

"tl;dr Apache is no longer the place projects go to die and Eclipse is expanding from just IDEs."14

  • "there's one thing that a software foundation brings that GitHub can't replicate: a home for intellectual property."

3.3Can JDK 11 run Eclipse faster than JDK 8?

Git 2.20.0 (2019) is faster than the Git that comes with Debian 9 (2017) which is faster than the Git that comes with Ubuntu 14.04 (2014).

3.4What can the OSGi Console do?

3.5e4?

https://eclipsesource.com/blogs/2012/05/10/eclipse-4-final-sprint-part-1-the-e4-application-model/

3.6JFace?

https://www.vogella.com/tutorials/EclipseJFace/article.html

3.7JDT UI

https://wiki.eclipse.org/JDT_UI/How_to_Contribute

https://www.eclipse.org/jdt/ui/doc/bug-annotation.php

3.8If I want to make my own IDE, should I use DLTK or Xtext or both?

https://en.wikipedia.org/wiki/Dynamic_Languages_Toolkit

https://en.wikipedia.org/wiki/Xtext

https://jaxenter.com/eclipse-dynamic-language-toolkit-100025.html

3.9Run OSGi framework from command line

https://stackoverflow.com/questions/15787916/headless-osgi-framework-from-command-line

3.10Using Eclipse to develop Eclipse?

Multiple profiles?15

4Developing Eclipse

The "Platform Plug-in Developer Guide" in Help Center16.

4.1How do I install the Platform plugin that I am developing so that it overrides/shadows/replaces the version that comes with Eclipse?

First, make sure that your plugin will not prevent you from booting Eclipse. You can self-host (run another Eclipse instance from your Eclipse instance). As simple selecting a file in your plugin, and then Run > Debug As > Eclipse Application (or press F11 if that is already selected).

Then, use this menu: File > Export > Plug-in Development > Deployable plug-ins and fragments > Install into host. This is in the help that comes with Eclipse: Help > Help Contents > Plug-in Development Environment Guide > Tasks > PDE UI > Export and Install into the Running Host.

How do we know that our plugin is installed?

Help > About > Installation Details. (or Ctrl+3 "ins det")

That feature is very handy: No need to understand P2. If anything breaks, nuke the Eclipse installation, and reinstall everything.

Can't use dropins because it can't override installed plugins.

What if it breaks? It can be reverted.17 But the same page says "Unfortunately, because of p2 design flaws, revert usually doesn't work when you need it." WHAT!?

But it worked for me, but perhaps that's because I try not to be too wild with Eclipse.

Advanced: Creating an update site for your plugin18

4.2How to not block the UI thread

Eclipse Jobs and Background Processing - Tutorial19

There is also an article in the Eclipse wiki but I forgot the URL.

5Contributing to Eclipse

5.1What can be contributed, in descending order of importance?

What can be contributed?20 Code, documentation, issue report, money, votes for bugs, triaging, committing, moderating, usage?

"Google Summer of Code: Participate and get paid for coding!"21 But I'm not a student. Why is it only for students?

5.2How do we find out whether we and the Foundation are aligned?

What does the Foundation think is important? What is the Foundation's strategy and goals? Are we and the Foundation aligned with each other? What are the economic incentives?

The IDE does not make money?

https://www.eclipse.org/org/councils/roadmap_v6_0/

Strategic focus areas: cloud native Java, IoT and edge, automotive, tools22. "no GPL or AGPL".

"Our community is innovating on the next generation of cloud native developer tools." Does that mean that they will "abandon" the Java IDE?

They are de-emphasizing Java?

They missed the JavaScript boat?23

They are going to focus on Orion and the Web.

"Eclipse tools have historically had a very strong correlation with the Java language. However, with the rapid growth of Rich Internet Application languages and technologies such as JavaScript and Ajax, the Eclipse community must support the requirements of these developers as well. Eclipse will begin to invest in re-tooling the Eclipse platform with the needs of Web developers in mind."

What's with all that IoT? Is that where the money is?

2011 will see another release of the Eclipse 4 stream, Eclipse 4.1. The major goals of this new release include:

  • Making it easier to write plug-ins
  • Allowing better control over the look of Eclipse based products
  • Increasing diversity of contributors to the platform
  • Maintaining backward compatibility for API-clean clients

mature = dead?

'Then I read the Eclipse forums and found out that there was a major UI redesign with no automated testing and very little manual testing, and the reason was "unfortunately there's no budget for testing". This was the word of the actual official devs, by the way. They decided to do a massive rewrite without testing. It boggles the mind.'24

<2019-06-23> It has been around for 17 years (since 200125) and is still active as of 2019, and it won't die soon.

Don't invest in some technology that is going to be abandoned 10 years later.

We have two choices:

  • Invest in shitty technology that has been around for 20 years and doesn't seem to die any time soon.
  • Pick a new rad thing that God knows how long it will survive.

Like it or not, Java is here to stay. Nobody is going to be too eager to rewrite all their legacy code. After all, those legacy code has been working fine.

All code becomes legacy as soon as it is written.26

They will "abandon" the Java IDE; move people to other projects, every bug will be wontfix "Our community is innovating on the next generation of cloud native developer tools."

5.3How do I know whether a project is not dead?

To find whether a project is not dead, look at two things: its Git stats27 and its Bugzilla stats28.

5.4How to contribute?

https://wiki.eclipse.org/Category:How_to_Contribute

What is the code contribution process/workflow?

  • component owner

Bug reporting FAQ29:

  • "What is the difference between Severity and Priority?"
    • Severity is assigned by a user. Priority is assigned by the developer/committer. Yes, there do exist P5 blockers30 and P1 enhancements31.

"If the cost/benefit ratio of a bug does not change, it may remain unaddressed forever."

There are too many issues and too few people to work on them. Committers are overloaded and are under time pressure of their release schedule.

https://wiki.eclipse.org/Development_Resources

How to use Eclipse Bugzilla?32 Life cycle. What conventions? "helpwanted" keyword? What is the difference between "bugday" and "helpwanted"? Which one is for beginner? Issues marked with "bugday" are friendly to absolute beginners. Issues marked with "helpwanted" is the next step.

The list of keywords and their meanings33

5.5What is the Eclipse marketplace?

How do we make money from that? What is being bought and sold? What is being exchanged?

5.6Build?

Build Eclipse Platform (not just the UI) from source code? Build instructions?34

5.7Code contribution workflow

There are two workflows:

  • Bugzilla-first (talk first act later)
  • Gerrit-first (act first talk later)

If your change is big, discuss it on Bugzilla first.

Use SSH to connect to Gerrit and push experimental commits.35

Must we make a Bugzilla issue before we push to Gerrit for review? Must every Gerrit review have a Bugzilla issue? No.

"Once a Gerrit change set is created, the link to the Gerrit change should be posted on the Bugzilla. If you are using the correct commit format, this is done automatically by the Eclipse infrastructure."36

But what if I just want to test my commits without notifying anyone, because the commits are still sketchy?

After Gerrit, EGit Bot automatically creates a continuous-integration build for the patch set. We can see build errors here before pushing to production and embarrassing ourselves. Cool!

5.8Set up Gerrit

Follow the wiki37.

  • Upload SSH public key to Gerrit.38

If you still can't connect, file a bug in "Community > Gerrit"39. Sometimes you can't connect to Gerrit.40

5.9For committers

https://wiki.eclipse.org/Eclipse/Rhythm

5.10Development tools

Install "e4 spies" from the marketplace.41 There are several spies in that package.42

Use Plugin Spy (Shift+Alt+F1) to find where to insert menus, modify Eclipse Platform UI, etc.

Menu Spy (Shift+Alt+F2)

5.11The code?

https://wiki.eclipse.org/Status_Handling_Best_Practices

6How do I make a Mylyn task repository connector?

The official documentation43 is somewhat outdated.

Does the 2009 Mylyn connector crash course44 help?

<2019-06-23> The last news was from 2011.45 Is Mylyn dead? Did it ever catch on?

<2019-06-22> Mylyn has hardly any new developments? The Git commits are rather few?

<2019-06-22> Editing the Wiki requires review. But there does not seem to be any reviewer. I've been waiting for two days and there does not seem to be any approval. Perhaps I should try opening a Bugzilla issue to ask for a Wiki edit review?

It seems that back in 2008–2013 they tried to force-fed Mylyn to developers and it backfired.46

6.1Create a plugin

Open Resource: plugin.xml.

Open "Dependencies" page.

Add dependencies to these bundles:

org.eclipse.core.runtime
org.eclipse.jface
org.eclipse.mylyn.commons.ui
org.eclipse.mylyn.tasks.core
org.eclipse.mylyn.tasks.ui
org.eclipse.ui.forms
org.eclipse.ui.workbench

6.2Implement basic repository information

  • Create a subclass of AbstractRepositoryConnector
    • Define a static final String field KIND
    • Implement getConnectorKind returning KIND
    • Implement getLabel

6.3Implement task reader

  • Create a subclass of AbstractTaskDataHandler
    • Implement initializeTaskData
  • Create a subclass of AbstractRepositoryConnector
    • These methods should have been in AbstractTaskDataHandler
      • Implement getTaskData
      • Implement updateTaskFromTaskData

6.4Create an editor

  • Create a subclass of AbstractTaskEditorPage
  • Create a subclass of AbstractTaskEditorPageFactory

6.5Implement task writer

  • In AbstractRepositoryConnector
    • Implement canCreateNewTask

6.6Create GUI forms

  • Create a subclass of AbstractRepositoryConnectorUi
    • Implement getSettingsPage
    • Implement getQueryWizard
    • Implement getNewTaskWizard

6.7Add extensions in plugin.xml

Add these extensions:

  • org.eclipse.mylyn.tasks.ui.repositories
    • connectorCore: the qualified name of your subclass of AbstractRepositoryConnector
    • connectorUi: the qualified name of your subclass of AbstractRepositoryConnectorUi

7How do we get paid to develop Eclipse?

While still retaining all our IPs?

One way is to be an employee of an Eclipse Foundation member such as RedHat? But what company doesn't have IP assignment?

Can we get paid developing Eclipse?47

no individual bug bounties, too much administrative overhead48

"This was the purpose of FEEP and it wasn't so successful. It added a lot of work on the Foundation bucket and was unfair since effort was focused on the IDE while the community is about much more"49

8Applications

"Technically, an Eclipse application is a plug-in that creates an extension for the extension point org.eclipse.core.runtime.applications."50

9Where is the Eclipse Provisioning perspective?

Install New Software > "Equinox p2, SDK" (org.eclipse.equinox.p2.sdk.feature.group)

Use it carefully, because it may break your Eclipse installation?

(Begin rant.)

The wiki does not seem to answer that very basic question.51

Unanswered question, 200952

Obscure page with the answer53. It contains dangerous deletion scripts. Do not run.

10What can the OSGi Console do to a running Eclipse IDE?

"This article demonstrates how to use the OSGi console and how to extend the console" in Eclipse54.

List some bundles.55

"The Gogo shell, on which the Equinox console is based, […]"56 "Apache Felix Gogo is a subproject of Apache Felix implementing a command line shell for OSGi."57

List of Gogo shell commands58

Console is not a de jure OSGi standard. "Unfortunately [OSGi RFC 147] was never made a standard."59

How does this relate with Java 9's JShell, BeanShell, etc.?

What is OSGi's ontology? Containers, runtime-environments, frameworks? Same or different?

Internet opinions on Equinox, Felix, and Knoplerfish?6061

Why do we need more two OSGi container implementations from two non-profit organizations? Isn't this a waste of resources?

11Eclipse ontology

Eclipse application is OSGi application

Product = application + branding62

Eclipse workspace = OSGi instance area

12We can add chat to our IDE by ECF?

Eclipse Communication Framework?

"The Eclipse Communication Framework has a Jabber client built in"63?

13How to create custom Eclipse distribution/product?

201464

Given a bundle id, how do I find the update site? Eclipse Oomph?65

PDE build defect?66

Jed Anderson's answer: "Plugins: Finding plugins involves lots of hunting for update sites and then you can never be sure you got the exact right binaries. Sometimes update sites go down, or you lose support for your Eclipse version when the plugin developers release a new update site. One suggestion is to make local copies of update sites to mitigate your exposure to such problems."67

14Mailing lists

It may be more efficient to watch mailing lists than bug trackers.

  • Email shows what people are actually working on.
  • Email is much faster and more pleasant to use, navigate, and search than Eclipse Bugzilla is.
  • When shit happens, it goes to email first, and then the bug tracker later, if it ever touches the bug tracker.

Example of shit happens: I20190520-180568. How the hell are we going to know that, if not from the mailing list? The download page does not say anything?

Do not just download an I-build willy-nilly. Look at the platform-dev mailing list first.

This page69 reachable from this page70 is stale. There are no more S-builds. There are only R-builds and I-builds now.

platform-dev71

pde-dev72

jdt-dev73

The question: When should we use email, and when should we use bug tracker?

15Eclipse vs IntelliJ IDEA

I used IDEA 2018 and Eclipse 2019.

  • Eclipse starts faster and uses less RAM. Perhaps this is because Eclipse indexes less eagerly than IDEA does.
  • IDEA has better navigation, autocompletion/intellisense/content-assist, and editor tab behavior.

16Developing Prolog in Eclipse

Several options:

  • Uni-Bonn PDT74
  • Cancinos ProDT75 a.k.a. ProDevTools76

Uni-Bonn PDT seems more mature.


  1. https://en.wikipedia.org/wiki/Eclipse_Foundation

  2. https://en.wikipedia.org/wiki/List_of_Eclipse_projects

  3. https://www.eclipse.org/org/councils/roadmap_v6_0/themes60.php

  4. https://bugs.eclipse.org/bugs/show_bug.cgi?id=544498

  5. https://wiki.eclipse.org/Mylyn/User_Guide#Shortcuts

  6. https://stackoverflow.com/questions/1986195/eclipse-list-of-default-keyboard-shortcuts

  7. https://www.eclipse.org/m2e/

  8. https://www.vogella.com/tutorials/EclipseMaven/article.html

  9. https://movingfulcrum.com/the-fall-of-eclipse/

  10. https://www.reddit.com/r/programming/comments/52mcf3/the_fall_of_eclipse/

  11. https://news.ycombinator.com/item?id=10273849

  12. 'this started with a simple but brilliant idea JetBrains developers had: "disk space is dirt cheap, let's use 1-2 GB of it to store index, so that autocompletion could work lightining fast"' https://news.ycombinator.com/item?id=10273849

  13. https://dzone.com/articles/the-rise-and-fall-of-jvm-languages

  14. http://insightfullogic.com/2013/Oct/12/resurgence-apache-and-eclipse/

  15. https://stackoverflow.com/questions/5856735/multiple-eclipse-profiles

  16. https://www.eclipse.org/documentation/

  17. https://wiki.eclipse.org/FAQ_Revert_an_Update_or_Installation_with_p2

  18. https://www.vogella.com/tutorials/EclipsePlugin/article.html#exercise-create-an-update-site-your-plug-in

  19. https://www.vogella.com/tutorials/EclipseJobs/article.html

  20. https://wiki.eclipse.org/Contribute

  21. https://wiki.eclipse.org/Contribute

  22. https://www.eclipse.org/membership/documents/eclipse-foundation-overview.pdf

  23. smrtinsert https://news.ycombinator.com/item?id=16940646

  24. the_af https://news.ycombinator.com/item?id=16940646

  25. https://en.wikipedia.org/wiki/Eclipse_(software)

  26. https://leejo.github.io/2016/02/22/all_software_is_legacy/

  27. https://git.eclipse.org/c/

  28. https://bugs.eclipse.org/bugs/

  29. https://wiki.eclipse.org/Bug_Reporting_FAQ

  30. https://bugs.eclipse.org/bugs/buglist.cgi?bug_severity=blocker&list_id=18791338&priority=P5&query_format=advanced

  31. https://bugs.eclipse.org/bugs/buglist.cgi?bug_severity=enhancement&list_id=18791337&priority=P1&query_format=advanced

  32. https://wiki.eclipse.org/Development_Resources/HOWTO/Bugzilla_Use

  33. https://bugs.eclipse.org/bugs/describekeywords.cgi

  34. https://wiki.eclipse.org/Platform-releng/Platform_Build

  35. https://wiki.eclipse.org/Gerrit

  36. https://wiki.eclipse.org/Platform/How_to_Contribute

  37. https://wiki.eclipse.org/Gerrit

  38. https://git.eclipse.org/r/#/settings/ssh-keys

  39. https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Community&component=Gerrit

  40. https://bugs.eclipse.org/bugs/show_bug.cgi?id=548554

  41. https://marketplace.eclipse.org/content/e4-spies

  42. https://www.vogella.com/tutorials/EclipsePlatformDevelopment/article.html#eclipse_ide_spies

  43. https://wiki.eclipse.org/Mylyn/Integrator_Reference#Tasks_API

  44. http://mirror.rise.ph/eclipse//mylyn/docs/2009-03-mylyn-connector-crash-course-talk.pdf

  45. https://www.eclipse.org/mylyn/

  46. http://paranoid-engineering.blogspot.com/2008/07/what-is-eclipse-mylyn-anyway.html

  47. https://www.eclipse.org/contribute/dev_program.php

  48. https://bugs.eclipse.org/bugs/show_bug.cgi?id=309536

  49. https://bugs.eclipse.org/bugs/show_bug.cgi?id=516825

  50. https://wiki.eclipse.org/FAQ_What_is_an_Eclipse_application%3F

  51. https://wiki.eclipse.org/Equinox/p2/Admin_UI_Users_Guide

  52. https://www.eclipse.org/forums/index.php?t=tree&th=40275&goto=130850&

  53. https://wiki.eclipse.org/Starting_Eclipse_Commandline_With_Equinox_Launcher/p2_Admin_UI

  54. https://www.ibm.com/developerworks/library/os-ecl-osgiconsole/index.html

  55. https://www.javaworld.com/article/2077837/java-se-hello-osgi-part-1-bundles-for-beginners.html?page=3

  56. https://help.eclipse.org/2019-03/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fconsole_shell.htm

  57. https://felix.apache.org/documentation/subprojects/apache-felix-gogo.html

  58. https://felix.apache.org/documentation/subprojects/apache-felix-gogo.html

  59. https://felix.apache.org/documentation/subprojects/apache-felix-gogo.html

  60. https://stackoverflow.com/questions/36276175/osgi-container-equinox-vs-apache-felix-inside-apache-karaf

  61. https://www.quora.com/What-are-the-pros-and-cons-of-using-Apache-Felix-versus-Knopflerfish-as-OSGI-framework

  62. https://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fruntime-options.html

  63. https://stackoverflow.com/questions/12083285/chat-for-eclipse-ide-in-ubuntu

  64. https://martijndashorst.com/blog/2014/07/07/custom-eclipse-luna

  65. https://wiki.eclipse.org/Eclipse_Oomph_Authoring#How_to_find_a_P2_repository_at_Eclipse_using_the_Repository_Explorer

  66. https://wiki.eclipse.org/Platform_Releng/Common_build_issues

  67. https://stackoverflow.com/questions/351373/creating-an-eclipse-distribution

  68. https://www.eclipse.org/lists/platform-dev/msg01654.html

  69. https://download.eclipse.org/eclipse/downloads/build_types.html

  70. https://download.eclipse.org/eclipse/downloads/

  71. https://www.eclipse.org/lists/platform-dev/threads.html

  72. https://www.eclipse.org/lists/pde-dev/threads.html

  73. https://www.eclipse.org/lists/jdt-dev/threads.html

  74. https://sewiki.iai.uni-bonn.de/research/pdt/docs/start

  75. https://marketplace.eclipse.org/content/prolog-development-tools-prodt

  76. https://sourceforge.net/projects/prodevtools/