Modern distributed systems are exposed to constant changes in their operating environment, leading to high uncertainty. Self-adaptive and self-organising approaches have become a popular solution for runtime reactivity to this uncertainty. However, these approaches use predefined, expertly-crafted policies or models, constructed at design-time, to guide system (re)configuration. They are human-centric, making modelling or policy-writing difficult to scale to increasingly complex systems; and are inflexible in their ability to deal with the unexpected at runtime (e.g. conditions not captured in a policy). We argue for a machine-centric approach to this problem, in which the desired behaviour is autonomously learned and emerges at runtime from a large pool of small alternative components, as a continuous reaction to the observed behaviour of the software and the characteristics of its operating environment. We demonstrate our principles in the context of data-centre software, showing that our approach is able to autonomously coordinate a distributed infrastructure composed of emergent web servers and a load balancer. Our initial results validate our approach, showing autonomous convergence on an optimal configuration, and also highlight the open challenges in providing fully machineled distributed emergent software systems. CCS Concepts •Software and its engineering → Distributed systems organizing principles; Software design engineering;