An Interview With the Guys at Haulmont

Henrik Paul
On Oct 23, 2012 10:43:00 AM

Haulmont Technology is a software development consultancy with offices in London, UK and Samara, Russia. With around 80 developers based in Samara, Haulmont creates bespoke enterprise IT systems that offer high scalability and flexibility, based upon CUBA, the company's proprietary JAVA-based development platform.

A while back we reached out to the community, asking about your experiences and projects with Vaadin. We heard a ton of varying and interesting stories. Haulmont Technology was one of these companies that shared their story eagerly with us. They have developed a system for debt management, and we will soon have a case story on it at our Who is Using Vaadin section.

But what really caught our interest was their CUBA system that they are using in-house as a framework of sorts. We wanted to get to the bottom of this, and asked them a few questions for this blog:

Hello. To start things off, could you introduce yourselves, and explain in short what you do in Haulmont and your history in programming.

Andrey Glaschenko - business development director at Haulmont. My main role in the company is identifying growth oportunities and business strategy as well as participating in general company management. My previous project was starting first commercial product of the company - Thesis (a document management system). Started three years ago, it now has close to hundred implementations including some of Russia’s largest companies, we now have 30+ staff and fast growing partner chain in various regions of Russia. Thesis is based on our CUBA development platform and my next project - which I am really excited about - is commercialising CUBA, so that system integrators and software development companies all over the world can benefit from the technology.

My programming experience is mainly related to the development of real-time scheduling solutions for logistics companies in a number of industries. A good example would be the solution which automatically manages 3,000+ taxi vehicles (30,000+ jobs a day) for our client Addison Lee - the largest London minicab company. This solution won two UK National Business Awards including the Business Innovation of the Year in 2009.

Konstantin Krivopustov - technology director at Haulmont. I’m the architect of the CUBA platform, as well as one of its main developers. My role also includes managing all platform development, consulting technical leaders in other company projects on architecture, technology choices and managing all technological knowledge in the company.

I have over 10 years of experience in delivering enterprise business applications, including the complex project for Addison Lee that Andrey mentioned. My area of interest is mostly around implementing complex high-loaded systems and improving the effectiveness of software development.

Your flagship product is Haulmont’s CUBA platform. Could you describe the system; what problems does it solve and how does CUBA help in solving that problem?

KK: Actually CUBA is kind of a by-product to our bespoke solutions. When we started the business four years ago, we quickly came to the conclusion that many enterprise software projects share a common set of requirements, and that building the solution each time from scratch is inefficient. At the same time available technologies are too low-level to use them directly for building and maintaining enterprise-grade applications, at least in the Java ecosystem. We conducted analysis about what third party tools were available but found nothing suitable, so we decided to build our own platform. At that time our core team had experience of building large heavy loaded business applications, so we were quite confident that we could make a framework for our internal needs. We called it CUBA and it started to grow alongside our client projects.

CUBA is now the foundation for all our projects, including two off-the-shelf products and several client-specific applications. CUBA simplifies and speeds up the development and makes our applications easier to maintain, simply due to the fact they share a common set of technologies and approaches. This gives us the ability to reallocate a developer from one project to another and share innovation across clients - an enhancement made for one project is automatically available to others, and so on. Of course everything comes with a price; big building blocks allow us to deliver quickly, but sometimes make it harder to customize the details on a project level and applications share a similar look and feel. However in our experience, business customers are less concerned that their system may look slightly similar to another system, it’s far more important that the system is delivered fast and in budget.

Returning to your question, I’ll list here just a few features that CUBA provides:

  • Database vendor independence, transparent to application code soft deletion support, flexible filters customizable at runtime
  • Declarative approach to UI development - may be the most interesting and powerful part of the platform. You define an application screen in XML, write some Java code if necessary, and voila! - it works both in web client (with the great help of Vaadin) and in desktop client application. Of course you can customize visual appearance or use some specific underlying technology features if necessary. Regardless, CUBA offers a clear separation of layout and code, with a rich set of visual components that can be easily bound to data in your database.
  • A range of readymade functionality: customizable at runtime security with entity, attribute and row level permissions, reporting with output to XLS, DOC and PDF, workflow with embedded graphical designer, full-text search, etc.
  • The ability to deploy applications in cluster for high availability and failover, a unique mechanism of "clustered singleton schedulers", etc.

This is very brief and incomplete list, but I hope it shows the scope of challenges that CUBA solves.

On your website you say that "CUBA is Haulmont’s platform for the development of Open Source solutions." Does that mean that people can download your platform at home and try it out themselves?

KK: Unfortunately not right now, perhaps we are using the term ‘Open Source’ slightly differently from the traditional us. For us, this means that all our solutions are delivered with full source code and our customers are free to investigate and customize the applications for their needs. We don’t like black boxes and sharing our source code gives our clients confidence that we can always quickly find out the reason of any problem and fix it, or implement a new feature.

