CollabVM: Difference between revisions

From Computernewb Wiki
Jump to navigation Jump to search
(rm leftover)
No edit summary
 
(9 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{Infobox Computernewb project
{{Infobox Computernewb project
| title = CollabVM
|title = CollabVM
| screenshot = CollabVMHome.png
|screenshot = CollabVMHome.png
| caption = Main page, showing all VMs
|caption = Main page, showing all VMs
| introduced = 11 July 2014 (as Browser Computer)<br>18 February 2015 (as CollabVM)
|introduced = 11 July 2014 (as Browser Computer)<br>18 February 2015 (as CollabVM)
| url = <code>[https://computernewb.com/collab-vm/ https://computernewb.com/collab-vm/]</code>
|url = <code>[https://computernewb.com/collab-vm/ https://computernewb.com/collab-vm/]</code>
| type = Online virtual machine
|type = Online virtual machine
}}
}}


The '''Collaborative Virtual Machine''' (also known as '''CollabVM''', '''Collab VM''', or '''collab-vm''') is an open source project which allows users to collaboratively control one or more virtual machines through an online web interface using a turn-based queue system, typically for around 18 seconds per person. The twist is that anyone can hop in and use any of the available virtual machines at any given moment, and do whatever they want, so long as they abide by the CollabVM Rules.
The '''Collaborative Virtual Machine''' (also known as '''CollabVM''', '''Collab VM''', or '''collab-vm''') is an open source project which allows users to collaboratively control one or more virtual machines through an online web interface using a turn-based queue system, typically for around 18 seconds per person. The twist is that anyone can hop in and use any of the available virtual machines at any given moment, and do whatever they want, so long as they abide by the CollabVM Rules.


The current concept and project was inspired by the website [[socket.computer]], but the CollabVM project adds many more features on top of the existing features such as a chat room, an [[Admin Panel]], logs, and more. The website was created by [[Dartz]], and the software was coded and written by [[Cosmic Sans]], [[Dartz]] and [[Geodude]]. And since the server software is open source and publicly available, you can download it for free [http://github.com/computernewb/collab3 here]. Currently, the latest version of [[collab-vm-server]] is 1.2.11, but it will eventually be replaced with CollabVM 3.0.
The current concept and project was inspired by the website [[socket.computer]], but the CollabVM project adds many more features on top of the existing features such as a chat room, on screen keyboard, admin/mod roles, the fact that it actually functions, and more. The website was created by [[Dartz]], and the current iteration of the server software was mostly coded and written by [[Elijah]] and [[Modeco80]]. And since the server software is open source and publicly available, you can download it for free [https://github.com/computernewb/collabvm-1.2.ts here]. Currently, the latest version of [[collab-vm-server]] is 1.2-TS, but it will eventually be replaced with CollabVM 3.0.


==What it is==
==What it is==
The site allows users to control a virtual machine. The site runs several virtual machines. The list are as follows: (updated sometimes)
The site allows users to control a virtual machine. The site runs several virtual machines. The list are as follows: (updated sometimes)


[https://computernewb.com/collab-vm/ CollabVM] &nbsp; [https://computernewb.com/collab-vm/ Home] [https://computernewb.com/collab-vm/faq FAQ] [https://computernewb.com/collab-vm/rules Rules] [https://discord.gg/a4kqb4mGyX Discord] [https://old.reddit.com/r/collabvm Subreddit] [https://computernewb.com/collab-vm/themes/dark Dark Theme] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [https://computernewb.com/collab-vm/user-vm/ Check out UserVM for more VMs!]
<gallery>
<gallery>
File: Vm0b0t_new20.png |link=VM0 |[[VM0|Windows 8.1 Google Chromium Edition x64 (VM 0b0t) (VM 0b0t) - ANARCHY VM]]
File:Vm0b0t new36.png|[[VM0|Totally Windows 7 (VM 0b0t) - ANARCHY VM]]
File: VM1.png |link=VM1 |[[VM1|Windows 7 Ultimate SP1 x64 (VM 1)]]
File:VM1.png|[[VM1|Windows 7 Ultimate SP1 x64 (VM 1)]]
File: VM2.png |link=VM2 |[[VM2|Windows XP Professional SP3 x86 (VM 2)]]
File:VM2.png|[[VM2|Windows 2000 Pro SP4/Windows XP Pro SP3 x86 (VM 2)]]
File: VM3.png |link=VM3 |[[VM3|Lubuntu 22.04 x64 (VM 3)]]
File:VM3.png|[[VM3|Arch Linux/MATE x64 (VM 3)]]
File: VM4.png |link=VM4 |[[VM4|Windows 8.1 x64 (VM 4)]]
File:VM4 2.0.png|[[VM4|Windows 98 Second Edition (VM 4)]]
File: VM5.png |link=VM5 |[[VM5|Windows 10 Pro 21H2 x64 (VM 5)]]
File:VM5.png|[[VM5|Windows 10 Pro 22H2 x64 (VM 5)]]
File: VM6.png |link=VM6 |[[VM6|Windows 11 Pro 22000.1098 x64 (VM 6)]]
File:VM6.png|[[VM6|Windows 11 Pro 25947 x64 (VM 6)]]
File: VM7_def.png |link=VM7 |[[VM7|Install Any OS (Modern OSes) x86-64 (VM 7)]]<br><small>Use "!help" for bot help</small>
File:VM7 def.png|[[VM7|Install Any OS (Modern OSes) x86-64 (VM 7)]]<br><small>Use "!help" for bot help</small>
File: VM8_def.png |link=VM8 |[[VM8|Install Any OS (<b>OLD OSES</b>) x86 (VM 8)]]<br><small>Use "!help" for bot help</small>
File:VM8 def.png|[[VM8|Install Any OS (<b>OLD OSES</b>) x86 (VM 8)]]<br><small>Use "!help" for bot help</small>
</gallery>
</gallery>


The site is powered by [[CollabVM Server 1.x (TypeScript)|CollabVM Server]], which uses a [[CollabVM 1.2 Protocol Reference|WebSocket protocol]] originally derived from Guacamole (lol) but has been modified and adapted over the years to such an extent that it'd be inaccurate to call it that. The site features a chatroom, where users are able to type messages to each other. The purpose of the chat is to share ideas on what to do on the virtual machine, although it can be used for pretty much anything.
There are other sites running the CollabVM software that also run other operating systems, like MS-DOS, Windows 98, Debian, etc, and soon, users will be able to host their own VMs with their own operating systems (this has been already done with UserVM).


When you login to the website, you are given a [[Guest|generic, anonymous guest name]] (typically guest (string of 4-6 numbers)). Server owners can modify the server to use a different name, so it might be different depending on the CollabVM site you're using. If registration isn't enabled, you can change your username by clicking the "Change Username" button. If it is, you'll have to create an account
The site is powered by Guacamole and [[collab-vm-server]]. The site features a chatroom, where users are able to type messages to each other. The purpose of the chat is to share ideas on what to do on the virtual machine, although it can be used for pretty much anything.


To take control of the virtual machine, you may need to register and login to the instance. You will receive a message in chat if so. Click the "Take Turn" button or click on the screen. You will be assigned a place in line. You'll then get control of the virtual machine when its your turn. You may end your turn at any time by pressing the "End Turn" button.
When you login to the website, you are given a [[Guest|generic, anonymous guest name]] (typically guest (string of 4-6 numbers)). Server owners can recompile the server with a different name, so it may be different depending on the CollabVM site you're using. You can change your name if you so desire (by clicking the "Change Username" button) or you can leave it as the default guest name.


To check who is currently taking a turn, you can scroll to the user list and look for any blue or yellow names. If their name has a blue background, that means they are currently in control of the virtual machine. If their name has a yellow background, this means they are currently waiting to take control of the virtual machine. If they have no color, that means they aren't doing anything.
To take control of the virtual machine, first, either press the Take Turn button or click/tap on the screen. You will then be assigned a place in line. You will either get control of the virtual machine, or you may have to wait until another users turn is finished before you can take control. If the CollabVM site you are using has a new enough version (1.2.10 or higher), you may end your turn at any moment by pressing the End Turn button to either let someone else receive control or you feel that you have used the machine for long enough. If there are others in the queue, they will receive control after you have ended your turn.

To check who is currently taking a turn, you can scroll to the user list and look for any blue or yellow names. If their name has a blue background, that means they are currently in control of the virtual machine. If their name has a yellow background, this means they are currently waiting to take control of the virtual machine. If they have no color, that means they aren't doing anything. When you press the Take Turn button or click/tap the screen, if someone is also taking a turn, you will receive a timer which indicates how long you have to wait.


'''Please note''': ''While the site is not explicitly for 18 and up, if you are under the age of 18, you need permission from your guardian, (or parent) as anyone can do anything on the virtual machines, including opening pornography and other NSFW things. There is a warning blur which blurs out the screen before you can see it.''
'''Please note''': ''While the site is not explicitly for 18 and up, if you are under the age of 18, you need permission from your guardian, (or parent) as anyone can do anything on the virtual machines, including opening pornography and other NSFW things. There is a warning blur which blurs out the screen before you can see it.''


== History ==
== History ==
The invention of the concept of a public collaborative virtual machine that others could use through the internet is hard to pinpoint. This concept seems to have existed as early as mid 2004, with a user of a forum posting an IP address and a password for a VNC server, claiming it was "open for anyone to use". The concept of collaborating with people through a virtual machine can be traced back to 2010, and the concept of users taking turns to collaborate with a VM online can be traced back to April 2014, the official release date of [[socket.computer]].
The invention of the concept of a public collaborative virtual machine that others could use through the internet is hard to pinpoint. While similar concepts have existed in the past, such as Twitch Plays Pokemon, the concept of users taking turns to collaborate with a virtual machine online can be traced back to April 2014 (the official release date of [[socket.computer]]).


CollabVM was inspired by the website [https://web.archive.org/web/20150210201435/https://www.manymo.com/ Manymo], which allowed users to run an Android virtual machine in a web browser, but is no longer available.
CollabVM was specifically inspired by Twitch Plays Pokemon and the website [https://web.archive.org/web/20150210201435/https://www.manymo.com/ Manymo], which allowed users to run an Android virtual machine in a web browser, but is no longer available.


=== CollabVM 0.01 ===
=== CollabVM 0.01 ===
Line 87: Line 84:


=== [[CollabVM 1.2|CollabVM 1.2.10+]] ===
=== [[CollabVM 1.2|CollabVM 1.2.10+]] ===
'''June 2, 2020 - When 3.0 releases''' - ''spanning years''
'''June 2, 2020''' - '''February 7, 2023'''


CollabVM 2.0 was way too unstable to be used as a full time version, so we switched back to 1.2. Going back, we actually got more features in the "post 2.0" updates, such as JPEG support, bugfixes and stability.
CollabVM 2.0 was way too unstable to be used as a full time version, so we switched back to 1.2. Going back, we actually got more features in the "post 2.0" updates, such as JPEG support, bugfixes and stability.
Line 117: Line 114:
All of the above were merged in to 1.2.10.
All of the above were merged in to 1.2.10.


=== [[CollabVM 3.0]] ===
=== [[CollabVM Server 1.x (TypeScript)|CollabVM 1.2.ts]] ===
'''February 7, 2023''' - '''present day'''
'''When 3.0 releases - May god have mercy on your wretched souls'''


As the original CollabVM 1.2.11 codebase began to show its age over time, with multiple bugs appearing that were unfeasable to fix, the decision was made to do a full protocol-compatible rewrite of the server in TypeScript, with the goal of being more maintainable than the C++ codebase
CollabVM 3.0 is going to be the successor and a complete rewrite of 1.x and 2.0, which started development on August 25th, 2021. It is a major overhaul compared to CVM 1.x and 2.0. Some of the things that will happen in this update include:

This iteration removed the admin panel (because it fucking sucked lol) and replaced it with a configuration file. While originally a barebones 1:1 implementation of the CollabVM 1.2.11 protocol, additional features have been added over time, such as:

* Accounts and login
* The binary protocol, replacing base64 guacamole screen rects with binary MsgPack rects.
* Turn whitelisting with a separate password
* GeoIP Flags next to usernames in the userlist

Several of the functions of the server such as Guacamole parsing, JPEG compression, and (soon) VNC have also been rewritten as a Rust native module to increase performance

=== [[CollabVM 3.0]] ===
'''Sometime before the heat death of the universe ''' (probably)


CollabVM 3.0 is set to be the next and hopefully final iteration of the CollabVM server. It's gone through multiple rewrites, resets, dramas, and several long periods of inactivity, but in its current state it supports most features of the original server, with several bugs that need to be patched
: Guacamole is going to be replaced (possibly, with a custom protocol)
: WebSocket-- replaced
: CloudFlare support (possibly)
: Switch to the CMake build system
: Restoration of the internal HTTP server
: Addition of a JavaScript/C++ based plug in system


Features of CollabVM 3.0 include:
As CollabVM 3.0 won't be the only release in the 3.x trilogy, there will be more features added in the coming weeks as new versions will release, that if 3.0 will even release at all.


* An all-binary protocol that will completely replace the original
; CollabVM 3.0.2
* A REST API to replace the all-WebSocket protocol of CollabVM 1.2
: Implement bot accounts
* h264 VM screen instead of JPEG
; CollabVM 3.0.5
* VM audio, compressed with Opus
: Implement/Add CollabVM Rooms
; CollabVM 3.1.0
: Switch to WebRTC for all protocol usage & video streaming

Latest revision as of 18:54, 2 September 2024

CollabVM
Computernewb project
Main page, showing all VMs
Main page, showing all VMs
Introduced11 July 2014 (as Browser Computer)
18 February 2015 (as CollabVM)
URLhttps://computernewb.com/collab-vm/
TypeOnline virtual machine

The Collaborative Virtual Machine (also known as CollabVM, Collab VM, or collab-vm) is an open source project which allows users to collaboratively control one or more virtual machines through an online web interface using a turn-based queue system, typically for around 18 seconds per person. The twist is that anyone can hop in and use any of the available virtual machines at any given moment, and do whatever they want, so long as they abide by the CollabVM Rules.

The current concept and project was inspired by the website socket.computer, but the CollabVM project adds many more features on top of the existing features such as a chat room, on screen keyboard, admin/mod roles, the fact that it actually functions, and more. The website was created by Dartz, and the current iteration of the server software was mostly coded and written by Elijah and Modeco80. And since the server software is open source and publicly available, you can download it for free here. Currently, the latest version of collab-vm-server is 1.2-TS, but it will eventually be replaced with CollabVM 3.0.

What it is

The site allows users to control a virtual machine. The site runs several virtual machines. The list are as follows: (updated sometimes)

The site is powered by CollabVM Server, which uses a WebSocket protocol originally derived from Guacamole (lol) but has been modified and adapted over the years to such an extent that it'd be inaccurate to call it that. The site features a chatroom, where users are able to type messages to each other. The purpose of the chat is to share ideas on what to do on the virtual machine, although it can be used for pretty much anything.

When you login to the website, you are given a generic, anonymous guest name (typically guest (string of 4-6 numbers)). Server owners can modify the server to use a different name, so it might be different depending on the CollabVM site you're using. If registration isn't enabled, you can change your username by clicking the "Change Username" button. If it is, you'll have to create an account

To take control of the virtual machine, you may need to register and login to the instance. You will receive a message in chat if so. Click the "Take Turn" button or click on the screen. You will be assigned a place in line. You'll then get control of the virtual machine when its your turn. You may end your turn at any time by pressing the "End Turn" button.

To check who is currently taking a turn, you can scroll to the user list and look for any blue or yellow names. If their name has a blue background, that means they are currently in control of the virtual machine. If their name has a yellow background, this means they are currently waiting to take control of the virtual machine. If they have no color, that means they aren't doing anything.

Please note: While the site is not explicitly for 18 and up, if you are under the age of 18, you need permission from your guardian, (or parent) as anyone can do anything on the virtual machines, including opening pornography and other NSFW things. There is a warning blur which blurs out the screen before you can see it.

History

The invention of the concept of a public collaborative virtual machine that others could use through the internet is hard to pinpoint. While similar concepts have existed in the past, such as Twitch Plays Pokemon, the concept of users taking turns to collaborate with a virtual machine online can be traced back to April 2014 (the official release date of socket.computer).

CollabVM was specifically inspired by Twitch Plays Pokemon and the website Manymo, which allowed users to run an Android virtual machine in a web browser, but is no longer available.

CollabVM 0.01

July 11, 2014 - February 18, 2015 - spanning 6 months

CollabVM 0.01 (originally named "Browser Computer") started in July 2014, as a fun experiment. Instead of a virtual machine, it ran in an actual, physical machine running Windows 95, with a basic node.js script to simply connect to a VNC Server that was running with no password. This version did not have turns - if there were more than 2 users on the VM at once, they would have to use the chat to collaborate or try and fight for control. The page in question was also not hosted on Computernewb. The project was later reconfigured to connect to a remote QEMU session due to people constantly turning the machine off, closing the VNC Server, or destroying the machine. It was fairly unpopular, with only around 5-6 unique people controlling it every 2* weeks or so. The project was closed off in November 2014, but would later be reborn in February 2015.

CollabVM 1.0

February 18, 2015 - July 28, 2015 - spanning 5 months

CollabVM 1.0 (known as the Socket.IO Era to some) was the first popular iteration of CollabVM, and the second overall. Although initially unpopular, it exploded in popularity in April 2015 after being posted onto Reddit. It ran the socket.computer engine, but had a few modifications in place, the screen was scaled, the laptop image was removed, an administrator panel was modded into it, and two exploits (one being an exploit which allowed anyone to run arbitrary QMP commands) were found and then later fixed.

CollabVM 1.0 ran 9 different operating systems in its life span, which includes: Windows 95 OSR2, Windows 98, Windows 2000, Windows Vista Home Premium, Windows 7 Home Premium, Windows 7 Ultimate, Windows XP Professional SP2, and then Tiny7.

The site had a Xat chatroom (ID computernewb) embedded into the bottom, as well as an online counter which showed how many people were online. Later, this was added to the server itself. It was replaced with CollabVM 1.1 on July 28, 2015.

CollabVM 1.1

July 28, 2015 - March 24, 2016 - spanning 8 months

CollabVM 1.1 was the third iteration of CollabVM. This iteration was a very important milestone in CollabVM's history as it was when the C++ rewrite of collab-vm-server done by Cosmic Sans was officially out of beta and released onto the site.

CollabVM 1.1 brought the brand new engine that is still in use today, as well as removing all of the vulnerabilities of socket.computer, as well as making it much faster and without any fuzz. The Xat chat was initially removed from the page, but was later added back after high demand. This version also introduced some webapp features still found on the site like the NSFW warning and other things.

It has ran two operating systems in its time which includes Windows 7 Ultimate and Tiny7. Later, an update was released for it. Later on, it brought several new features to the table, including a new Bootstrap 3 theme, a brand new HTML5 chat (powered by CollabVM 1.1's chat feature), the Online Users list (also a new 1.1 feature), the virtual keyboard (using Guacamole's Keyboard), the FAQ, News, Rules, and other pages, as well as many other new features.

This was also the first version of collab-vm-server that Experimental VM ran. On December 29, 2015 a new server was purchased which ran QEMU far better than the old one. On October 18, 2016, the binaries for CollabVM 1.1 were released.

CollabVM 1.2

March 24, 2016 - February 17, 2020 - spanning 4 years

CollabVM 1.2 is the fourth iteration of CollabVM, and the longest lasting iteration of CollabVM. This iteration included several updates to the existing 1.1 core, and added some new features. These features included the Vote Reset, which allows users to reset the virtual machine even when an admin is not online (now users could simply vote reset instead of potentially waiting for hours for an admin), support for multiple virtual machines, a brand new homepage which showed the current running virtual machines along with screenshots of them running, an issue that let users impersonate others was fixed, and the turn counter now counted how long you had to wait.

Later, on June 15, 2016, another huge and highly anticipated feature was added to CollabVM 1.2; the Virus Farm, also known as the CollabVM Agent. The Agent allows users to upload any file to the machine its currently running on via VirtIO Serial, and more. The agent was designed to be very easy to enable and disable, so a CollabVM could easily be converted into a Virus Farm node, and vice versa. On October 18, 2016, another huge milestone for CollabVM was made - the server's source code as well as its binaries were publicly released, making the project fully open source.

On December 12, 2018, a Windows port of collab-vm-server 1.2.8 was made available by CHOCOLATEMAN and modeco80.

CollabVM 2.0

February 17, 2020 - June 2, 2020 - spanning 4 months

CollabVM 2.0 is the fifth iteration of CollabVM. This version was originally planned to be 1.3, although since it was renamed to 2.0 since it shares none of the old code from the original server. This iteration includes several updates including stability updates, more modern libraries, VNC and RDP support, full VNC and RDP audio support, accounts, native Windows support, and more.

It was dropped from being used on the official instance on June 2nd 2020 due to being extremely unstable, XSS, an overabundance of bugs, Ceiridge's crash exploit, and a million other exploits. The disappearance of the lead developer (Cosmic Sans) was a contributing factor to CollabVM 2.0's shut down.

CollabVM 1.2.10+

June 2, 2020 - February 7, 2023

CollabVM 2.0 was way too unstable to be used as a full time version, so we switched back to 1.2. Going back, we actually got more features in the "post 2.0" updates, such as JPEG support, bugfixes and stability.

In February 2021, the last official version of the CollabVM 1.2 server was released, 1.2.11. It uses Boost.Beast for WebSockets, similar to CollabVM 2.0, but it's infinitely more stable than CollabVM 2.0.

Features added in forks:

6969
Banning from the VM view
Forcefully temporarily or permanently muting a user
Moderator rank and perms
Build identification
Forcefully making votes lose
DarkOK
Forcefully renaming users
Forcefully ending/stealing turns
Forcefully making votes win
Chat MOTD
Copy user IP addresses
Rank colors in chat
QEMU Monitor from VM view
Easily login from VM view
yellows111
Kicking, and other such

All of the above were merged in to 1.2.10.

CollabVM 1.2.ts

February 7, 2023 - present day

As the original CollabVM 1.2.11 codebase began to show its age over time, with multiple bugs appearing that were unfeasable to fix, the decision was made to do a full protocol-compatible rewrite of the server in TypeScript, with the goal of being more maintainable than the C++ codebase

This iteration removed the admin panel (because it fucking sucked lol) and replaced it with a configuration file. While originally a barebones 1:1 implementation of the CollabVM 1.2.11 protocol, additional features have been added over time, such as:

  • Accounts and login
  • The binary protocol, replacing base64 guacamole screen rects with binary MsgPack rects.
  • Turn whitelisting with a separate password
  • GeoIP Flags next to usernames in the userlist

Several of the functions of the server such as Guacamole parsing, JPEG compression, and (soon) VNC have also been rewritten as a Rust native module to increase performance

CollabVM 3.0

Sometime before the heat death of the universe (probably)

CollabVM 3.0 is set to be the next and hopefully final iteration of the CollabVM server. It's gone through multiple rewrites, resets, dramas, and several long periods of inactivity, but in its current state it supports most features of the original server, with several bugs that need to be patched

Features of CollabVM 3.0 include:

  • An all-binary protocol that will completely replace the original
  • A REST API to replace the all-WebSocket protocol of CollabVM 1.2
  • h264 VM screen instead of JPEG
  • VM audio, compressed with Opus