  Computing systems form the backbone of many aspects of our life, hence they
are becoming as vital as water, electricity, and road infrastructures for our
society. Yet, engineering long running computing systems that achieve their
goals in ever-changing environments pose significant challenges. Currently, we
can build computing systems that adjust or learn over time to match changes
that were anticipated. However, dealing with unanticipated changes, such as
anomalies, novelties, new goals or constraints, requires system evolution,
which remains in essence a human-driven activity. Given the growing complexity
of computing systems and the vast amount of highly complex data to process,
this approach will eventually become unmanageable. To break through the status
quo, we put forward a new paradigm for the design and operation of computing
systems that we coin "lifelong computing." The paradigm starts from
computing-learning systems that integrate computing/service modules and
learning modules. Computing warehouses offer such computing elements together
with data sheets and usage guides. When detecting anomalies, novelties, new
goals or constraints, a lifelong computing system activates an evolutionary
self-learning engine that runs online experiments to determine how the
computing-learning system needs to evolve to deal with the changes, thereby
changing its architecture and integrating new computing elements from computing
warehouses as needed. Depending on the domain at hand, some activities of
lifelong computing systems can be supported by humans. We motivate the need for
lifelong computing with a future fish farming scenario, outline a blueprint
architecture for lifelong computing systems, and highlight key research
challenges to realise the vision of lifelong computing.
