
The social aspect in collaborative situations
We need to discuss something that you will not see discussed in any other book about software development--what happens when two users work together?
The first mass-produced computers were called PCs, personal computers. The wording kind of gives it away--they were personal devices. When this term was first used, it was meant to distinguish them from the big mainframes that could have dozens of users at the same time. However, each job on the big machines was running for one user only, so there was little a user would note about the other users, besides a drop in performance.
The PC was not so different. The user has the machine to themselves, but since all work done on the mainframe was also only visible to them, there was nothing new about this way of working.
Even the smartphone, a device most people consider to be a very private thing, is not different in this aspect. You don't share it, but you never did anyway, so there's nothing new here.
The first device to differ from this was the Microsoft Surface. The Surface was a big table with a vision-based interface; it could look at the surface of the table and see what happened there. It could recognize hands, fingers, coffee cups, and so on. You operated that device by touching it or placing objects on it:

Since it was basically a table, users could sit around it and work on it together. No longer was a computer a device used by one person; it could be used by four adults or six children at the same time.
This led to some interesting behavior. The way people interacted with the device and with each other became dependent on how well they knew the people around them. If the users were familiar with each other, they worked together on a job. If the users did not know each other, they all worked on their own little corner or side of the machine on their own part of the job. In the latter, there was little or even no collaboration. After a while, people got to know each other a bit more and they started working together.
Since this table had no way of knowing which user did what (we could trick it a bit by measuring the shadow of the finger and arms to guess which user the touch belonged to), all applications dropped the notion of a user altogether.
In HoloLens, we can see a similar sort of behavior. If there is only one device present or if your apps are not designed to be used collaboratively, we can apply the principles we all know--there is one user and they control the complete app.
Things get more interesting when we design our apps in such a way that we allow for multiple users to exist in the same augmented world. Now we have to take into account the way people behave when dealing with other people.
Surface computing gave us three models we can still apply to the HoloLens world:
- Flying solo: Each user has their own holograms, and they do not interact. Basically, this is the default way computer interfaces work.
- Captain co-pilot: One user is in charge; they control the holograms. The other users can see what happens but have little control over them. They can observe and occasionally take over but that's it. The co-pilot might be enabled to create objects of her own, but has no power over shared holograms.
- Multiple pilots: Each user has equal rights. Everything that is being done is visible to all users. There is one shared virtual world and all users see the action. They can all control their own objects and shared objects.
Which model you should choose depends not only on the sort of app you create, but also on the relationship you expect your users to have:

As you can see, the level of familiarity between the people you expect to work with your app matters when it comes to the way you let them interact. If you ignore this, people will feel uncomfortable.
Another aspect is the physical distance you expect between the users. The flying solo model requires a lot more space since two strangers do not enjoy being close to each other. With the multiple-pilot model, this is not an issue; friends usually do not mind being closer.