Next steps, future plans, desirable contributions
We are two full-time developers presently. The development
of an entirely new programming language and of a fully fledged programming
environment is a big effort, however. So we shall depend on contributions by
volunteers who share our opinion that Lava
provides quite a number of promising features and improvements which should
be further explored, enhanced, and made accessible to a broad community of
people who, like us, are discontented with the presently prevailing
classical textual programming languages and loosely integrated tools.
Next steps
Clearly it must be our primary goal to reach a state of
Lava/LavaPE
where it is sufficiently complete and attractive for sufficiently many
users in order to cause further developers to contribute to the
Lava open source project. To this
end we have
-
to provide proper access to sufficiently many useful class
libraries,
-
to generalize the Lava
GUI builder so as to support the construction of dialogs as well as of
application main windows.
As to the second issue, we cannot afford presently to write
such class libraries from scratch ourselves. On the other hand, it would
anyway be preferable to make the great variety of existing class libraries
accessible through uniform, language-independent component interfaces, and
in our present opinion this appears to be the
most attractive approach.
The third issue is a typical example of a "desirable
contribution", since we shall not be able to realize it ourselves in the
near future.
Desirable extensions
-
Remote
debugging of Lava
programs
for instance via OLE automation. It should be possible to
start and debug any Lava
program from within LavaPE
(even remotely, on another computer). It should also be possible for a
Lava program do enter this
debug mode afterwards (e.g., after an exception has occurred).
- Integration of existing
SQL or object-oriented databases into Lava
for instance via OLE-DB / ODBC.
- Experimental support of
Generative and Aspect-Oriented Programming and of incremental
specialization of methods
(To be outlined in a forthcoming paper.)
- (Semi-)automatic generation of various kinds of
UML diagrams from Lava
programs
-
Various LavaPE utility
functions
For example: Walking through all references to some Lava
entity, searching implementations of a given class, analysis and
representation of dependencies (inheritance trees, include files, function
calls, ...)
-
Web-based support of synchronous and asynchronous distributed
applications
Before we started the Lava
development we had designed and implemented a programming environment DISCO
(DIStributed Cooperative Office applications).
Applications programming in DISCO
was based on C++ with
precompiler enhancements. The major DISCO
highlights were: Support of synchronous as well as asynchronous form-based
distributed applications, support of restart after interruptions without
loss of data, automatic generation of form representations for (annotated)
C++ type declarations,
support of multiple digital signatures within forms and of data
encryption, provision of a hierarchical name space of "organizational
units" (OUs) and users, "agendas" of OUs from where you can
activate "tasks" belonging to some distributed application (or "business
process"), management of "transition or proxy rights"
between OUs. Central components of DISCO
were: a distributed communication service based on stored messages (having
unique identifiers) and a distributed "application manager" (AM)
for managing all those above-mentioned static and dynamic DISCO
entities.
We should like to reconstruct these advantageous features of DISCO
on the basis of Lava
component facilities. This would mean in particular to integrate the "application
manager" AM into a Web server and to replace the DISCO
communication service by a combination of "asynchronous component
interface function calls" and a closely related mechanism of
activation/deactivation of component objects by the AM.
-
Lava XML support
Translation of Lava
objects into XML representation and vice versa.
-
Implementation of a version migration concept
for automatic upgrading of "old" Lava
programs after modifications/extensions of the Lava
program storage format.
-
Completion of the Lava online
documentation
(Command of the English language and sufficient understanding of Lava
required.)
-
Development of Lava
sample programs for various application areas
(Theoretical and practical understanding of Lava
and sufficient command of the English language required.)
-
Design and implementation of a
Lava service
security concept
This should make sure that Lava
component interfaces (or individual functions thereof) can be used only in
specific ways and/or by specific organizational units.
It concept should be sufficiently general, simple, and clear to guarantee
that a dedicated Lava
computer would be "burglarproof". The basic idea of such a
concept will probably be that of "programmable interception of
function calls".
-
Design and implementation of a Lava
encryption and digital signature support
Based on our former DISCO mechanisms (cf. 4 above) for embedding digital
signatures and for using data encryption in structured forms,
corresponding expressive means and run time functions should be integrated
into Lava.
-
Formal semantics of
Lava programs, proof of Turing
equivalence
See also
How can I contribute to the Lava
development?