Igor Stasenko wrote:
[..snip..] A Group Is Its Own Worst Enemy
this statement alone defeats any possible solution for the problem, and any attempt to write a social software is doomed from the very start :)
Igor-
I understand where you are coming from, because the title is distressing to anyone interested in social collaboration. It certainly challenges. I felt the same way when I saw it the first time.
The person who wrote that essay, Clay Shirky, http://www.shirky.com/ also wrote the book "Here Comes Everybody: The Power of Organizing Without Organizations". http://www.herecomeseverybody.org/
If you read the Group essay, http://www.shirky.com/writings/group_enemy.html he talks about coming up with those principles from looking at the actual behavior of lots of social software systems and groups, and also building on a book by W.R. Bion called "Experiences in Groups". So it's not like he's making stuff up. He's saying what actually happens and then giving some ideas to make things better.
Even in the recent case of spam to the SqueakDev list, that's obviously not the biggest issue Squeak has wrestled with as a community over the past decade or so. He makes three points about group issues where things can go wrong: * Status/flirtatious related talk * The identification and vilification of external enemies. * Religious veneration of the topic/content discussed.
The first two have not been that big issues here in terms of limiting Squeak's and the community's potential, but certainly the third has been. Alan Kay himself has written about that -- people venerating the past work of him and others like Dan Ingalls, when he wants to move onto something better that Squeak, just using Squeak to build the next good thing.
And back when I tried to get people interested in having the Squeak license issues straightened out many years ago, I got lots of people saying it's not an issue. Well, it's been a much tougher job to fix many years later. But it's such a non-issue technically. The license issue is all about "run-time" group dynamics. It's all fine to say it doesn't matter technically, or the license was "good enough" and lets move on, "Alan Kay on the Squeak License" http://wiki.squeak.org/squeak/3363 but when, say, Squeakers aren't getting to present at free and open source software conferences, it's still a real problem. That's another example of a group being its own worst enemy, by not having a good enough constitution for how it operates, and maybe not even realizing that.
Something I wrote on that before: http://linux.slashdot.org/comments.pl?sid=202054&cid=16540850 "I think it is easy for any technologist to underestimate community issues and then to see a license as a program for individual behavior instead of a constitution for a community. The GPL works. It has problems, sure, but it works well enough as a constitution for cooperation. More variants of licenses mainly just make more problems IMHO."
That's not to argue Squeak should be under the GPL at its constitution. Squeak is moving to X/MIT and has a foundation with a different type of formality etc.; that's how the community that emerged overall wanted to be. This is just to say that whatever license software is under is in a sense a big part of the constitution of the community that works with it and changes it. For a long time, and maybe even now still in parts, Squeak had a license that was isolating for it from the community of free and open source communities.
So, I can both applaud and boo Alan Kay in the same email. :-)
Other examples of individual vs. group dynamics include seeing code as about mathematics (individual and unambiguous) instead of as about communication and documentation (group-oriented statements about intent subject to interpretation and revision). Or seeing OO programming as about objects (individuals) instead of as about sending messages (meaning emerging out of the group of objects communicating).
Clearly, Alan Kay has himself written on this last point and how "Object Oriented" is in a way a misnomer, because most of what goes on of interest is message passing among groups of objects. http://en.wikipedia.org/wiki/Message_passing which links to Alan Kay's post here of a decade ago, with him writing: http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.h... "Just a gentle reminder that I took some pains at the last OOPSLA to try to remind everyone that Smalltalk is not only NOT its syntax or the class library, it is not even about classes. I'm sorry that I long ago coined the term "objects" for this topic because it gets many people to focus on the lesser idea. The big idea is "messaging" -- that is what the kernal of Smalltalk/Squeak is all about (and it's something that was never quite completed in our Xerox PARC phase). ... If you focus on just messaging -- and realize that a good metasystem can late bind the various 2nd level architectures used in objects -- then much of the language-, UI-, and OS based discussions on this thread are really quite moot. This was why I complained at the last OOPSLA that -- whereas at PARC we changed Smalltalk constantly, treating it always as a work in progress -- when ST hit the larger world, it was pretty much taken as "something just to be learned", as though it were Pascal or Algol. Smalltalk-80 never really was mutated into the next better versions of OOP. Given the current low state of programming in general, I think this is a real mistake. ... I think I recall also pointing out that it is vitally important not just to have a complete metasystem, but to have fences that help guard the crossing of metaboundaries. ... I would suggest that more progress could be made if the smart and talented Squeak list would think more about what the next step in metaprogramming should be -- how can we get great power, parsimony, AND security of meaning?"
The whole email he wrote is worth reading again, obviously, though I would be curious ten years later on how Alan Kay feels now about the meta-level fences idea as a metaphor. For me, another idea which is related or perhaps analogous to emphasizing message passing versus objects (and is also somewhat related to some of the meta-level fences idea Alan Kay mentions there) is the reification of changes in a triple store of which an object memory is essentially a cache of the state of some part of the store at some point in time. I see this reification of a "change" that is referenceable and discussable as being crucial for flexible social software using a distributed database. Such a database in the way I see it could be thought of as like Bazaar, git, GNU arch, Mercurial, Darcs or one of the other distributed source code control systems; here is a list: http://en.wikipedia.org/wiki/List_of_revision_control_software#Distributed_m...
So, I'm interested to see thing like a "change" or a "transaction" as being eternal and discussable. The image that comes to mind is two programmers at one machine looking at a version of a method in Envy source control system to figure out why it was changed. But taking that further, for a social system, I'd suggest one should be able to reference each part of the history of the value of any attribute of an object of significant social interest, so you can then build tools to help groups manage their shared state (or some shared part of their collective Social Semantic Desktops). But the "virtual object" itself defined by changes can be seen as being mutable over time. Lisp and some more modern functional programming systems trying to move in a new direction often try to see an "object" as immutable and enforce that in static languages and runtimes (in part for machine cycle efficiency reasons but also for conceptual reasons), which is a related but in some ways inversely different perspective (more like a focus on objects than messages). Obviously, if you model a "change" as an essentially immutable "object", then the two paradigms can interrelate. There are probably a lot of ways to do this (and there is a big literature on distributed systems); I just have my own perspective and implementation ideas on this.
Anyway, enough on trying to draw parallels between human groups and groups of virtual Smalltalk objects sending messages which can create eternal transactions listing immutable changes added to massively-redundant distributed databases which define virtual Smalltalk objects. :-)
Shirky goes on to write: "So these are human patterns that have shown up on the Internet, not because of the software, but because it's being used by humans. Bion has identified this possibility of groups sandbagging their sophisticated goals with these basic urges. And what he finally came to, in analyzing this tension, is that group structure is necessary. Robert's Rules of Order are necessary. Constitutions are necessary. Norms, rituals, laws, the whole list of ways that we say, out of the universe of possible behaviors, we're going to draw a relatively small circle around the acceptable ones. He said the group structure is necessary to defend the group from itself. Group structure exists to keep a group on target, on track, on message, on charter, whatever. To keep a group focused on its own sophisticated goals and to keep a group from sliding into these basic patterns. Group structure defends the group from the action of its own members."
Oops, I guess that point on human groups and Robert's Rules of Order etc. might sound a lot like Alan Kay's suggestion above of fences to guard metaboundaries in future OO message-passing systems? :-)
A related idea: "Meshwork, Hierarchy, and Interfaces" by Manuel De Landa "To make things worse, the solution to this is not simply to begin adding meshwork components to the mix. Indeed, one must resist the temptation to make hierarchies into villains and meshworks into heroes, not only because, as I said, they are constantly turning into one another, but because in real life we find only mixtures and hybrids, and the properties of these cannot be established through theory alone but demand concrete experimentation. Certain standardizations, say, of electric outlet designs or of data-structures traveling through the Internet, may actually turn out to promote heterogenization at another level, in terms of the appliances that may be designed around the standard outlet, or of the services that a common data-structure may make possible. On the other hand, the mere presence of increased heterogeneity is no guarantee that a better state for society has been achieved. After all, the territory occupied by former Yugoslavia is more heterogeneous now than it was ten years ago, but the lack of uniformity at one level simply hides an increase of homogeneity at the level of the warring ethnic communities. But even if we managed to promote not only heterogeneity, but diversity articulated into a meshwork, that still would not be a perfect solution. After all, meshworks grow by drift and they may drift to places where we do not want to go. The goal-directedness of hierarchies is the kind of property that we may desire to keep at least for certain institutions. Hence, demonizing centralization and glorifying decentralization as the solution to all our problems would be wrong. An open and experimental attitude towards the question of different hybrids and mixtures is what the complexity of reality itself seems to call for. To paraphrase Deleuze and Guattari, never believe that a meshwork will suffice to save us."
So, there is perhaps a convergence or consilience of some ideas here from a few different levels and authors about a few different topics relating perhaps to some common design patterns? They would all relate to having a meshwork of communicating objects as well as sets of rules for parts of the network being hierarchically organized to varying appropriate degrees. They would include ideas about ways the system can transcend parts of its current configuration in an experimental way to new hybrids and mixtures. I personally have long like the Chaordic ideas which capture some of the flavor of this, and in a way it is a sort of design pattern. http://en.wikipedia.org/wiki/Chaordic But implicit in that is the sense in which "a group can be its own worst enemy", meaning that problems that arise out of internal functioning of a group can be worse than any external threat. A Smalltalk analogy might be when you change a Smalltalk image so that opening an error window unfortunately opens another error window, etc. locking up the system and which is often just as harmful to your user experience as if the computer memory got corrupt somehow by another external process writing over it. Which happens more often these days in developing in Smalltalk?
So anyway, I understand your reaction to title, but I still feel there is some substance there other than what you might expect. And while I just cited it as a general reference to writing social software, as I reflect on it, I can see that those very issues (especially veneration) have negatively effected Squeak's development in a sense to thwart the very goals Alan Kay and others had in releasing Squeak as a stepping stone to something better.
You can't write such software to respond a group needs, because such needs are hard to formulate, changing fast
Well, if the platform is dynamic, like Squeak, isn't the point of such a system (along with an ideal like Extreme Programming) to keep up with that?
and, as always, any innovations will take much oppression from most conservative members. In most cases, the only sensible solution , and most easy to follow - is to maintain the status-quo :)
Again, Shirky addresses a lot of that in his essay, like getting beyond "Religious Veneration" of the topic. So, in that sense, you definitely are agreeing with part of the essay. :-)
A large communities behavior can be compared with group of ants who dragging their catch to their hill - if you look at particular ant, you often can see that he tries to drag in opposite direction. But anyway, sooner or later a catch will always get into the nest despite individual attempts to drag in wrong direction. :)
On your ant analogy, I agree with you, and a general name for that sort of thing is Stigmergy: http://www.google.com/search?q=stigmergy
At Wikipedia: http://en.wikipedia.org/wiki/Stigmergy "Stigmergy is a mechanism of spontaneous, indirect coordination between agents or actions, where the trace left in the environment by an action stimulates the performance of a subsequent action, by the same or a different agent. Stigmergy is a form of self-organization. It produces complex, apparently intelligent structures, without need for any planning, control, or even communication between the agents. As such it supports efficient collaboration between extremely simple agents, who lack any memory, intelligence or even awareness of each other."
I see the Social Semantic Desktop idea as a way to make it even easier for people to participate in stigmergic processes for creating digital artifacts (and someday with 3D printers, physical artifacts). A key idea for me is a system where standard free and open source licensing is a default option for all contributions, to avoid the sort of licensing and relicensing issues that have plaqued some projects (including Squeak, but also many, many others, usually the ones you don't hear of because they went wrong as collaborations so early).
--Paul Fernhout