Moving away from Xojo

Hi community,
After just over 5 years of working with Xojo, I’m feeling that journey needs to come to an end.
Prior to Xojo I used .net (mainly VB.net for asp.net and Windows apps). I moved to Mac in about 2014 and then to Linux desktop in 2019.
My current main project is essentially a CRM app made in Xojo - Web 1.0 (was being ported to Web 2.0) and Linux desktop. I’ve already started looking at B4X for Android and iOS.
I’ve considered Swift and C# as they have GTK bindings as my app currently uses native GTK Headerbars thanks to GTKLib in Xojo.
Any recommendations would be great.

1 Like

I was using Web 1.0 as well until XDC Miami. That’s when the Xojo koolaide wore off for me.

Good news is you have lots of options. :slight_smile:
Bad news is it a lot of work. :frowning:

Take a look at Xanadu, which uses NGINX / PHP. Keep in mind that’s a year old as a split that project over to “Xanadu Pro” which has come a long way. I’m now using it for client projects.

Once you make the jump to whatever you choose every day will get better!

2 Likes

I would think about B4J for Desktop and Web (Banano is a nice alternative, Also ABMaterial is possible). I would think that @Alwaysbusy can help you with more informations. That could bring you away from Xojo with a Basic like Language.

1 Like

The other possible variant is Java. For IOS and Android Codenameone and for Web vaadin, for Desktop Java Swing

For small to medium desktop projects that do not require a sophisticated GUI, there is Purebasic. There is a web version but it has not been updated in some time.

I will be posting a write up on Purebasic shortly.

2 Likes

Well, it appears that Xojo has raised its pricing effective today. So that may be the impetus needed for those on the fence to migrate to alternate solutions.

Yeah, it looks Faintaisie Software are busy tweaking the C-backend for PureBasic and have put SpiderBasic(Web) on the back burner for now. I believe once fully implemented it should provide them with a lot more flexibility.

As far as other possibilities, here’s a partial list:

Some Basic implementations haven’t been updated in a long while.
PowerBasic development essentially stopped when the creator passed away.
TrueBasic by the original creators of Basic. Thomas Kurtz is still alive (93 years old).

Some are very popular with a large online presence and being updated frequently.
B4X (Basic 4 X, Basic 4 Android, Basic 4 Java …) Basic-like language implemented on the JVM).
QB64 (QuickBasic64) with a C++ compiler, appears to be mostly geared for gaming
AGK Studio Level I Basic language with Level II C++, geared for gaming
FreeBasic one of the most C-friendly Basic-derived implementations with OOP and many IDE choices such as WinFBE. It’s free … of course.

These are recent VB6 compatible software in development with form designers:
TwinBasic
RadBasic

And a VB.Net compatible newcomer which integrates with Visual Studio:
Mercury VB (RemObjects)

Another possible alternative is Golang with one of several GUI Frameworks like Fyne or GUI. This is a quote from the book “Building Cross-Platform GUI Applications with Fyne”:

Simple cross-platform code Go is a language that (like C, C++, Swift, and many others) compiles to a native binary on every platform it supports. This is important for graphical applications as it’s the best way to create the most responsive and smoothest user interfaces on mainstream computer hardware. What stands out about Go compared to other languages that are popular with GUI developers is that it manages to support a long list of operating systems while compiling, without any alterations or special adaptation, to native code on every platform. This means that a Go-based project can be built on any computer for any other computer, using the standard tools, with no need for complex build configurations or extra developer packages to be installed. At the time of writing, the platforms that Go runs on includes Windows, macOS, Linux, Solaris, and other popular Unix-based operating systems (which is essentially all desktop personal computers) along with iOS, Android, and other Linux-based mobile devices (and even tiny embedded computers via TinyGo).

What this book covers

Chapter 1, A Brief History of GUI Toolkits and Cross-Platform Development, contains a short reminder of the history behind graphical applications and how the toolkits used to develop them have evolved over time. We look at the different approaches to cross-platform development and why it is important. By the end of this chapter, you will be familiar with the benefits and challenges of GUI toolkits in approaching cross-platform app development.

Chapter 2, The Future According to Fyne, introduces the Fyne toolkit and its approach to supporting all operating systems, with a Material Design-inspired user interface look and feel. In this chapter, we will explore the vision of the Fyne toolkit and how it builds on the Go language to create an easy-to-use, cross-platform GUI toolkit. After reading this chapter, you will see how Fyne aims to solve the challenges outlined in the first chapter of the book and how it aims to shape app development in the future.

