There are several areas where I hope that Xojo will put their attention on next. These are areas that affect this long term Xojo developer on a regular basis, it irks me the extra effort we have to go through to make a modern Mac application.
Listbox
This venerable swiss-army knife of a control, is too complex for a 3rd Party to replace, but it’s stuck in the 90s.
I have been able to bring true alternating rows (that support desktop tinting) to it, and to make the scrollbar look like an overlay scrollbar from 10 years ago, but there are things I cannot do without considerable time and effort, to get things that other tools provide for free.
-
Modern scrolling: It does not support elastic or momentum scrolling. It can be faked by enclosing it a NSScrollView (which requires declares or a plugin). However that too can incur problems.
-
Doesn’t like being in a NSScrollView; the Listbox by default does not like being moved around without explicitly updating it’s location. It doesn’t update correctly, it consistently doesn’t handle clicks correctly. It requires additional code to remap it’s actual location on the window to where it thinks it is.
-
Doesn’t like being in a NSPopover; just like a NSScrollView it hates being in a NSPopover (which has been around for 10 years). Same symptoms as the scrollview, except it requires some real low level hacking to fix (which “fixes” it for every instance of the listbox within the application) or replacing with a custom built control, because it’s mouse positions are off.
NSScrollView
This control has been around since Mac OS X 10.0, yet Xojo still doesn’t natively support it. Adding it via declares or a plugin, causes problems as several Xojo controls, as they simply HATE being moved around.
I’ve lost count of how many different versions of scroll view I’ve written over the last two decades, each one fixes some issues, while others appear.
NSPopovers
Another long time UI interface element from the Mac that Xojo doesn’t support (and should). These can be added via declares or plugins, but again some Xojo controls misbehave when used with NSPopovers and trying to patch events to make these work, takes considerable effort.
Console Applications
- The Xojo made “Resources” folder does not adhere to Apple’s code signing guidelines, and forces people who build localized helper apps with Xojo to have to create their own localization system.
- Mac Console applications should include a Info.plist within the Mach-O binary at build time, it’s not impossible to add it later, but this is a tremendous amount of work. I’ve made slow progress over the years.
Application Size
A simple “Hello World” GUI application is 15 mb. One window and UB. 10 mb is the XojoFramework. 5 mb is the blank executable. I’d really like to see Xojo put some focus on making it smarter to strip out the things that are not needed from the framework and base application.
Workers
I think I’ve covered this quite in depth for a while, so I’ll only summarize it here. With some extra elbow grease Xojo can alleviate some of the bottlenecks and help their customers to not only easier adopt workers, but also to gain much better performance than the current solution. While I agree with @Björn_Eiríksson that the Xojo framework needs re-writing to correctly adopt concurrency, I don’t have his faith that this will ever happen, so some improvements to workers could at least benefit some customers in the meantime.
DesktopControls
I don’t have as much time as I used to, to sit in front of the computer, so I totally missed the full impact of the control renaming during the 2021r3 betas. It is probably too late for Xojo to think about reducing the impact for 3rd party control vendors now. I basically have to duplicate and modify my work to support 5%~10% of my customers.
Mac App Store
Apple’s two faced attitude of “Developers MUST pay 30% of their profits towards the upkeep of 150,000 API”, while at the same time telling developers to “roll your own” when it comes to required crypto (and other standard functions that don’t exist on a phone) for the Mac App Store, is frustrating, it’s also frustrating that Xojo has and includes a crypto library in built applications, but does NOT support the required crypto functions for the Mac App Store. So to sell apps in the Mac App Store, we’re supposed to include two crypto libraries. I have previously outlined which functions are required, in a Feedback case.
There are many other areas that Xojo really should be putting attention on IMHO. These are just some of the issues that I run into.
As always, I am open to discussing these points (and more) with the Xojo team. I’m willing to put in some work or provide code where I can, as I do care about a product that I’ve been using for 25 years. I won’t, say re-write the entire Xojo listbox for FREE, I still got bills to pay, mouths to feed, car to maintain, etc etc.
In closing, this is probably one of the last times (if not the last time) that I’ll try to advocate for improvements to the Xojo development tool. I can’t help Xojo if they don’t want my input and I need to accept that, afterall it is entirely possible that Xojo doesn’t need my input at all.