# Virtual World Framework & OMeta: collaborative programming of distributed objects with user defined languages [2014]

The latest work being done as part of Krestianstvo SDK research effort was presented at the [Future Programming Workshop](http://www.future-programming.org) at [SPLASH 2014](http://2014.splashcon.org), Portland (Oregon, United States). The full program is [here](http://www.future-programming.org/program.html)

<iframe src="//player.vimeo.com/video/106690115" width="600" height="337" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
<p></p>

[Working prototype](http://vle.krestianstvo.org/adl/sandbox/world/OlxOHOzdn4yU10yn)

[Source code](https://github.com/NikolaySuslov/Sandbox-VLE/tree/vle-sandbox)


The Virtual World Framework (VWF) provides a synchronized collaborative 3D environment for the web browser. Continuing the OpenCroquet research effort, VWF allows easy application creation, and provides a simple interface to allow multiple users to interact with the state of the application that is synchronized across clients, using the notion of virtual time. A VWF application is made up of prototype components, which are programmed in JavaScript, that allows a shared code and behaviours used in distributed computation, to be modified at runtime. OMeta is a new object-oriented language for pattern matching. It is based on a variant of Parsing Expression Grammars (PEGs) which have been extended to handle arbitrary data types. OMeta's general-purpose pattern matching facilities provide a natural and convenient way for programmers to implement tokenizers, parsers, visitors, and tree transformers.
The integration will allow to define on any VWF component it's own language grammar and replicate it through the application instances, then have a running scripts based on that shared grammar for that component. For example, one could have all the languages down from Logo (Turtle graphics) to Smalltalk available for scripting the virtual world just in the Web browser.

The talk contains examples of collaborative programming of distributed objects with user defined grammars. These objects could exist alongside with each other in the same replicated virtual world, being programmed on quite different languages, but holding the same simulation.

![poster](../images/projects/fpw/poster-fpw.jpg "FPW")