Chapter 3, Window, Canvas, and Drawing, introduces the main APIs behind the rendering layer of the Fyne toolkit. We will see how to draw objects and how to combine them using containers to create more complex output. This chapter also covers the APIs required to load an application and manage its windows. We complete this chapter with an example that uses graphic elements and animations to create a simple cross-platform game.

Chapter 4, Layout and File Handling, expands on the manual placement of elements in the previous chapter. We will examine the standard layouts that are provided and how they are combined to form complex user interface structures, as well as how to build our own. Also covered is the filesystem abstraction, which provides standard file access for traditional filesystems and the more complex mobile data sharing methodologies. We will apply all this knowledge to create an image browsing app at the end of the chapter.

Chapter 5, Widget Library and Themes, introduces the largest package within the Fyne toolkit – its widget library. In this chapter, we will explore the main widgets available and how to use them in constructing an application GUI. We will see how their standardized look and feel can be influenced through theme selection and how user preferences, such as light or dark modes, are rendered using the built-in theme. This chapter is completed with a step-by-step creation of a task management app using many of the widgets explored earlier.

Chapter 6, Data Binding and Storage, explores APIs that help to efficiently manage data and storage within a Fyne app. We will see how the widgets seen in the previous chapter can be bound to data elements and thereby avoid much of the code that was necessary to set up and manage their contents. Also demonstrated is how applications can manage user preferences and how they can connect through data binding directly to widget values. The concepts in this chapter are applied through the creation of a health app that helps to track your water consumption.

Chapter 7, Building Custom Widgets and Themes, demonstrates how applications with bespoke requirements can build on the solid foundations explored in the previous chapters. We will examine the various ways in which developers can customize and extend existing widgets, or build completely bespoke components. We will also see how custom themes can be loaded to give apps more brand identity or add custom fonts and icons. Using these features, we will build an instant messenger user interface that displays a distinct style and custom widgets.

Chapter 8, Project Structure and Best Practices, builds on the best practices that are well documented for the Go language. We will see how to organize projects to keep the code clean and facilitate easier maintenance as they grow. We will also explore how unit testing and test-driven development are possible and encouraged when building GUIs with Fyne. Additionally, on the rare occasion where platform-specific code may be required, we see how an app can adjust its behavior for different target platforms.

Chapter 9, Bundling Resources and Preparing for Release, explains how packaging up a graphical application is more complex than a simple binary that would be accessed from the command line. In this chapter, we see what metadata is required to allow a Fyne app to blend in with other desktop and mobile applications. We also step through the process for bundling apps so that they can be shared and installed, as end users would expect of a platform native application.

Chapter 10, Distribution – App Stores and Beyond, confronts the final challenge of cross-platform application development – distribution. We will see how applications are prepared for public release and packaged with extra data and code signing required by many app stores. We wrap up the book by stepping through the upload process for Apple, Google, and Microsoft stores, along with distribution to Unix systems.

Appendix A, Developer Tool Installation, contains platform-specific steps for managing software required by other chapters. This chapter will assist new developers to install the compilers and tools required to build the examples in this book.

Appendix B, Installation of Mobile Build Tools, provides documentation for setting up the additional tools that will be required to build Fyne apps for mobile devices. Android and iOS builds can be created locally after following these steps. Alternatively developers could choose to use fyne-cross, covered in Appendix C, Cross-Compiling.

Appendix C, Cross-Compiling, outlines the platform specific installation and configuration that is required to set up the building of different operating systems. Following these steps, developers will be able to compile their Fyne apps for different platforms using just one computer. It also shows how to set up the Fyne cross compiling solution fyne-cross for developers that don’t want to manage the tools in detail themselves.

1 Like

I would suggest you to take a close look at Lianja.

https://www.lianja.com/

It is a great tool.

If you are looking for 5th GL and want to reduce the amount of coding then check out WinDev, WinDev Mobile and WinDev Web. Unfortunately these IDEs will only run under Windows. And they can compile your code to a JAVA application (.jar) which will run on any OS that supports JAVA.

If you are ready to learn a new language then why not check out Free Pascal with Lazarus.

1 Like

In the video showcasing it the UI looks a bit dated and old fashioned.

I guess Xanadu is the tool, and you make your app look good via eg. Bootstrap.

In my mind, the development tool need not look good.

May be you are correct here.

But I could not find any tutorial on the web site that one can read to understand as to how it works.

So I did not try it but just watched its video.

