Building Software Together in Open Wonderland

March 18, 2013

By Nicole Yankelovich

Yesterday I gave a talk at the Northeast GNU/Linux Fest in Cambridge, MA. The theme of my talk was using Open Wonderland as a collaborative software development environment. I used the Subsnapshots project and the Postcards code-a-thon as two case studies to show people how we use Open Wonderland throughout the software development process. One thing that struck me when I put this presentation together was how many collaboration tools we actually have to support this rather complex and multidisciplinary process.

I published my slides on Slideshare in case others are interested.


New Collaborative Text Editor App

December 12, 2012

By Bob Potter

Multi-user text editor iconDisplaying and editing text can be accomplished with several tools in Open Wonderland.  These include Sticky Notes, the PDF Viewer and via the Shared Applications server using Open Office or web-based editors such as Google Docs. Each of these, however, comes with significant limitations.  Sticky Notes are best used for short pieces of text.  The PDF Viewer will show text documents but not permit them to be edited.  Open Office editing is limited to documents managed on the application server, and due to the nature of shared applications, does not support cut and paste from the user’s computer. The cut and paste limitation also applies to web-based apps. In addition to the cut and paste limitation, the usability of the web-based editors is not optimal because of the large overhead of editing text in a web browser on the application server. Additionally, given the nature of shared apps, there can be lags in viewing text updates in Open Office or other Xll apps. Finally, shared applications place a significant overhead on the application server, especially when the user is navigating and editing text.

Frequently in our Wonderland community meetings, we have experienced the need for a text editor that can:

  1. Display a large amount of text,
  2. Be edited concurrently by multiple users,
  3. Support cut and paste from the user’s system,
  4. Import selected file types using drag-and-drop; and
  5. Export the edited text back to the user’s computer.

The new Collaborative Text Editor module recently uploaded to the Module Warehouse meets these needs for routine text editing.

Collaborative Text Editor

Using the Collaborative Text Editor for note-taking in an Open Wonderland community meeting.

Once the module has been installed, a text editor can been inserted into the world using the Insert –> Object dialog.  To edit text, one or more users can take control of the editor, move the cursor to the desired location, and start typing.  The editor is limited to plain text and does not yet support any formatting such as bold and italic. There are two buttons in the lower right of the frame.  The “Sync” button can be used to refresh the display with the master copy of the document stored on the server.  This function is only required if the text appears to get out of sync when multiple people are typing or editing at the same time.  The second button, labelled “Export,” will bring up the Save File dialog, permitting the user to save a copy of the file to their own computer.

The Collaborative Text Editor supports drag and drop of text files. If a user drops in a file with the .txt, .log, .html, .java or .xml extension, the editor will automatically open and display the document. Note that since this is a text editor, it will display the Java, html, or xml source, complete with all the code and markup information. Files dropped into the world can be edited and saved back to the user’s system via the export capability.

This editor is based on the work Jonathan Kaplan (Chief Architect of the Open Wonderland Foundation) had done for the programming demo module called “Sorting Algorithms.”   Within that module, Jon had developed a code editor that permitted concurrent editing by users.  This current collaborative editor was developed by extracting and enhancing this code to create a generic text editor application.

Technical Details

The module contains both client and server code to manage the concurrent insertion and deletion of text.  Since users are actually editing slightly different copies of the same document, both the clients and the server need to adjust the position of each insertion (or deletion) based on the current state of the document in their space.  The server’s responsibility is more complex. It is receiving messages from multiple clients, each possibly being a different version from what is in the server’s master copy.  The server transforms each of these changes into the most recent version and forwards these on to the clients.  The clients have to ensure that any local modifications that have occurred since their last update has been applied are considered when determining the target position of the changes received from the server.

