Friday, November 30, 2007

Croquet Priorities

Mark McCahill and I have been discussing the top priorities for Croquet moving forward. Here is the list of the top six things that we will be doing for 2008. The main theme is interoperability. This is interoperability at many levels. First, ensuring Qwaq Forums and Open Croquet worlds are interoperable. Looking beyond that is allowing Croquet worlds and avatars to interoperate with other platforms. This will be a large effort, but many of the technical hurdles have already been jumped.


- XML space description: a common space description file format in XML to allow the open source and QWAQ clients to read stored copies of each other's worlds.

Minimizing the size of objects being replicated is important so that spaces may be saved compactly and new user joining the replicated space can do so quickly.

In practice this means meshes and textures should be referred to by name in the replicated space, and fetched by each client
independently of joining the space. By fetching these large objects independently of the replicated space, clients can maintain locally cached copies which speeds joining the space. An XML description of the space also simplifies programatically generating space descriptions, and aids in integration with various search engine technologies.

Moreover, an XML-based space description also allows for the possibility of a croquet browser written in another language or based on a different code base. However, this implies changes to the rendering engine since we would be moving textures/mesh definitions outside the replicated space. QWAQ's forums have shown that this approach has many virtues. Ultimately we might want to use an extended version of Collada - but the first step would be to align the Open source and QWAQ code bases so we can read each other's world definitions.


- robust Jabber client: SSL TLS support ( OpenSSL plugin?)

This work can happen in the open source arena and is relatively independent of changes to space description formats. The current Jabber client does not support SSL transport level security and needs to - since most Jabber servers require SSL TLS. Supporting an open standard IM/Chat is a key for interoperability with the chat world, and ideally would allow cross world chat with other environments (such as Second Life) should those worlds decide to do the right thing and support a standards based chat protocol for inter world chatting. We also need this work so that we can advertise presence outside Croquet using an open standards-base approach.


- message router/timestamper: optional message router/timestamper as an Apache plugin?

The microserver is a message router/timestamper for sites that want a standalone message router to augment the croquet client built-in router. We can leverage the support that the apache server codebase has by providing an option to externalize the message router function.

This also opens the possibility of simplifying access control/authentication integration with existing enterprise AuthN/AuthZ
systems. By creating a microserver that plays in the apache space we can leverage existing Apache web server authentication/access control modules.


- plugin API for extending space definitions: various browsers will extend functionality of spaces by adding new features, we need a definition for how this happens

We expect that various browsers will extend functionality of spaces by adding new features. We need a standard way to describe these plugins that allows less well endowed clients to at least display a placeholder for content they cannot render and point to how to get the required extension. This is analogous to plugins for web pages.

Note that these plugins may affect both the replicated space -and- the non-replicated inside-the-helmet user interface of a croquet client.


- scripting for user-defined behaviors: Javascript, Lua, panels, roll-your-own, and all that jazz

If we have a common XML format for describing spaces we have half of what we need. The other half is a common way of describing user-created behaviors, so a scripting language - like lua or javascript - would allow for actions to be stored along with models and textures. This implies that browsers will all need to support the scripting language.


- avatar definitions: enabling Akbar 'n Jef's Avatar Hut

Users of social spaces care a lot about their representation in-world
- we need to converge on avatar standards so that each implementation of croquet is not re-inventing this particular wheel. That, and a good babyfur avatar should be a lifetime investment.

Friday, October 05, 2007

More Scripting

I am sure everyone has their own opinion about scripting inside of Croquet. Here are mine:

- The scripting we use should be a popular language. Javascript is the obvious choice. Lua gets high marks for coolness, but most people have never even heard of it. It would be great to include any language, but getting the first one to work is a big enough project.
- It needs to work INSIDE of the Island. That is, it should offer the exact same guarantees of determinism that Croquet Islands provide.
- It must utilize the same numerics package that we have added to Squeak/Croquet. (Otherwise the previous will fail.)
- It must be enhanced to support #future messages directly. You MUST NOT loop to simulate in Croquet. Bad bad bad.
- The interface for editing the scripting language must be INSIDE of the Island. In other words - extreme programming on steroids! Scripting is a form of communication. When we came up with the idea for Croquet the intent was not to have a virtual mall and hang out. It is intended to be a high bandwidth communication medium. This includes the ability to dynamically express a simulation as part of the conversation! Hence the expression itself is a part of the communication. The editing is part of the argument between the participants.

