Legals Project Plan
From OpenLaszlo
This document provides the project plan for Legals, the OpenLaszlo release that supports both Flash and DHTML runtimes. All project milestones will appear on this page. In addition, this page is the kickoff page for all other legals-related pages.
Contents |
Legals Project Goals
The goal of the legals project is to turn OpenLaszlo into a true multi-runtime platform by supporting both Flash and DHTML runtimes. Currently, OpenLaszlo generates script source that is compatible with ECMAScript Release 3, while the backend generates SWF7 through SWF8. More specifically, the front end generates Javascript 1.5, which is compatible with ECMA3. Since ActionScript is also an ECMA3 dialect we can compile directly to SWF bytecodes from ECMA3. With Legals, OpenLaszlo will move to compatibility with portions of the draft ECMAScript Release 4 standard, and expand runtime support to include two new families, SWF9 and DHTML on popular browsers. We are also interested in other potential runtimes (XAML/.NET, various mobile runtimes, etc) but are not explicitly designing for them at this time.
SWF9 Runtime Goals
The immediate goal of the swf9 porting project is to take advantage of the performance improvements in swf9 (AVM2). The swf9 vm is 10x faster for low-level stuff, with types another 2x or so. A secondary goal is to enable access to new features of AVM2, especially where these features are or will also be supported by other runtimes (e.g., regular expressions, E4X support deferred from intial release). It is not a goal of this project to add these new features. For example, it is outside the scope of this project to add regular expressions or E4X to the OpenLaszlo platform. However, this project should leave the platform in a state where it is easier to add these features in a way that has support on at least one swf and one non-swf target.
The http://osflash.org/swf9dis and http://osflash.org/flash9 pages provide:
- Information about the SWF9 bytecode set. It is useful to compare the binary output of the Flex compiler from different source examples.
- Tools for unpacking a swf file, doing a binary diff on various tag contents
Other Flash Runtimes
OpenLaszlo 3.x supports Flash Players 6 (swf6), 7 (swf7), 8 (swf8). OpenLaszlo 4.x (aka Legals) will support Flash Players 7, 8, and 9. See http://wiki.openlaszlo.org/Flash_Versions.
DHTML Runtime Goals
The initial DHTML target will be Javascript 1.4/Jscript 5.6. Subsequent releases will support Javascript 1.5. This requires a baseline of ECMA3.
System Requirements:
- Javscript 1.4/Jscript 5.6 for initial release
- HTML 3.2 transitional, DOM level 2, CSS2
- Browser versions: Windows IE 6.0, Firefox 1.5
- Platforms: Windows XP/2000, Linux 2.6, Mac OSX 10.2 (Firefox browser only)
DHTML issues and working document can be found here: DHTML_Target
Runtime Differences
The goal of Legals is to ensure that LZX applications behave the same way regardless of the target to which they're compiled. However, sometimes that's simply not possible, usually because the DHTML runtime does not support some feature that is implemented in flash. For example, DHTML does not natively support video or embedded fonts. These difference may require developers to modify or conditionalize code depending on how they plan to compile it.
These differences are summarized in Runtime_Differences
Legals Resources
Other useful subpages, which can and will be modified, include:
- OpenLaszlo_and_AJAX is a position paper about OpenLaszlo and DHTML
- Supported browsers lists the platforms and broswers supported in OpenLaszlo 4 B1.
- DHTML_Target is an active page of current DHTML target issues
- DHTML_Laszlo contains developer notes and tools for DHTML
- swf9dis and flash9 are separate efforts on osflash.org to create SWF9 tools and reverse engineer the opcodes
- ECMA3_Compatible_Languages contains details of ECMA3/4 runtimes.
- JIRA list for legals tasks. See the OpenLaszlo legals milestone.
- LzTest_API describes how to use the new unit test api
- SubversionBuildInstructions describes how to build from sources in Subversion
- KernelAPIProposal describes the core APIs required for a multiple runtime environment
- SimpleRequiresProvidesProposal describes a simple requires/provides proposal for specifying runtime-specific constraints
- Legals_Merge_Log tracks integrations from trunk to branches/legals
- 4.0_Merge_Log tracks integrations from branches/legals to branches/4.0
- Runtime_Differences tracks differences between OpenLaszlo runtimes.
- Examples_In_Legals tracks support for OpenLaszlo Demos and Examples
If you are uncertain about which page to add information to, please send email to either amuntz@openlaszlo.org or max@openlaszlo.org. Please do not just create another legals wiki page.
Documentation Plan
4.0 includes major improvements to the documenation and an overhaul of the doctools infrastructure. See the plan here:4.0_Documentation_Plan
Architectural Overview
Overall, the goal is to provide the most consistent and best-performing experience possible across the target runtimes.
First, the runtime libraries are being refactored to separate runtime-specific code into 'kernels' - one for SWF and one for DHTML. Next, they will be rewritten to use a new Jscript/JavaScript compliant inheritance model. At this point, the runtime libraries will be pure Javascript 1.2.
Good performance on SWF9 is likely to require use of new language features in AS3/ECMA4: class-based object model, static typing, and sealed classes. Therefore, the runtime will be rewritten on top of ECMA4. Future ECMA4-based runtimes (e.g. Firefox 2.0) will require relatively little support for OpenLaszlo compatibility. Some ECMA3+ features can be compiled away for ECMA3 targets, including static typing and sealed classes. The ECMA3 class-based object model will be emulated on top of the Jscript/Javascript inheritance model.
By the time we complete OpenLaszlo 4.0 We will have several discreet components that may be reused by other opensource projects, including:
- backends for converting ECMA3+ to native ECMA 262 dialects
- ECMA4 object model simulation in JScript 5.6, Javascript 1.5
Architectural details - will be taken from the Multiple_Runtimes_Infrastructure and Legals_Project pages and combined into a single page, and renamed legals architecture.
Milestones
This section describes the major milestones for the project. As the details for each task becomes clear, they will be added here. Other tasks will also be added.
March 6, 2006 - Demo
Released: LZpiX Demo
June 2006 - Preview 1
This is a preview of Legals - functionality incomplete, but architecture in place enough to invite community participation
Sub Tasks
- New class model (refer to LPP-2029)
- Compiler modifications to emit ECMA3
- Creation of sprite kernel API from LzView for both DHTML and SWF
- Creation of unit testing framework that supports kernel development and automated testing within Rhino
- Update of deployment wrappers to support both DHTML and SWF
- Cross-runtime debugger console for cross-platform development
- Source control for Legals migrated to subversion (see SubversionBuildInstructions)
July 2006 - Preview 2
This release adds support in the DHTML runtime for IE6 and Safari; SWF9 work has begun
Sub Tasks
- Profiler ported to DHTML
- LFC sources cleaned up, organized, runtime-specific extensions separated
- No known memory leaks in IE6
- Initial round of IE6 performance optimizations
- Safari blockers resolved
- LZPIX works in Firefox 1.5, IE6, Safari 2.0
August 2006 - Preview 3
This release further builds out the multiple (DHTML, SWF7-8) backends. LFC is modernized, and DHTML and SWF7-8 kernels are feature complete.
Sub Tasks
- DHTML, SWF7-8 kernels feature complete
- LFC cleaned up and converted to ECMA3
- LFC feature-complete against SWF7-8, DHTML kernels
- Raster assets for components (pending designer availability)
Early October - Preview 4
This release contains functioning versions of most of the standard OpenLaszlo UI components.
Sub Tasks
- ECMA4 draft enhancements complete
- LFC converted to use ECMA4 draft enhancements
- Components running in both runtimes
- More sample code and examples updated for Legals
- Improvements to OOBE and packaging
Late October - Beta 1
Sub Tasks
- Doc Tools updated to handle refactored LFC, runtime differences, ECMA3 + ECMA4 draft enhancements
- Beta-quality OOBE and packaging
- Mostly feature-complete, some blocking issues and missing features
December - Beta 2
Sub Tasks
- Feature complete, no major blocking issues
- Initial documentation
Final Release - Q1 2007
This is the fully qualified release of Legals. Applications may be deployed against this release.
Soon Thereafter
- Initial demonstration of Flash9 support
- Meeting Agenda September 2007

