  Computing systems are omnipresent; their sustainability has become crucial
for our society. A key aspect of this sustainability is the ability of
computing systems to cope with the continuous change they face, ranging from
dynamic operating conditions, to changing goals, and technological progress.
While we are able to engineer smart computing systems that autonomously deal
with various types of changes, handling unanticipated changes requires system
evolution, which remains in essence a human-centered process. This will
eventually become unmanageable. To break through the status quo, we put forward
an arguable opinion for the vision of self-evolving computing systems that are
equipped with an evolutionary engine enabling them to evolve autonomously.
Specifically, when a self-evolving computing system detects conditions outside
its operational domain, such as an anomaly or a new goal, it activates an
evolutionary engine that runs online experiments to determine how the system
needs to evolve to deal with the changes, thereby evolving its architecture.
During this process the engine can integrate new computing elements that are
provided by computing warehouses. These computing elements provide
specifications and procedures enabling their automatic integration. We motivate
the need for self-evolving computing systems in light of the state of the art,
outline a conceptual architecture of self-evolving computing systems, and
illustrate the architecture for a future smart city mobility system that needs
to evolve continuously with changing conditions. To conclude, we highlight key
research challenges to realize the vision of self-evolving computing systems.
