OpenLiberty / open-liberty

Open Liberty is a highly composable, fast to start, dynamic application server runtime environment
https://openliberty.io
Eclipse Public License 2.0
1.15k stars 591 forks source link

Integrated set of Liberty tools for developers downloadable from Eclipse IDE's marketplace #10352

Closed yeekangc closed 1 year ago

yeekangc commented 4 years ago

Description

Enable developers that use Eclipse IDE as their IDE to pull down and install from its marketplace an integrated set of tools to code/build/test/debug their Java applications on top of Liberty easily and iterative fast (rapid inner loop) using APIs like Jakarta EE and MicroProfile.

Solution involves creating an Eclipse IDE plugin for Liberty that enables developers to easily create and develop cloud-native Java applications with Liberty in Eclipse IDE.

Plugin should include:

Took some liberties in deleting, ignoring, marking N/A sections that did not seem to apply to a tooling (rather than a runtime) deliverable, while realizing this isn't the only way to interpret or map the runtime process onto tooling. Still left some aspects like the ID and SVT focal approval, and of course the whole UFO process.


Documents

Design Preliminaries

Design

FAT Documentation

Legal and Translation

In order to avoid last minute blockers and significant disruptions to the feature, the legal items need to be done as early in the feature process as possible, either in design or as early into the development as possible. Similarly, translation is to be done concurrently with development. Both MUST be completed before Beta or GA is requested.

Legal (Complete before Feature Complete Date)

Translation (Complete 1 week before Feature Complete Date)

Innovation (Complete 1 week before Feature Complete Date)

In order to facilitate early feedback from users, all new features and functionality should first be released as part of a beta release.

Beta Code

GA

A feature is ready to GA after it is Feature Complete and has obtained all necessary Focal Point Approvals.

Feature Complete

Focal Point Approvals (Complete by Feature Complete Date)

Design Approved Features

GA Blog (Complete by Feature Complete Date)

yeekangc commented 3 years ago

Broke down the original into:

Other capabilities like below will be tracked via separate issues (epics):

mbroz2 commented 2 years ago

Created https://github.com/OpenLiberty/liberty-dev-tools-eclipse

scottkurz commented 2 years ago

@yeekangc - should we rename this an "early release" feature/issue so we can link it to a distinct UFO from the ultimate final release?

I think we want to target:

but not necessarily the Jakarta LS project (which is not as far along as MP LS).

yeekangc commented 2 years ago

I created #21055 to track the "early release", @scottkurz.

cthigh commented 2 years ago

UFO Socialization Part 1 - October 14, 2022

Presenter: Scott Kurz

Notes:

Page 31

Feature Design - Run Configuration

Page 33

Page 34

Page 38

Liberty Dashboard X

scottkurz commented 2 years ago

Another couple comments from after:

  1. I'll paste another (internal) UFO comment was for the "Users configuring a Liberty server" user story:

I don't think the user story should say "Users". It should be specific like "Day 2 Operator" or "DevOps Developer" or whatever is appropriate (maybe more than one). Generic "Users" doesn't help understanding of when and why they're using the tools to configure the Liberty server.

  1. Consider the "generic (e.g. Tomcat, generic sample like Baeldung, Jakarta, etc.) WAR. I'm saying it should be manually addable to "runAs Liberty" but not startable by default.
frowe commented 2 years ago

From the Friday 10/21/22 UFO review: Slide 30 Consider adding a button to reset parameters to default Rename "Main" tab I asked about using the terms Start vs run ? Alasdair noted we’re not calling Start goal, we’re calling dev mode

Slide 38 Create icon for mvn instead of m2

Slide 40 Standard eclipse run config dialog is labeled JRE, but we require a JDK. Consider some way to indicate the need for JDK vs JRE

Slide 45 Typo "Lanaguage" should be "Language"

Slide 50 Update slide to mention config prefs

Slide 57: I asked about the ability to upgrade (vs new install) of plugin. Scott to check on whether data updated to allow applying update to 04 release

Slide 62 Typo “issues” should be “issued”

Slide 63 typo “withing” should be “within”

General suggestion from Alasdair: When in Tools and you open test results, it would be nice to open them in JUnit view

scottkurz commented 2 years ago

In slide 43, I wrote the mmod text the user must add as if it were the suggestion generated by Liberty Tools Eclipse.

scottkurz commented 2 years ago

I've addressed all comments with UFO updates and/or issues in our repo: https://github.com/OpenLiberty/liberty-tools-eclipse/issues

yeekangc commented 1 year ago

@scottkurz, please post link to latest UFO (with all feedback incorporated) and put in a "Design Approval Request" as soon as ready. Thanks.

