Orthogonal persistence was a big research area at my university when I was studying CS. The pitch was that it would be like garbage collection for your persistent data: just like GC means you never have to worry about manually deallocating stuff, orthogonal persistence would mean you never have to worry about manually serialising stuff.
I was skeptical because I could never figure out how they proposed to manage code update -- if your data is always live, how do you safely modify the code?
And I still haven't seen a good answer to that! Although I haven't studied this area in a long time, so maybe it has been solved? I'd be interested to read any links people have about this.
I think of those environments like Squeak as a kind of "object soup", where everything is in one place, rather than rigidly separated into source code, compiled binary, data schema, serialised data, live server, etc. I thought back when I first heard of orthogonal persistence, and still think now, that that rigid separation of concerns is essential for maintainability. It's good to have carefully managed source control, and it's good to have a carefully managed data schema.
Have any Squeak-like environments been really successfully in large-scale systems or user-facing apps?
I'd say infrastructure as code has been a much more important innovation than orthogonal persistence; and it takes exactly the opposite approach, of explicitly serialising live stuff (your active deployment) into flat files.
Edit to add: maybe another way to put it is, the promise of orthogonal persistence is that you never need to reboot your computer. But that's a bad idea, because as we know, sometimes rebooting is (sadly) the only way to fix a problem.