tperry2x wrote: ↑Sun Aug 14, 2022 1:23 pm
Yes, I must admit, having the binaries downloadable from the github page (as I mentioned here)
viewtopic.php?f=2&p=2210#p2210
Even if they are labelled as a 'beta' or 'test version', or whatever - it's better to have some binary out there for people to try than to have nothing for the general public to tinker with.
As far as a security aspect, having both source and compiled binary would be highly useful.
If just for watching what ports are opened by OpenXT and any libraries in something like wireshark. Security hardening of OpenXT and included libraries are possible, but having things to test with is a good first step.
The OXT binaries have been available on GitHub, since fairly early on:
macOS binary here:
https://github.com/OpenXTalk-org/OpenXt ... ents/MacOS
Win/Linux binaries here:
https://github.com/OpenXTalk-org/OpenXt ... ents/Tools
In that repo contains the actual binaries I'm using, they're just not packaged up nicely, like in an Linux AppImage or in macOS .dmg. disc image. The rest of the OXT IDE files are in there too, although they're works in progress, and also may not reflect the very latest things I'm working on.
For the past week, I've (slowly) been trying to collect all of my latest versions of all of those IDE scripts and stacks files.
They're a bit scattered, across three platforms and multiple workstations. On top of that, I also need to merge some folders / files, if I make platform specific change on say Linux, and also made different platform specific changes to the same file on Windows or macOS. I also have a few multiple variations on the same file (experiments with along the way, such as styled IDE stacks for a cross-platform 'darkmode', or adding a macOS Dock-Menu for the IDE which was too clunky to do built-in xTalk handlers for that and should maybe be a Builder Extension instead).
I'm trying to get those nice release packages ready to post on the internet for a OXT 1-year anniversary release.
Besides incorporating the latest changes, I would like for this initial release to have some sort of package system in place, even if it's just a quick preview version.
One of the things that I
really wanted to fix with the IDE was the Extension Builder and Extension Manager stacks.
I did fix a some annoying bugginess (such as icons not displaying correctly in the Builder Window, Example stacks not opening from the Extension Manager's context menu, etc.). The remaining problem that has really bothered me since soon after it's addition to the IDE many years ago now is the 'Extension Store'. It only ever showed the same four widgets, which are basically all of the LCC demo builder extensions (such as the Clock widget or the Pink Square'), it was never updated to show the actual LC 'Extension Store' you would normally see visiting that web site with a normal web browser. It turns out that their server serves up a different, long neglected, 'store' page based on it's Browser Widget's web "User Agent" sending "LiveCode" in the 'GET' header to their web server (as opposed to "Chrome ..." or "Safari ..." which then sends back demo page based on passing the IDE's agent info test.
So I'm working to replace all of that with nice, open extensible package management system, that pulls its data from a GitHub repo. I wanted to test how this would work out, but ironically libURL can't seem to retrieve URLs of files from GitHub repos the way it does in a regular web browser. Now I ran a very simple, small company website decades ago, so I have a pretty good understanding of HTTP / FTP work on socket communications level (and even started to invent my own protocol at one point), so I know that I could likely get my scripts to emulate a popular browser, but it turns out we don't need all that noise just to pull in files while getting around things like web cross-origin restrictions or GitHub issues.
Why don't we need to use the libURL in the IDE? Because the libURL in the Emscripten engine, running inside a Browser widget, can retrieve data from GitHub repo
exactly like a normal browser, without any of the problems I've encountered trying to do that with the IDEs macOS implementation of libURL (one issue is conflicting data in the cache, which I don't see a command to empty the browser widget cache available to our xTalk script currently). Remember, libURL is a high-level API wrapper scripting front-end for the underlying sockets communications, handled by an External (built on OpenSSL) on Desktop platforms but is implemented differently on other platforms. On mobile devices libURL is implemented natively. I have yet to look at how libURL is implemented in the Emscripten Engine, but it works fine for this particular purpose ( example "put URL "
https://openxtalk-org.github.io/OpenXTa ... index.html" <-- currently the actual URL I'm testing with). So we intercept this data's URL before the BrowserWidget navigates to it, and instead we use libeURL in the Emscripten Engine running in the Browser Widget, to pull in that data from our OXT repo's web page, base64Encode it or whatever, and then pass that to our IDE, which avoids any issues with using a GitHub Repo. Once we have a local, decoded copy in memory or on local disk, we install it into our IDE customization folder (ie "~/My OpenXTalk/) using the existing Extension utility commands as normal. This would be very similar to the way the Dictionary stack already operates within the IDE, with some of it's functionality coming from (some interesting) javaScript libraries that get loaded into its browser widget.
And that's it! That's how our IDE can have continuously updated packages repo, web apps built with xTalk, running in the IDE. We don't even need to download the (28mb) .js engine, because it's already in the IDE (it's in the Standalones 'Runtime'(s) folder). So we just need to build our web-app and have the Extension Manager load that into it's Browser Widget instead of that old LC page. Later on I want to do the same for "Sample Stacks" and maybe we could do in-IDE "xTalk News" too. Content is KING!
BTW, as a result of experimenting with this idea, I also discovered that you can use Data URLs in the Browser Widget's URL property! I wonder if it can handle raw (bytes) 'Blob" URLs? ICYDK, a data URL is a URL in a format similar to:
"data:mime type/kind/Base64,#A190SFGSETCBASE64DATAGOESHERE.." (not actual base64 data).
You can take that, delete the first item of it and Base64Decode( it ) into memory or write it to file on disk.
But if you navigate to such a URL with the BrowserWidget, if it's a MIME type the web engine can render, it will automagically decode the base64 and then render the resulting data.