Make small projects in the alternatives you have in your mind. The community may make suggestions but in the end it is you with your passion, mindset and abilities to develop a project.

“After” Xojo I tried swift and take a look at C++. Technically these are great but I do not have the intelligence and time to learn it. In the end it is B4X for me. It is easier to learn, less time consuming. I can offer software for all platforms which support Java. I guess the rest of my life will not be enough to get deep knowledge of the possibilities and features from B4X. But I try … :innocent:

seems macos 10.15 minimum …

1 Like

FreePascal/Lazarus is great! Another consideration is PascalABC.Net, it’s similar in spirit to REMObjects Oxygene, in that both are Pascal-Based CLI languages and both have lots of features that are absent in FPC/Lazarus such as C#-style string interpolation, in-line variable declaration, etc… To me, Oxygene feels like a blend of Object Pascal and C#, but gravitates more towards C# in syntax. In contrast, the syntactic constructs and ideas of PascalАВС.NЕТ have been taken from C#, Oxygene, Haskell, and Python, so it’s quite powerful. Oxygene allows for cross-platform development via its polyglot Elements compiler, but you will need to use Visual Studio’s form designer since it does not have one built in their Water/Fire IDE’s. Also it’s not free. PascalABC.Net does have a built-in form designer AND is free, but unfortunately its help files are in Russian. I’ve gone through the trouble of translating the help files, if anyone is interested.

1 Like

Also, looks like a runtime license subscription is required if distributing your app. Or you can get unlimited runtimes at a meager $8K :wink: for an ISV subscription (thereafter $5K/year).

This also means that if Lianja goes under, all your apps may stop working (don’t know for sure, and not willing to spend the time to figure it out).

3 Likes

Another possible consideration is Ring. I’ve only started to mess with it and I’m currently reading the book “Beginning Ring Programming”. The syntax is extremely flexible (maybe too flexible) as it can mimic several popular constructs. One can even change keywords to mimic, say the Basic syntax. It’s major influences are: Lua, Python, Ruby, C, C# and Basic. It has a form designer and it’s FREE.

  • Free Open Source (MIT License)

  • Hybrid Implementation (Compiler + Virtual Machine)

  • Declarative programming on the top of Object-Oriented programming

  • Natural Language Programming on the top of Object-Oriented programming

  • Natural Language Programming Library

  • Three different styles for writing the code and you can create your style

  • Syntax Flexibility (You can change the language keywords and operators)

  • The language keywords can be translated from English to other languages (Arabic, French, etc)

  • Compact Syntax, No explicit end for statements (No ; or ENTER is required)

  • Using braces { } we can access objects and use attributes/methods as variables/functions

  • Transparent Implementation (See the Tokens, Grammar, and Byte Code for each program)

  • Visual Implementation - Developed using Visual Programming (PWCT)

  • Written in ANSI C (The code is generated + Looks identical to Handwritten Code)

  • A small language

    • The compiler + The Virtual Machine (20,000 lines of C code)
    • The other 500,000 lines of code are related to libraries!
  • Portable (Windows, Linux, macOS, Android, etc)

1 Like

Thanks to all those who have commented. I’m looking at all these alternatives and will see how I get on and feedback.

1 Like

I’ve looked at Swift, Objective C and C++ in the past and have too ruled them out as too difficult for me to learn right now (or maybe I just have no desire to learn them). After many years in VB and Xojo my mind writes that code reasonably easily and I found the syntax of Swift/Obj-C/C++ quite different.

B4X is certainly interesting and Erel is really responsive. My only problem with it is I’m used to GTK apps with Headerbars etc which I couldn’t see in B4X and certainly wouldn’t expect Erel to add all of that for me. I’m staying with B4X for iOS and Android (and maybe Web) it’s an amazing tool!

2 Likes

I have used WinDev and it is just 1000 Euros. Actually 2000 Euro for complete bundle that is WD, WM, WB.

It is really very powerful and has so many features that if a conventional user would try to implement them in their application it would take them 1000s of lines of coding!!

There is also an Express version (for WinDev and WinDev Mobile) which is free if you want to try it.

Actually I tried it and got hooked to it! Its support for a variety of databases is really very strong and it provides a single set of commands to access and manipulate data irrespective of the back end database.

I started with B4A and my company had brought its license when it was commercial for 2 years but never got myself to build any serious application in it.

But with WX I have build Android 14 app, 6 iOS apps and many desktop apps.

Just sharing my experience.

1 Like

Looks interesting… I’ll have to download and play with it.

1 Like