  Community detection in networks is one of the most popular topics of modern
network science. Communities, or clusters, are usually groups of vertices
having higher probability of being connected to each other than to members of
other groups, though other patterns are possible. Identifying communities is an
ill-defined problem. There are no universal protocols on the fundamental
ingredients, like the definition of community itself, nor on other crucial
issues, like the validation of algorithms and the comparison of their
performances. This has generated a number of confusions and misconceptions,
which undermine the progress in the field. We offer a guided tour through the
main aspects of the problem. We also point out strengths and weaknesses of
popular methods, and give directions to their use.
