
After a week of using the new social network from Google, I felt the beauty of the idea of separating the circles of communication. Indeed, it is quite convenient to share news and thoughts only with those people to whom they will be interested. However, in its current implementation, circles, as a tool for access control, are not ideal. As an example, I will cite a situation that, I am sure, has arisen on Google+ users many hundreds of times.
Imagine that you have the “Programmers” circle and the “Russian-speaking” circle. It is quite logical - if you want to share a link to a technical article, it will not be interesting to anyone except programmers. No less, this also applies to references to Russian-language pictures and resources, as well as your thoughts that you express in Russian - not Russian-speaking people not only do not understand, but if you continue to litter their tape with notes in an incomprehensible language, in the end, they just remove you from their circles.
Now imagine that you want to share a link to a technical article with Habrahabr. Who should you share it with? With the terms "programmers"? It is probably worth it, but, on the other hand, you can have English-speaking programmers and colleagues in this circle who will not understand the article. So, you need to share the circle of "Russian-speaking" ... but there are full of people who are far from programming. It turns out that you need to create a separate circle: "Russian-speaking programmers."
')
Disadvantages of the current implementation of the circles
The main circles, operating with general concepts like “Kievans” and “Friends”, will not be a problem to create and maintain: they are unlikely to be more than 10 pieces. But if you start creating circles with narrower criteria, like “Russian-speaking programmers” or “Friends from Kiev” (let's call them derivative circles), then the number of such circles can quickly grow - in theory, to 2
n , where n is the number of core laps. The amount of manual work in this case greatly increases, because each new person needs to be brought in all suitable circles (both basic and derivative); and when you add a new derived circle, you also need to add all the right people. If you remove a person from the main circle, you will also need to remove him from all derived circles.
Thus, manual micro-access control is too time-consuming.
What could be a beautiful solution
Circles, in fact, are already
sets of people. Consider how adding two simplest
set theory operations could solve the problem described above by adding some bonuses.
Union
This operation is already present in Google +. It is enough to add a few circles when sharing - and the post will be visible to all people who are at least in one of the circles.

Intersection
By applying the intersection operation on several circles, we get people who simultaneously consist in all of them. Adding this operation would solve the problem described in the introduction. Now it would be enough to have and maintain only the main circles, and get the derived circles dynamically, as the intersections of the main circles. That is, to share a technical article from Habr, one would have to choose the intersection of the “Programmers” and “Russian-speaking” circles.
Difference
With this operation, you can express one circle through the other. For example, if you have a separate “Women” circle, in order to get a subset containing only men from any set, it’s enough to subtract the “Women” circle from this set.

Conveniently, for example, if you want to invite friends to a bachelor party :) Also this operation could be used to show the post in general to everyone except for a certain circle - for example,
share the link to tsya.ru on Public, minus the “Grame Nazi” circle :)
Implementation
Google could implement such operations in different ways. For example, when creating a circle, propose to create it as a dynamic result of operations on other circles. Another approach is to choose something like operators when choosing a post visibility area, in the likeness of Google search operators:
+ “Friends” - “Women” .
And, of course, this feature should either be turned off by default, or not be allocated in the interface in order not to overload it.
At last
Despite the fact that the first thing I thought about when I saw Google + circles was the idea of operations from set theory, I can’t claim that the idea was authored. Even in my tape on Google + I have already seen something similar. Surely, even in Google this idea has already been thoughtfully considered, and either they decided to implement it later, or they decided that it was possible to use circles without this feature. Personally, I hope that in some form at least the intersection operation will be added in the end.