Multi User Computer

I’ve been looking for some years but I haven’t found any actual examples; perhaps you know of them.

Is there any software out there that runs on a mini computer or larger, which allows multiple users to manipulate the same data in RAM at the same time? Imagine a CAD model where someone is working on one part and another is working on the same part but another place. All actions are visible to all users.

I would think that such a thing is possible since we have the technology to play MMORPS from anywhere on the planet, and multi-player gaming is a normal thing. If so then where is the multi-user working?

I think that every individual application must support such a thing by itself.
I can’t think of an external sync mechanism to handle that. It would know which parts of the shred RAM are to be handled in an atomic manner.
You have such problems already in a smaller scope. Just think about thread safety and thread synchronization within a single process.

Operating systems (even multi-user ones) are specifically designed to PREVENT that sort of thing from happening (accessing RAM from other user contexts), because it’s a giant security hole.

As @ Reinhard observes, it’s up to applications to support this on their own. It’s an extremely complex sort of problem, and simple shared memory doesn’t solve it.

1 Like

@ godefroi - No, I mean a program that allows multiple users to use it from different terminals at the same time, and work on a single state machine in memory.

Well, the first one I can think of is GHI’s webserver, where you and I are working on the same forum state machine, in the webserver’s memory :slight_smile:

@ Mr. John Smith - Check this out. It is a multi-user system.

https://www.ghielectronics.com/community/codeshare/entry/715

@ Mr. John Smith - That would be more like a website with a browser program if anything

I can see the comment on the web server as being close. However I mentioned Mini Computer. It is my expectation that the system would have multiple graphics cards, and HID devices attached, allowing each user their individual (not screen sharing) version of the workspace.

Ah, my and my pipe dreams. It would be nice if multiple people could collaboratively working on a CAD assembly viewing the changes in real time.

@ Mr. John Smith - I can just imagine it, multiplayer AutoCAD. Now using xbox system link!

Well, if you mean “minicomputer”, as in, the thing that existed between the 60s and 80s, as opposed to “microcomputer” or “mainframe”, then it wouldn’t have a graphics card or HID device. It would have a bunch of serial ports which would connect the terminals.

It would also probably be built from discrete 7400-series logic :slight_smile:

This is a HUGE software challenge, it’s not a hardware challenge. Look at upverter, they have the capability for electronics design to do this, but it’s a complex task to overcome as the complexity goes up (like in navigating a 3d model, are you clicking an object to move it or to move your perspective of it)

1 Like

Then I would say you are looking fore something like TeamViewer, but all users still have to share one mouse cursor.
But multiple mouse cursors and independent keyboards would still be needed to be handled by the application.

There is a general approach called Differential Sync that enables this sort of thing. (See: Neil Fraser: Writing: Differential Synchronization, which is kind of the original seminal paper on this topic). Differential Sync and variations on it allow multiple users to simultaneously edit a single complex document.

They don’t even have to have a live or continuous network connection. The document exists as a long change-list and the current state of the document is the sum of all the previous changes. Early changes can be collapsed into a base state once they are old enough.

The edits that each user makes are merged with other outstanding edits in a way that has to be aware of the document structure (that is, if you change something that is completely disjoint from my change, then we’re good, but if you change something and I change the same thing or a dependent thing, then there has to be a merge strategy that is application-dependent). It kind of works like a distributed source-code management system.

Anyway, I know of no EDA/CAD/CAM systems that fully or properly employs this approach, but I have long thought that it would be a boon to create one. A key benefit is that co-editing is not dependent on a live connection. With a live connection, you can see live changes, but you can also go offline or batch your changes and commit a group of them as an atomic change list. That’s important because low-level interleaving of operations can be distracting and can obscure groups of changes that are meant to go together.

So much code to write, so little time…

@ mcalsyn - Yes, differential sync would be like version control. I never liked having to have merge strategies which are application and in some cases, situation specific.

Ah; I just realized that the closest thing would be Google Spreadsheet. You can edit cells on a spreadsheet without causing contention between users. Conflict resolution is just last edit wins. If CAD software treated their models like Google Spreadsheet, then you could have multi user SolidWorks, Inventor, Sketchup, DesignSpark etc.

So in this regard Differential Sync solves the problem by simply keeping the edits as atomic as possible.

@ mcalsyn - Humm… so here is the value add. Having to recalculate all those dependencies between cells would be a very compute intensive task. A task done by specilized hardware (e.g. Intel Phi) or custom ASICs.

If AutoDesk did this, then they could either A) charge a subscription to lock in customers B) Sell the custom hardware as their IP (and charge 10Ks). They would profit not by selling software for a Single person to use a computer but by allowing multiple persons to work together. CAD as a service.

If you are looking specifically for CAD systems, I think I saw articles about some systems that support this. But I can’t remember where and when, but I’m quite sure it exists.

1 Like

@ Reinhard Ostermeier - Oh thank goodness

https://www.youtube.com/watch?v=rOrz94Y5XYU

EDIT: https://v-cax.byu.edu/node

These guys literally answered my question. Even referencing the internet gaming idea

2 Likes

But can you implement this on a cerb40?