CUBA is not generally available yet, but we have plans to make it public in 2013. Though the licensing model is still to be fully worked out, it will definitely come with the full source code for all modules.

How are CUBA and Vaadin connected to each other? What parts of CUBA are done with Vaadin?

KK CUBA declarative UI for web client is implemented in Vaadin. We support other types of clients, desktop and "pure" web, but I would say 70% of users of our applications now use Vaadin technology. Actually, without Vaadin it would be impossible for us to make the universal UI development framework which CUBA now offers.

We have also implemented a mobile client for our document management system Thesis in Vaadin’s TouchKit. It works just fine on iOS devices, and the implementation is much simpler comparing to development of a native app, so we are very happy with the results.

By the way, having experienced implementing our generic UI in two technologies, Vaadin and Swing, I like Vaadin’s API much more. It’s simpler, cleaner and more suitable for our needs. We have some plans to replace Swing on the desktop, but we absolutely don’t want to move from Vaadin.

Did you check for other technologies similar to Vaadin? How did you end up with Vaadin?

KK: When we chose an implementation technology for web UI, it was the beginning of 2009 and we investigated three products that could provide us with "server-side programming model". They were ZK, Echo3 and Vaadin (IT Mill at that time). We chose Vaadin primarily due to its GWT usage and licensing model. It also felt more mature and had no overhead such as ZK’s XML layout, which was useless for us because we were going to implement our own, suitable for different types of underlying technologies.

I’ve understood that you have redesigned some aspects of Vaadin when using it together with CUBA. Can you tell us more about that?

KK: I wouldn’t say we redesigned anything, but we had to expose some internal parts of Vaadin to make our extended visual controls. The most significant part is Table, we’ve added grouping, aggregates and some other features to it. We’ve also implemented some features for other components, as well as common functionality like client-side timers and UI blocking. Unfortunately our requirements compelled us to make some ‘dirty’ things: copy-paste code from Vaadin to our project, change some classes inside the library. This is a big hassle for upgrading Vaadin, we did it just twice between IT Mill 5.3 and current Vaadin 6.6.

With Vaadin 7 beta 4 being out, and it finally being feature freezed, what are your plans regarding integrating Vaadin 7 into CUBA?

KK: We certainly will move to Vaadin 7 in the next few months. We haven’t fully explored all the new features yet, but we are already impressed with performance improvements and SASS support.

What are your future plans for CUBA? Where do you want to take it next?

KK: As a final step to make CUBA really useful outside of our company, we are currently working on a kind of specific IDE, called Studio. It will greatly simplify development of CUBA-based applications, especially for less experienced developers. The Studio allows the creation of applications by defining a data model in point-and-click manner and designing complex UI screens with a WYSYWIG editor. After making some changes in a project with Studio, developer can switch to a classic Java IDE and proceed with manual editing. The Studio monitors all changes in the project and updates itself, so the developer can return to the Studio at any time to work with visual tools. We think this two-way development process will be very effective.

AG: For me the best way to describe this is that CUBA Studio brings the speed and convenience of a Delphi RAD approach to full scale enterprise web applications development based on a JEE stack.

Altogether we believe this turns CUBA into a really unique product which will generate a lot of demand and with no direct competitors. We have already conducted trials with a few local development companies and both our own experience and their feedback suggests a 50% to 100% productivity boost. Another important result is considerably higher solution quality due to a standardized approach and high reuse of functionality.

Inspired by this, in 2013 we will officially launch CUBA as a commercial product. There is still a lot of work to be done – such as the website, complete documentation, marketing activities - but it will be exciting to see more people using our technologies and delivering better software to their clients.

If you had one wish that would come true regarding Vaadin, what would that be?

KK: Well, we see that Vaadin progress for the last years is great. But we really would like to have more abilities to override the framework’s internals. Of course an extendable design is a very difficult task, and I personally wouldn’t like to see Vaadin as overcomplicated as Swing. So my wish is rather simple and stupid - just make your class members protected, not private! We know all those old good OOP rules about encapsulation, "design for inheritance", and so on. But that would just save us from lots of dirty hacks, because when we have a requirement, and we can’t implement it through the public API, we don’t give up. And unfortunately discussing a change with your developers is not an option for us - most often due to lack of time. So we usually ended up changing your code directly. Of course it makes a lot of sense to hide implementation to be free for future changes, but it would be better for us if you just write some warnings in JavaDocs instead of using private access. Upgrades would not become seamless, but with more open framework it would be much cleaner and straightforward.

CUBA seems indeed like an interesting system. Thanks for the interview!

We wish the boys over at Samara have a lot of fun at using Vaadin and porting it over to Vaadin 7.

Henrik Paul
Henrik Paul works as a Scrum Master at Vaadin's product development. He has been working at Vaadin since 2008 with basically anything and everything, except in sales or administration. He's one of those annoying guys who is never satisfied with the status quo, and questions established practices constantly.
Other posts by Henrik Paul