The basic idea is to separate an application's UI semantics from the toolkit that actually renders it. The same application can currently be presented using native Win32, Cocoa/AppKit, Qt6, GTK3, GTK4, Swing, or a web browser. The UI can run locally or be rendered remotely by a client, without the application itself being rewritten for that environment.
I've also been working on a declarative layout format and, lately, a visual designer.
It started as a rewrite of an architecture I worked on many years ago, mostly because I wanted to see how far the idea could be pushed with modern systems. It has turned into a considerably larger project than I expected.
Still private and very much under development, but I'm curious whether other people have run into the same problem: maintaining applications that need to survive changes in GUI toolkits, operating systems, deployment models, or client environments.