Xojo Is Not Truly Cross-Platform

I hate to post something negative about Xojo and this is not intended to start a flame war but I came across a (private) post which led to me discovering a public feedback issue that somehow had completely flown under my radar.

How many people here who primarily develop with Xojo on macOS realise that it is impossible to build 64-bit macOS apps using either the Windows or the Linux IDE? I didn’t as I only develop on a Mac, which can obviously build for macOS but can also build 64-bit Windows and Linux apps. How can Xojo justify their claim that it is a cross-platform compiler when it isn’t? If you are a Windows user and you want to write apps that will run on macOS Catalina (currently estimated to be 49% of the Mac market) then, quite simply, you can’t do this with Xojo without a separate Mac to compile from. You can’t even debug from the Windows IDE a macOS app.

People who know me, know I’m a Xojo fan. I literally just spent $600 today renewing my Xojo Pro license (before I discovered this) but I cannot believe the current compiler limitation. It’s a joke.

This is in the documentation:

[quote]Other 64-bit Information
For some projects, 64-bit builds can take longer to finish. Be sure to let Xojo finish building. For best speed set Optimization Level to “Default” in the Shared Build Settings.
To reduce build times, ensure you do not have really long methods that can be refactored and simplified. Project items (classes, Windows, etc.) with large amounts of code can also increase build times. Break them into separate classes to reduce build times.
You cannot build 64-bit Mac apps from Windows or Linux IDEs.
Arrays can have a maximum index value of 2,147,483,646.[/quote]


I understand where you’re coming from and agree that it adds a significant extra step to creating an app on a different platform than your primary development machine… BUT, as far as I’m concerned, if you don’t have to re-write any of your code, it’s a cross-platform solution.

If you want to get into specific semantic debates about “cross-platform solution” vs “ cross-platform compiler” vs “cross-platform development tool” or something like that, then I’ll agree that certain specific terms like “FULL cross-platform compiler” shouldn’t be used in marketing/specifications/descriptions given the scenario you’ve described, but even “cross-platform compiler” is reasonable to me since it does work in many different combinations—just not EVERY combination: in particular, the need for a Mac to build a 64-bit Mac app OR an iOS app.

As long as the particular exclusions are made abundantly clear and the overall number of cross-build combinations are significant (even though not the ones I would use the most), I don’t think this is a war worth fighting. I’d be happy with a little grid on the web site (maybe it’s already there) showing which platforms can compile for which platforms, even if it said in big print “All platforms can write and edit code for all platforms, but application builds can currently only be compiled in these combinations.”

Technicality, but cross-platform is different from cross-compiling. I really think this limitation should be stated more clearly on the website and that it wouldn’t exist at all. But how much more sales would it generate ?
It is a pain, but personally I would rather have a god web 2 framework, better parallel processing options, a better debugger (watchpoints, etc.), some enhancements in the language and an open and more complete “standard” library managed independently from the IDE

If it is a technical challenge cross-compile from windows for the Mac, Xojo could may be check alternate ways to do. Even Microsoft does uses the cloud to generate PDF with links for ex.

This is disingenuous. Literally on the splash page for the desktop project:

I too am a macOS user, and didn’t realize until yesterday that you could not remote debug from Windows to 64-bit macOS. But I would not call the limitation “a joke”. To me, cross-platform is more about preserving the source code compatibility (to the extent possible) so time invested in program logic can be maintained across more than one platform.

If you have a macOS machine (or VM) you could use for remote debug target, then it should also be possible to:

  • Have your projects in a source control system like Git or SVN
  • For debug purposes, install the Xojo IDE even without a license in the “remote” macOS or VM(s)
  • To test/debug on the “remote”, pull the repository so the source code is current
  • Launch in IDE and do your tests
  • Tweak code as needed and commit back to repository

I could be wrong, but I think the Windows version can still create 32-bit macOS apps. So it seems to me you could in theory still do some initial “remote debug” to a pre-Catalina macOS VM if you don’t depend on 64-bit features. But obviously once beyond the initial testing you’d want to also try under Catalina.

Creating the app for distribution once debugged does currently mean it would have to be compiled under macOS. And that means having a Pro license to so more than one install can be concurrently active is more convenient. Otherwise you’d have to switch the license to the macOS install to create the executable, then switch it back to your Windows install.

But either way, I think you’d have to code sign and notarize from macOS before you can reasonably distribute. And that is more of an Apple limitation than Xojo.

