Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Eco system #351

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
Open

Eco system #351

wants to merge 11 commits into from

Conversation

FrankHossfeld
Copy link
Member

@FrankHossfeld FrankHossfeld commented Dec 16, 2023

Motivation:

GWT is at least a Java to JavaScript transpiler. One of the resons, that we have modules inside the SDK, is, that in 2006, there were no eco system. The SDK has to offer it to be successful. Looking at the next generation transpiler J2CL, there is no SDK, nor these modules. It is up to the community to ensure, that the modules will work with J2CL. From this point of view, the importance of the GWT eco system increases and is mandatory.

Someone looking for information about 'GWT' will enter 'GWT' and pretty sure will land on this site. And, without any hint of the existing eco system, there will be a lot of information missing. Gathering information about GWT related libraries is not an easy and takes, especially, when you are not familar with the GWT eco system, a lot of time. Form my opinion, the gwtproject.org site is the entry point to the GWT SDK and the GWT eco system.

Changes:
I have added two entries to the navigation:

  • news
  • eco system.

The news links a site with news related to the GWT SDK, GWT modules & J2CL.

The eco system links to a site with some information about the history of GWT, the GWT modules, releases and third party libraries. There are a few more sites added related to this topic:

  • news - news related to Libraries from GWT eco system
  • archetype creator - alternative archetype creators
  • Communication & more - client-server com & validation
  • application frameworks: alternative implementations history management
  • UI Frameworks: widget related stuff.

Note: I added a few libraries - the libraries I know. The list is not complete and I am happy to add more libraries in case the PR gets accepted.

Compared to #348, this PR makes a different between stuff related to the SDK and the eco system.

And, it adds information of the eco system which, I think, this site is also intended for.

@@ -0,0 +1,165 @@
GWT News

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might try to investigate if we can automate this, by allowing libraries to publish some RSS feeds to some service where we can fetch and display them, libraries and apps might be able to include some RSS publishing right through the release process like github actions or other means.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be awesome if we can automate this. To start, I think, we can go with a manual solution.

* The Library must be well documented
* The Library must be deployed to Maven central
* The Library must be an Open Source project
* The Library requires a Apache 2 Licence
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we need both bullet points - if it must be Apache v2, we don't need the open source license.

With that said, why should Apache v2 be a requirement (closure-compiler has a MPL dependency, for example)? And while it has become less popular to use closed source UI libraries on the web, it seems reasonable that as long as it is labeled accordingly that it be allowed?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, you are right. I added this because I want to avoid adding paid libraries. I don't want to promote vommercial libraries. So I remove the The Library requires a Apache 2 License.

Done.

We will expect:

* The Issue must be created by a contributor of the library
* The Library must be under active development
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like a tricky requirement - is GWT itself under active development, over the months at a time that no commits are merged? If a project is stable, or is a wrapper for a JS library that has a stable API, can it not be listed?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll change it to something like: The Library must be maintained

Done.


We will expect:

* The Issue must be created by a contributor of the library
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What are the concerns here, that someone else might publicize a library that wasn't ready to be showcased?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, remove it.

Done


We will add or update information on request.

## Request for adding Libraries to the Eco System site
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe generalize "library" to "dependency", so we can discuss frameworks, plugins, etc?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. I'll switch from library to ** dependency** in general ...

Done

