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.
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.
Audio Projectslatest changes from the Planet CCRMA audio utility packaging project include new versions of Audacity, amSynth, and XMMS Jack.
Database SoftwareThe 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." has been announced. "This release is a beta version, preparing for the production version release, which will take place in Q2 2005." 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".
Interoperabilityare 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."
Networking Toolsprobe2 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)."
Package Managementautomates 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."
Printinghas 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."
Web Site Developmenthas been announced. Bug fixes and new features are included. mnoGoSearch, a web site search engine, is out with bug fixes. See the change history document for details. 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)." 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." 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."
MiscellaneousWe 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."
Audio ApplicationsArdour, 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."
Desktop Environmentsmentions 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.."
Electronicslatest 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. 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."
Financial ApplicationsSQL-Ledger, a double entry accounting system, is available. The changes include a price matrix rounding change, updated translations, and a fixed reconciliation summary.
Graphicslooks 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."
Medical Applicationscovers 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."
Video ApplicationsDirac, a cross-platform video codec, has been announced. " This is a minor release with several algoritmic improvements and bug fixes."
Web Browsershas 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."
Word Processorshas been announced. "This release is mostly a bugfix release, with some additional features."
Miscellaneouspart 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."
Languages and Tools
CamlCaml Hump site lists a number of new Caml language applications including OCaml-Packrat, OCaml-CGI, Camlusb, OCaml-event, GikiWiki, Felix, Iom, and ocaml-ssl.
Javacovers 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." 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." 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." 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." 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."
Perlpart 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."
RubyRuby Weekly News is available with the latest news and discussion from the ruby-talk mailing list.
XMLconsiders 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." 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." 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."
Editorslooks 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."
IDEsDrPython, and IDE for the Python language, is out. The change log lists bug fixes and other improvements.
Version Controlanalyzes 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."
Miscellaneous1.0.3 fixes some minor issues from the last version, but does not bring any new functionality." 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."
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