This is probably more important to me than others, but until this is available, it ain't Croquet.

Monday, September 24, 2007

Qwaq + Intel = Collaborative Mirimar

Qwaq and Intel just announced that we will be collaborating to bring Mirimar technologies that were developed at Intel to market. This is exciting for a number of reasons. Mirimar is a beautiful and seamless interface with the users desktop, which will make Qwaq Forums even more of a compelling experience. And of course we get the opportunity to work directly with Intel and in particular with John David Miller, one of the principals behind Mirimar to develop and integrate this technology. JDM is definitely one of us - and we have had a lot of fun working with and learning from him over the last year. It will be fun to roll this product out the door.

Press release here:
Intel-Qwaq Press Release

Official video of Justin Rattner's keynote including a guest appearance by Greg Nuyens. This seems to require IE and a PC:
Intel Developer Forum Webcasts

This is just the video part - no slides, but seems to work everywhere:
Intel Developer Forum Video

Tuesday, August 28, 2007

Scripting

I have been spending a great deal of my time lately thinking about scripting issues. Most people are a bit wary of diving into Smalltalk to get things done. Of course, it is really a marvelous scripting language in many ways, but people tend to find it a bit difficult. I think the reason for this is the same reason Lisp is a bit difficult. Both Smalltalk and Lisp have extremely regular syntax structure. In Smalltalk, even the traditional control structures (if/then, while, for) are just normal object messages that look the same as any other object messages. Most other languages have "exceptional" syntax, in that they have a number of reserved key words, and often have specific non-regular syntax to support these "exceptions". This makes it easier to visually parse, as most developers also tend to format their code around this non-regular syntax. This is especially useful to new programmers, because they can use this as a way to understand the code they are looking at.

Smalltalk and Lisp programmer usually format their code in a way to hilight the flow of control as well, but since every line of code starts with an actual object followed by a message, even this is still harder to immediately recognize.

Scratch is beautiful visual scripting language developed by the Lifelong Kindergarten group at MIT where they have moved very strongly in the direction of hilighting these very same control structures by using multiple shaped and colored tiles. What is nice about this is it makes it very easy to understand the structure of a program at a glance, and the program itself is simply "assembled" like you might put Lego blocks together. Interestingly, Scratch is built on top of Squeak - a version of Smalltalk.

We have been looking at a number of scripting languages over the past year, and have even integrated Python directly into Qwaq Forums. We are also looking very closely at Javascript and Lua. In particular, I love Lua, as it really gives me a lot of the capabilities I miss in Smalltalk - functions are first class objects and it has full closure support. This allows for some very interesting capabilities in code. I have been saying that I was thinking about building Wicket in Python in the past, but I believe Lua would be a much better choice.

Tuesday, May 22, 2007

Croquet Road Map

A draft of the Croquet Road Map is now available here:
Go here: Croquet Road Map.

There are three critical items: Island Classes, Two Dimension Infrastructure, and Documentation. These are the essential elements of the next big Croquet release, which I will discuss a bit later.

The first item probably needs some elaboration. Island Classes are classes that are part of the replicated Island's definition. They can be edited like any other class, but only exist inside of a particular Island. The code can be reused only by copying the classes between Islands. This goes beyond a uni-class framework, turning Islands into complete encapsulated development environments. This may raise more questions than it answers, but it is a critical aspect of what we were after when we created Croquet - the ability to share even complex simulations between users in a protected space.

Wednesday, May 02, 2007

My Internet2 Talk ... in Color

