Jump to content

Open Cobalt: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Rescuing 2 sources and tagging 1 as dead.) #IABot (v2.0.9.5) (Whoop whoop pull up - 21816
 
(152 intermediate revisions by 88 users not shown)
Line 1: Line 1:
{{Short description|Software for creating virtual worlds}}
{{Infobox Software
{{Infobox software
| name = Open Cobalt
| name = Open Cobalt
| logo = [[Image:Open_cobalt_logo.png‎|256px]]
| logo = Open cobalt logo.png
| caption = The Open Cobalt logo
| caption = The Open Cobalt logo
| released = [[2009]]
| released = 2009
| developer = [[Community source]] and [[Duke University]]
| developer = Community source and [[Duke University]]
| programming language = [[Squeak]] [[Smalltalk]]
| media = [[Download]]
| operating system = [[macOS]], [[Windows]], [[Linux]]
| frequently updated = Yes
| programming language = [[croquet project|Croquet]]/[[Squeak]]
| operating system = [[Mac OS]]/[[Windows]]/[[Linux]]
| language = [[English language|English]]
| language = [[English language|English]]
| genre = 3D Browser, Virtual world, [[3D computer graphics]]
| status = [[Development_stage#Alpha|Alpha]]
| license = [[MIT License|MIT]]
| genre = 3D Browser / Virtual world / [[3D computer graphics]]
| website = http://opencobalt.org
| website = {{URL|www.opencobalt.net}}
}}
}}
'''Open Cobalt''' is a [[free and open-source software]] platform for constructing, accessing, and sharing [[virtual world]]s both on [[local area network]]s or across the [[Internet]], with no need for centralized servers.
'''Open Cobalt''' is a free and [[open source software|open source]] [[virtual world]] browser and construction toolkit [[application software|application]] for accessing, creating, publishing, and hyperlinking [[avatar]]-based multi-user virtual worlds that are accessible both on [[local area network]]s or across the [[Internet]]. It is designed to enable the deployment of secure virtual world spaces that support education, research, and the activities of [[Virtual enterprise|virtual organizations]]. The Open Cobalt application is a type of 3D browser that can be used to define and access a network of interlinked 3D virtual environments in much the same way that [[web browser|web browsers]] are used to define and access web based content on [[web page|web pages]]. By leveraging [[OpenGL]]-based [[3D graphics]], Open Cobalt supports highly scalable collaborative [[data visualization]], virtual learning and problem solving environments, 3D wikis, online gaming environments ([[MMORPG]]s), as well as privately and securely maintained multiuser virtual environments.


The technology makes it easy to create deeply collaborative and [[hyperlink]]ed multi-user virtual workspaces, virtual exhibit spaces, and game-based learning and training environments that run on all major software [[operating system]]s. By using a [[peer-to-peer]]-based [[message passing]] protocol to reduce reliance on server infrastructures for support of basic in-world interactions across many participants, Open Cobalt makes it possible for people to hyperlink their virtual worlds via [[3D computer graphics|3D]] [[web portal|portals]] to form a large [[distributed computing|distributed]] [[computer network|network]] of interconnected collaboration spaces. It also makes it possible for schools and other organizations to freely set up their own networks of public and private 3D virtual workspaces that feature integrated [[web browsing]], [[voice chat]], [[text chat]], and access to [[remote desktop]] applications and services.
The Open Cobalt application leverages peer-based messaging to eliminate the need for virtual world servers/commercial services and makes it very simple for [[End-user|end-users]] to create and securely share deeply collaborative virtual worlds that run on all major software operating systems. Users moving through and interacting within Open Cobalt worlds simultaneously participate and collaborate in a dynamic, concurrent environment where they can work, explore, and learn at a level of integration and extensibility not easily achieved through commercial virtual world technologies. Without any licensing fees, users and developers can also freely build and share highly capable multi-user virtual workspaces, game-based learning and training environments, or even just create places to meet and interact with friends.

Open Cobalt uses the [[Squeak]] software environment, which is an open-source [[Smalltalk]] system freely available for Windows, Mac and Unix. As is true of almost any Smalltalk application, Open Cobalt has identical functioning on any supported platform. As a Smalltalk system, it can usually be updated while the system is running without needing a restart.

==Expected uses==
Open Cobalt is designed to enable the deployment of secure virtual world spaces that support education, research, and the activities of [[Virtual enterprise|virtual organizations]]. By leveraging [[OpenGL]]-based [[3D graphics]], Open Cobalt supports highly scalable collaborative [[data visualization]], virtual learning and problem solving environments, 3D wikis, online gaming environments termed [[Massively multiplayer online role-playing game]]s (MMORPGs), and privately and securely maintained multi-user virtual environments.

The Open Cobalt application leverages peer-based messaging to eliminate the need for virtual world servers/commercial services and makes it very simple for [[end-user]]s to create and securely share deeply collaborative virtual worlds that run on all major software operating systems. Users moving through and interacting within Open Cobalt worlds simultaneously participate and collaborate in a dynamic, concurrent environment where they can work, explore, and learn at a level of integration and extensibility not easily achieved through commercial virtual world technologies. With no licensing fees, users and developers can also freely build and share highly capable multi-user virtual workspaces, game-based learning and training environments, or even just create places to meet and interact with friends.


==History==
==History==
[[Image:cobalt screenshot pre alpha.jpg|thumb|300px|Open Cobalt user interface and avatar-enabled virtual environment containing .[[Keyhole Markup Language|kmz]] mesh content imported from [[Google|Google's]] [[Google 3D Warehouse|3D Warehouse]]. Users are able to provision content to Open Cobalt spaces that can be developed and managed using third-party tools and resources.]]
Open Cobalt is built on top of the [[croquet project|Croquet]] [[software development kit]] that was [http://www.geoplace.com/ME2/dirmod.asp?sid=&nm=&type=news&mod=News&mid=9A02E3B96F2A415ABC72CB5F516B4C10&tier=3&nid=E8774E6B0CAD494BBA79EBCA881A2DA3 publicly released] under the [[MIT License]] by [[Hewlett-Packard]] and the [http://croquetconsortium.org Croquet Consortium] in early [[2007]]<ref>[http://croquetconsortium.org/index.php/News#.5B03.2F27.2F07.5D_Croquet_SDK_1.0_Released Press Release for the Croquet SDK 1.0]</ref>. In early [[2008]], and with the support of the [[Andrew W. Mellon Foundation]]<ref>[http://campustechnology.com/Articles/2008/01/Lombardi-Accepts-Mellon-Award.aspx Announcement of the 2007 Mellon Advanced Technology Collaboration (MATC) Award to Duke University]</ref>, [[Julian Lombardi]] and [[Mark P. McCahill]], at [[Duke University]], began a [[community source|community-based software development effort]] to build Open Cobalt as an [[open source]] [[virtual world]] browser [[Application software|application]] and construction toolkit. In May of [[2008]], [[Julian Lombardi]] was awarded a [[National Science Foundation]] grant<ref>[http://www.nsf.gov/awardsearch/showAward.do?AwardNumber=0823393 NSF Award Abstract #0823393: An Open and Scalable Croquet-Based Collaboration Infrastructure for Support of 3-D Simulation-Based Research and Education]</ref> to further strengthen the [[community source|community-based software development effort]] and bring the Open Cobalt virtual world browser to its [[beta software|beta]] release in [[2009]]. Together with John Dougan as technical project lead and a growing international community of software developers and volunteers, the [http://opencobalt.org/Credits.html Open Cobalt project contributors] are now working on advancing the technology toward a full production-level implementation in [[2010]].

Open Cobalt is derived from the [[croquet project|Croquet]] [[software development kit]] (SDK) that was publicly released under the [[MIT License]] by [[Hewlett-Packard]] and the Croquet Consortium in early 2007.<ref>{{Cite web |url=http://croquetconsortium.org/index.php/News#.5B03.2F27.2F07.5D_Croquet_SDK_1.0_Released |title=Press Release for the Croquet SDK 1.0 |access-date=2009-01-18 |archive-date=2016-12-25 |archive-url=https://web.archive.org/web/20161225181101/http://croquetconsortium.org/index.php/News#.5B03.2F27.2F07.5D_Croquet_SDK_1.0_Released |url-status=dead }}</ref>

In early 2008, and with the support of the [[Andrew W. Mellon Foundation]],<ref>[http://campustechnology.com/Articles/2008/01/Lombardi-Accepts-Mellon-Award.aspx Announcement of the 2007 Mellon Advanced Technology Collaboration (MATC) Award to Duke University]</ref> [[Julian Lombardi]] and [[Mark P. McCahill]], at [[Duke University]], launched the community-based software development effort to build Open Cobalt as an [[open-source software|open-source]] [[virtual world]] browser [[Application software|application]] and construction toolkit.

In May 2008, Lombardi was awarded a [[National Science Foundation]] grant<ref>[https://www.nsf.gov/awardsearch/showAward.do?AwardNumber=0823393 NSF Award Abstract #0823393: An Open and Scalable Croquet-Based Collaboration Infrastructure for Support of 3-D Simulation-Based Research and Education]</ref> to further strengthen the community-based software development effort and bring the Open Cobalt virtual world browser to its [[alpha software|alpha]] release.

Together with John Dougan as technical project lead and a growing international community of software developers and volunteers, the Open Cobalt project contributors released Open Cobalt Alpha in April 2010.

OpenCobalt 1.0 alpha 22 was released in June 2015. Recent activity involving the project can be found in the Open Cobalt Google Group.


==Goals==
==Goals==
The goals of the Open Cobalt effort are to stimulate the use of distributed virtual environments, advance visual simulations, and deepen collaboration in education, research, and personal entertainment - and in so doing to:
[[Image:cobalt screenshot pre alpha.jpg|thumb|400px|'''Open Cobalt user interface and avatar-enabled virtual environment containing .[[kmz]] mesh content imported from [[Google|Google's]] 3D Warehouse.''' Users are able to easily provision content to Open Cobalt spaces that can be developed and managed using free and powerful third-party tools and resources.]]
The goals of the Open Cobalt effort are to stimulate the use of distributed virtual environments, advance visual simulations, and deepen collaboration in education, research, and personal entertainment - and in so doing to 1) stimulate the development and dissemination of shared cyberenvironments for the staging, observation and evaluation of collaborative decision-making, problem finding, and problem solving among members of distributed virtual organizations and educational communities, and 2)
# stimulate the development and dissemination of shared cyberenvironments for the staging, observation and evaluation of collaborative decision-making, problem finding, and problem solving among members of distributed virtual organizations and educational communities, and
create the conditions for the emergence of a free, open, and scalable 3D-enabled global information space.
# create the conditions for the emergence of a free, open, and scalable 3D-enabled global information space.


==Features==
==Features==
Open Cobalt is both an end-user application and full featured software development environment for creating a rich network of end-user created interlinked virtual worlds. It is more extensible than the proprietary technologies behind collaborative worlds such as ''[[Second Life]]'', and before that [[ViOS]]. This is because:
*Free (no subscription or licensing fees)
*It is free (there are no fees for its use or distribution)
*Open Source ([[MIT License]])
*The entire system is open-source (it is licensed under the [[MIT License|MIT free software license]])
*Fully customizable (simulation development/deployment)
*It does not need the use of servers to create and share virtual worlds (since it is based on a [[peer-to-peer]] synchronization architecture/messaging protocol)
*Multi-platform ([[Mac OS]], [[Windows]], [[Linux]])
*It is platform and device independent (because it is a [[virtual machine]]-based technology that runs on [[Mac OS X]], [[Microsoft Windows|Windows]], and [[Linux]])
*Private virtual worlds
*It provides a complete professional programmer's language ([[Smalltalk]]/[[Squeak]], [[Integrated development environment|IDE]], and [[class library]] in every distributed, running participant's copy (with the programming environment itself being simultaneously shareable and extensible)
*Enterprise directory access ([[LDAP]])
*It is based on [[Squeak]]'s late-binding architecture and [[metaprogramming]] facilities (that allow for efficient handling of media)
*Works over [[LAN]]s and within [[Intranets]]
*Users/developers within virtual worlds may freely access, modify and view the source code of the entire system (they can access running code from in-world)
*Integrated text chat ([[Jabber]])
*Users/developers can import 3D content directly into their worlds ([[Google 3D Warehouse]] content (.[[Keyhole Markup Language|kmz]]) and content in other formats can be [[drag-and-drop]]ped directly into Open Cobalt worlds)
*In-world voice chat ([[VoIP]])
*Users/developers can import a variety of media content directly into their worlds (Open Cobalt worlds support audio and [[mpeg]] media content)
*Its software code can be updated/changed while the system is live (making it possible to program worlds from within worlds while they are running)
*It is not hosted on a single organization's server (and hence not governed by any such organization)

===3D hyperlinking===
[[Image:cobalt portals pre alpha.jpg|thumb|200px|Open Cobalt 3D hyperlinks connecting five different virtual spaces. Three-dimensional hyperlinks appear as navigable ''portals'' and enable Open Cobalt worlds to be organized by end-users into an interlinked network of virtual spaces across local and wide area networks.]]
Unlike most other virtual world platforms (with the exception of [[OpenSimulator]]'s Hypergrid architecture), Open Cobalt uses a method of [[hyperlinking]], known as "space-linking",<ref>{{cite web|url = http://www.opencobalt.net/documentation/user-guide/teleporting-and-space-linking|title = Teleporting and Space-Linking|publisher = OpenCobalt project|access-date = 2018-10-22|archive-date = 2018-10-23|archive-url = https://web.archive.org/web/20181023034800/http://www.opencobalt.net/documentation/user-guide/teleporting-and-space-linking|url-status = dead}}</ref> which resembles a window frame or portal and, when revolved, shows a 360-degree real-time view of one region to a user in another region; such portals can also be walked through by users. Space-linking is an alternative to teleportation, a more common means of traversing between regions or spaces, and is also a primary means of travelling between whole grids.

Like [[MediaWiki]]'s [[Wikipedia:Red link|redlink]]s, such portals are also used to link to uncreated spaces or regions (colored in black) in order to indicate the need to create newer spaces.<ref>{{Cite web |url=https://wiki.duke.edu/display/Cobalt/Creating,+Saving,+and+Loading+Spaces |title=Creating, Saving, and Loading Spaces |access-date=2009-06-04 |archive-date=2012-12-21 |archive-url=https://web.archive.org/web/20121221184439/https://wiki.duke.edu/display/Cobalt/Creating,+Saving,+and+Loading+Spaces |url-status=dead }}</ref>

===Remote collaboration===
[[Image:Vnc in cobalt pre alpha.jpg|thumb|200px|Two users' avatars accessing a single VNC session within a secure and collaborative Open Cobalt space. Integration of VNC with Open Cobalt makes it possible for users to collaboratively access the desktops and applications running on remote machines anywhere on the network.]]

*Enterprise directory access; Lightweight Directory Access Protocol ([[LDAP]])
*Works over [[local area network]]s (LAN) and within [[Intranet]]s
*Integrated text chat; [[Extensible Messaging and Presence Protocol]] (XMPP)
*In-world voice chat; [[Voice over IP]] (VoIP)
*In-world video chat
*In-world video chat
*In-world web browsing (via [[VNC]])
*In-world web browsing; via [[Virtual Network Computing]] (VNC)
*In-world annotations (text and audio)
*In-world annotations (text and audio)
*Navigable 3D [[hyperlink|hyperlinking]] between virtual worlds
*Collaborative document sharing/editing
*Collaborative document sharing/editing

*Save/restore virtual worlds
===Filetype support===
*Virtual world self-publishing
*Mesh and texture import ([[.kmz]], .[[Wavefront .obj file|obj]], .ase, .vrml)
*Access to remote applications (via [[VNC]])
*End-user content creation and editing
*Mesh and texture import (.[[kmz]], .[[obj]], .ase, .vrml)
*Media import (.[[MPEG-1|mpg]])
*Media import (.[[MPEG-1|mpg]])
*Scripting ([[Smalltalk]]/[[Squeak]])
*Scripting ([[Smalltalk]]/[[Squeak]])
Line 52: Line 82:
*[[OpenAL]]
*[[OpenAL]]


==Technical functionality==
==Technical functions==
Open Cobalt is an application built using the [[Croquet project|Open Croquet]] software developer's toolkit. Its relationship to Open Croquet provides it with a number of powerful capabilities.
[[Image:cobalt portals pre alpha.jpg|thumb|400px|'''Open Cobalt 3D hyperlinks connecting five different virtual spaces.''' Three-dimensional hyperlinks appear as navigable ''portals'' and enable Open Cobalt worlds to be organized by end-users into an interlinked network of virtual spaces across local and wide area networks.]]
Open Cobalt an application built using the [[Croquet|Open Croquet]] software developer's toolkit. Its relationship to [[Croquet|Open Croquet]] provides it with a number of powerful capabilities.


===Programming environment===
===Programming environment===
Open Cobalt's software development environment enables programmers to enjoy the capabilities of a true late bound, message sending language. Because it is built on [[Squeak]]/[[Croquet project|Croquet]], Open Cobalt is a purely object-oriented system that allows for significant flexibility in its design and implementation. Within Open Cobalt, programmers may edit the source code of the 3D world from within the world, and immediately see the result while the world is still running. The running program does not have to be ended, and there is no compile-link-run-debug development loop. Any part of the program may be edited, down to the [[VM]] and [[OpenGL]] calls. Open Cobalt's reliance on [Squeak]]'s generalized storage allocator and garbage collector makes it highly efficient in real-time and allows reshaping of objects to be done safely. As with [[Squeak]], Open Cobalt supports many non-English languages and [[font]]s such as [[German]], [[Spanish]], [[French]], and [[Japanese]].
Open Cobalt's software development environment enables programmers to enjoy the capabilities of a true [[late-bound|late bound]], message sending language. Because it is built on [[Squeak]]/[[Croquet Project|Croquet]], Open Cobalt is a purely [[object-oriented programming]] system that allows for significant flexibility in its design and implementation.
Within Open Cobalt, programmers may edit the [[source code]] of the 3D world from within the world, and immediately see the result while the world is still running. The running program does not have to be ended, and there is no compile-link-run-debug development loop. Any part of the program may be edited, down to the [[virtual machine]] (VM) and [[OpenGL]] calls. Open Cobalt's reliance on Squeak's generalized storage allocator and [[Garbage collection (computer science)|garbage collector]] makes it highly efficient in real-time and allows reshaping of objects to be done safely.
As with Squeak, Open Cobalt supports many non-English languages and [[font]]s such as [[German language|German]], [[Spanish language|Spanish]], [[French language|French]], and [[Japanese language|Japanese]].


===Synchronization architecture===
===Synchronization architecture===
[[Image:cobalt desktop.jpg|thumb|300px|Open Cobalt's programming environment. A complete professional programmer's language ([[Smalltalk]]/[[Squeak]]), [[Integrated development environment|IDE]], and [[class library]] is present in every distributed, running participant's copy.]]
Underlying Open Cobalt is an [[Object-oriented programming|object-oriented]] semantics based on active [[Object-oriented programming|object]] that have the capability of temporal reflection. Each [[Object-oriented programming|object]] is aware and in direct control of its behavior in time. Open Cobalt also directly supports replication of computation, allowing computation to be moved close to the point of interaction on demand, while maintaining a consistent view of behaviors that can scale to include thousands of nodes. It does this by using a combination of [[Object-oriented programming|object]] semantics along with a modified version of [[David P. Reed]]'s [http://www.lcs.mit.edu/publications/specpub.php?id=773 TeaTime] peer-based messaging protocol as a distributed message transactional system enabling replicated computation (synchronization) across multiple peers. This makes replicated computation as easily as replicating data and makes synchronization of all events across multiple peers a fundamental property of the system. Owing to these properties, software developers can use Open Cobalt as a way of creating deeply collaborative applications without the effort required to understand how replicated applications work. This greatly reduces the programming overhead required for widespread deployment of deeply capable collaborative virtual spaces. It also makes it possible to deploy and coordinate the activities of virtual worlds on multiple machines without the requirement of maintaining central server resources (other than those needed for specialized data and institutional middleware services). Open Cobalt's implementation of TeaTime includes: 1) A coordinated universal time-base embedded in the [[communications protocol|communication protocol]], 2) Replicated, versioned [[Object-oriented programming|objects]] that unify replicated computation and distribution of results, 3) Replication strategies that separate the mechanisms of replication from the behavioral semantics of [[Object-oriented programming|objects]], 4) Deadline-based scheduling extended with failure and nesting, 5) Coordinated, distributed two-phase commit that is used to control the progress of computations at multiple sites, to provide resilience, deterministic results, and adaptation to available resources, and 6) Use of distributed sets.
Underlying Open Cobalt is an [[Object-oriented programming|object-oriented]] semantics based on active [[Object (computer science)|objects]] that have the capability of temporal [[Reflection (computer programming)|reflection]].


Each object is aware of, and in direct control, of its behavior in time. Open Cobalt also directly supports replication of computation, allowing computation to be moved close to the point of interaction on demand, while maintaining a consistent view of behaviors that can scale to include thousands of nodes. It does this by using a combination of object semantics along with a modified version of [[David P. Reed]]'s TeaTime peer-based messaging protocol as a distributed message transactional system enabling replicated computation (synchronization) across multiple peers.<ref>{{Cite web|title = LCS Publication - MIT-LCS-TR-205|url = http://publications.csail.mit.edu/lcs/specpub.php?id=773|website = publications.csail.mit.edu|access-date = 2015-11-10}}</ref> This makes replicated computation as easily as replicating data - and makes synchronization of all events across multiple peers a fundamental property of the system.
==Unique aspects==
[[Image:Vnc_in_cobalt_pre_alpha.jpg|thumb|400px|'''Two users' avatars accessing a single VNC session within a secure and collaborative Open Cobalt space.''' Integration of VNC with Open Cobalt makes it possible for users to collaboratively access the desktops and applications running on remote machines anywhere on the network.]]
Open Cobalt is both an end user application and full featured software development environment for creating a rich network of end-user created interlinked virtual worlds. It is more extensible than the proprietary technologies behind collaborative worlds such as [[Second Life]], and before that [[ViOS]]. This is because;
*It is free (there are no fees for its use or distribution)
*The entire system is open source (it is licensed under the [[MIT License|MIT free software license]])
*It features the ability to create 3D hyperlinks in the form of doorways that connect virtual worlds to one another (in much the same manner by which 2D hyperlinks connect webpages)
*It supports [[VoIP]] (users can communicate with each other via voice while in-world)
*It does not require the use of servers to create and share virtual worlds (since it is based on a [[peer-to-peer]] synchronization architecture/messaging protocol)
*It is platform and device independent (because it is a [[virtual machine]]-based technology that runs on [[Mac OSX]], [[Windows]], and [[Linux]])
*It provides a complete professional programmer’s language ([[Smalltalk]]/[[Squeak]], [[Integrated development environment|IDE]], and [[class library]] in every distributed, running participant’s copy (with the programming environment itself being simultaneously shareable and extensible)
*It is based on [[Squeak]]'s late-binding architecture and [[metaprogramming]] facilities (that allow for efficient handling of media)
*Users/developers within virtual worlds may freely access, modify and view the source code of the entire system (they can access running code from in-world)
*Users/developers can import 3D content directly into their worlds (Google 3D Warehouse content (.[[kmz]]) and content in other formats can be [[drag-and-drop|drag-and-dropped]] directly into Open Cobalt worlds)
*Users/developers can import a variety of media content directly into their worlds (Open Cobalt worlds support audio and [[mpeg]] media content)
*It's software code can be updated/changed while the system is live (making it possible to program worlds from within worlds while they are running)
*It is not hosted on a single organization’s server (and hence not governed by any such organization)


Owing to these properties, software developers can use Open Cobalt as a way of creating deeply collaborative applications without the effort needed to understand how replicated applications work. This reduces the programming overhead needed for widespread deployment of deeply capable collaborative virtual spaces. It also makes it possible to deploy and coordinate the activities of virtual worlds on multiple machines without the need to maintain central server resources (other than those needed for specialized data and institutional middleware services).
== References ==

[[Image:cobalt desktop.jpg|thumb|400px|'''Open Cobalt's programming environment.''' A complete professional programmer’s language ([[Smalltalk]]/[[Squeak]], [[Integrated development environment|IDE]], and [[class library]] is present in every distributed, running participant’s copy.]]
Open Cobalt's implementation of TeaTime includes:
{{reflist}}
# A coordinated universal time-base embedded in the [[communications protocol|communication protocol]],
# Replicated, versioned [[Object-oriented programming|objects]] that unify replicated computation and distribution of results,
# Replication strategies that separate the mechanisms of replication from the behavioral semantics of objects,
# Deadline-based scheduling extended with failure and nesting,
# Coordinated, distributed [[Two-phase commit protocol|two-phase commit]] that is used to control the progress of computations at multiple sites, to provide resilience, deterministic results, and adaptation to available resources,
# Use of distributed sets.

==References==
{{Reflist}}


==External links==
==External links==
*{{Official website|www.opencobalt.net}}
*[http://opencobalt.org/ Open Cobalt Website]
*[https://sites.google.com/site/opencobaltproject/ Alternate URL for official website]{{Dead link|date=November 2024 |bot=InternetArchiveBot |fix-attempted=yes }}
*[http://thefutureinvented.blogspot.com| The Future Invented Blog: Building the Cobalt Metaverse Browser and Toolkit]
*[http://jlombardi.blogspot.com/ Julian Lombardi's Blog]
*[https://groups.google.com/g/opencobalt OpenCobalt Google Group]
*[http://version.opencobalt.net/ OpenCobalt downloads] {{Webarchive|url=https://web.archive.org/web/20160304102511/http://version.opencobalt.net/ |date=2016-03-04 }}
*[http://opencroquet.org/ Croquet Consortium Website]
*[http://www.lcs.mit.edu/publications/specpub.php?id=773 Naming and synchronizations in a decentralized computer system (Reed's thesis, 1978)]
*[http://cobalt.ning.com/ The Open Cobalt Ning Site]
*[http://groups.google.com/group/cobaltcroquet The Open Cobalt Developer's Google Group]
*[http://www.youtube.com/watch?v=fNcXqRltMzo Open Cobalt test on a multitouch visualization wall]
*[http://www.youtube.com/watch?v=ykriYbq-oyI Open Cobalt avatar test]
*[http://www.youtube.com/watch?v=1ohaE8qJYuo Open Cobalt on a ''Quick-CAVE'']


{{Smalltalk programming language}}
[[Category:Distributed computing]]
[[Category:3D scenegraph APIs]]
[[Category:Alpha software]]
[[Category:Cross-platform free software]]
[[Category:Free simulation software]]
[[Category:Free software projects]]
[[Category:Groupware]]
[[Category:Groupware]]
[[Category:Information technology management]]
[[Category:Information technology management]]
[[Category:Virtual reality communities]]
[[Category:Integrated development environments]]
[[Category:3D Scenegraph APIs]]
[[Category:Free software distributions]]
[[Category:Internet culture]]
[[Category:Software using the MIT license]]
[[Category:User interface builders]]
[[Category:Virtual reality]]
[[Category:Virtual reality]]
[[Category:Virtual world communities]]


{{free-software-stub}}

Latest revision as of 14:33, 19 November 2024

Open Cobalt
Developer(s)Community source and Duke University
Initial release2009
Written inSqueak Smalltalk
Operating systemmacOS, Windows, Linux
Available inEnglish
Type3D Browser, Virtual world, 3D computer graphics
LicenseMIT
Websitewww.opencobalt.net

Open Cobalt is a free and open-source software platform for constructing, accessing, and sharing virtual worlds both on local area networks or across the Internet, with no need for centralized servers.

The technology makes it easy to create deeply collaborative and hyperlinked multi-user virtual workspaces, virtual exhibit spaces, and game-based learning and training environments that run on all major software operating systems. By using a peer-to-peer-based message passing protocol to reduce reliance on server infrastructures for support of basic in-world interactions across many participants, Open Cobalt makes it possible for people to hyperlink their virtual worlds via 3D portals to form a large distributed network of interconnected collaboration spaces. It also makes it possible for schools and other organizations to freely set up their own networks of public and private 3D virtual workspaces that feature integrated web browsing, voice chat, text chat, and access to remote desktop applications and services.

Open Cobalt uses the Squeak software environment, which is an open-source Smalltalk system freely available for Windows, Mac and Unix. As is true of almost any Smalltalk application, Open Cobalt has identical functioning on any supported platform. As a Smalltalk system, it can usually be updated while the system is running without needing a restart.

Expected uses

[edit]

Open Cobalt is designed to enable the deployment of secure virtual world spaces that support education, research, and the activities of virtual organizations. By leveraging OpenGL-based 3D graphics, Open Cobalt supports highly scalable collaborative data visualization, virtual learning and problem solving environments, 3D wikis, online gaming environments termed Massively multiplayer online role-playing games (MMORPGs), and privately and securely maintained multi-user virtual environments.

The Open Cobalt application leverages peer-based messaging to eliminate the need for virtual world servers/commercial services and makes it very simple for end-users to create and securely share deeply collaborative virtual worlds that run on all major software operating systems. Users moving through and interacting within Open Cobalt worlds simultaneously participate and collaborate in a dynamic, concurrent environment where they can work, explore, and learn at a level of integration and extensibility not easily achieved through commercial virtual world technologies. With no licensing fees, users and developers can also freely build and share highly capable multi-user virtual workspaces, game-based learning and training environments, or even just create places to meet and interact with friends.

History

[edit]
Open Cobalt user interface and avatar-enabled virtual environment containing .kmz mesh content imported from Google's 3D Warehouse. Users are able to provision content to Open Cobalt spaces that can be developed and managed using third-party tools and resources.

Open Cobalt is derived from the Croquet software development kit (SDK) that was publicly released under the MIT License by Hewlett-Packard and the Croquet Consortium in early 2007.[1]

In early 2008, and with the support of the Andrew W. Mellon Foundation,[2] Julian Lombardi and Mark P. McCahill, at Duke University, launched the community-based software development effort to build Open Cobalt as an open-source virtual world browser application and construction toolkit.

In May 2008, Lombardi was awarded a National Science Foundation grant[3] to further strengthen the community-based software development effort and bring the Open Cobalt virtual world browser to its alpha release.

Together with John Dougan as technical project lead and a growing international community of software developers and volunteers, the Open Cobalt project contributors released Open Cobalt Alpha in April 2010.

OpenCobalt 1.0 alpha 22 was released in June 2015. Recent activity involving the project can be found in the Open Cobalt Google Group.

Goals

[edit]

The goals of the Open Cobalt effort are to stimulate the use of distributed virtual environments, advance visual simulations, and deepen collaboration in education, research, and personal entertainment - and in so doing to:

  1. stimulate the development and dissemination of shared cyberenvironments for the staging, observation and evaluation of collaborative decision-making, problem finding, and problem solving among members of distributed virtual organizations and educational communities, and
  2. create the conditions for the emergence of a free, open, and scalable 3D-enabled global information space.

Features

[edit]

Open Cobalt is both an end-user application and full featured software development environment for creating a rich network of end-user created interlinked virtual worlds. It is more extensible than the proprietary technologies behind collaborative worlds such as Second Life, and before that ViOS. This is because:

  • It is free (there are no fees for its use or distribution)
  • The entire system is open-source (it is licensed under the MIT free software license)
  • It does not need the use of servers to create and share virtual worlds (since it is based on a peer-to-peer synchronization architecture/messaging protocol)
  • It is platform and device independent (because it is a virtual machine-based technology that runs on Mac OS X, Windows, and Linux)
  • It provides a complete professional programmer's language (Smalltalk/Squeak, IDE, and class library in every distributed, running participant's copy (with the programming environment itself being simultaneously shareable and extensible)
  • It is based on Squeak's late-binding architecture and metaprogramming facilities (that allow for efficient handling of media)
  • Users/developers within virtual worlds may freely access, modify and view the source code of the entire system (they can access running code from in-world)
  • Users/developers can import 3D content directly into their worlds (Google 3D Warehouse content (.kmz) and content in other formats can be drag-and-dropped directly into Open Cobalt worlds)
  • Users/developers can import a variety of media content directly into their worlds (Open Cobalt worlds support audio and mpeg media content)
  • Its software code can be updated/changed while the system is live (making it possible to program worlds from within worlds while they are running)
  • It is not hosted on a single organization's server (and hence not governed by any such organization)

3D hyperlinking

[edit]
Open Cobalt 3D hyperlinks connecting five different virtual spaces. Three-dimensional hyperlinks appear as navigable portals and enable Open Cobalt worlds to be organized by end-users into an interlinked network of virtual spaces across local and wide area networks.

Unlike most other virtual world platforms (with the exception of OpenSimulator's Hypergrid architecture), Open Cobalt uses a method of hyperlinking, known as "space-linking",[4] which resembles a window frame or portal and, when revolved, shows a 360-degree real-time view of one region to a user in another region; such portals can also be walked through by users. Space-linking is an alternative to teleportation, a more common means of traversing between regions or spaces, and is also a primary means of travelling between whole grids.

Like MediaWiki's redlinks, such portals are also used to link to uncreated spaces or regions (colored in black) in order to indicate the need to create newer spaces.[5]

Remote collaboration

[edit]
Two users' avatars accessing a single VNC session within a secure and collaborative Open Cobalt space. Integration of VNC with Open Cobalt makes it possible for users to collaboratively access the desktops and applications running on remote machines anywhere on the network.

Filetype support

[edit]

Technical functions

[edit]

Open Cobalt is an application built using the Open Croquet software developer's toolkit. Its relationship to Open Croquet provides it with a number of powerful capabilities.

Programming environment

[edit]

Open Cobalt's software development environment enables programmers to enjoy the capabilities of a true late bound, message sending language. Because it is built on Squeak/Croquet, Open Cobalt is a purely object-oriented programming system that allows for significant flexibility in its design and implementation.

Within Open Cobalt, programmers may edit the source code of the 3D world from within the world, and immediately see the result while the world is still running. The running program does not have to be ended, and there is no compile-link-run-debug development loop. Any part of the program may be edited, down to the virtual machine (VM) and OpenGL calls. Open Cobalt's reliance on Squeak's generalized storage allocator and garbage collector makes it highly efficient in real-time and allows reshaping of objects to be done safely.

As with Squeak, Open Cobalt supports many non-English languages and fonts such as German, Spanish, French, and Japanese.

Synchronization architecture

[edit]
Open Cobalt's programming environment. A complete professional programmer's language (Smalltalk/Squeak), IDE, and class library is present in every distributed, running participant's copy.

Underlying Open Cobalt is an object-oriented semantics based on active objects that have the capability of temporal reflection.

Each object is aware of, and in direct control, of its behavior in time. Open Cobalt also directly supports replication of computation, allowing computation to be moved close to the point of interaction on demand, while maintaining a consistent view of behaviors that can scale to include thousands of nodes. It does this by using a combination of object semantics along with a modified version of David P. Reed's TeaTime peer-based messaging protocol as a distributed message transactional system enabling replicated computation (synchronization) across multiple peers.[6] This makes replicated computation as easily as replicating data - and makes synchronization of all events across multiple peers a fundamental property of the system.

Owing to these properties, software developers can use Open Cobalt as a way of creating deeply collaborative applications without the effort needed to understand how replicated applications work. This reduces the programming overhead needed for widespread deployment of deeply capable collaborative virtual spaces. It also makes it possible to deploy and coordinate the activities of virtual worlds on multiple machines without the need to maintain central server resources (other than those needed for specialized data and institutional middleware services).

Open Cobalt's implementation of TeaTime includes:

  1. A coordinated universal time-base embedded in the communication protocol,
  2. Replicated, versioned objects that unify replicated computation and distribution of results,
  3. Replication strategies that separate the mechanisms of replication from the behavioral semantics of objects,
  4. Deadline-based scheduling extended with failure and nesting,
  5. Coordinated, distributed two-phase commit that is used to control the progress of computations at multiple sites, to provide resilience, deterministic results, and adaptation to available resources,
  6. Use of distributed sets.

References

[edit]
  1. ^ "Press Release for the Croquet SDK 1.0". Archived from the original on 2016-12-25. Retrieved 2009-01-18.
  2. ^ Announcement of the 2007 Mellon Advanced Technology Collaboration (MATC) Award to Duke University
  3. ^ NSF Award Abstract #0823393: An Open and Scalable Croquet-Based Collaboration Infrastructure for Support of 3-D Simulation-Based Research and Education
  4. ^ "Teleporting and Space-Linking". OpenCobalt project. Archived from the original on 2018-10-23. Retrieved 2018-10-22.
  5. ^ "Creating, Saving, and Loading Spaces". Archived from the original on 2012-12-21. Retrieved 2009-06-04.
  6. ^ "LCS Publication - MIT-LCS-TR-205". publications.csail.mit.edu. Retrieved 2015-11-10.
[edit]