How difficult would creating a collaborative multi-user online virtual world application be in Haskell?

One question that has been coming up at the back of my mind for the past several weeks has been how difficult would it be to create a collaborative multi-user online virtual world application in Haskell. More specifically, last August, I came across a very interesting application called Croquet (see http://www.opencroquet.org/index.php/Main_Page), which happens to be based on Squeak (see http://www.squeak.org/), a dialect of Smalltalk. Croquet, in turn, provides the basis for Cobalt (see http://www.duke.edu/~julian/Cobalt/Home.html), a "virtual workspace browser and construction toolkit for accessing, creating, and publishing hyperlinked multi-user virtual environments" (according to the home page for that project). What struck me as especially interesting was how Croquet allows multiple users to collaborate together in a multi-user online virtual world in software development and other collaborative projects. As one application, the video clip on the upper-right-hand corner of the above-mentioned Croquet home page illustrates how a user can, by writing code from inside the application, create on-the-fly additional virtual environments, which can then be entered by either the programmer or other programmers. Other applications (shown in other video clips on the "Screenshots/Videos" page (see http://www.opencroquet.org/index.php/Screenshots/Videos) show alternative applications that include text-based annotations, a 3D spreadsheet, and writing a conventional blog from within a virtual world. Unfortunately, Smalltalk is an object-oriented language. If possible, I would like to see something similar in a functional programming language such as Haskell. Does anybody know whether duplicating this project in Haskell would be feasible? -- Benjamin L. Russell -- Benjamin L. Russell / DekuDekuplex at Yahoo dot com http://dekudekuplex.wordpress.com/ Translator/Interpreter / Mobile: +011 81 80-3603-6725 "Furuike ya, kawazu tobikomu mizu no oto." -- Matsuo Basho^

This reminds me of a server app I saw recently in a language called
Clojure. Clojure is a relatively new lisp variant targeting the JVM,
and has a home-grown STM layer built into the language. Anyway, the
app I saw was a (admittedly didactic-focused) multi-threaded MUD
server (google "clojure mire"), which could easy serve as the
foundation for a project like this. Thus, I would say that STM is up
for the challenge. The question in my mind would be whether or not
Haskell's graphics/video libraries are mature enough.
On May 7, 2009, at 6:28 AM, Benjamin L.Russell
One question that has been coming up at the back of my mind for the past several weeks has been how difficult would it be to create a collaborative multi-user online virtual world application in Haskell.
More specifically, last August, I came across a very interesting application called Croquet (see http://www.opencroquet.org/index.php/Main_Page), which happens to be based on Squeak (see http://www.squeak.org/), a dialect of Smalltalk. Croquet, in turn, provides the basis for Cobalt (see http://www.duke.edu/~julian/Cobalt/Home.html), a "virtual workspace browser and construction toolkit for accessing, creating, and publishing hyperlinked multi-user virtual environments" (according to the home page for that project).
What struck me as especially interesting was how Croquet allows multiple users to collaborate together in a multi-user online virtual world in software development and other collaborative projects. As one application, the video clip on the upper-right-hand corner of the above-mentioned Croquet home page illustrates how a user can, by writing code from inside the application, create on-the-fly additional virtual environments, which can then be entered by either the programmer or other programmers. Other applications (shown in other video clips on the "Screenshots/Videos" page (see http://www.opencroquet.org/index.php/Screenshots/Videos) show alternative applications that include text-based annotations, a 3D spreadsheet, and writing a conventional blog from within a virtual world.
Unfortunately, Smalltalk is an object-oriented language. If possible, I would like to see something similar in a functional programming language such as Haskell.
Does anybody know whether duplicating this project in Haskell would be feasible?
-- Benjamin L. Russell -- Benjamin L. Russell / DekuDekuplex at Yahoo dot com http://dekudekuplex.wordpress.com/ Translator/Interpreter / Mobile: +011 81 80-3603-6725 "Furuike ya, kawazu tobikomu mizu no oto." -- Matsuo Basho^
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On Thu, May 7, 2009 at 3:28 AM, Benjamin L.Russell
One question that has been coming up at the back of my mind for the past several weeks has been how difficult would it be to create a collaborative multi-user online virtual world application in Haskell.
It should be easier than in many other languages, but that's not saying much: for any big, sprawling application, its own intrinsic complexity will make building it difficult. You can of course have an effect on extrinsic difficulties through, among other things, a careful choice of implementation language. An ill defined problem is going to face many more non-obvious decisions than one that is tightly scoped. On such a project, the chances that you'll make decisions (probably many of them) that turn out to be both pivotal in their importance and detrimental in their effect are high. Haskell provides a certain amount of defence against some such decisions through its emphasis on purity, but again it's the fuzzy nature of the problem space that's likely to cause you the most headaches, not aspects that a language will help much with.

Benjamin L.Russell wrote:
Unfortunately, Smalltalk is an object-oriented language. If possible, I would like to see something similar in a functional programming language such as Haskell.
Does anybody know whether duplicating this project in Haskell would be feasible?
In terms of technical feasibility, Smalltalk does have some advantages in the metacircularity of the VM/compiler/program, which seem like they're being taken advantage of for this application. Following along this direction, Luke Palmer is working on a language, Dana[1], which aims to be Haskell-like and also to have a Smalltalk-like metacircular VM. Depending on what exactly you want to duplicate, something like the Dana project may be a good thing to follow. [1] http://lukepalmer.wordpress.com/category/code/dana/ -- Live well, ~wren
participants (4)
-
Andrew Wagner
-
Benjamin L.Russell
-
Bryan O'Sullivan
-
wren ng thornton