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

  1. to provide proper access to sufficiently many useful class libraries,

  2. 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

  1. 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).

  2. Integration of existing SQL or object-oriented databases into Lava

    for instance via OLE-DB / ODBC.
  3. Experimental support of Generative and Aspect-Oriented Programming and of incremental specialization of methods

    (To be outlined in a forthcoming paper.)
  4. (Semi-)automatic generation of various kinds of UML diagrams from Lava programs

  5. 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, ...)

  6. 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.

  7. Lava XML support

    Translation of Lava objects into XML representation and vice versa.

  8. Implementation of a version migration concept

    for automatic upgrading of "old" Lava programs after modifications/extensions of the Lava program storage format.

  9. Completion of the Lava online documentation

    (Command of the English language and sufficient understanding of Lava required.)

  10. Development of Lava sample programs for various application areas

    (Theoretical and practical understanding of Lava and sufficient command of the English language required.)

  11. 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".

  12. 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.

  13. Formal semantics of Lava programs, proof of Turing equivalence

See also

How can I contribute to the Lava development?