In that time, we haven't seen a significant increase in offline capable applications. I'm going to talk a bit about why that is. [Thread]
The assumptions we carry around from this programming model are deep. The way we think about storage, data, how we mutate data-structures, all of it has to change to tackle these problems.
CDNs are basically distributed content addressable file stores. They've been dealing with these issue behind the scenes forever.
But... it's a big leap from static files to application data. How do you mutate decentralized data? How do you store/sync just the portion of the data a user needs?
Put simply, it's a container for any data that exposes links to other data.
This means that you end up with a graph which could be very large. But no matter how large the graph, the root, and every branch, are available via universal content address (CID).
Multi-user applications store too much data to keep a full, working copy of the data around for every user.
The problem is that, depending on what a user does on a given device, I need different slices of the data.
These are immutable data-structures. Once you change them you get a new hash, and you have to figure out the semantics for sharing that hash around.
Teaching developers to work with decentralized data-structures is harder than teaching them a new programming language.