VETk: Virtual Environment Toolkit
Last page update: 27 feb 2002 |
Last release: VETk 2.4, 26 feb 2002
Introduction
VETk 2 is a complete redesign of the older VETk toolkit (see the old VETk homepage for more information).
The toolkit is part of the specification
technique being developed as part of my Ph.D. project (See my publications for more information).
VETk `Virtual Environment Toolkit' is a programming toolkit for writing
distributed or concurrent user applications, possibly incorporating user
interface agents. Examples are web-based multimodal dialogue systems and
multi-user virtual environments.
The
toolkit provides:
- network- and browser-transparent communication facilities
- a relational database engine with publisher-subscriber facilities
- standard components for writing GUI and Web applications
- Several special languages:
- Components are written in VCL (VETk Component Language), which
provides a thin yet convenient wrapper around Java, making integration of Java
classes with the framework easy. VCL components compile to Java applets.
- Component configuration may be done in both HTML with embedded
agents, and VETkScript, which is a Python-based language,
incorporating database access operations in Python. VETkScript also enables
command-line operations, which is useful for online debugging and even online
editing of system state.
- Constraints on the data in the shared database may be defined in VDC
(VETk Data Constraint definitions). The language enables
entity/relationship modelling, statecharts, and OCL-type constraint
definitions. Diagrams and constraint checking code may be generated from VDC
specifications.
With the current toolkit, small applications can be developed quite easily.
Very simple multi-user applications only take about a page of HTML code, which
runs in any Java-compliant Web browser. Some more complex applications are
included as example programs in the toolkit.
Distribution
This software is distributed under the BSD license.
It requires:
Gallery of specifications
A full specification of a program consists of:
- A natural-language description
- The data constraint definition (VDC)
- the code for each window (HTML or VETkScript)
- any startup scripts of standalone agents (VETkScript)
- if other than standard agents
were used, the code for each agent. (VCL)
The example programs (as found in version 2.3.4 and 2.4) are specified here.
The most well-specified example is currently Webset.
Future plans
Improve the languages!
- The role of VCL should move towards that of a component interface
language, providing descriptions of interfaces only without mixing in code.
This should provide more language-independent interface descriptions, making
the framework ready for multi-linguality. The interfaces should be connected
to back-ends written in any language by means of a specifiable back-end
interface. For example, we might specify a Java back-end, making a
well-defined connection of a given VCL interface with Java method calls, and a
Prolog back-end, making such a connection with execution of Prolog clauses.
To implement this easily, this does require some form of reflection, for
example, the Java back-end should be able to seek out methods in specified
classes.
- OCL-type expressions should move to VETkScript, since they prove quite
useful. State machines too could move to VETkScript, making them part of the
system's description rather than of its behaviour constraints. This last idea
was prompted by the need to be able to read out the state of a finite-state
automaton in many cases.
Implement a method for combining synchronous and asynchronous
publish/subscribe functionality, enabling parts of the application to operate
synchronously. Actually, I've been thinking about this for a long time, and
have identified many problems with such an approach. Most likely is the
addition of a limited synchronous form of communication.
For a long while I've been thinking about a 3D library. To be interesting, it
should be capable of animations. However, the easily available 3D facilities
(VRML, Java 3D) have their technical weaknesses, probably making the
development of such a library a lengthy and difficult enterprise. I've even
been thinking of re-implementing VRML, which, from my research viewpoint, has
some interesting features, including an interesting dynamical model. I think
it's a pity that the development of the VRML language seems to have stopped,
as the language might have been very nice with further improvements. Rather,
development seems to be going into the wrong direction, with the movement
towards X3D. X3D is only different from VRML in a shallow way, and it seems
that the movement towards an XML syntax moves the role of VRML away from a
programming language towards a data format. To start with, I think that the
VRML syntax BNF can easily be improved, and the language should instead
incorporate some extra practical features to make it more useable as
a programming language, such as macros and numerical expressions. Here is my attempt at a VRML syntax, at least this one is
LALR(1) and is also a bit smaller and more extensible than the VRML
standard grammar.
Background information
Papers and presentations on VETk
Presentation given at DSVIS2001 on 15 june 2001:
Presentation given on 9 april 2001:
Related work
Boris van Schooten