src/main/markdown/eco/com-and-more.md Outdated Show resolved Hide resolved
src/main/markdown/eco/com-and-more.md Outdated Show resolved Hide resolved
For more information visit the archetype at [gwt-maven-springboot-archetype at GitHub](https://github.com/NaluKit/gwt-maven-springboot-archetype)
and follow the instructions.

### domino-cli<a id="create-third-party-nk"></a>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same anchor as above

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

@FrankHossfeld
Copy link
Member Author

Regarding the discussion in #348 should I remove the eco system news site?

@FrankHossfeld FrankHossfeld mentioned this pull request Dec 27, 2023
Comment on lines 163 to 165



Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

@@ -0,0 +1,263 @@
# GWT Eco System
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# GWT Eco System
# GWT Ecosystem

@@ -0,0 +1,263 @@
# GWT Eco System

Today, the GWT eco system is not only that, what comes with the framework. Usually, projects use a lot of third party
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Today, the GWT eco system is not only that, what comes with the framework. Usually, projects use a lot of third party
Today, the GWT ecosystem is not only what comes with the framework. Usually, projects use a lot of third party


First and foremost, GWT is a Java to JavaScript transpiler. The basic idea is to use a type-safe and object oriented
language to create applications which can ran natively in the browser. During development, developers benefit from the
existing Java tool chain, powerful IDEs and awesome refactoring abilities. In production the transpiler creates highly
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
existing Java tool chain, powerful IDEs and awesome refactoring abilities. In production the transpiler creates highly
existing Java toolchain, powerful IDEs and awesome refactoring abilities. In production the transpiler creates highly


In 2006, as GWT emerges, things were different. JavaScript depends on the browser and Java were in an
early state of evolution. That's one of the reasons why we have permutations and generators in GWT. Also there no
third-party-dependencies. Everything had to be provided by the framework. With GWT 2, a lot of new modules like: editor, uibinder, etc.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
third-party-dependencies. Everything had to be provided by the framework. With GWT 2, a lot of new modules like: editor, uibinder, etc.
third-party-dependencies. Everything had to be provided by the framework. With GWT 2, a lot of new modules like: editor, uibinder, etc.

and the gaps of the JavaScript engines in the different browser are no longer a pain point. Third party dependencies add a lot of
things that GWT does not cover or offer an alternative implementation of existing implementations.

Also, Google transfers the lead of the GWT project to an Open Source community.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Also, Google transfers the lead of the GWT project to an Open Source community.
Also, Google transferred control of the GWT project to the Open Source community.

the old groupId **com.google.gwt**, GWT can also be loaded with the new groupId: **org.gwtproject**. Starting from 2.11.0
GWT will only be available under the groupId of **org.gwtproject**.

GWT 2.11.0 will be the first release that requires Java 11!
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
GWT 2.11.0 will be the first release that requires Java 11!
GWT 2.12.0 will be the first release that requires Java 11!


GWT 2.11.0 will be the first release that requires Java 11!

Currently we have started the work on GWT 2.12.0. This release will focus on implementing new Java Language features. See the [roadmap](/oadmap.html) for more information.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Currently we have started the work on GWT 2.12.0. This release will focus on implementing new Java Language features. See the [roadmap](/oadmap.html) for more information.
Currently we have started the work on GWT 2.12.0. This release will focus on implementing new Java Language features. See the [roadmap](/roadmap.html) for more information.

amount of legacy applications the community starts to migrate the GWT modules in 2019. These migrated modules no longer
use generators (instead they are using annotation processors) and JSNI (JavaScript Native Interface). Now, they are
using JsInterop. On the long term, using this new modules, will enable applications to switch to the new transpiler
very smoothly.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this paragraph needs more justification for GWT 2 projects to use the modules.

Specifically:

  • Java's principles include keeping projects maintainable over long periods of time: While changes like the addition of JPMS have required some projects to make changes, those are infrequent and usually not too major.
  • Likewise, GWT tries to avoid breaking changes, enabling projects to continue to compile old projects using old APIs to still work with new browsers and new Java releases. This cannot always be perfect (code that assumes old browsers obviously will not work), but it will support teams who can update to get security fixes, performance improvements, and new browser support with minimal effort of their own.
  • However, this limitation on breaking existing code makes the repository "append-only" - we cannot remove old features easily. For the compiler itself, this is largely not a problem, but for gwt-user, any change might break existing applications. It is more important to support old projects updating in a low- or no-effort manner, than to continue to mutate the APIs of these projects.
  • Additionally, there is an unclear dependency between gwt-user.jar and gwt-dev.jar - if a new compiler offers compiled size improvements, it is usually not possible to update only gwt-dev.jar and leave and old, working version of gwt-user.jar. (in contrast, it is usually possible to keep an old version of gwt-servlet.jar, not that we encourage this).
  • Instead, moving the "user" code (aka GWT modules) out to separate modules enables teams to keep their runtime code at an older version not tied to the compiler. Maintainers of the modules can likewise experiment with APIs or remove dead code, and regardless of compiler version or implementation, downstream projects can adapt to those changes.

Comment on lines +15 to +16
In 2006, as GWT emerges, things were different. JavaScript depends on the browser and Java were in an
early state of evolution. That's one of the reasons why we have permutations and generators in GWT. Also there no
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't quite understand "...and Java [was] in an early state of evolution" - is this referring to generators rather than apt? If so, disregard.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, that is my intention.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants