User: Password:
Subscribe / Log in / New account


The OpenCroquet Project

February 23, 2005

This article was contributed by Frank Pohlmann

Late 19th century paintings of croquet-playing ladies are a somewhat unusual visual advertisement for a multi-user software design environment. But if we were to express OpenCroquet's qualities in a few words, it would be "a true collaborative internet-enabled three dimensional design environment". And the collaboration should be as smooth and unhurried as a game of, well, croquet.

[OpenCroquet] OpenCroquet is planned to become such an environment. Based on Squeak, a Smalltalk-80-based multimedia design and studio, it continues the Xerox-PARC tradition of building software environments that enhance the human ability to think while avoiding machine-based constraints. Squeak and OpenCroquet are led by some of the original Xerox-PARC crew, first and foremost Alan Kay.

Although OpenCroquet is billed as an extension of the more mature Squeak environment - Squeak reached version 3.7 in December - OpenCroquet is far more than a plug-in or a software module. The currently downloadable version has the rather dispiriting version number 0.1; for the moment it relies on Squeak 3.6, not 3.7 and the OpenCroquet installation installs its own Squeak environment. Also known as the "Jasmine" release, it is accompanied by the usual health warnings, but anyone with a smattering of Smalltalk or Slang and a broadband connection would find it easy to muck around with the code and run most of the environment without too many problems.

Squeak is a fully object-oriented programming and authoring environment, and anyone familiar with it will find many of the graphical primitives and some of the GUI features available under OpenCroquet. Squeak permits both scripted and purely GUI-led creation of new objects. Changes to the runtime environment during object creation will not interrupt the underlying Squeak virtual machine. This is mostly due to the storage allocation algorithm and the realtime garbage collector working within the VM.

OpenCroquet does not only take advantage of Squeak, it is the result of a comprehensive re-architecting of the very idea of internet-enabled collaborative environments. Web interfaces and classic IP-based protocols allow for some collaboration, but collaborative interfaces are usually document-based, or rely too much on analogues to phone messaging. OpenCroquet is emphatically 3-dimensional, and it employees peer-to-peer networking that is not compromised by the existence of a central server to simplify the updating of object hierarchies.

It is also uncompromisingly object-oriented, taking messages between objects as the main communication and update mechanism. Smalltalk and some operating systems have taken this approach very seriously, but in a 3-D environment where the very interface is just another objects whose behaviours can be changed by programmers at any time, the very size and content of messages broadcast from object to object carry substantial implications.

All objects are accessible to other users and all users participating in a particular shared space can modify all objects present in that shared space. All objects are replicated across the shared space, thereby making it simple for all users to work in the same interactive 3-D space. Objects are always versioned, something that is achieved by embedding a timebase in the communication protocol used by OpenCroquet.


The central ideas behind OpenCroquet object communication are contained within its multi-user communication architecture, also known as TeaTime. What is important here is the fact that it isn't just data that aren't replicated across the OpenCroquet system, but also computations.

This is why synchronization protocols are extremely important. OpenCroquet needs to complete all visible (and audible) I/O-based effects before all messages are communicated to all collaborating objects within the shared space. For instance, all screens show identical interfaces, even though the perspectives might be different. How the computations are executed is entirely the responsibility of the individual object. How the computations propagate to every instance is due to the protocol being used. But it isn't usually a problem to propagate the messages to replicated objects, since they are likely to encounter an object state identical to the one the previous object was in before the computation was initiated.

But the object state update happens in two stages, not one. First, the behaviors of all of objects participating in an event or action are computed and all objects have to wait for the computations to end by a certain deadline. Then all behaviors are committed atomically. This point is re-iterated in the excellent documentation available the OpenCroquet website and it should be taken into account when new OpenCroquet applications are coded.

If the object behaviors (or methods, to stay in OO terminology) do not meet the deadline, all calculations executed by objects resident in the shared space are stopped and discarded.

There is another benefit to the historical data kept by the object. Distributed 3D environments suffer from risks caused by possible network disruptions or unpredictable user behavior. This might lead to objects or users being cut off from the shared space. The historical data are supposed to enable individual objects to recover from disruptions to the environment. This can be due to a number of factors; given that software and hardware underlying any OpenCroquet shared space is likely to be heterogeneous and that networks can be volatile, distributed object protocols have to have recovery mechanisms built in.