To me this is not unlike a “cross platform” mobile environment that can’t create an iOS executable without macOS. It seems more about preserving source code compatibility (with #IF style target directives where needed) than a write once, run anywhere paradigm.

To be fair though, I am biased being primarily a macOS user after switching from Windows nearly a decade ago. It is much easier to run macOS as the primary OS and host multiple other VMs including Windows, than to run Windows as the primary OS and host multiple other VMs including macOS. Not to mention the OS licensing ramifications. I remember at the time being surprised that my VM for Windows under macOS ran Windows better than any Windows machine I had owned to that point. Reminded me of the OS/2 mantra for “a better Windows than Windows”. However, it was also my first SSD based machine which helped make the comparison less fair. Modern hardware running Windows is, I assume, much better today than it was a decade ago.

That requires the Xojo user to (a) have a powerful enough computer to host a VM. (b) Have access to the Mojave installer image (Apple make these hard to find) and © require the Xojo user to use a virtualising application (such as Parallels or VMWare) to use the project.

And hosting a macOS VM on a non-Mac requires you to break Apples EULA as well

I’d like to think folks are basically abiding by those

In my case, I have an application that uses multiple windows across multiple monitors (think PowerPoint in a slide show using the Presenter view for an example). Window activation/deactivation events and screen reconfigurations are just two of the things I’ve had to deal with debugging this application over the years. That is only realistic to do with a remote debugger or a boatload of System.DebugLog statements. A VM is not practical. With a single Mac and a single Windows system, as I have, I can only realistically debug Windows->Mac, not the other way around. Unfortunately, not all bugs are cross-platform.

i used Virtualbox

Oh yeah, that too. I even mentioned that in my prior post. I never used VMs until I was running macOS.

Then replace “remote debug to a pre-Catalina macOS VM” with “remote debug to a pre-Catalina macOS machine”. But the fact remains that if all you have are installs of a single OS (whether macOS or Windows), you should not just expect to test on a single platform and compile/distribute to other platforms without testing on those platforms. Preferably with multiple versions of each OS, at least if you are aiming for wide distribution and compatibility.

I really hope that removing the text from the website isn’t the ‘solution’ for Xojo. :frowning:

This is a limitation of LLVM’s mach-O linker upon which we depend. It does not currently support linking 64-bit macOS applications from Windows or Linux. That said, it is open source and we are working on modifying it to resolve this issue. In the mean time, you can build for macOS from a Mac. Given that Apple does not allow you to run macOS from a VM, if you’re going to develop applications for macOS, you should have a Mac for testing anyway. Releasing an application on a platform upon which you have never tested is not wise to say the least. Any type of license for Xojo you have that allows you to compile for more than one platform also allows you to install your license on more than one computer which means you don’t have to buy another license from us in order to be able to build Mac apps when your primary development platform is Windows or Linux.

This is certainly an inconvenience for some and for that we are sorry. I can only say that we ARE working to resolve the issue ourselves rather than wait for the LLVM project to resolve it.

Geoff… that is a rationalization… an excuse…
Don’t offer something that you cannot/do not or will not support… it just pisses off your users

It would have been one thing if you had clearly stated that such a limitation existing in your advertising materials, but you didn’t…
“build from any platform to any platform”
is not the same as
“built from any platform to any platform except for those combinations where you can’t”

This attiude is one of the reasons I have suspended by Xojo subscriptions

For over 2 decades we have compiled from any platform to any platform (with the exception of iOS which is an Apple limitation not a Xojo one). We see the issue with compiling 64 bit apps for macOS from Windows or Linux as a temporary situation. FWIW, we get few if any complaints about this in customer service so while this is a problem we are working to solve, it’s not one that appears to be negatively impacting many users. It’s ranking for example in Feedback is “None”.

once again… an arrogant rationalization

[quote=486825:@Dave S]“build from any platform to any platform”
is not the same as
“built from any platform to any platform except for those combinations where you can’t”[/quote]

@Geoff Perlman , Garry and Dave’s point is that the advertising doesn’t match reality. The advertising is misleading.

Also, old framework code, new framework code, and API 2.0 code are not cross platform. That’s misleading too. It might be true when API 2.0 is ready for all platforms.

To be fair to Garry and Geoff’s points: It was amazing and great that Xojo built “from any platform for any platform” for 20 years–and that’s a huge part of what got me into it in the first place almost that long ago–but it’s also reasonable that growth in the number of platforms (iOS, 64-bit variations, etc.) makes it impractical to maintain that level of cross-functionality.

Another example that I don’t think anyone is actively complaining about is that the iOS platform is unable to run the IDE to build for ANY platform at all. Is anyone upset about that (as cool as it might be)? With Apple rumored to be releasing an iOS-compatible IDE it might become more relevant in the future, but not for now (at least, not to me–YMMV).

I don’t think it’s reasonable to expect Xojo (or ANY multi-plaform solution supporting more than a few platforms) to support every possible combination. Some Xojo platforms are build-targets only, some can build for a number of other platforms, and if I’m not mistaken, one platform can build for any of the targets.

I’d rather have Xojo support more platforms in various combinations than fewer platforms with the ability to “build for any from any.”

All that said, the marketing/specs/docs should reflect the reality and prominently, easily show the combinations in a simple grid of all platforms and which can be used to build for which.

Dave, I’m happy to have a calm, rational conversation with you but it can’t include Ad Hominem attacks.

We probably could have avoided this public angst if you had replied “we’re working on this” to my original post on the other channel

Thats literally ALL I asked about - is this being worked on