Dec. 11th 2021
Posted: Sun Dec 12, 2021 1:59 am
The last two weeks were a bit spoiled by the self-inflicted disaster of messing up the partition tables on my laptop SSD (which still seems to contain an Apple APFS volume container, I may try to image it and extract info from it at some point). Fortunately the majority of the interesting dev stuff that I've been working on for the past few years has been done OpenSource via GitHub, so that's safe! I had also recently done some backups so not all was lost.
I took the opportunity to give myself an early Christmas present and upgrade the laptop that is my main dev computer. I replaced the 500Gb with a 2Tb M2 SSD, and increased RAM to 40Gb (I like to load a LOT of Sound samples)! The extra space will really come in handy for trying to compile the xTalk engines, the current Mac build requiring component from multiple versions of Xcode (they're like 5 to 10 Gigs of disk space each).
Now I have plenty of room for multiple OS's, and I now have it setup with macOS (11/BigSur), Win 10, and Linux (the latest LTS release of Xubuntu) with other partitions reserved for other OS's (I may put 10.14.6 back on as an 32bit friendly alternate macOS boot, plus some others like Batoreca, LibreELEC, Android X86, and helloSystem).
So once my Laptop was a back up to speed after about a week of downtime, I got back to working on OXT.
That work has even narrowed down to try to meet a self imposed deadline of a Winter Holiday release.
This release will be a release candidate preview release.
The scope will be this:
1) Unbranding / Rebranded release as OXT. This release will not have recompiled engines, changes have been limited to what could be done without any recompiling. There is actually a LOT that can be done on top of the existing engines, enough to keep me busy for a long, long time anyway. Unbranding / Rebranded has been the main task all along, although it might not seem like it. Doing this work has led to editing all sorts of IDE components, the Start Center, The Dictionary, The Resource Center, Preferences stack, etc. Some things simply cannot easily be renamed because other things that use their identifier scheme name would break and so I would hope that is considered part of "respecting our open source legacy". I've made both the "Start Center", and "Resource Center" Stacks easily replaceable. I've been doing a lot of editing to the Resource Center because it's so old and neglected (like neglected for more then a decade), with some sample/examples no longer being functional.
2) The syntax Dictionary Unbranding / Rebranded AND expanded! Besides replacing an ecessive amount of instances of the name, I'm also including the syntax for the IDE itself! That is, I'm including the documentation of the handlers that do most of everything that the IDE does. I don't mean just the API meant for people making IDE Add-ons, which is the base of it, but I've also added handlers from menubar, menu toolbar, the property inspector, the tools palette, etc.
3) DarkMode! This has actually been a lot more involved then I thought it would be, because most of the IDE is not setup to look good reversed out (White/Light over Black/Dark, instead of Black over White) and elements have to look OK in both light and dark. I think this is mostly OK now, I've been using the IDE in macOS darkMode exclusively for a month or so, fixing issues as I see them. On Linux I've also tested this with a KDE DarkTheme and the two XFCE Dark themes that come with Xubuntu. Looks pretty good to me.
I'd like to change the revTools palette further so that it better supports toggling between light/dark theme, by changing the platform varying "classic tools" to be single platform-generic set of scalable vector (SVG) line art icons. I've created some of these vectors already.
To give window frames the system-level DarkMode look on macOS I've also uses my macTools Builder Library, which I've donated to OXT and is now called OXT MacOS Native Tools and will be included in the IDE (since the IDE now requires that on macOS). This Builder library includes support for a few other useful system level Mac specific things as well, such as the ability to badge your app's icon in the Dock with a short string of text (like the message count in the Mail.app) for example.
On Windows 10, I'm currently looking into making an equivalent "winTools" native library, to do the same (Dark Window Frames & Dark MenuBar) for Windows. Apparently in Redmond "darkMode" is still a work in progress with Win32 API Devs commonly using undocumented things, that can (and have) change from one OS version to another, to enable a dark theme. I seems like it should be easily doable, we'll see, at least I've tweaked revMenuBar on Win so that the menu text isn't white on white.
Having just spent some more time running the IDE on Win, I can understand why there are a lot of complaints about it performance wise, the IDE basically locks up for a few seconds here and there, and I know it's not my Windows Install because this is a fresh and clean install of Win 10. I don't know why it would be doing that, maybe the IDE is posting too many messages in the message queue and then it gets bogged down for a half-second to catch up? If I was looking to do commercial dev and saw the IDE do this, I'd probably stop looking at the IDE at that point. I don't know why it would be doing this, anybody have any ideas?
4) Extras...I decided early on that I wanted to include FluidSynth Builder Library along with my Piano Widget for use. That's pretty simple since that was already tested and working on Mac & Win platforms. I had to tweak FluidSynth a little but got it working on Linux (64bit) too. To go along with this, I'd also like to include some other Interactive Music/MIDI related libraries. UDI's venerable MakeSMF/PlayPMD Library converts HyperCard playSentence ABC-style notation into MIDI data. This library was first written in the late 1990s but it's every bit as usable now as it was then, the only thing that's changed are the platforms and underlying playback engines! (MIDI 2.0 just recently became the new official standard, 30+ years since MIDI 1.0 came out!). I also have worked on custom, live-editable x-y data grid control widget that I've been developing in order to edit and display on a MIDI piano-roll style grid.
Upon a request I've made the font size of revMenuBar toolbar into a preference, changing the font size and then refreshing the menu (via a new menu item) changes the size of the entire toolbar.
One other possible IDE extra that is on my short-list because I've found it very useful is the DevGuides extension, I would like to integrate that into the IDE with a menu item to toggle Guides on/off.
5) I'm working on an "encapsulated stack" file format, that I intend to tie-in with a lot of the other work I'm doing. Mainly using it as a sort of template system and possibly as the format of an OXT package manager. I'm using revTools palette as a test subject. I can already tag/wrap up most of the contents of a stack and now I need to get the reverse working, going from "ESTACK" (STACKML? Names?) back into an OXT Stack. This will be useful for making things like the "Resource Center" more easily updatable and extensible.
I took the opportunity to give myself an early Christmas present and upgrade the laptop that is my main dev computer. I replaced the 500Gb with a 2Tb M2 SSD, and increased RAM to 40Gb (I like to load a LOT of Sound samples)! The extra space will really come in handy for trying to compile the xTalk engines, the current Mac build requiring component from multiple versions of Xcode (they're like 5 to 10 Gigs of disk space each).
Now I have plenty of room for multiple OS's, and I now have it setup with macOS (11/BigSur), Win 10, and Linux (the latest LTS release of Xubuntu) with other partitions reserved for other OS's (I may put 10.14.6 back on as an 32bit friendly alternate macOS boot, plus some others like Batoreca, LibreELEC, Android X86, and helloSystem).
So once my Laptop was a back up to speed after about a week of downtime, I got back to working on OXT.
That work has even narrowed down to try to meet a self imposed deadline of a Winter Holiday release.
This release will be a release candidate preview release.
The scope will be this:
1) Unbranding / Rebranded release as OXT. This release will not have recompiled engines, changes have been limited to what could be done without any recompiling. There is actually a LOT that can be done on top of the existing engines, enough to keep me busy for a long, long time anyway. Unbranding / Rebranded has been the main task all along, although it might not seem like it. Doing this work has led to editing all sorts of IDE components, the Start Center, The Dictionary, The Resource Center, Preferences stack, etc. Some things simply cannot easily be renamed because other things that use their identifier scheme name would break and so I would hope that is considered part of "respecting our open source legacy". I've made both the "Start Center", and "Resource Center" Stacks easily replaceable. I've been doing a lot of editing to the Resource Center because it's so old and neglected (like neglected for more then a decade), with some sample/examples no longer being functional.
2) The syntax Dictionary Unbranding / Rebranded AND expanded! Besides replacing an ecessive amount of instances of the name, I'm also including the syntax for the IDE itself! That is, I'm including the documentation of the handlers that do most of everything that the IDE does. I don't mean just the API meant for people making IDE Add-ons, which is the base of it, but I've also added handlers from menubar, menu toolbar, the property inspector, the tools palette, etc.
3) DarkMode! This has actually been a lot more involved then I thought it would be, because most of the IDE is not setup to look good reversed out (White/Light over Black/Dark, instead of Black over White) and elements have to look OK in both light and dark. I think this is mostly OK now, I've been using the IDE in macOS darkMode exclusively for a month or so, fixing issues as I see them. On Linux I've also tested this with a KDE DarkTheme and the two XFCE Dark themes that come with Xubuntu. Looks pretty good to me.
I'd like to change the revTools palette further so that it better supports toggling between light/dark theme, by changing the platform varying "classic tools" to be single platform-generic set of scalable vector (SVG) line art icons. I've created some of these vectors already.
To give window frames the system-level DarkMode look on macOS I've also uses my macTools Builder Library, which I've donated to OXT and is now called OXT MacOS Native Tools and will be included in the IDE (since the IDE now requires that on macOS). This Builder library includes support for a few other useful system level Mac specific things as well, such as the ability to badge your app's icon in the Dock with a short string of text (like the message count in the Mail.app) for example.
On Windows 10, I'm currently looking into making an equivalent "winTools" native library, to do the same (Dark Window Frames & Dark MenuBar) for Windows. Apparently in Redmond "darkMode" is still a work in progress with Win32 API Devs commonly using undocumented things, that can (and have) change from one OS version to another, to enable a dark theme. I seems like it should be easily doable, we'll see, at least I've tweaked revMenuBar on Win so that the menu text isn't white on white.
Having just spent some more time running the IDE on Win, I can understand why there are a lot of complaints about it performance wise, the IDE basically locks up for a few seconds here and there, and I know it's not my Windows Install because this is a fresh and clean install of Win 10. I don't know why it would be doing that, maybe the IDE is posting too many messages in the message queue and then it gets bogged down for a half-second to catch up? If I was looking to do commercial dev and saw the IDE do this, I'd probably stop looking at the IDE at that point. I don't know why it would be doing this, anybody have any ideas?
4) Extras...I decided early on that I wanted to include FluidSynth Builder Library along with my Piano Widget for use. That's pretty simple since that was already tested and working on Mac & Win platforms. I had to tweak FluidSynth a little but got it working on Linux (64bit) too. To go along with this, I'd also like to include some other Interactive Music/MIDI related libraries. UDI's venerable MakeSMF/PlayPMD Library converts HyperCard playSentence ABC-style notation into MIDI data. This library was first written in the late 1990s but it's every bit as usable now as it was then, the only thing that's changed are the platforms and underlying playback engines! (MIDI 2.0 just recently became the new official standard, 30+ years since MIDI 1.0 came out!). I also have worked on custom, live-editable x-y data grid control widget that I've been developing in order to edit and display on a MIDI piano-roll style grid.
Upon a request I've made the font size of revMenuBar toolbar into a preference, changing the font size and then refreshing the menu (via a new menu item) changes the size of the entire toolbar.
One other possible IDE extra that is on my short-list because I've found it very useful is the DevGuides extension, I would like to integrate that into the IDE with a menu item to toggle Guides on/off.
5) I'm working on an "encapsulated stack" file format, that I intend to tie-in with a lot of the other work I'm doing. Mainly using it as a sort of template system and possibly as the format of an OXT package manager. I'm using revTools palette as a test subject. I can already tag/wrap up most of the contents of a stack and now I need to get the reverse working, going from "ESTACK" (STACKML? Names?) back into an OXT Stack. This will be useful for making things like the "Resource Center" more easily updatable and extensible.