Any 3D distributed programming environment has to be easily intelligible to non-graphics programmers. 3D designers using tools like Blender should be comfortable creating collaborative objects for, say, electronic learning environments. OpenCroquet components are collected in the so-called Teapot suite; they provide access to the OpenGL rendering engine, event handlers and simulation objects that are part of the TeaTime architecture. The graphics methods provide the user interface elements; since we are talking about a 3D environment, all rendering behavior that is included in a rendering frame has to include far more information than other user interfaces would usually require, including the user's and the object's position within the shared 3D space. The so-called Tframe class gives complete access to the OpenGL library.

Events are communicated by something that is analogous to a user camera ("TuserCamera"), while objects are tracked via a 3D analogue of mousepointer. Keystrokes can be mapped onto both 3D objects and embedded 2D objects. The graphics engine has been implemented in Squeak, which is somewhat surprising given the typical graphics programmer's predilection for C and C++. Its speed is not impaired by this choice in any way.

Simulations manage fairly complex behaviors, and are coded separately to avoid imposing too much rendering overhead. The outcome of methods would be calculated continuously; once an individual calculation is completed, a message is sent to be received by the object at some time in the future. This may sound like time travel, but is just good policy to avoid the constant rendering overhead enforced by recalculating present object state by referring to past object history.

3D collaborative environments tend to have fairly straightforward applications from collaborative engineering projects to multi-user learning environments that go beyond grading and the use of spreadsheets. Of course, previous 2D interfaces are not completely ignored; Mozilla runs quite happily inside OpenCroquet. But as soon as object libraries and networking bandwidth is available, a wide variety of new uses can be implemented.

Comments (5 posted)

System Applications

Audio Projects

Planet CCRMA Changes

The latest changes from the Planet CCRMA audio utility packaging project include new versions of Audacity, amSynth, and XMMS Jack.

Comments (none posted)

Database Software

knoda 0.7.3-test2 released

Version 0.7.3-test2 of the knoda database frontend is available, here is the change information: "The scripting API improved a lot. Handling the tab-order in forms works also for subforms, a runtime version of knoda (knoda-rt) has been added, the performance is better and many bugs are fixed."

Full Story (comments: none)

New MaxDB 7.6 beta released

Version 7.6 beta of the MaxDB database has been announced. "This release is a beta version, preparing for the production version release, which will take place in Q2 2005."

Comments (none posted)

PostgreSQL Weekly News

The February 19, 2005 edition of the PostgreSQL Weekly News is out with the week's PostgreSQL database news and resources.

Full Story (comments: none)

New PostgreSQL Software

The PostgreSQL database developers have announced phpPgAdmin 3.5.2 with bug fixes (mostly for the Windows version) and PGCluster-1.3.0, "a Synchronous Multi-Master replication system for PostgreSQL 8".

Comments (none posted)


Samba Roadmap Slides

A set of Samba Roadmap Slides are available from in pdf format. "Samba Team member and 3.0.x release manager Gerald "Jerry" Carter gave a talk on "The State of Samba" at LinuxWorld Boston this week. The talk serves as an overview of recent activity on Samba, as well as an overview of where Samba is headed. The slides from the talk are available online and serve as an excellent guide to the planned roadmaps for both Samba 3.0 and Samba4."

Comments (none posted)

Networking Tools

xprobe2 v0.2.2 released

Version 0.2.2 of xprobe2 is out with several new features. "probe2 is a remote active operating system fingerprinting tool which uses advanced techniques, some which where first to be introduced with Xprobe2, such as the usage of statistical analysis ('fuzzy logic') to match between probe response(s) to its signature database and others, in order to provide with accurate results regarding the underlying operating system of a probed element(s)."

Full Story (comments: none)

Package Management

