DISCLAIMER: This plan is not set in stone, and we will surely deliver things on top of it, as well as some features may slip or even fall out on the way. However, in general, we intend to stick to it, so it can serve as a good indication of CUBA Platform development direction for the community.
TEASER: CUBA Studio will be built into IntelliJ IDEA.
So here we go!
In the remaining month, we intend to roll out the Marketplace to the website. The Marketplace will be a common place to share Addons, developed by us or by any member of the community. This is an important milestone, giving a start to a new ecosystem around CUBA Platform, so developers can pick & choose what they need and plug in new features in their apps with minimal hassle.
Technically, most of the Addons will be available as application components, so adding them to your project will be as easy as copy-pasting Maven coordinates in Studio.
For the start, we will bring together the Addons already released and available on GitHub:
- Drag&Drop - drag & drop support for the Generic UI
- JavaMelody - integration with the popular monitoring tool
- ZooKeeper - dynamic discovery of middleware servers
- Localizations for German, Spanish, Danish, Dutch, Portuguese, Simplified Chinese and Romanian
We also know a few community members who are already willing to contribute their components - so the list should be growing!
Studio will get the following improvements:
- Multi-windows support in the SE version
- Support for “thin” app components in Studio (e.g. without Core or Web modules)
New Addons will be published:
- WebDAV - support for the powerful WebDAV remote documents storage protocol
- LDAP - advanced integration with LDAP
- IMAP - an Addon, which reads and displays mail over the IMAP protocol, and throws events which can be handled in your business logic
- Rich Search - extendable full-text search over menu items and screens
- TypeScript support
The Beta versions of Platform and Studio 7 will bring some major changes.
Platform 7 Beta
The main focus is the upgrade of the stack - we migrate to Vaadin 8 and make the Platform compatible with Java 9. For the already running projects this means that we do the hard work, so you don’t have to :) Of course, migrating to a new major version of the platform can not be seamless, but it will be way easier compared to upgrading the whole stack in your project manually.
Another notable change is the new UI data layer and API. CUBA Platform will follow the trending way of event-driven architecture: new lightweight screen controllers with annotated methods for event handling will make your code clearer and easier to test. Typed API for opening screens will save from type-casting.
The new presentation data layer will replace screen datasources. This will solve many of the current issues ranging from unclear API and limited browser-editor interaction to inability to filter a nested collection.The remaining list of main changes looks as follows:
- WebSocket communication between tiers
- Support for URL browser history
- Simplified creation of composite components: components, based on other components
On the Polymer UI side we will:
- move to Polymer 3
- introduce better support for CUBA security
- move to vaadin-elements instead of paper-* elements (material design will be optional)
Studio 7 Beta
Here we come to the most interesting part. Since version 7, Studio will be built in the free community version of IntelliJ IDEA as a plugin! All the current functionality, including the WYSIWYG designer, will be preserved, but Studio will now provide full power for working with code as well.
We understand that this is a big change, however, after heavy consideration, we decided this is the way to go. We also have good answers for those of you using Eclipse or NetBeans.
First of all, this change will mean that we can finally deliver 100% smooth user experience for CUBA developers. No more flicking between Studio and an IDE. Next, the code management capabilities of IntelliJ open up enormous opportunities to automate and streamline CUBA-specific tasks and code generation even further. As a little example, this means we will be able to provide full support for Kotlin.
Next, IntelliJ IDEA is the most popular Java IDE in the world, and in our opinion the most productive as well. The fact that Eclipse lost another 8% of its market share in 2017 only proves this.
Finally, the community version of IntelliJ is free, so this change will not have any economic impact on Studio users. We hope that Eclipse users will try and find the migration easy... and worth doing! If not - we have a CLI coming to rescue (see below)!
What many developers love about CUBA Studio is the easy start. We do not want to compromise this, so we intend to create a customized version of IntelliJ, with CUBA Studio plugin and starter wizard. This version will be available for download from our website, just like Studio now.
As you know, CUBA Platform is open source, while CUBA Studio is a commercial tool. At the moment, the recommended way of starting a free project is using the free version of CUBA Studio and switching to an IDE when its 10 entities limit is hit.
So while in practice this approach is totally fine, it does not feel like 100% open source. It is not easy just to get the framework from GitHub and start your project. And Studio merging into IntelliJ brings even more tool locking.
To resolve this, we will be launching an open source, lightweight and IDE-independent CLI (command line interface) tool to scaffold project infrastructure, entities, CRUD screens, and more. The tool should also allow plugging in your own commands.
Now we give developers a clear choice to cater for both philosophies:
- free, fully open-source, IDE-independent Platform+CLI on one hand;
- and the convenience of visual development in Studio on the other, becoming even more productive with merging into IntelliJ IDEA.
- Dashboards - a dynamic frame which can display user-configured widgets
- Admin Tools - a collection of tools which help deploy, maintain, and troubleshoot CUBA applications
- Data Import - support for data import from various sources with custom mappings
- Public registration - a component to facilitate login via social network accounts
Platform and Studio 7 become production releases.
Again, like with Studio vs CLI, we believe this gives a complete choice of weapons for developers:
- Opinionated, lightning-fast to develop Vaadin-based client for enterprise-standard UI;
- Non-opinionated, not limiting client for solving any UI challenges with a technology of your choice.
Combining those two in your app can be very efficient, e.g. you could have a public facing portal built on whatever you like, with a functional admin UI built in no-time with a generic Vaadin-based UI. And this is exactly what we did when developing our Store.
The main change here is the new BPM. In essence, we aim to deliver a complete integration between CUBA and the BPM engine, so most tasks can be accomplished visually without coding, or with minimal coding. This means integration with CUBA data model, UI, services, and security, including:
- CUBA-specific stencils and the ability to create custom ones easily
- ability to create process forms visually
- invoking CUBA services
- binding CUBA entities and their attributes to the process variables
- binding process variables to CUBA window and service parameters
- CUBA UI for logging and managing running processes and displaying user assignments
and much more!
Other addons to be released:
- Messengers - support for communication via popular messengers including WhatsApp, Viber, Slack and others
- Multitenancy - an addon, simplifying the development of multi-tenant applications
- Data drafts - prevents data loss if a user occasionally closed browser, or a web server went down.
We are looking forward to introducing a great deal of positive improvements this year: upgrade the stack, make the framework easier to use, deliver a new level of development experience with Studio and CLI, and dramatically extend the functionality, covered by CUBA Platform, via the Addons ecosystem. We invite the community members to help us on this way via both pull requests to the framework and submitting addons to the Marketplace!