A month and a half ago I started doing a small project in my off hours which just had enough functionalities to cover a bit of ground in Laszlo. I had been longing for a good excuse to try out this RIA (Rich Internet Application) technology for quite a while, so I took the chance when it presented itself. This was supposed to take only a couple of days of development and I even though I had never used Laszlo before, I was quite confident that after my experience with GUI technologies like DHTML, Swing, QT and Gtk I would be able to get started with Laszlo very quickly. This was also partly based on the collection of documentation that is to be found on the Laszlo website and on the amazing demo applications that you can try out there.
The thing that bothered me most initially, was the lack of tool support. Even though there's an Eclipse plugin that allows for quick testing, writing the application lacks all of the wonderful IDE features that I have grown used to when doing Java development. Anyway, I knew I just had to get over that and put it behind me.
But wait, the ordeal is not over yet, I can accept that software has bugs, but this is the end-of-line release (2.2.1) of a production version of a product that sold for $20.000 in licensing before. You expect it to be rock-solid.
However I bumped into bugs and missing features like these:
there's no multi-line text editing component that displays a scrollbar
I had to implement this myself by collecting bits and pieces from the forum and the Laszlo sources.
HTTP POST requests are crippled
Sometimes, and for no apparent reason, the last character of your values are stripped off, you thus have to send most things as GET requests.
databound items can't be reset after editing
You bind a field to text of an XML document, it's quite often that you want to allow people to cancel their edit and show the original values again. There's no support for this, you have to figure out and code a system for it yourself.
drag & drop is not natively supported
You have to start tracking mouse events yourself and compare the location with objects on the canvas, nothing like drop targets or drag sources are to be found.
performance drops quickly
Don't expect to be able to just code a little app and not worry about performance when using Laszlo, you'll have to start managing early, late and deferred instantiation and work with things like item pooling and replication. If you want fast startup time, you'll have to use their Krank optimizer which increases the size of your deployed application considerably and requires you to change your code to work correctly after the optimization process.
These are just the ones I remember most vividly, I encountered many others.
Sadly, even if all these issues are solved there's still one major problem that will not go away because it's part of the whole architectural design. You build a fully functional client-side tier that interacts with a server-side tier for persistent data storage, centralized logic, etc etc. Normally, you would let the client-side act as a controller and a view: the controller sends a certain message to the server, which interpretes it, returns the result and the client-side renders a view of the new state. While this model is technically sound, it's totally not user-friendly. The slight delays (200ms-900ms) that are experienced by network latency and all the processing, makes the application feel slow and very displeasant to use.
The only way to make it usable, is to write the same logic in the client-side tier as in the server-side tier. So, you update your view early according to the operation that needs to be performed, send the message to the server, perform the operation for real in the correct tier, send back the result, and instead of rendering the result you check if it is what you expect.
This forces you to write code twice, performing the same operation in two different tiers, in two different technologies, each with their problems, gotchas, etc etc ... needless to say that your productivity drops dramatically. I don't even dare to think about having to maintain changes to the application either, gradually updating things on both fronts ... eeek!
It's a shame, I really had huge expectations about Laszlo and even tried to sell it to a customer. I'm glad that project was cancelled or I would be in deep trouble.