Pre-Patched Kickstart Installs (O'Reilly)

Ethan McCallum automates Linux package management on O'Reilly. "My two previous articles explained how to use Kickstart to automate OS installs and upgrades. This article demonstrates some techniques for the third piece of the system maintenance cycle: keeping your machines up to date."

Comments (none posted)


ESP Ghostscript 8.15rc2

Version 8.15 rc 2 of ESP Ghostscript has been announced. "ESP Ghostscript 8.15rc2 is the second release candidate based on GPL Ghostscript 8.15 and includes an enhanced configure script, the CUPS raster driver, many GPL drivers, support for dynamically loaded drivers (currently implemented for the X11 driver), and several GPL Ghostscript bug fixes. The new release also fixes all of the reported STRs from ESP Ghostscript 7.07.x."

Comments (none posted)

Web Site Development

Leonardo 0.5.0 Released

Version 0.5.0 of Leonardo, a Python-based blog/wiki/CMS package, has been announced. Bug fixes and new features are included.

Comments (none posted)

mnoGoSearch 3.2.31 released

Version 3.2.31 of mnoGoSearch, a web site search engine, is out with bug fixes. See the change history document for details.

Comments (none posted)

phpBB 2.0.12 released

Version 2.0.12 of phpBB, a cross-platform open-source bulletin board system, is out. "This release addresses a couple of potential exploits and fixes a number of issues involving path disclosures, etc. It also introduces a new ACP based version check (language package maintainers please note the additional localisation required for this)."

Full Story (comments: none)

Infrae releases Silva 1.2

Version 1.2 of the Silva content management system has been released. "This release contains three major new features: expanded version management for XML documents, subscription functionality for all versioned content, and an internationalized Silva user interface, including Dutch and German translations. Infrae is actively seeking volunteers to translate Silva into other languages."

Full Story (comments: none)

UnCommon Web 0.3.6 released

Version 0.3.6 of UnCommon Web, a web application development framework written in Common Lisp, is out. "This version adds an HTML FORM component collection, a new component dependency protocol, new components, improved documentation, improved support for the Allegroserve and mod_lisp backends, a new Araneida backend, and more."

Full Story (comments: none)


Notice of development and future release of Ganymede 2.0

Version 2.0 of the Ganymede metadirectory system is in progress. "We don't have a release date yet, but right now we believe that we've hit most of the technical goals we are targeting with the 2.0 release, and we're primarily lagging in documentation and some external support code infrastructure that will be required to make the most of some of the new features. I just wanted to let folks know that the project is alive, that we are working on it, and that we are very excited about the changes we have in store for the next release."

Full Story (comments: 1)

Desktop Applications

Audio Applications

Ardour 0.9 beta 25 released

Version 0.9 beta 25 of Ardour, a multi-track audio recorder, is out. The project status page lists the changes: "Major changes to crossfades and disk buffer handling (among other fixes) require another unplanned beta."

Comments (none posted)

Desktop Environments

GNOME 2.8.3 is released

The latest stable release of the GNOME Desktop and developer platform, version 2.8.3 is now available. This is the third and last maintenance release of the stable 2.8.x series of GNOME and it contains a huge amount of bugfixes and other improvements. Click below for a detailed list of changes.

Full Story (comments: none)

Improving the User Experience for Desktop Sysadmins - Sabayon (GnomeDesktop)

GnomeDesktop mentions a new blog entry from Seth Nickell on the Sabayon project. "So what about sysadmins? Sabayon is GNOME's first major design targeted at improving the user experience for people who administer GNOME systems, and hopefully the start of an initiative toward designing for this important group of users.."

Comments (none posted)

GNOME Software Announcements

The following new GNOME software has been announced this week:

Comments (none posted)

KDE Software Announcements

The following new KDE software has been announced this week:

Comments (none posted)

KDE CVS-Digest (KDE.News)

The February 18, 2005 edition of the KDE CVS-Digest is online, here's the content summary: "In this week's KDE CVS-Digest (all on one page): Kttsd adds support for Italian Festival voices. Umbrello improves import from ArtisanSW, Visio, ArgoUML, Fujaba and NSUML. KSpread has a new insert calendar plugin. Konqueror loses its Cut/Copy/Paste buttons. KDE begins move to Subversion and discusses future roadmap."

Comments (none posted)

KDE Bug Tracker Hits Report 100,000 (KDE.News)

Philip Rodrigues writes about the KDE bug reporting system. "With bug number 100,000 reported, the hard-working KDE bug tracking system reached a milestone today. However, not everyone knows what goes on behind the scenes and how to help. In this article, I take a short look at using the bug reporting system, and how you can help KDE improve."

Comments (none posted)


gEDA News

The latest releases from the gEDA project include new versions of Confluence, a language for synchronous reactive system design, and Icarus Verilog, an electronic simulation language compiler.

Comments (none posted)

gerbv 1.0.1 released

Version 1.0.1 of gerbv, a utility for viewing Gerber files used for printed circuit CAD images, is out. The announcement on the Open Collector site says: "This time it is just a bunch of minor bugfixes. They include: * Allocating 1 too little strings caused very strange effects. Found and solved by Mario and primorec. * Had forgot to initialize some GCs when drawing some aperture macro primitives."

Comments (none posted)

Financial Applications

SQL-Ledger 2.4.9 is out

Version 2.4.9 of SQL-Ledger, a double entry accounting system, is available. The changes include a price matrix rounding change, updated translations, and a fixed reconciliation summary.

Comments (none posted)


KToon: 2D Animation Toolkit (KDE.News)

KDE.News looks at the KToon project. "KToon, is a new 2D animation toolkit created by Toonka Films and now made available as a free GPL'ed option to the 2D animation industry."

Comments (none posted)

Medical Applications

New HCFA Edit and Print Capabilities for OpenEMR (LinuxMedNews)

LinuxMedNews covers the latest release of OpenEMR, an open-source medical billing system. "The latest development is an object oriented application developed using Java. The new billing feature includes several enhancements over the existing HCFA entry and printing capabilities. The new software includes both the tools to create the forms, and a web interface to edit and override the system generated information."

Comments (none posted)

Music Applications

libDSP 5.0.1 released

Version 5.0.1 of libDSP, a C++ library of digital signal processing functions, is available with new optimizations, code cleanup, and bug fixes.

Full Story (comments: none)

Video Applications

Dirac 0.5.1 released

Version 0.5.1 of Dirac, a cross-platform video codec, has been announced. " This is a minor release with several algoritmic improvements and bug fixes."

Comments (none posted)

Web Browsers

Minutes of the Staff Meeting (MozillaZine)

MozillaZine has announced the availability of the minutes for the February 14, 2005 staff meeting. "Issues discussed include Mozilla 1.8 Beta, Mozilla Firefox 1.0.1,, the international domain name Punycode spoofing issue, the Personal Security Manager and emphasising security."

Comments (none posted)

Word Processors

AbiWord v2.2.4 Released (GnomeDesktop)

Version 2.2.4 of the AbiWord word processor has been announced. "This release is mostly a bugfix release, with some additional features."

Comments (none posted)


Internationalization, Part 1 (O'ReillyNet)

O'Reilly has published part one in an excerpt series on internationalization. "Writing software that is truly multilingual is not an easy task. In this excerpt from Chapter 8 of Java Examples in a Nutshell, 3rd Edition, author David Flanagan offers programming examples for the three steps to internationalization in Java: using Unicode character encoding, handling local customs, and localizing user-visible messages."

Comments (none posted)

Languages and Tools


Caml Weekly News

The February 15-22, 2005 edition of the Caml Weekly News is out with coverage of the latest Caml language developments.

Full Story (comments: none)

New Caml Software

The Caml Hump site lists a number of new Caml language applications including OCaml-Packrat, OCaml-CGI, Camlusb, OCaml-event, GikiWiki, Felix, Iom, and ocaml-ssl.

Comments (none posted)


Designing a Fully Scalable Application (O'ReillyNet)

Amir Shevat covers scalability issues and MantaRay on O'Reilly. "It's difficult, maybe impossible, to know up front how much or in what ways your application will need to scale. But by decoupling parts of the application, you can at least ensure that the scaling process can be kept modular. Amir Shevat shows how some sharable pieces of the MantaRay messaging system can allow your app to grow beyond one box."

Comments (none posted)

xavax 1.0 released (SourceForge)

Version 1.0 of xavax has been announced. "xavax is a XML / Java Framework to develop J2EE business applications rapidly and easily. It is based in business components defined with XML. Feature rich and flexible since is used for years to create real business applications."

Comments (none posted)

JDMK and Legacy IT Management (O'ReillyNet)

Stephen B. Morris works with the Java Dynamic Management Kit to manage legacy SNMP-based equipment. "Java Dynamic Management Kit (JDMK) is a framework for the creation of Java-based management software and legacy SNMP-based systems. It extends Java Management Extensions (JMX), which allows instrumented applications to remotely monitor resources throughout the network."

Comments (none posted)

Semantic Cache for Java (LinuxMedNews)

LinuxMedNews covers a new open-source semantic cache for Java. "University Health Network has released a beta version of "chisel", an open-source semantic cache for Java. It was developed to cache HL7 query results in a semi-virtual EHR, but will run against any Java method that encapsulates a conjunctive query."

Comments (none posted)

Anatomy of a flawed microbenchmark (IBM developerWorks)

Brian Goetz discusses benchmark shortcomings on IBM developerWorks. "Software engineers are notoriously obsessed, sometimes excessively, with performance. While sometimes performance is the most important requirement in a software project, as it might be when developing protocol routing software for a high-speed switch, most of the time performance needs to be balanced against other requirements, such as functionality, reliability, maintainability, extensibility, time to market, and other business and engineering considerations. In this month's Java theory and practice, columnist Brian Goetz explores why it is so much harder to measure the performance of Java language constructs than it looks."

Comments (3 posted)


Building a 3D Engine in Perl, Part 3 (O'Reilly)

Geoff Broadwell continues his O'Reilly series on Perl for 3D visualization with part three. "Later in this article, I'll discuss movement of the view position, continue the refactoring work by cleaning up draw_view, and begin to improve the look of our scene using OpenGL lighting and materials. Before I cover that, your feedback to the previous articles has included a couple of common requests: screenshots and help with porting issues."

Comments (none posted)


Ruby Weekly News

The February 20, 2005 edition of the Ruby Weekly News is available with the latest news and discussion from the ruby-talk mailing list.

Comments (none posted)


Schemer's Gazette 4

Issue #4 of the Schemer's Gazette is online with the latest Scheme language development news.

Full Story (comments: none)


Dr. Dobb's Tcl-URL!

The February 21, 2005 edition of Dr. Dobb's Tcl-URL! is online with the latest Tcl/Tk news and resources.

Full Story (comments: none)


What Next, XML? (O'Reilly)

Micah Dubinko considers the issues involved in defining XML 2.0 on O'Reilly. "How much of a clean break would a transit to XML 2.0 need? What parts should stay, and what parts should go? According to xml-dev participants, the two hot-button issues are DTDs and human readability."

Comments (none posted)

Implement implicit and explicit SOAP headers (IBM developerWorks)

Andre Tost works with web services and SOAP headers on IBM developerWorks. "You can define SOAP headers in a WSDL definition using what are commonly called explicit and implicit headers. Learn the difference between these two styles and how these differences might impact you when developing with JAX-RPC."

Comments (none posted)

REST Reporting (O'Reilly)

Eric Gropp works with REST and web services to produce paper output from XML in an O'Reilly article. "Producing paper reports is a fundamental requirement of many applications. As more systems are exposed as services, REST, XSLT, and the mighty URI can create a reporting approach that has a number of advantages over traditional, database-direct reporting engines."

Comments (none posted)


Yzis Milestone 3 Released (KDE.News)

KDE.News looks at the latest release of Yzis. "The Yzis team is glad to announce the Milestone 3 release of Yzis, the fast moving vi-compatible editor from the authors of KVim. A lot has happened since the M2 release in August 2004: many new features have been added and bugs fixed, getting us closer to the full Vim feature set."

Comments (none posted)


DrPython 3.10.8

Version 3.10.8 of DrPython, and IDE for the Python language, is out. The change log lists bug fixes and other improvements.

Comments (none posted)

Version Control

StatCVS offers a view into CVS repository activity (IBM developerWorks)

Tom Copeland analyzes and graphs CVS statistics on IBM developerWorks. "StatCVS is a handy utility for creating charts of a Concurrent Versions System (CVS) repository's activity. In this article, developer Tom Copeland explains how to install and run StatCVS, gives an overview of the reports generated, then explores generating reports for multiple repositories, StatCVS internals and limitations, and more."

Comments (none posted)


bzip2 1.0.3 is available

Version 1.0.3 of bzip2, a file compression utility, is out. "1.0.3 fixes some minor issues from the last version, but does not bring any new functionality."

Full Story (comments: none)

Preserving Backward Compatibility (O'Reilly)

Garrett Rooney discusses backward compatibility issues on O'Reilly. "In order to better prepare you, the average open source hacker, for dealing with this problem, I'd like to share some of the experiences we've had with backward compatibility in the Subversion project. With luck, you'll be able to apply some of the lessons we've learned to your own projects."

Comments (none posted)

Page editor: Forrest Cook
Next page: Linux in the news>>

Copyright © 2005, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds