State of the art algorithms for community detection in graphs
There's a recent paper [1] on dense subgraph (i.e. community) detection in the context of distributed computing. 
In [1], each node of the graph represents an operating entity (i.e. runs an instance of a distributed algorithm) and each node can communicate with its neighboring nodes by sending messages. The graph itself can change (slowly) over time. Note that the connections in social networks evolve over time, so considering a dynamic graph seems like the right model.
By running a distributed algorithm, each node can locally determine whether it's part of a dense subgraph. You might want to consult the related work section of [1] to get pointers to other references.

[1] Atish Das Sarma, Ashwin Lall, Danupon Nanongkai, Amitabh Trehan: Dense Subgraphs on Dynamic Networks. DISC 2012: 151-165. Full paper available at http://arxiv.org/abs/1208.1454