CUBA Platform: Roadmap 2018
As I promised in a previous post , I am pleased to present a development plan for the Platform for this year. This is a strategic plan in which we have included only major changes, but certainly there will be hundreds of minor improvements.
Disclaimer: This plan is not a dogma, and we will probably implement something beyond it, but on the contrary, we will postpone it. However, in general, we are going to adhere to this plan, and we suggest that the community of developers on the CUBA Platform also focus on it.
Teaser: CUBA Studio will be built into IntelliJ IDEA!
So let's go!
Most of the quarter has already passed, so let's look back: we released Studio Standalone Edition based on Electron, as well as Release 6.8.
For the remaining month, we are going to launch a marketplace on our website. It will become a public section for the exchange of add-ons written both by us and any other member of the community. This important event marks the beginning of a new ecosystem around the CUBA Platform, which allows developers to build the functionality of their applications with a minimum of effort.
Technically, most add-ons will be available as application components , so to add them to the project it will be enough to copy-paste the coordinates of Maven in Studio.
To get started, we will put together the already released add-ons available now on GitHub:
- Drag & Drop - drag & drop support in the universal CUBA user interface;
- JavaMelody - integration with a popular monitoring tool;
- ZooKeeper - dynamic discovery of middle- tier servers;
- Localizations in German, Spanish, Danish, Dutch, Portuguese, Simplified Chinese and Romanian.
We also know that some members of the community are ready to publish their components, so the list should grow!
Studio is waiting for the following improvements:
- Support for multi-window mode in the SE version;
- Support for “thin” components in Studio (for example, without Core or Web modules).
New add-ons will be published:
- WebDAV - support for the WebDAV protocol for remote work with documents;
- LDAP - advanced integration with LDAP;
- IMAP is an add-on for reading and displaying letters through the IMAP protocol, the events of which can be intercepted in the business logic of the application;
- Rich Search - Advanced full-text search on menu items and screens.
- TypeScript support.
Major changes will be presented in Beta versions of the Platform and Studio 7.
Platform 7 beta
The main emphasis is on updating the stack: we are switching to Vaadin 8 and we are implementing Platform compatibility with Java 9.
We all know how laborious it is to update the stack in already running enterprise applications. At CUBA, we do the bulk of the work related to the upgrade for you. Of course, migration to a new major version of the platform cannot be completely seamless, but it is still much easier than updating the entire technology stack manually.
Another significant change is the introduction of a new API and data layer for the UI. The CUBA platform has taken the trend toward event-driven architecture: new lightweight screen controllers with annotated methods for handling events will make your code cleaner and more convenient for testing. And the typed API for opening screens eliminates the need for type casting.
A new presentation data layer will replace the datasource mechanism. This should solve many current problems, including in some places an opaque API and limited interaction between view and edit screens.
Other important changes:
- inter-layer communication based on websockets;
- browser history support;
- simplified creation of composite components, i.e. components based on other components.
From the point of view of Polymer UI:
- Upgrade to Polymer 3
- improved support for the CUBA security subsystem;
- transition to vaadin-elements instead of paper- * elements (material design as an additional option)
Studio 7 Beta
We pass to the most interesting. Starting with version 7, Studio will be integrated as a plugin into the free IntelliJ IDEA Community Edition! All existing functionality, including the WYSIWYG editor, will be preserved, but now the ability to fully work with the source code will be added to it.
We understand that this is a fairly radical step, but nevertheless we have come to the conclusion that it is necessary. First, these changes will dramatically increase the usability of Studio. Developers will no longer have to jump from Studio to the IDE and vice versa.
Secondly, IntelliJ source code tools offer tremendous opportunities for automating platform-specific tasks, including code generation. As an example, in the future we will be able to implement full support for Kotlin.
In addition, IntelliJ IDEA is now the most popular Java IDE in the world, and in our opinion the best. The fact that Eclipse lost another 8% of its market share in 2017 only reinforces this belief.
Finally, IntelliJ Community Edition is free, and therefore this change will not have a financial impact on Studio users. We hope that for many Eclipse users changing the IDE will be easy and will bring even more advantages than just the new Studio. And for those who remain faithful to their IDE, the CLI will come to the rescue (see below).
For which many developers love CUBA Studio, it is for an easy start. We won’t look for compromises here: we are going to create a separate version of IntelliJ with the CUBA Studio plugin and a startup assistant. This version can be downloaded from our website in the same way as Studio is now.
Development with CLI
As you know, the CUBA Platform is an open source framework, while CUBA Studio is a commercial subscription tool. Now, if you want to create projects on CUBA for free, we recommend that you start developing a new project in the free version of CUBA Studio, and when you reach the limit of 10 entities, go completely to the IDE.
And although in practice this approach is quite convenient, it can not be called 100% open source. Just downloading the framework from GitHub and starting a new project on it is not the most trivial task.
To get around this, we create an open source, lightweight and IDE independent tool with a CLI (command line interface). This tool will allow you to quickly generate project infrastructure, entities, CRUD screens, etc., as well as create and embed your own teams.
So we will give developers the opportunity to choose:
- free, fully open, IDE-independent Platform + CLI, on the one hand;
- convenience and speed of visual development in Studio, integrated into IntelliJ IDEA - on the other.
- Dashboards - a dynamic frame for displaying custom widgets;
- Admin Tools - a set of tools for deploying, administering, and debugging CUBA applications;
- Data Import - support for importing data from various sources with the ability to configure mapping;
- Public registration - a component that allows you to enter the application through social network accounts.
The final releases of the Platform and Studio 7 are coming out.
Again, as in the case of Studio vs CLI, developers will have a choice:
- The fastest developing client based on Vaadin for creating standard UI business applications;
- an alternative client for solving any UI tasks, based on any technology to your taste.
You can effectively combine these two approaches in one application, for example, build a public portal on anything, and then add the admin panel based on the standard Vaadin UI as quickly as possible. This is exactly what we did when creating the store and personal account at www.cuba-platform.com .
Here the main change is the new BPM. In short, we want to implement the full integration of CUBA with the BPM engine, so that the solution to most problems does not require writing code at all, or requires it to a minimum. This requires integration with the CUBA data model, its UI, services and security subsystem, including:
- CUBA-specific stencils with the ability to quickly create their own;
- the ability to visually create process forms;
- call CUBA services;
- Binding CUBA entities and their attributes to process variables
- binding process variables with CUBA windows and service parameters;
- CUBA UI for logging and managing running processes and mapping assignments to users
and much more!
Other add-ons will be released:
- Messengers - support for messaging through popular instant messengers, for example, WhatsApp, Viber, Slack, etc .;
- Multitenancy - an add-on that simplifies the development of multi-user applications;
- Data drafts - restoration of the entered data when the browser window is accidentally closed or the web server crashes.
We planned a lot of positive changes for this year: updating the stack, simplifying work with the framework, new tools for the developer’s convenience - Studio and CLI, an impressive expansion of the platform’s functionality due to the ecosystem of add-ons.
We invite members of our community to help us along this path with both pull requests to the platform code and the addition of add-ons to the marketplace.