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 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.
TeaTime
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
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
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)
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)
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)
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)
Interoperability
A set of Samba Roadmap Slides
are available from samba.org 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
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
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)
Printing
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
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)
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)
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)
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)
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)
Miscellaneous
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
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
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)
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)
The following new GNOME software has been announced this week:
Comments (none posted)
The following new KDE software has been announced this week:
Comments (none posted)
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)
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)
Electronics
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)
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
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)
Graphics
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
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
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
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
MozillaZine
has announced the availability of
the minutes
for the February 14, 2005 mozilla.org staff meeting.
"
Issues discussed include Mozilla 1.8 Beta, Mozilla
Firefox 1.0.1, update.mozilla.org, the international domain name Punycode
spoofing issue, the Personal Security Manager and emphasising security."
Comments (none posted)
Word Processors
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)
Miscellaneous
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
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)
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)
Java
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)
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)
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)
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)
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)
Perl
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
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)
Scheme
Issue #4 of the Schemer's Gazette is online with the latest
Scheme language development news.
Full Story (comments: none)
Tcl/Tk
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)
XML
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)
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)
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)
Editors
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)
IDEs
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
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)
Miscellaneous
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)
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>>