Garth,
Thanks for the excellent write up.
Can you say a little more about the background of the people on your
team and how hard or easy it was to learn OpenLaszlo? As the
documentation guy I'm interested in how well my stuff helped you (or
got in your way), and I think many people on this list would be
interested in your learning process as well.
Do you think OpenLaszlo is accessible to the masses? Or does its
learning curve limit its potential adoption? And if the learning curve
is too steep (or long), what can we do about it?
Thanks,
jrs
On Feb 1, 2006, at 3:36 PM, Garth Smedley wrote:
We have just deployed our first Laszlo-based application and I
thought I'd take a moment to share some of our experiences. What
follows may seem fairly critical because it focuses mainly on the
problems we ran into and how we solved them. So I should start by
mentioning that the project was a complete success. The clients love
the application in a large part due to Laszlo's great looking UI. I
personally had a lot of fun working with Laszlo and would not hesitate
to use it in future projects.
The Project
In August '05 we were contracted to build a disease registry system
for doctors and case managers working with diabetes patients. This is
a data-centric application with about 200 data items on each form and
a new form for every visit with a patient.
The Decision
When we started we had plenty of experience building Java-based web
applications and some of us had experience building Rich Clients with
XUL, dotNet and wxWindows. We decided to try OpenLaszlo for several
reasons:
• User Experience - Case managers use the application many times a
day so it had to look and feel great.
• Cross-Platform Support - Had to support a wide range of operating
systems and browsers
• XML Datasets - Built-in mapping of XML to controls simplifies
development.
• Charts - Needed to be able to display several of these.
• Open Source - Needed to keep costs down and have access to
source
• New Stuff - We like working with fun new systems.
The Details
Getting basic functions to work was easy; just drop a few controls on
the page and hook them up with a bit of JavaScript. But getting the UI
right is all about the details and this is where we sometimes found
ourselves struggling. I attribute this mainly to the immaturity of the
Laszlo components, in most cases we were able to find solutions on the
forums or fix them directly in the source ourselves. Here are some
examples of the things we ran into:
• Combobox - no support for searching by first letter. We modified
the component to do this.
• Tabbing - trouble setting focus to the first item in a replicated
list. Never did solve this one.
• Tabbing and scrolling - Wanted to scroll items into view when they
receive focus. Partial solution found.
• Scrolling Input Text - Looks like this might be available now
through a Laszlo Mail component
• Sorting Tabs - When adding several items the sorting would fail.
Worked around this one.
• Table layout - We needed to layout fields and labels in a table.
Wrote a tablelayout.
• Cursors - changing to a wait cursor doesn't really work for long
operations, at times two cursors become visible or the mouse seems
frozen. No workaround.
• Date/Phone filters - Wrote our own but would have been easier with
more control of text entry.
Several of these are nice-to-have things that our users would easily
get used to, getting the basic functions was very straightforward and
for the most part we found the Laszlo components well-suited to our
needs.
Another more fundamental issue we ran into was getting the alignment
and layout right in complex screens. Eventually we were able to get
things to look the way we wanted but it seemed to take a great deal of
trial and error, typically involving turning on bgcolor's for views to
see what was happening. Before we were done we wrote a debug utility
to highlight views on mouseover, but I think the real solution is a
good screen layout tool. One that lets you manipulate layouts, sizes,
positions and alignment and see the results immediately. We did get
better at this as we gained more experience, the best bit of advice I
can give is to draw your view/layout hierarchy on a piece of paper
first.
Performance
The evil Flash message has one advantage, it forces you to keep user
wait time below 20 seconds. I never want my users to see that message
and we worked pretty hard to make sure they didn't. We ran into speed
issues in three places.
1 Startup. We have a form with about 200 data items on it, several
of which are lists and comboboxes generated from database tables. We
tried Kranking first and let me say that I fully support the decision
to remove that feature. Deferred Instantiation was the solution. The
application design lent itself well to this and it worked beautifully.
2 Comboboxes. There has been a lot of discussion about this lately.
We had one rather large combobox that could appear several times on
the same form and could be extended dynamically by the user. We wrote
a sharedcombobox component that works a little differently than the
newcombobox and isn't as complete but was sufficient for our purposes.
3 Many Forms. Instantiating several of our large forms ground the
system to a halt but we needed to allow switching between data for
different patient visits. The solution was to create a single form
and switch the dataset it pointed to. Works well and is very fast.
Development Process
Over the years I have gotten used to advanced development
environments like Visual Studio and Eclipse. Maybe I've gotten soft
but when coding in Laszlo I really want that little red underline to
appear when I misspell a function or attribute name. However, Laszlo
does support isolated component testing very well. Typically we would
extract the small piece we were working on, include only the files it
needed, and attach it to an in-line dataset instead of a remote one.
This allowed a very quick edit/compile/debug cycle.
The ability to easily switch between file-based and remote datasets
also allowed us to develop UI pieces while the database access code
was still being written.
Creating custom components is Laszlo is very easy. We created several
from simple expandable views and Yes/No controls to complex object
list controls. It does take a little while to completely understand
what is going on with replication but that is partly because it is a
fairly novel concept.
Summary
We spent about four months working on the project with three
developers spending time working in Laszlo. The end result was great,
we shipped on time and the client is very happy with the application.
Those of us who have had experience developing HTML applications
certainly never want to go back to that.
I'll be watching the progress of OpenLaszlo with great interest and
looking for opportunities to use it in future projects.
Regards,
Garth
_______________________________________________
Laszlo-user mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-user
_______________________________________________
Laszlo-user mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-user