Improve Xojo Launch Time when using MBS?

Is there a way to improve the Xojo IDE launch time on macOS when using the MBS Plugin package? I don’t have the fastest of machines (27" 5K, 3.4GHz quad core i5, 16GB, 1TB Fusion Drive), but with the default Xojo Plugins I’m getting 11-12s from clicking the icon in the dock to the “Chose a Project…” dialog. With the full set of MBS plugins included, launch time jumps to 123s (that’s over 2 minutes!). It’s to a point where I loathe having to relaunch the IDE.

The obvious solution is to only include the MBS plugins that are used in my various projects. Is there an easy way to determine which ones these are? Even if there is, that may only slightly decrease the launch time. Xojo does a pretty good job at cacheing the compilation of plugins, there must be some way of doing a similar thing on launch. Paul, are you reading this?

Cheers.

-bill k

1 Like

remove them all
then open the IDE and your project
check your project
note the errors and put the plugins that contain those items back in
repeat the process until you get no errors

1 Like

Thanks Norman, I figured as much, but was hoping for something different.

Unfortunately there really isn’t. It’ll get frustrating as the docs will say to include plugin X so you do that, and it turns out that plugin requires plugin Y, and then Y requires Z… and it becomes a rabbit hole. Expect to relaunch the IDE a lot.

PluginsPro (name?) from Tim Parnell unzips the plugins and then the start time is a bit faster. I have a fixed set of plugins and only have to relaunch the IDE when I have a new plugin version or want to try something new.

3 Likes

Yeah, 30 minutes in and I am way down that rabbit hole. I know that I need AVFoundation (amongst others), and that (or something else) required MacCF, and MacCG, but this one has me stymied:

I don’t know, Cameras Plugin? I’m sure that Christian has some document somewhere that probably specifies all these interdependencies, but I’m in too far to go looking for something as logical as that…

What a PITA!

Looks like you need NSIndexSetMBS which after a quick google was found in the Mac Cocoa plugin: https://www.monkeybreadsoftware.net/class-nsindexsetmbs.shtml

Definitely check out Plugins Pro if you’re looking for a way to make plugin management a little easier :slight_smile:

1 Like

If Xojo could do this: I think it would be nice if plugins would load by project. The idea is that in the project’s folder there would be a Plugins folder. One could place the plugins used (or aliases) in the project in there.

1 Like

there are issues with such an approach
things like a limit to the number of dll’s a process can load on Windows

Check plugin dependencies page.

you need:

  • MBS Main Plugin
  • MBS MacBase Plugin
  • MBS MacCG Plugin
  • MBS MacCocoa Plugin
  • MBS MacControls Plugin
  • MBS MacCF Plugin

Still love to know why I’m shipping MBS_MacOSX_LaunchServices_Plugin with my windows builds…

And also that you don’t get auto complete on plugins not yet loaded. So when coding and you realize another plugin would be helpful, you have to go add that to the project (and restart the IDE or reload the project?) instead of immediately getting the auto complete.

I just load all the plugins, then try to minimize the need to restart Xojo.

2 Likes

Check here which of those functions you may use: LaunchServices

you may want to put a #if targetMacOS around to save the DLL on windows.

For our projects, we usually have all plugins in the plugins folder.
For some clients, we make a copy of the Xojo app with a plugin folder just for them, so we can use that copy.

Yeah I end up needing to keep multiple copies of Xojo for use with different sets of plugins and plugin versions. It’s really obnoxious to essentially keep one copy of Xojo for each project.

with APFS this doesn’t need any extra disk space :slight_smile:

When you end up juggling different sets with different versions of similar plugins it just gets really tedious to even try to work on several client projects at the same time
I dont even try and just maintain different plugin sets per client and for some different sets for different projects

Thanks for the dependencies link Christian, that was exactly what I needed. Using your cheat sheet, I was able to pair down from the full set of 31 plugins to only 13.

…and launch time is now 1:22!

That’s completely ridiculous in this day and age. No program should take over a minute to launch. Something needs to get cached to disk to help improve launch time.

1 Like

Can’t find any of those in my code.
And oddly there is no plugin of that name, just a DLL.