I participated in a panel at the Spring Internet2 members meeting and a video of it is available online. For those of you wanting to get a demo of Qwaq Forums - check it out. Beware, there is about 3-5 minutes of nothing happening at the beginning of the video. Don't give up. I am the first speaker, but it is well worth watching Sandra Kearney at IBM and Robert Gehorsam of Forterra Systems and the excellent questions at the end of our short presentations.

Go here: Internet2 VR Panel

Saturday, April 28, 2007

Alan Johnston - BBC

Alan Johnston banner

Click here to show your support for Alan.

Wednesday, April 25, 2007

Bank Teller Machines and 911

I just had a crazy idea and had to write it down somewhere. Why don't bank teller machines respond to 911? They have a numeric keypad, and their users are also a target for potential victimization. And they are everywhere. They also include video cameras. Knowing that a teller machine was also directly wired to the police might make criminals reconsider violent attacks near them. Of course if your pin number is 911x, there might be some problems, but I suspect these are easily changed. Nothing to do with Qwaq, Inc or Croquet... but so what?

Tuesday, April 24, 2007

Croquet and the Perils of Open Source

Croquet is Open Source. This has had both a positive impact on the project and in some ways a decidedly negative impact. The positive is the positives that most open source projects enjoy - lots of interest and creativity building around the system, visibility, strong academic relationships - it even helps allay concerns of larger enterprise customers knowing that there will not be a Microsoft-type lock-in with a single vender.

From the start Croquet was developed completely out in the open. Even the very first, barely useful versions of the system were readily available to download, deconstruct, and criticize. Nothing wrong with this - we invited it, and the project profited from it. The big problem we had to deal with is people were disappointed with how much of the system was or wasn't working. I have heard people say "Yeah, I tried Croquet a few years back, but it.... " (you can fill in the blank with a number of choices). I can understand why people would be irritated. Some critical problems in Croquet took much longer for us to solve than we ever thought they would, we had spent a minimal amount of time on UI, back-end infrastructure, performance, etc... Getting something like Croquet to work at all was a monumental task. We didn't exactly have a model to work from. We were inventing - not reverse engineering.

Of course, anyone that has ever developed a larger project has seen these kinds of issues. I certainly have dealt with them many times. The big difference was no one saw any of my project's warts except my colleagues and me. And we worked hard to remove, or at least hide them before we unveiled the final polished application. Croquet was different - people have been able to randomly sample the state of the project and critique it based upon that sample. Even today, the Croquet API is not quite a user-centric architecture. It is much more akin to the Linux kernel, looking for a front end to empower the user and a back-end to help users find each other and provide additional services. On the other hand, it is doing almost everything we said it would - and it really works well. We have even started a company Qwaq, Inc. based upon the same open source system that you can download today. We are getting great reviews for our first product Qwaq Forums, even though it is till in beta today.

What is my point? I have enjoyed this very open development process. I have learned a lot, and made a huge number of new friends and colleagues. Overall, it has been fun in spite of certain comments from people. I do think that next time - if there is one - I will probably hold off releasing a new system until it is a bit more mature and robust. In some ways that is sad - I think people that have stayed with the project from the beginning have learned a lot about how a complex system gets built and how it evolves. Most of this would be missed if you were to jump into a more complete end-user experience. On the other hand, it would probably increase the probability of success. In marketing, you only have one chance to make a first impression. Qwaq Forums is making a GREAT first impression. It would have been nice if Croquet had the same opportunity.

Internet2 Conference

I am in Arlington, VA to be part of a panel on Virtual Worlds (Wednesday at 1:15pm). I intend to do a live demo of Qwaq Forums. I think that is a lot more interesting than a PowerPoint presentation. I have always tried to do demos to set the context of my talks, because I think being able to show people what I am doing and interested has a bigger impact than just talking about it. It does get a bit too exciting sometimes - Internet access is not always what it should be. One presumes that a conference about Internet2 will have a reasonable connection though.

Saturday, April 14, 2007

Qwaq and Croquet at HASTAC

We will be demoing Qwaq Forums at the HASTAC conference at Duke next week.

