With this topic, I'm not trying to start a flame war or endless discussion.
I'm just trying to find out what the Lazarus philosophy will be moving forward.
I've used and enjoyed Lazarus Pascal for several years now, and have developed several small applications for Windows, Linux and MacOS (Carbon). One thing I absolutely loved about Lazarus is that I code and design my application on one platform (write once) and simply move a project to another platform (compile anywhere) and hit compile to get the same application up and running just the way I designed it. Which matches the "identical products" in the Wiki statement "... you don't need to do any recoding to produce identical products for different platforms." (
source)
With the recent changes on the macOS platform (Cocoa), I've been trying to force myself to work with Cocoa as much as I can, trying to create a 64 bit Cocoa application and report bugs in case I run into them. Since Cocoa in in alpha stage, issues will still be found of course.
One thing, in my opinion, that appears to be problem is that the "compile anywhere" does work, but the UI design is definitely not consistent anymore accross platforms.
I used to be able to design in Carbon, and it would look exactly the same in Windows and Linux.
With Cocoa this is (in it's current stage) no longer the case.
Instead the design is trying to match what XCode would do (macOS) which means that the IDE must be compiled in Cocoa as well, otherwise the design will simply not match up with the end product. Positions of TButton, size of TPanels, etc. most of it simply does not match. Some of these issues can be addressed by anchoring, but after 3 months of toying with this I can hoenstly say that this simply doesn't work to resolve these issues.
So what is the Lazarus philosophy moving forward?
- Write once (code and UI) and Compile Anywhere (reproduce identical products for different platforms)?
Or
- Try to match whatever UI design guidelines are set per platform?
I'd prefer to be able to build an application on one platform, and recompile it, looking identical, on another platform.
Or maybe an option should be defined allowing both (probably more complicated): "LCL Style" vs "Native Style"?