Feature Wishlist
From OpenLaszlo
This is a wishlist for user features. See Enhancement Proposals for a list of specific proposed syntax and API changes.
Contents |
Components
- Progress bar
- Panels
- HBox, VBox (with default layout axis="x", "y")
- Divider lines (like <hr>)
- Faster combobox
- Imagemap
- Floating-point Slider, with settable precision (current slider is int only)
- File upload (like <input type="file">) (under construction by Michael Gregor and David Nault)
- Multi-header grid (tables / spreadsheet like)
- More layout managers -- transitions, animation?
- Charting Components
Tools
- CallProfiler
- StartupTimeProfiler
- Visual Designer
Documentation
- Articles, especially about integration
- searchable docs (using Lucene?)
Compatibility
XPath
- predicate functions for node text
Official support for other containers
- resin
- jrun
- sun one
- oracle
Media types
- Animated GIF
- wav audio (including pcm and gsm) and video
- tiff
- svg
- Flash Video (FLV)
API Changes
- Add an <event> tag
- Default layout
- Break out LFC data transport (request and response objects) from dataset and view.setSource() APIs
- Add support for datasets relative to another dataset. e.g. Have a master dataset that contains a large amount of data, and have a dataset that points to a subnode of that dataset.
- Include since OL 4.0.xx lost class netremotecalls for Red5 RPC on the OL Frontend
Architecture Changes
Stream-based Compilation
Project page: Stream-based Compilation
The LPS Compiler is file-based. Make it stream-based to make it easier to integrate with Cocoon and tag libraries without managing temp files.
Server Features
Server Proxy Changes
- Add support for HTTP Expires/Cache-control: Age header proxying and caching
Enhancements to Java RPC
Complete SOAP 1.2 and WSDL 1.2 Support and improving the stabilty of SOAP component
Compiler Features
- Allow developers to define autoinclude rules for their own LZX classes.
Type declarations
Change the JavaCC grammar to allow optional type declarations for variables and functions, e.g.
function f(a: String, b: String) : String {
return a + b;
}
Media Features
The Media transcoder is shared by the server and the compiler. The server uses it to service dynamic requests, and the compiler uses it to compile static (compile-time) resources.
Animated GIFs
To display an animated GIF, you have to transcode it to either:
- a sequence of images or
- a 30fps swf with a gif2swf tool
You can do this today outside of the LPS with a number of tools, like gif2swf. It would be nice if the compiler did this automatically.
Build System
Maven build
This item has been adopted. See Maven Build.
Dependencies
Remove dependency on java.awt
java.awt has native code, which triggers the loading of the libawt library. This has been a problem in several contexts (for instance, running headless on MacOS and UNIX). Use the classes in java.awt.geom.* (e.g. Rectangle2D) instead of java.awt.* (Rectangle).
This might be fixed in 3.0b1.
JDOM
Upgrade to JDOM 1.0 final. They moved JDomFactory from org.jdom.input to org.jdom, so this conflicts with other jars from Liferay.
EDU.oswego.cs
We use this package for only one class ReentrantLock. It would be nice to remove dependency on this so we could remove the package. This is low priority. If/when we drop support for Java 1.4, we can use the built in ReentrantLock, or whatever it is now called in 1.5.
JavaCC
This might be just a matter of verifying that it compiles and runs with the latest JavaCC.
JGenerator 2.2
We have forked this library because we were (1) concerned about java class loading issues and (2) could not get the jgen community to accept changes we required. It would be nice to have a better procedure for merging changes/fixes from the jgenerator project .
Jakarta/Commons
Most of the jars are dated by a certain degree, updating could help in performance and/or simplification.
- commons-collections.jar - Could be updated if there's a reason. We make use of a few things there.
- commons-discovery.jar - We don't use this, I believe it can actually be removed now.
- commons-httpclient-2.0-rc1.jar - we use this and I would like to be involved in any upgrades/updates. Going to the latest 2.x should be safe, but I'd want to review their changelog and haven't. Going to 3.x would be nice, too, but there's a few other things that should probably happen at the same time. It's also possible we may want to build this from source so that we can avoid commons-logging. I contributed an ant build file that does this for 2.0-rc1.
- commons-jexl-1.0-dev.jar - Needed by jgenerator 2.2 source - would prefer not to upgrade this. it's likely we only need this for compiling the jgenerator classes and could avoid keeping it in WEB-INF/lib since we don't ever hit it at runtime.
- commons-logging.jar (used in one place in com.laszlosystems and used by other 3rd-party pieces including axis) - I'd actually love to remove our dependence on this package.
- jakarta-regexp-1.2 - Could be upgraded if there's a reason. We could also drop our use of this and move to the support available in java 1.4 (now that we no longer support 1.3). But it's stable and works fine afai know and I see no reason to upgrade it.
- log4j - This could be upgraded to latest 1.2.x and would probably be as simple as replacing the jar in the handful of places we have it (including inside tomcat). We make standard use of this package afai know and I don't believe any of the apis we use have changed.
- batik-svggen.jar - We use the ttf parser in this package for our TTF2FFT code. It could be upgraded if there was a reason. I believe our version of this jar was build from 1.5 source and includes a bug fix or two we made. So we'd need to make sure those fixes have been rolled in.
- axis.jar - I think we might want to move to compiling this from source or, at least, move to something recent. Pablo Kang should have details.
- tomcat - latest 5.0.x might be prudent but 5.0.24 is working fine for us wrt to using it for development. we have minor changes (mostly to start up scripts to increase the default mem size) that would have to be merged. We could talk about 5.5 if folks think it's stable and worth it.
Integration
Tapestry Integration

