Personal tools

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

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.

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:

  1. a sequence of images or
  2. 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

Cocoon integration

Tapestry Integration