From their site:

"A consortium of humanists, artists, scientists, social scientists and engineers from universities and other civic institutions across the U.S. and internationally, HASTAC ("Haystack") is committed to new forms of collaboration across communities and disciplines fostered by creative uses of technology.Since 2003, we have been developing tools for multimedia archiving and social interaction, gaming environments for teaching, innovative educational programs in information science and information studies, virtual museums, and other digital projects. HASTAC leaders have served as consultants to U.S. and international organizations and governments on grid computing and cyberinfrastructure.Our aim is to promote expansive models for thinking, teaching, and research. To view a presentation on HASTAC, please click on the presentation attached."

Check it the conference here:
http://www.hastac.org/informationyear/conference

3D Worlds and Interoperability

I attended a working lunch this week at Harvard to discuss 3D interoperability. It was an interesting discussion. I think the biggest problem was simply the definition of interoperability. For some people at the conference, it meant as little as reconstructing someone elses content in another 3D environment, or maybe being able to somehow copy 3D data sets from one place to another. Others viewed it as being able to reuse and dress-up your personal avatar for shopping or for role-playing.

We even discussed the possibility of hooking Croquet up to Second Life via Croquet portals. This should be relatively straightforward to do - it would require a compound application of some sort, but since Croquet is already designed to hand off rendering to the adjacent Island (Croquet Islands and Second Life Islands are different kinds of things) when rendering through a portal, handing it to the Second Life client would not be much different. Coming back the other way might require a bit more finesse, as we would have to add some portal support to SL, and would have to call into an image based system. We have been doing something similar recently, so it is quite possible.

I think David Reed (one of my fellow Croquet architects) really nailed what 3D interoperability should be. When we share 3D objects, we also need to share their behaviors. In most ways, the visual representation of an object is its least interesting aspect. What it can do, and how it interacts with the users and the worlds around it, however is REALLY interesting and very valuable.

This is also really hard to do. Everyone uses different languages and scripts, and some - like Croquet - use a very different mechanism for enabling behaviors. Croquet has TeaTime and the concept of future replicated messages to manage its behavior. This enables a peer-to-peer approach to designing interactions, which otherwise would be near impossible. The only other solution is what everyone else has to do, which is maintain a central server and replicate the results of the computations.

Tuesday, March 27, 2007

Croquet SDK 1.0 Released

Nonprofit ‘Croquet Consortium’ Releases Open-Source Software Tool Kit to Promote Collaborative 3-D Virtual Environments

DURHAM, N.C. – March 27, 2007 – A nonprofit consortium of academic and corporate partners announced Tuesday the release of a free software tool kit for developers to use in creating 3-D "virtual environments."

"We’re seeking to enable the creation of a rich series of interconnected ‘Croquet worlds’ where people can engage in productive collaborative interactions in support of learning and commerce -- worlds that can be created, maintained and continually modified without the constraints of proprietary computer code," said Julian Lombardi, assistant vice president of Duke’s Office of Information Technology.

The Croquet Consortium’s new "3-D Virtual Environments Software Developer’s Kit" (Croquet SDK 1.0) will promote collaboration among far-flung research teams working on everything from cancer cells to hurricanes, as well as active learning among students and their instructors. These networked 3-D teams from research, education and industry will be able to work together across a variety of computer platforms and devices, from laptops to cell phones.

"This will change the way people think about software and computation, from today’s device-oriented perspective to a perspective of computation as a persistent, pervasive service," said Patrick Scaglia, vice president of research and development at HP Labs.

Croquet 3-D virtual environments can support live discussion among worldwide collaborators who come together in "real time" within a 3-D virtual space. They may view, manipulate and revise documents, dynamic visualizations or large amounts of data from sources such as laboratories or supercomputing centers.

Added Greg Nuyens, chief executive officer of Qwaq Inc., "We have found Croquet to be a compelling platform technology for developing very large scale, richly featured and interlinked virtual environments. With the release of the Croquet SDK, we are excited about the new possibilities for using Croquet in our products and see benefits for developers everywhere."