scottkurz commented 1 year ago

Updated UFO at previous link: https://ibm.box.com/s/curdb0qg6su1jgtn4yhlf95m49hhkuu2

Let me highlight the updates from earlier rounds of review:

  1. Added project name in Run Config - (eg. see slide 30) - The config is "scoped" to a project which determines the working directory when running and provides the key or link from dashboard management to a "session". If you use the new Run Config button we'll determine the project based on the active selection in the IDE workspace. So it at least needs to be displayed as you're working with the Run Config. I looked at making it editable, but getting the state/lifecycle correct is too much work in the near term.
  2. Updated maven/gradle dashboard icons - (slide 26) - Not sure this is 100% final but essentially what we're looking at, a homegrown 'M' or 'G' icon of different colors
  3. Design change to add Liberty nature to BOTH (Maven) top-level parent module AND server module - (slides 37,38) - This allows one to quickly import a typical Maven multi-mod project, right-click in Project Explorer, and Run/Debug As Liberty Start. It gives the user more choice, by providing one UI mapping to running from each of the parent/child directories. (Downside is there is more to visually look through and potentially wonder about what you should do). I can explain more as/if needed.
  4. Maven/Gradle launch precedence - (slide 39)
    • Added screenshot for preference.
    • Added PATH env var as a 3rd/final resort.
    • Added note clarifying that detecting the wrapper has a complication in Maven multi-module cases: the wrapper would typically be in the aggregate/parent dir which would not be found if running from the server module. This is one more reason to offer the choice of starting, working dir in 3. above.
  5. Debug As - (slide 34) - This is a "single step" Debug. Liberty Tools will generate a "random" debug port, wait for it to appear in the generated server.env (by dev mode), and then launch a Remote Java Application debug configuration connecting to this port on localhost. User doesn't need to know port but it's visible in debug view. (Sorry, this is all text, would've been nicer to have some graphics.) Notably one thing missing now is an ability to launch this same 1-step debug from the dashboard. We'd have to consider that later.
  6. Editor bindings - (slide 25) - Gave up on idea of binding the Lemminx XML LS function to the XML Editor. A user could just open an XML file with the Generic Text Editor and presumably create a binding from a generic XML extension like *.xml to this editor.

Besides that, let me make a few more notes:

  1. Alasdair, in spite of your earlier (verbal) review comments, we left in the ability to do "Run As -> Liberty Stop", i..e the non-start commands (run tests, view report, etc.) , from the right-click Context menu. I think the additional convenience of not having to jump over to the dashboard to issue these commands outweighs any "conceptual clutter" or misalignment due to the fact that you're not "running Liberty". Not sure I convinced you so noting the change here.
  2. I believe we have issues open for every UFO comment idea, that we wanted to consider pursuing after this release, e.g. https://github.com/OpenLiberty/liberty-tools-eclipse/issues/209, https://github.com/OpenLiberty/liberty-tools-eclipse/issues/229
  3. There might be some minor tweaks still in aligning the layout of the Run Config fields... but I think we're close enough that you could approve the design on the basis of this.
scottkurz commented 1 year ago

Additional update:

NottyCode commented 1 year ago

@scottkurz you are right that I'm not bought into having a "Run Stop" option in the UI, but as long as we can continue that discussion in the future I'm ok to approve despite not liking the current design.

scottkurz commented 1 year ago

(Deleted earlier template info and edited the original comment to include info based on the latest feature template)

mbroz2 commented 1 year ago

@scottkurz the above looks to be using an extremely outdated template from somewhere. Please update using the latest feature template: https://github.com/OpenLiberty/open-liberty/issues/new?assignees=&labels=Epic&template=feature.md&title=Open+Liberty+Feature+Template

scottkurz commented 1 year ago

@mbroz2 - this isn't a runtime feature but a devex one. We've been talking about coming up with a DevEx template but it seemed like this old template was just as good to work from .

mbroz2 commented 1 year ago

@scottkurz I would still recommend basing any new templates off of the latest version of the open-liberty feature template (and updating the one in this issue). Many things you have above are incorrect... for example, various focals like a11y and even WDT.

scottkurz commented 1 year ago

Closing as complete

malincoln commented 1 year ago

@scottkurz @yeekangc this feature was closed but is missing the other focal approvals.

scottkurz commented 1 year ago

@malincoln For these non-runtime features, like this Eclipse tooling feature, we haven't generally been adding the full set of focal approvals or checking off the full template's checklist. We have in this case followed a subset of the process and done more than just the UFO by adding the SVT and ID approvals.