1 ring to rule them all, or 1 ring to rule each platform?

So the question that we as developers asks ourselves, do we use a single language/toolkit that covers every platform or the best language/toolkit per platform? Xojo would be an example of the former.

or do you look for the best single ring (language/toolkit) per grouping? like desktop vs web vs mobile?

and this is not for bashing languages (or toolkits/IDEs/etc). this is an open discussion of what your preferred route is.

I know that the ā€œrightā€ answer should be to use the right tool for the right job but I find myself frequently using Xojo even if I know Iā€™m having to make compromises. Iā€™ve experimented with lots of languages and other IDEs over the last couple of years and I always find myself gravitating back to Xojo. I think largely because (in my humble opinion) the IDE is really pretty good.

Currently there are two areas that I donā€™t bother using Xojo for:

  1. iOS
  2. Web development

iOS

I donā€™t do a lot of of iOS development because I mostly work on macOS desktop and console utilities but on the odd occasion when Iā€™ve wanted to experiment with iOS Iā€™ve ended up firing up Xcode and writing in Swift. I like the Swift language but I loathe Xcode. I find the learning curve so steep compared to Xojo.

Web Development

If I need to build a simple website (e.g: a blog with a few pages) I either use WordPress, Ghost or even my own static site generator (written in Xojo) - Strike3. A lot can be achieved by simply creating a custom theme.

If I need to create an actual web app then I almost alway use the excellent PHP framework Laravel. I write the code in Sublime Text on my Mac and I test it with MAMP on a local dev domain.

Iā€™m quite hopeful that Web 2.0 will be a significant improvement and I spent a lot of time at last yearā€™s XDC talking with Greg Oā€™Lone about it and he seems to have really thought the framework through.

1 Like

If youre doing a cross platform app as a small team or single developer being able to leverage your work on one platform to others is immensely valuable.
Thats harder to do if you have to use different tools per platform (or worse different language on each)
This is where Xojo works well - you can have much the same logic for each even if you have to craft different UIā€™s for each

To me thats their strength but they havent played to it very well with the additional targets they have

1 Like

Couldnā€™t have said it better.

I think most reasonable people will accept that if you use a cross platform tool the you accept some homogenisation, i.e: you are accepting the "lowest common denominatorā€™. The issue Iā€™ve had with Xojo is that the ā€œlowest common denominatorā€ is too low. A good example of this is the lack of support of basic common framework functions and types on all platforms. Take the lack of regular expressions on iOS. I mean I can accept that I have to use declares or a plugin to access the camera on iOS (lowest common denominator - desktops donā€™t guarantee a camera) but regular expressions? Thatā€™s a fundamental language feature!

1 Like

I think for me is, not so much one programming language for all but rather which programming syntax I feel comfortable using and how much time it would take to develop an app to perform a task I am looking for it to do.

Over the years, I have become very accustom to using Xojo for everything (mainly because its where my comfort has been), but I realize I need to challenge myself and spend more time in other languages that would allow me more options for development needs.

What always surprises me with other languages is how clunky many of their IDEs are. Ever tried to write Java in Eclipse? Yeah sure Eclipse is free and feature-rich but itā€™s just terrible to setup for a newcomer!

1 Like

Like many Xojo users Iā€™m not a professional programmer, and I have little formal training in programming except the odd programming course at University (ages ago).

But I need custom software to help with my work, and the language has to be easy, powerful enough, compile stand alone apps, and cross-platform (as others might use it as well).

People like me simply donā€™t have time to learn another language (especially as for work I need to know R and a bit of Python too) while they are working a full time job (in my case 80 h plus each week), especially if they also have family.

Iā€™m currently unemployed and have the time to get into Swift (which I like - it is elegant and immensely powerful), but if I were still working that would not be possible.

So my take on this is that the choice of programming language is usually dictated by circumstances that make that particular language the best fit, and that is not necessarily the best tool for the job. But as long as it does the job? After all, thatā€™s how Microsoft got to beat the competition, and if it works for them ā€¦ :wink:

Do you know if there been any movement in using Swift with a UI framework on Windows recently? It seems to have taken off on Linux as itā€™s now open source but last time I tinkered with it (I also like the language) it just didnā€™t seem to have the cross platform chops I needed.

