It only took 15 years of using Xojo/Realbasic for me to finally get off my backside and attend Xojo Inc’s semi-annual developer’s conference - XDC. Was it worth the wait and the effort? Absolutely.
XDC is a mostly annual congregation of Xojo’s entire staff and Xojo’s customers. I say mostly annual because I believe they do occasionally skip a year if they’re working on several multi-year projects internally. Geoff Perlman (Xojo Inc’s CEO) said at the conference that Xojo doesn’t turn a profit on the conference - they only aim to break even so if it looks like attendance may be an issue they will skip a year.
This year the event was in Miami. What a cool city. I’d never been to Florida so this alone was a novelty for me. The hotel where the conference was hosted was nice and modern. The subsidised rooms were large and well equipped and the food was good. Xojo laid on a catered evening boat cruise around the coast on the first night and a buffet meal near the hotel on the second night which was a great networking opportunity. Talking shop with your fellow Xojo developers is all well and good but doing so over a beer is better 😀.
All eyes were on Geoff for the keynote to find out about what’s coming to Xojo over the next 12 months. Whilst I’m please to say that everything they announced sounds great and very much needed, no specific time frames were given for anything. We got a lot of “coming soon” but as Bob Keeney rightly pointed out, Android, API 2.0 and a new IDE have been coming soon for a while. The only more concrete answer I was able to get was that it’s likely we’ll see much (if not all) of the announced API 2.0 changes in the next Xojo release so hopefully we shouldn’t have to wait more than a couple of months to start to play with it.
First things first, text handling on iOS is still a shambles and looks like it will continue that way for the rest of the year. We know that the
Text class (and
Auto for that matter) will be deprecated but until
String makes its way to iOS we’re stuck with it when it comes to doing any sort of cross-platform text processing. The venerable
String class is getting some love with new methods such as
IndexOf being ported from the
Text class. I specifically asked whether the
String class will move to being zero-based as opposed to one-based with to be more in keeping with API 2.0 and told yes but not immediately.
Many of the classic classes (such as
FolderItem) are getting love which is great.
Xojo is moving away from error numbers/codes to a largely exception-based error system which is very sensible and makes for easier to read code.
The project analyser is getting some attention with the advent of API 2.0 and will continue to alert you to the newly deprecated methods. It was suggested that the analyser be able to automatically port deprecated code to API 2.0 code. The Xojo engineers stated that they’ll “look into that”.
For me, interops were the most exciting thing discussed at XDC. Now I can’t pretend to be any form of expert on them but I did spend quite a bit of time picking the Xojo engineer’s brains about them. In essence, they are a substitute for declares. For the un-initiated, declares are Xojo’s mechanism for calling external C/C++/Objective-C libraries. As a project grows in complexity, this is often needed to get access to OS-features not natively supported by Xojo. The problem with declares is that they are cumbersome to use and require a reasonable knowledge of C in order to translate the function call(s).
Interops simplify things significantly. An example is probably the best way to illustrate this. Xojo Inc was already using interops in their XDC iOS app and they provided an example of this in the keynote. Their example provides access to the iOS calendar event system. Getting access to the event store on iOS with declares looks like this:
Declare Function NSClassFromString Lib "Foundation" (clsName As CFStringRef) As Ptr Declare Function alloc Lib "Foundation" selector "alloc" (classRef As Ptr) As Ptr Declare Function init Lib "Foundation" selector "init" (obj_id As Ptr) As Ptr Dim EventStore As Ptr = init(alloc(NSClassFromString("EKEventStore")))
Here’s what the same thing looks like using interops:
If EventStore = Nil Then EventStore = New EKEventStore
Mind blown. I cannot wait for this to ship!
Full disclosure - I don’t have a great deal of interest in Android as a platform. I would far rather Xojo put more effort into fleshing out the iOS platform and implement some basic much-needed functionality such as porting the
Regex class. I do however understand that from a commercial point of view that it ’s an important platform for Xojo to support. It’s worth saying that there certainly seemed to be a good deal of interest from the other attendees in it.
How ready is Android support? Not ready enough is the answer. It looks like most of the UI controls have been ported and the IDE is able to build and run a simple app in the Android simulator which is encouraging. Unfortunately the demo was very limited in its scope. We were told that all that’s left to do is “finish porting the framework and implement the debugger”. They sound like daunting tasks. I do think it’s possible that we will see initial Android support this year but I wouldn’t be surprised if it will be rather barebones in its initial functionality. Please prove me wrong Xojo!
If you ask a seasoned Xojo developer if they prefer the current IDE (written in Xojo) or its predecessor, a lot will say they liked the old version. Mostly this is because they dislike the IDE’s left-pane navigator. Personally I don’t mind it but I do think the previous IDE’s approach to navigating a project was better. Xojo Inc have been promising for years a redesign of the current IDE but updates have been -non-existent- few and far between.
Pleasingly, Xojo gave us a little bit of information about changes that are coming to the IDE (again no timeframe was given). The navigator, as we know it today, is going. It will be replaced with a /Home/ tab. Essentially this will be an entire workspace-sized view of the items of your project where selecting a project item will take you straight to that item (either in the same tab or in a new tab). This sounds like a much needed improvement and I’m looking forwards to seeing it in action.
Web Framework 2.0
I rarely use Xojo’s web framework. Typically I create web apps in PHP using the Laravel framework and if I need to interact with sockets/microservices with Xojo I’ll use Tim Dietrich’s excellent Aloe Express Xojo project. The main reason for not using Xojo’s web framework up to this point has been its terrible performance. I’m pleased to say that the new Web framework demoed at XDC looks amazing. Greg O’Lone has been the principle engineer behind this project and it looks like he’s done a great job. The framework has been completely rewritten to modernise its appearance, customisability and performance. Again no hints were given as to whether or not we’ll see this released in 2019. The best we got was that it’s about “70% done”. Given that experience teaches us that the last 20% of a project takes 80% of the time I’m a little concerned but I like to stay positive.
During the feedback session with Geoff at the end of the conference, it was pointed out that the engineering team is looking rather lean. Xojo currently has four full time engineers (Greg, William and Travis with Paul Lefebvre having moved from being the developer evangelist to an engineering role). Xojo’s “compiler guy” Joe Ranieri left in 2017 and Norman Palardy left abruptly earlier this year.
To give Geoff full credit he answered this question head on. This is one of the reasons I love Xojo Inc. It’s rare to hear directly from the CEO about business-related issues such as staffing with such honestly. The short version given was that everything is fine. Joe’s role was vital during the transition to using LLVM for their compiler and transition to iOS but the need for that level of engineering has passed (at least for the time being). Geoff believes that Xojo has enough engineers to solve the problems Xojo is facing and to implement the features that they want to for the time being. Whilst this is good to hear I’ll be honest and say that I was hoping they were looking to recruit as I’ve made it no secret that I would like to work for Xojo. I have some interesting ideas around the IDE thatI’d love to see implemented and would relish the challenge of implementing them myself.
Whilst I principally went to XDC to learn more about Xojo, I have come away not only inspired to create more adventurous apps having heard what other developers are building but I’ve made many good friends. It has been invaluable to actually have a conversation in person with people that I’ve “known” on the forums for years. I got plenty of positive feedback about Roo and I will be implementing some features that were requested at the event.