Speaker: Mira Mezini
Location: Soda 380
Date: December 6, 2023
Time: 11AM – 12PM PST
Title: “Programming Abstractions for Safe and Secure Local-First Software”
Abstract: Today’s computing infrastructure is massively distributed across back-end geo-replicated clouds and millions of increasingly powerful front-end devices. Contrary to this massive distribution of computing resources, today’s dominating software architecture is a centralized one with data and
computations mostly hosted in back-end clouds and front-end devices merely interfacing to the world. While this architecture has well-known advantages, there is a call for more evenly distributing computations across back-end clouds and front-end devices, also known under the term
local-first computing/software. Local-first is motivated by requirements for privacy, latency, availability (even for deployments with intermittent connectivity in the front-end), and made possible by increased resources in the front-end.
But going local-first not only brings back long-standing challenges of distributed software on the table of application developers – it amplifies
them. The traditional distributed computing is basically the back-end of today’s distributed computing infrastructure; adding the front-end into the
picture complicates the matters. The latter is woven into the physical and social worlds. The back-end has stable connections. Connections in the
front-end are often unreliable with frequent partitions. In the back-end the distribution and concurrency patterns are controlled by cloud engineers
for scalability and availability. In the front-end, distribution and concurrency are much less controlled – people and devices are inherently
distributed and act autonomously in time and space. The execution flow of applications is often driven by unpredictable interactions with the outside
world. The fact that applications increasingly learn their behavior from data and observations further adds to the complexity. And, there is no equivalent to the cloud engineering teams for local-first computing.
I argue that we need to advance programming models and frameworks vis-a-vis these challenges to reduce the amount of complexity left to be managed by application developers. This is the goal of the PROFONDO project that I will present in my talk. PROFONDO aims to make decentralization,
interactivity, and learnability first-class programming principles. Computations running on individual nodes of the computing infrastructure
have their local view on data, execution, and behavior, but these views are composable by-design with guaranteed safety and security properties.
Moreover, the views have native time-changing capabilities, which enables them to jointly evolve in time and space. Towards this vision, we combine,
repurpose, and further develop techniques from different areas, including replicated data types, functional reactive programming, compilers and type
systems for differentiable programming. The talk will present a mix of achieved milestones, ongoing research, and future work.