Well, not exactly. Separating non-UI from UI code means that the non-UI units, in general, do not have any dependencies on any Lazarus units. They only depend on FPC RTL and package units and similar units that also depend only on that, for example Web Service Toolkit (http://wiki.freepascal.org/Web_Service_Toolkit). The UI units are lean and do not contain any "business code" or code that you want to use cross-platform.
I do understand what you mean.
And I have been using that approach before, in C++, where the UI code was completely separate from the base.
That was advantageous, because it allowed us to easily port from MFC to wxWidgets to Qt.
While at the same time maintaining the ability for the application to run on Linux/Windows/Mac.
There are complexities and problems with that approach, however.
Especially if you are not going to use anything other than Qt.
In which case it would make much more sense to not have to go through the base layer and our custom property macros, when Qt has all of that already (and much more elegant).
However, I usually separate UI and logic, and take care to not pollute my units with too many dependencies.
When the time comes, I am sure that it will be possible to factor out common code, and factor out UI-less common code as well.
For now, though, it is too early to be doing any of that.
Except the clean code bit.
I am hoping to combine web and desktop into one application.
Hmm, that statement does not make any sense to me. Maybe you could describe in a couple of sentences how you understand "cloud aware". I don't think we're talking about the same thing at all.
It sounded much better yesterday, when I wrote it, just before getting to bed.
Now, I am sure what it means either.
I guess I meant that I want the application to be self-sufficient.