For example, public health officials and epidemiologists across a country could use the Croquet environment to track the spread of an infectious disease by sharing a dynamically changing display of infection data. Similarly, architects and engineers could collaborate on a building design, or chemists and biologists could prototype different chemical compositions for a new drug.

The kit provides developers with a flexible tool to create virtual spaces with built-in networked telephony and a "late-binding object-oriented" programming language that allows multiple users to jointly create, animate or modify 3-D objects and dynamic simulations. Developers can also import and share resources, such as 2-D web applications or multimedia content, from their own systems. Working together across multiple locations, they can change simulations while they are running and work together to create new applications -- all in real time.

Croquet Consortium Launched

Industry and Education Leaders Launch The Croquet Consortium, Inc., a non-profit Foundation for Open Source Software Development.

DURHAM, N.C. – March 27, 2007 – HP (Hewlett-Packard), Duke University, The University of Minnesota, and Qwaq, Inc. have jointly announced the formation of The Croquet Consortium, Inc., a 501(3)c non-profit foundation dedicated to promoting the continued development and widespread adoption of open source Croquet technologies for use in education, research, and industry. The launch of The Croquet Consortium coincides with the Consortium’s release the open source Croquet Software Developer’s Kit 1.0 -- as free software under the Croquet Open Source License.

The Croquet Consortium provides an organizational base for the Croquet community of developers and users. Open to institutional and individual members, the Consortium offers an avenue for academic, corporate, and individual members ensure the long-term viability of the community by federating their Croquet software development projects mobilizing distributed resources on their behalf.

With the launch of The Croquet Consortium, Inc., the development and adoption of scalable Croquet-based applications for use in education, research and industry enters a new, expanded, and highly-inclusive phase of multi-institutional collaboration. The Consortium 1) establishes a legal home for the Croquet community, 2) coordinates the management, definition and release of core interoperable Croquet architecture, 3) provides a clearinghouse for the collection and distribution of freely available Croquet open source software artifacts, 4) supplies a management structure for the solicitation and mobilization of distributed development resources, and 5) creates a focal point for outreach activities, including the Consortium Website, Annual Conference, training workshops, fellowships, and sponsored projects.

Qwaq

We finally announced Qwaq. I am sure one or two of you were wondering why this blog went silent for such a long time. I had some good excuses - I was busy, and I didn't want to say anything about what I was doing anyway.

Qwaq was founded by a group of us that believe Croquet can have an impact on the business world. Even an open source project like Croquet must have a revenue stream to drive it, and Qwaq is the first of what I hope will be many companies that will focus their efforts around making Croquet even more valuable. You can read more about the company here: http://www.qwaq.com.

Alan Kay and David Reed are advisers to Qwaq and Andreas Raab is a cofounder so we are still working together. In addition, Greg Nuyens, our other co-founder is the Qwaq CEO. I met Greg at a previous company I co-founded, and was extremely impressed by his intelligence, drive, and in particular his interest in the customers.

Why Qwaq? I wanted a short word that was easy to remember and easy to type. Look at the top left three keys of your keyboard - QW are next to each other and the A is directly below these. I also thought that it sounded fun.

There is evidently quite a bit of interest out there in what we are doing. Typing Qwaq into Google and you will see an amazing amount of coverage just since we announced the product a few weeks ago. I should mention that Remy Malan is our VP of Enterprise and did a terrific job with this.

Finally, what impact will Qwaq have on the continued development of Croquet as an open source project? A very positive one. We are still extremely committed to this project and if anything have accelerated the amount of effort we have put into it. Croquet continues to improve - much of what we learned in building Qwaq Forums was directly incorporated into the next Croquet release (imminent) and I think it is better than ever. I plan to continue using this particular forum to keep people up-to-date on where Croquet will be going.

Thanks for checking back - it is a really exciting time for Croquet (Qwaq is just half of the story), so watch this space and the Croquet Project home for more details to come.