  Community detection, the decomposition of a graph into essential building
blocks, has been a core research topic in network science over the past years.
Since a precise notion of what constitutes a community has remained evasive,
community detection algorithms have often been compared on benchmark graphs
with a particular form of assortative community structure and classified based
on the mathematical techniques they employ. However, this comparison can be
misleading because apparent similarities in their mathematical machinery can
disguise different goals and reasons for why we want to employ community
detection in the first place. Here we provide a focused review of these
different motivations that underpin community detection. This problem-driven
classification is useful in applied network science, where it is important to
select an appropriate algorithm for the given purpose. Moreover, highlighting
the different facets of community detection also delineates the many lines of
research and points out open directions and avenues for future research.
