CUBA Platform is one of the best development tools I have come across. At this stage, I would be not use it for actual development for one main reason.
Firstly about myself as a developer
I am not grounded in Java. I came across CUBA looking for an enterprise RAD tool. I think CUBA can be a great tool for non-Java Programmers as well.
Why I would want to use CUBA Platform
I would like to use CUBA Platform to develop fairly large applications that could have up to 50 entities and 200 screens with a development team of 3-5 developers who may or may not have strong Java experience. The developers will work with Cuba Studio and Eclipse IDE.
Why I would not use CUBA Platform
I will keep on monitoring the progress of CUBA Platform but for now I would not use it for production code. This is because screens require too much “heavy-lifting” code if one is not using the “standard screens”. This is my observation from looking at the samples and trying to create more advanced screens myself. With 200 screens being developed for an enterprise application, I would have a bit more comfort if most of the screen manipulation code is auto-generated, with only some custom coding here and there. I would want to have most of the “heavy-lifting” code for the business logic.
In short, what I am suggesting is more scaffolding options for screens in addition to the standard screens. Those screens don’t have to work “out of the box” but CUBA Studio should generate the basic templates for some common screen patterns and the developer should fill in the details to make the screens work together.
An application has Customer and Order entities.
On the Customer browse screen, there is an “Order List” button that invokes a call to the Order browse screen with a parameter for the Customer in order to display only orders for the selected customer.
It would be great if CUBA Studio has an option to generate the two screens together with the code to pass and receive parameters. In the same way, one can generate screens for other patterns like lookup screens as well. This will allow a team of inexperienced programmers to develop a big chunk of the application as follows: create entities, create views, generate screens and write some code in controllers. Only 1 or 2 of the developers on the team will write more advanced code and implement services.
CUBA Studio can go a step further and add options to generate service bean templates for persisting an entity, retrieving entities from the database etc. I’m not advocating for a codeless platform, it’s just that once CUBA Studio is able to generate most patterns for a trivial application, it would be a good foundation to create more advanced applications. If a lot of the code in the sample applications can be reproduced with scaffolding. I would have that level of comfort to use CUBA Platform in production.