the Xojo IDE is a nice IDE that does wonders for the programmer with autocompletion and marking things that are syntacaly wrong (within reason). I would not program in Eclipse or PHPStorm or one of those others, unless I had to. the one exception has been VSCode with the right plugin works just as well as the Xojo IDE. but the right plugin is the key part of that. and not all language plugins are on the same level as the others.

I understand the mentally of single language/framework as we all can only learn and become experts on so many languages. Master of One vs Jack of All.

I am really enjoying using VSCode with Flutter/Dart. Almost as Xojo IDE with Xojo.

Canā€˜t really answer that. I just did a Google search and came across a few recent threads which seem to be quite active and working on it. My hope is that with Swift 5 it can now become a stable platform as the ABI is now fixed (before it seemed to me they spend a lot of time rewriting code every time a new Swift version came out).

I am Xojo-only in my cross-platform work. Every piece of code I will use a second time is placed into an external method (either generic for all applications or application-specific).

I have spent the last year building a cross-platform set of tools for dozens of sets of methods, windows (eg login, new account, forgot password, errors, help, etc), SQL access agnostic (prepared statements, local preferences, etc), App Store, Sparkle version control, etc. This works for mainly desktop and web, but console too.

Last year at MBS Cologne I showed how this worked inside Xojo code for desktop and web apps by modifying your layouts, making all field names the same in each UI and moving your button logic into an external module (shared by both desktop and web so you have only one code to debug). I have a similar topic to cover in XDC.Connect Nashville, but I hope to cover more of the scaleability from single desktop to small workgroup to cloud to enterprise.

I am now expanding this to iOS too with universal encryption and database access (via URLConnection/HTTP socket to Aloe Express).

RemObjectsā€™ Elements compiler supports their own implementation of Swift called Silver across all major platforms/devices. It also supports four other languages.

Iā€™ve just started looking into it, but the major caveat is you have to design and maintain a separate UI for each platform, even Mac vs Windows vs Linux. But that also means you should get much better control and performance on each platform vs Xojo (least common denominator).

And like Xojo, their proof is in ā€œeating their own dogfoodā€ - their IDEs for Mac and Windows are built with Elements. You can also use Elements from within VS.

As I said, I just started evaluating it. It is more complex to setup and use than Xojo, but Iā€™m trying to ascertain what benefits it gives me over Xojo. Oh, and the Swift (Silver) only version is totally free!

1 Like

This is a great find and Iā€™ve been keeping an eye on it for a while. I absolutely love the concept but without better support for apps that need a GUI, itā€™s off the table for me for the time being.

1 Like

But it IS in keeping with the MVC model which might not be a bad thing in the long run ā€¦

1 Like

How do you create GUIs for each platform within this program?

There sure isnā€™t much info on this.

My guess is youā€˜d use interface builder in XCode on the Mac, but I wonder if you could not use VisualStudio for both the Mac and Windows GUI.

The only thing that would interest me about Elements would be if it somehow allowed creating a MacOS GUI without Xcode. So far, AFAIK, Xojo, Delphi and Lazarus are alone in that capability for cross-platform RAD.

Iā€™d love to see other tools eat their own dog food and build their IDE in their tool
I had a long call with guys from Embarcadero and one said ā€œbut of course you can build a macOS app with our toolā€ so I asked when they would build a macOS IDE using their tool

Dead silence

4 Likes

Check out this blog post for one way to do it: New Sample: Shared UI

One thing youā€™ll find here is a lot of folks who are used to Xojo.
One of the things that is nice about how they approached things is that you do get a pretty easy to use environment & runtime. While it doesnt expose every possible aspect of every possible control it exposes ā€œenoughā€ - usually - and if you need something special there are ways to get at a lot more platform specific functionality (usually - not always)
And that seems to be a decent balance between being native and power and flexibility.
And being x-platform without having to delve into XAML Xibā€™s etc.

This does make Xojo a lot more ā€œVB likeā€ and I know a lot of developers disparage VB.
But it is/was one of the most used languages in the world and probably would still be if MS hadnā€™t decided to shelve it (for reasons I understand)

It definitely fit a specific niche - one that still exists