The code for this module is presently hosted on GitHub. (https://github.com/bpotter/textEditor.git)  The standard Open Wonderland license applies to this module. This is still a work in progress. I would appreciate your feedback.


OWL Showcase: STCC ESL Virtual Campus

December 3, 2012

By Nicole Yankelovich

Please join us for an informative OWL Showcase on Wednesday. We will be visiting Springfield Technical Community College’s (STCC) virtual campus currently being used to teach English as a Second Language (ESL).

OWL Showcase: STCC ESL Virtual Campus
Wednesday, December 5th
1-2pm US Eastern time
(see event time in your time zone)
Registration on Eventbrite required

WonderBuilders has worked with the STCC faculty to create an extensive learning environment for ESL students.

Collage of STCC virtual campus

Selection of STCC virtual campus spaces

In this US National Science Foundation sponsored project, two ESL classrooms are completing their first semester-long deployment of Open Wonderland. During the tour, attendees will have the opportunity to try out some of the in-world activities designed for students including recording audio conversations, going on an activity scavenger hunt, participating in a photo hunt, and creating a custom fair booth.

Registration is required for this event. Since this not a public world, the URL for the server will not be made public. The login information will only be sent to people who register using the Eventbrite link above.

If you plan on attending and have a smart phone, please consider taking some photos using Instagram so you can more fully participate in the “photo hunt” activity. You can see a preview of this activity in the ESL Department’s recently published Photo Hunt album on Facebook as well as a preview of the Multi-Cultural Fair Booth Activity.

If you are not able to make the tour on Wednesday, there is a possibility of another tour on Sunday, December 16th at 2pm US Eastern time. If enough people express interest, we will set up a second tour on that date. To express interest, please leave a comment on this blog article or post a message on the Open Wonderland forum.


OWL Chatbot Module for a Virtual Campus

November 26, 2012

By Nisarg Naik

The research project summarized in this article was conducted as part of the requirements for degree of MSc Computer Science at Nottingham Trent University in the UK. For this project, I created an Open Wonderland Chatbot Module.

A chatbot is a virtual character that simulates an intelligent conversation with humans. The main purpose of this project was to extend Open Wonderland’s non-player character (NPC) functionality to interact with human avatars. The chatbot is embedded in a virtual campus simulated learning environment (see screenshots of the virtual campus). The main purpose of the chatbot is to communicate or guide users to solve their problems.

Clifton Campus

Virtual campus in which chatbot is integrated.

Here is an example of an integrated chatbot window in which a user has engaged in a conversation with the chatbot from inside Open Wonderland.

Chatbot window

Chatbot window

While chatbots can be used to simulate conversations that convince people the bot is a real person, they can also be used as an advanced search engine to retrieve factual knowledge for users.

Technical Details

Initially, my intention was to develop a basic conversational agent program which could perform keyword-matching to scan for user inputs and generate replies. In the final project, however, I instead integrated a highly developed existing artificial intelligence engine. This engine is based on ALICE (Artificial Linguistic Internet Computer Entity) which uses an AIML-based (Artificial Intelligence Markup Language) interpreter to query and retrieve information. To integrate this technology into Open Wonderland, I experimented with both a Java-based AIML interpreter known as Program-D and a web-based AIML interpreter called Pandorabots. I ended up using Pandorabots for the Chatbot module prototype.

Pandorabots uses the XML-RPC (remote procedure call) communication protocol. It uses XML to encode data, and it works by sending an HTTP request to the server. A client can interact with Pandorabots using a Bot ID. The main advantage of using Pandorabots is that it is easy for users to create and add knowledge to their chatbots by uploading AIML files.

The diagram below illustrates where the Chatbot module fits into the structure of the Virtual Campus once it is complete.

Virtual Campus system diagram.

Virtual Campus system diagram.

As envisioned, the Virtual Campus will include seven buildings covering many disciplines including business, arts, technology, team collaboration, socializing room, student club, and student service. Students will be able to get virtual resources from various specialized virtual departments and directly obtain relevant information easily. The Virtual Campus will also include non-academic rooms for entertainment.

The chatbot functionality will be used throughout the Virtual Campus as an automated guide or instructor, able to interact with students to solve their problems. The AIML integration will allow us to interface with a variety of additional knowledge bases, such as WolframAlpha and DBpedia, allowing students to retrieve information from the chatbot without leaving the virtual world environment.

A big advantage of using Open Wonderland is that it is a great multi-user virtual environment engine that provides many functionalities and in-world applications that students and lecturers can utilize in the Virtual Campus. A well organized virtual campus can be the most efficient way for students and lecturers to collaborate. To support this collaboration, we are planning to use the PDF viewer, an in-world web browser, the Microsoft Office document viewer, text-chat, VOIP audio, webcam video integration, the Screen Sharer and VNC Viewer for desktop sharing, NetBeans for programming projects, in-world music players, wall posters, and the multi-user white board for discussions and sketching. These tools, embedded in the virtual world, are similar to desktop-based applications.

For more information, please refer to my full dissertation, “Integration of a Chatbot Engine on a Multiuser Virtual Environment to Enhance Educational Framework for a Virtual Campus.

I have also made the source code for the Chatbot module available, as well as the 3D models used to create the Virtual Campus.

 

 


Postcards from Wonderland

November 12, 2012

By Nicole Yankelovich

The Postcards from Wonderland code-a-thon wrapped up this evening. The project isn’t entirely complete, but we now have a working prototype:

Initial Postcard Implementation

The first working version of the Postcards feature.

To create a postcard, the user positions an in-world camera and clicks on the green camera button to take a photo. A window then pops up with the photo (not quite displayed properly yet) and allows the user to type in a name for the Postcard and add a message. The user can then save the Postcard to their computer or export it to a photo sharing site.

The whiteboards on the right side of the image show the rough design for the web app that will be used to export the Postcards to services such as Facebook, Flickr, Instagram, and others. The export piece is still a work in progress.

During the two code-a-thon sessions, the group broke up into three teams. Two of the teams worked on coding while the third team worked on design and documentation. The documentation is in the form of a photo essay – really a screenshot essay – of the two code-a-thon sessions.

Creating Facebook photo essay in Wonderland

Creating the Facebook photo essay as a mechanism for documenting the code-a-thon.

If you click on the individual images in the Facebook Postcards album, you will see that each one includes a narrative explaining what the group was doing at that point in the project.

We used a wide range of Wonderland collaboration tools during the two sessions. We began by setting up several different Cardwalls to record “user stories” and track tasks. The design team made heavy use of Whiteboards to sketch out the Postcards UI design. All the teams used the Screen Sharer to collaborate. The design team used it to work on the user interface document in Google Docs and also to create the photo essay on Facebook.  The development teams used it to share terminal and web browser windows. The development teams also used two in-world copies of the NetBeans software development environment, sticky notes, and VNC (a desktop sharing tool). The VNC session is what is visible in the first screenshot above. They used it to show Wonderland running on a remote test server. In this way, the group could use the main community server for collaboration and a separate server to install and test the new Postcard code.

All the code developed for this project is publicly available in a Postcards github repository.


Postcards Part II – New Participants Wanted!

November 7, 2012

By Nicole Yankelovich

Last month, we held our first ever Open Wonderland code-a-thon, working on a project we called Postcards From Wonderland. The non-technical code-a-thon participants created a screenshot journal of the project in an album on the Open Wonderland Facebook page. Be sure to click on the images to read the narrative. This Sunday, we will be continuing this project, brainstorming and implementing ways to publish the postcards to social media sites. This event is being managed via Eventbrite. If you would like to attend, please sign up here:

Sign up for the
Second Open Wonderland Code-A-Thon

Sunday, November 11th
1-9pm US Eastern time
See time in your timezone

It is not necessary to have participated last time to join this Sunday. This event is an excellent, free learning opportunity for both developers and non-developers. Developers can learn about Open Wonderland programming from more experienced developers, and non-technical attendees will have an opportunity to experience a variety of Open Wonderland’s collaboration tools in action.

First Postcards From Wonderland Code-a-thon

Participants in the first Postcards From Wonderland code-a-thon used multiple collaboration tools including a shared copy of NetBeans, a card wall, sticky notes, and a VNC session to watch code testing on another Wonderland server.


The “State” of Online Learing

November 2, 2012

I just came across a post on the Online Colleges Blog that I found interesting and thought others might as well.

8 States Going All In On Online Learning

Despite the name of the blog, the article focuses on online learning in K-12 as well as the college level in eight states: California, Florida, Minnesota, Idaho, Ohio, Michigan, Wisconsin, and Arizona. While there’s no specific mention of virtual world technology, programs such as the ones mentioned in these states might be interested in considering how virtual worlds compliment their existing online offerings.


First Open Wonderland Code-A-Thon

October 9, 2012

By Nicole Yankelovich

This is a call for participation for our first ever Open Wonderland code-a-thon. This event is being managed via Eventbrite:

Sign up for the
First Open Wonderland Code-A-Thon

Sunday, October 14th
1-9pm US Eastern time
See time in your timezone

During the code-a-thon, participants will divide up into a set of cooperating teams to design and build a new Open Wonderland feature. The theme for this first code-a-thon is Postcards From Wonderland.

Physical "postcards from Wonderland"
Design of original physical postcards from Wonderland

Postcards From Wonderland

If you review the notes from the October 3rd code-a-thon planning meeting, you will see that we established a set of goals for the code-a-thons and discussed desirable attributes of code-a-thon projects. In that meeting, after brainstorming a list of possible project ideas, we selected the Postcards From Wonderland theme because it met the criteria of being a small, but fun project that we felt was doable in the code-a-thon timeframe. When complete, it will also demonstrate a number of important aspects of the Wonderland environment, including the ease of building a small new feature and the flexibility that the development environment offers in terms of integrating with external web services. In this case, the integration is all “outbound” integration. That is, taking data from within a Wonderland world and pushing it out to other services.

The idea for the project dates back almost to the time the Wonderland project was launched at Sun Microsystems in 2007. For one of our early public demos, we created the set of physical postcards shown above to hand out to visitors. We gave these to people along with postcard stamps so they could write the cards and send them to friends via postal mail telling them about the cool new virtual environment.

Inspired by this concept, the project theme for the first code-a-thon is to design and implement a feature that allows people visiting any in-world location to automatically generate a postcard from the scene they are looking at, add some text, and send the card. Depending on how many teams we have, we will tackle ways to send cards via email or to post them on web sites that have programmatic access (eg, Facebook, Google+, Flickr, Instagram, etc.).

Call for Participation

Given the nature of the 3D environment, Open Wonderland code-a-thons are not just for hackers. Of course, software developers are crucial to the endeavor, but for the event to be a success, we will also need people with a range of other skills. We need people to help design the user interface for the new project. We need 3D artists and world builders to create an interesting 3D world to show off the new project. We need writers to create documentation, write blog posts, and update social media feeds. And we need people to help with logistics, system administration tasks, and web research.

We understand that people are in different timezones and probably have family commitments on the weekend, so it is not necessary to attend the entire event. We do request, however, that if you sign up, you will commit to a minimum of two hours of time helping out during the course of the event. Also, to the extent possible, we would like everyone to attend for the first half an hour. That will be the time when we do an overview of the project and divide up into teams.

No prior Open Wonderland experience is necessary to participate. These code-a-thons are an excellent way to get started with Open Wonderland development and world building. They are also an opportunity to see how we use the environment ourselves to organize group work and to collaborate.

Follow the link above to register for the event. It’s free!


Facebook Group Integration Module

September 24, 2012

By Shaya Pourmirza

This module has been created for communication between a Facebook group and Open Wonderland as part of my masters thesis project at the University of Essex. With this module, users can post comments in a 2D Facebook group and have them dynamically show up within an Open Wonderland world. Additionally, users in the Wonderland world can start new discussions or add comments to existing Facebook discussion threads from in-world.

To support this functionality, each Facebook group integrated with Wonderland has a Facebook Application as an intermediate layer. In this example, I have created a 2D Facebook application (http://shoopi.appspot.com) and deployed it on the Google App Engine. The functionality of this application is described below.

Authentication and Authorization

Before a user can set up a Facebook viewing window in Wonderland, they must use the intermediate Facebook application to generate an Access Token.

Access Token

They can then copy this Access Token from the Facebook application and paste it into a dialog box in the Wonderland world to authorize the Wonderland Facebook code to access Facebook. This step only needs to be done once by an administrator. All other Wonderland users can then see the Facebook discussions in-world.  The 2D Facebook application uses Facebook’s new authentication method which is based on Access Token and OAuth 2.0. (For more information, see Facebook’s Server-Side Authentication documentation.)

Retrieving Data From a Facebook Group

Once the admin user has entered their Access Code in Wonderland, Facebook viewing windows can be opened in-world. These windows can show discussions in private Facebook groups that the authenticated admin user has access to, or they can show discussions in any public Facebook groups.  The Facebook viewing windows are based on the Wonderland HTML Poster module, so all links in these windows are live. There is one Facebook viewing window per Facebook discussion group.

Creating a New Discussion

To open a new Facebook viewing window in Wonderland with an entirely new discussion thread, the user can click on the “Add a New Discussion” link in an existing Facebook viewing window. This launches a New Discussion entry form in an external web browser window.

Create a New Discussion

Once this initial post is created, any in-world or 2D user can add a comment to the discussion.

Adding a New Comment

In-world users add comments to an existing discussion by clicking on the “Click here to add new Comment” link in the appropriate Facebook viewing window. This launches an external browser window. Users are taken to an Authentication Servlet web page. If they have not already logged into Facebook, they will be asked to do so. Once logged in, they are provided with an Access Token.  Users must copy this token and then proceed to the next screen where they can enter their comment and paste in the token. When they click the “New Comment” button to submit their comment, it simultaneously shows up in both the 2D Facebook group and in one of the Facebook viewing windows in the 3D world.

Demo Video

The following video was captured from a user trial session.

It illustrates the procedure of adding two comments from the 3D world into a Facebook group. Since these comments were added at the same time, only one of them will be shown step by step. Finally, participants were asked to fill in a usability questionnaire. The results indicated that users appreciated this new Open Wonderland feature.

Source Code

If you are interested in looking at the code for this module, I have made a zip bundle available on Google Drive:

Facebook Integration Module Source (.zip)

Select “Download” from the File menu to download the complete bundle.


Fall Meeting Schedule, etc.

September 18, 2012

By Nicole Yankelovich

As many of you know, we held a series of Open Wonderland meetings recently to discuss the future of community meetings along with a number of other topics.

September 5, 2012 Community Meeting
September 5, 2012 Community Meeting

Fall Meeting and “Code-a-thon” Schedule

The major new idea we discussed was holding longer weekend “code-a-thons” approximately once a month rather than weekly one-hour coding sessions. A code-a-thon is where developers come together and work on a project from start to finish in one day.

Instead of coding during the weekly meetings, we talked about cycling through a number of other types of meetings. First, we’ll move the monthly release meetings into a regular meeting time slot. The other weekly meeting slots will include planning for the code-a-thon sessions, hosting community showcase events, and having discussions on topics of interest to the community. The showcase events will involve a person or team providing a presentation and / or a tour of their Open Wonderland virtual world. The discussion topics will primarily be non-technical, but we may occasionally include developer-oriented content.

Open Wonderland Fall Schedule

All Wednesday meetings start at 1pm US Eastern time and run for 1 hour and all Sunday code-a-thons start at 1pm US Eastern and run for 5-7 hours.

Wed Sep 19 Monthly Release Meeting
Wed Sep 26 Discussion: Business Case for OWL
Wed Oct 03 Code-a-thon Planning Meeting
Wed Oct 10 Showcase: Ryan’s Builder Project
Sun Oct 14 Code-a-thon

Wed Oct 24 Monthly Release meeting
Wed Oct 31 Discussion: Wishlist for Data Collection
Wed Nov 07 Code-a-thon Planning Meeting
Sun Nov 11 Code-a-thon

Wed Nov 28 Monthly Release Meeting
Wed Dec 05 Showcase: STCC ESL World
Wed Dec 12 Code-a-thon Planning Meeting
Sun Dec 16 Code-a-thon

Holiday Break

Everyone in the community is encouraged to submit discussion topic ideas and volunteer to showcase their project.

The Open Wonderland Meeting Calendar is now available as a public Google Calendar with the calendar ID:

openwonderlandfoundation@gmail.com.

You can add it to an iCal application using this URL:

https://www.google.com/calendar/ical/openwonderlandfoundation%40gmail.com/public/basic.ics

Webcasting and Recording Meetings

Over the past year we have gotten quite a few requests to webcast and record meetings. After brainstorming about this topic, someone suggested we try Livestream. Since this costs $45 a month, I decided to experiment with the free version of UStream first. We now have a UStream Open Wonderland Community Meeting channel. It has a few drawbacks, but I would like to try it for a few meetings and see how we like it. The drawbacks include advertisements and what may be an inability to capture both microphone and computer audio. I don’t think either of these are show stoppers. We can capture in-world audio, so someone will have to set up the capture computer as a “camera,” but do any talking on another computer.

Priorities

An additional topic we covered was listing priorities. Different people had different opinions about importance, but most people agreed that these items were significant areas to focus on:

  • Avatar improvements or a whole new avatar system
  • Audio improvements
  • Updating OWL graphics
  • Addressing firewall issues and tunneling
  • Creating additional developer APIs to make development easier
  • Improving stability

Recruiting New Developers and Other Community Members

Another topic we discussed was how to grow the community in terms of both developers and non-technical community members. For the more technical people, we discussed coming up with a preliminary code-a-thon project that was glitzy enough to make a demo video and post it on developer sites to inspire interest in Open Wonderland. We also talked about putting time estimates in the issue tracker so that new developers could find small projects to volunteer to tackle.

For both technical and non-technical people, we should do a better job of publicizing our meetings in places like Hacker News, the agile software development community, and LinkedIn groups related to virtual worlds, distance education, serious gaming, collaboration, or software development. In addition, we should get people already in the OWL community to publicize the event to their local colleagues as well as to their social networks. For that purpose, it would be great to have a PDF flyer that people could either email to friends or print out and post on a physical bulletin board.

To attract more students, it would be helpful to update our student project list and then send the list to as many Computer Science departments as possible.

For a general audience, we talked about launching a “Do it in Wonderland” campaign.

All of these publicity ideas require some additional volunteer help. We’re hoping to get a work/study student volunteer from St. Paul College to help out during the semester, but it would be great if community members would volunteer to take the lead on some of these publicity items.


Follow

Get every new post delivered to your Inbox.

Join 42 other followers

%d bloggers like this: