We recently surveyed GXT customers to find out more about the GWT ecosystem and what they’d like to see in the next version of GXT. Thank you to the almost 100 customers who participated via the email invitation and our GXT Community on G+! As we will share with you in this blog post, the thoughtful and detailed survey answers have directly shaped our GXT product roadmap for 2016. Let’s start by taking a look at how GWT is being used today.
As expected for GWT applications, the desktop browser remains the dominant environment in which applications run; however, a large group of customers indicated that they expect to deploy GWT applications on tablets (74%) and phones (33%) within a year.
Among desktop browsers, less than 16% of respondents said that they need to support the older versions of IE8/9. This is great news for the future as it will allow us to remove image slicing and other cruft from GXT and move to a pure CSS3-based implementation, which will facilitate faster builds and smaller output. Of course, GXT 4 and earlier will continue to support older versions of IE.
Google Chrome appears to be slightly preferred over IE in our customers’ environments. A strong showing for Safari demonstrates that Macs are gaining significant traction in the enterprise.
Moving on to the GWT development environment, the vast majority of customers have migrated to GWT 2.7 or even the GWT 2.8 beta release.
This certainly makes sense given that super dev mode (71% said they are using SDM) in GWT 2.7 is faster and easier to use than in prior versions. The surprisingly large percentage already on the GWT 2.8 beta (14%) suggests to us that there is an appetite for the improved JsInterop capability in that version.
Our customers overwhelmingly work with Eclipse (74%) over IntelliJ. The GWT support in both IDEs is very good; however, Google has been slow to update Google Plugin for Eclipse with bug fixes and a lot of GWT functionality has been removed, such as GWT Designer and support for Maven GWT+GAE projects. Fortunately, some of these features are available in the community GWT Plugin for Eclipse maintained by Sencha engineer Brandon Donnelson (thanks Brandon). The community GWT Plugin for Eclipse has the following features:
- Works with Eclipse Mars
- Can launch super dev mode with any configured Web server (vs. just the built-in jetty server)
- Supports the new gwt-maven-plugin from Thomas Broyer (thanks Thomas)
Speaking of Maven, it’s used by 68% of surveyed customers. GXT artifacts can be downloaded from our Maven repository or the Sencha Support Portal. In fact, the quickest way to create a new GXT project is to use a Maven archetype.
Eighty-four percent of surveyed customers are building with GXT 3.0.x or later, and a significant percentage (25%) has already migrated to GXT 4 to take advantage of the tablet support.
One surprise for us in the survey was the large group of customers (43%) not using UiBinder at all.
The most commons reasons given for not using UiBinder were:
- The UI is highly dynamic. (Indeed, many of our customers use GXT to dynamically construct the entire UI from metadata.)
- The UI was written before UiBinder was available.
And some of the respondents apparently just don’t like declarative programming, as shown by this comment: “Reminds me of JSF and that is something I’d rather forget.”
GXT supports UiBinder and many find it useful for visualizing layouts; however, if you haven’t adopted it already, don’t be in a hurry to do so because GWT 3 will most likely drop support for UiBinder.
We asked customers what they like about GXT. Their responses were very helpful:
- Sophisticated and fast widget library, especially Grid and Tree
- Large and coherent widget set
- Nice default theme
- Store / Loader API
GXT has always included comprehensive, feature-rich widgets for GWT, so it’s no surprise that’s what users like about the framework. In addition, respondents suggested a lot of specific improvements. This feedback is extremely helpful to us.
- Make it easier to customize widget appearance with CSS
- Make it easier to extend widget functionality without cut / paste
- Document more of the hidden features
- More mobile features
- Don’t break compatibility
The suggested improvements are very consistent with what we hear from customers via support tickets, the forum, and individual meetings, and we are incorporating that feedback into the roadmap.
We also asked about the interest level in some specific proposed enhancements to GXT. Here are the top enhancements requested:
|Layout containers that enable responsive design||6.67%
|Ability to customize widget appearance by directly editing
|Material design theme||36.67%
|Widgets designed specifically for phones||45.05%
|GUI theme builder to customize GXT themes||42.86%
|Enhanced charts and complex data visualization||44.44%
|ARIA Support /
Over 90% of respondents said that responsive design and direct access to CSS / GSS are important or very important. In other words, respondents asked us to modernize GXT, and that’s exactly what we plan to do. I’ll get to that shortly, but first, just a few words about GWT 3.
As you’ve no doubt heard by now, the new compiler from Google (J2CL or “GWT 3”) will focus almost exclusively on the Java / JS transpiler and drop support for many classic GWT features. This will be problematic in several areas, not the least of which is GWT-RPC, which is used by 63% of surveyed customers. One popular alternative to keep an eye on is Resty-GWT, which accounted for most of the “Other” responses.
Despite these challenges, the majority told us that they want a path to GWT 3 (52% said yes, they plan to move to GWT 3 and are waiting for Sencha to make a compatible widget library).
While it’s still too early to know exactly what will be possible in GWT 3 (it’s likely more than a year away), the JsInterop that’s currently available in GWT 2.8 beta suggests that there will be some way to create a Java widget library for GWT 3. Several customers wrote in specifically that they don’t want the concept of widgets to go away, and we certainly don’t either.
2016 Roadmap: Modernize!
The survey responses and comments in other forums suggest that with or without GWT 3, it’s time to modernize GXT. Many of the design choices in the framework were made for legacy browser support and are no longer necessary. In addition, modernization is necessary to create a path to GWT 3 as well as to enable new mobile widgets and to simplify our current widgets. Given finite resources, we can’t work on everything that was suggested, so we chose the top four requested enhancements.
Top Requested Enhancements
- Drop legacy browser support (IE 8/9). This is a necessary precondition of the other enhancements. We will support graceful degradation where practical (example: you may not get rounded corners if you happen to run an older browser, but you’ll still get square corners).
- Enable responsive design (aka modern layout). Today in GXT, layout calculations are done in code. In order to support responsive design as well as CSS flow-based layouts, we will create new layout containers and widgets that support responsive design.
- Provide direct access to CSS / GSS. The current theming system was designed for legacy browsers that did not support CSS3, and thus image slicing was necessary. In addition, the current framework uses the GWT Appearance pattern extensively, which doesn’t cover all edge cases. In GXT 5, we’ll make it easier to customize widget appearance by modifying GSS files directly. It should also be easier to make runtime changes to styles, in order to better support SaaS applications that serve multiple customers at once.
- Offer a material design theme. This will add a lot of sizzle to mobile apps.
- Add new widgets designed for phones. GXT 4 offers great tablet support for existing widgets, but we need new widgets designed specifically for the smaller phone form factor.
Migrating GXT Apps
In making these changes, we are keen to avoid the pain many customers experienced migrating from GXT 2 to 3; however, modernization necessarily requires significant implementation changes. While there will be non-trivial effort required to migrate from GXT 4 to GXT 5, we aim to minimize that effort by providing thorough documentation and guidance. In addition, we will provide a path allowing you to migrate gradually, perhaps by running GXT 4 in parallel with GXT 5. This would allow us to eliminate legacy cruft in GXT while allowing you to begin using the new features in a piecemeal fashion vs. a complete rewrite.
We expect to give you a preview of a modern GXT 5 at SenchaCon 2016, November 7-9 at the Aria Resort in Las Vegas, with a release soon thereafter. In addition, we will have a lot more GXT content at this year’s SenchaCon, and you can expect to hear more details about that soon!
Thanks again to all who participated in the survey and gave such valuable feedback. We are listening and working to make GXT 5 the most productive and powerful GWT framework yet.