SimScript Dynamic Plugins 95% Completed

Looking for opinions/comments/suggestions…

A software project few have seen in action, is almost complete. Similar to Einhuger’s Lua plugin, SimScript is completely class and module based for seamless integration into any application.

What is SimScript?

SimScript for Xojo is a scripting interface ported to Xojo to add functionality to the Xojo language, and allow the creation of plugins with ease. Xojo itself contains a powerful scripting language called XojoScript. This scripting language is “used to dynamically execute code within a running (compiled) application.” XojoScript itself, although powerful, can only access properties and methods of the class or control which has been contextualized by the specific XojoScript in execution.

So what does SimScript do then?

SimScript can be used as a sole scripting language like that of Perl, PHP, Ruby, and XojoScript; Except, it allows for complete interaction between controls and XojoScript seamlessly. A developer can use the SimScript Plugin Designer to rapidly build dynamic GUI or script-based plugins for their applications. Custom controls, API’s, and OLE’s can also be used within plugins. These plugins are compiled into a small filesize format for quick distribution, or small file downloads (like compiling an entire Xojo application in only a few Kilobytes!!!). Rather than releasing a new version of software with minor fixes at a large filesize, a plugin file can be downloaded or loaded directly from the web, to change whatever needs to be changed within the application; Or add functionality. To further protect your applications, authentication/software activation may be plugin-based to deter persons from pirating your software. When a vulnerability is found, or a set of product keys is revoked, this can quickly be added to an authentication plugin to deny access to the pirated individuals. In this method, internet access would be required for your application to obtain the encrypted plugin code via the web at startup, and disable the application which is pirated.

Plugins utilize a Developer Key, specified by the developer during development, to encrypt the compiled plugin to even further protect the software from malicious users (and prevent end users from accessing Xojo or XojoScript). A SimScript Plugin can access, call, and exchange properties, variables, methods, controls, windows, and any class which has been “Pluginized.” By using the Pluginize functions, the plugin engine then knows which controls and data has permission to be accessed by a loaded plugin. If the developer needs to allow plugin development to the end user, the “PluginPermissions” can be set to allow access to certain features of the SimScript language. For example, if FileOperations haven’t been enabled, then the plugin engine will prompt the user that the commands are unrecognized (if attempting to write/read files using the language). All permissions are restricted by default to raw-text based plugins, and must be enabled in your application to allow access to FileOperations, Registry, Shell, etc. With all permissions in default, the SimScript Plugin Engine only has access to XojoScript based capabilities. It is important that a Developer keeps the application’s Developer Key a secret to prevent violating the SimScript and Xojo EULAs. Xojo exclusively prohibits developers from creating software which allows the end user to create dynamic stand-alone applications, or gives the end user access to Xojo (in effect) without buying a Xojo license.

SimScript utilizes Xojo syntax, or much of PHP/C+/JavaScript syntax (can be used inversely or mixed as well!)

The Designer features:
•Visual Plugin Designer
•Restore Plugins if the Designer Crashes upon Re-opening the Designer
•Rapidly Create Dynamic Interfaces for Xojo Applications with event handlers or create Script-based plugins.
•Give XojoScript access to Controls, Variables, Windows, and Methods in Compiled Applications without contexting.
•Load Plugins from Compiled Code, Raw Text, or from the Web.
•Test and Debug Plugins in your Applications before compiling, using the SimScript Desiger and Debugger.
•Real Studio or Xojo Style Layout options for Library and Inspector (Controls & Properties)
•Other features not mentioned…

Here is a few screen shots of the SimScript Plugin Designer, and a very basic Test-Harness application. In the Demo, the test harness is running from the Xojo Debug mode, and is linked to the SimScript Plugin Designer’s debugger as well for debugging of an application in Xojo while debugging plugins at the same time!



When will be available ?

I will have a beta for the public soon. I am awaiting the graphics designer to finish the icon and graphics sets for the control library and menu items. Currently, the icons and graphics in use are simply place-holders. If you would like to join as a beta tester please PM “Simulanics” (me) from your account at:

http://www.xojodevspot.com

Or, if you have already selected Beta Tester in your account settings there, you will automatically receive access to the beta pages, and a confirmation e-mail, when the beta is released for the SimScript Plugin Designer.

Eventually, the SimScript Plugin Designer and framework classes (for integration into applications), will be available at http://www.simscript.org.

Wow, this looks great. How much will it cost and does it have to be used for developing plugins but can it be used straight from within Xojo IDE, for your compiled apps.

THANKS

Btw what theme do you use for which version of windows (presuming that these screenshots or of Windows).

THANKS

[quote=52928:@Oliver Scott-Brown]Wow, this looks great. How much will it cost and does it have to be used for developing plugins but can it be used straight from within Xojo IDE, for your compiled apps.

THANKS[/quote]
The SimScript Plugin Designer is a stand-alone application that is able to “hook-into” your Xojo Applications during debug builds or to a stand-alone application with plugin debugging left enabled. Applications which have plugin debugging enabled can only interact with the SimScript Plugin Designer Debugger if the StageCode for your Xojo application is “Development” when compiled (Alpha, Beta, Final will not permit SPD debugging). This prevents end users from maliciously manipulating your final applications, or gaining access to Xojo functionality. It can be used with or without the Xojo IDE. Like Xojo, the IDE will be free to use and learn to design plugins with; licensing is to be determined.

Plugins do not necessarily have to have an interface to be designed from within the SPD. One demonstration not quite yet ready for public display until the first beta release, is using the SPD for Web Edition, which opens the entire world of dynamically manipulated pages and backgrounded CGI (without all the extra coding required) access to the SimScript language, PHP, Perl, Ruby, and a myriad of other console options. This demonstration is a Web App based “Desktop Operating System” coded in Xojo. All of the system apps are coded using the SPD. Without having to recompile the webapp or disturb its availability to users, using SPD the “system” apps can be modified, or new ones created/added.

[quote=52929:@Oliver Scott-Brown]Btw what theme do you use for which version of windows (presuming that these screenshots or of Windows).

THANKS[/quote]

It is a custom windows theme I designed for Windows 7 on my laptop. Mac and Linux are virtualized for cross-platform testing. The login screen is even more spectacular :slight_smile:

Very cool theme. I wonder if I could please use this theme for my PC. I have Windows 8 btw. Thanks. What do you the old version of RealStudio for. Testing? I see that in your taskbar. Can I use SimScript to give my users scripting capabilities, with access, to only parts of the application?

Thanks

[quote=52949:@Oliver Scott-Brown]Very cool theme. I wonder if I could please use this theme for my PC. I have Windows 8 btw. Thanks. What do you the old version of RealStudio for. Testing? I see that in your taskbar. Can I use SimScript to give my users scripting capabilities, with access, to only parts of the application?

Thanks[/quote]

I use Real Studio for CGI/Console applications or applications which require MySQL/SQL database access since this was built-in to the license I have for Real Studio. Also, many users still use Real Studio, so classes, modules, and source code I create for the community, I try to make compatible between Real Studio and Xojo.

Sometimes a helpful

#if RSVersionString = "2012r2" '(etc) #else #endif
is required to help the compiler allow any of the mentioned I make compatible for users between studio versions.

SimScript can give end users access to create raw-text based plugins (can be edited in a text editor) and gives functionality much like that of XojoScript, only more control than XojoScript (but enough to create stand-alone applications or wreak havoc on your application). The developer can design their own plugin script editor which is provided to the end user, and simply use the TextOutputStream to save end user plugins for the application. SimScript has LoadCompiledPlugin(fname as FolderItem, DeveloperKey as String) and ExecuteSimScript(strScript as String) for two primary functions to fire a script. In the case of a raw-text plugin, the user can press a button to execute the script, or the developer can introduce a selection method (ie combo-box/menu) which loads the raw-text and executes the script.

For example:

//Anything outside of script tags will be output directly
<?sim
print "\
Anything within script tags will be executed."
?>[/code]

Special characters can be used such as \
 for newline or I could have put:

[code]print EndOfLine + "Anything within script tags will be executed."[/code]


or used any of the common programming language methods such as CRLF, CR, \
, chr(13), NewLine, EndOfLine.
SimScript began as a theoretical language I developed in college to make developers of many languages adapt more quickly and be more productive faster. It began as S++, (Simple Scripting Standard), and there still exists an environment for Windows I developed to compile Desktop, Console, CGI, or WebApps (long before Xojo/RS did so), and looks much like Real Studio did. SimScript is meant to recognize not a single syntax, rather many, and allow for multiple languages to be used together simultaneously as if a single language had been used. (I can send you a copy if you are interested in the Simulanics S++ Studio. last version 2012. In 2012 the language began to solidify into a single language for a company, which defeated its purpose so I discontinued its development after the endeavor.)

Other scripting tags for the Xojo port include (ie):
[code]<?XScript DemoDataList [lstName]
//Introduces a Xojo function based on a control context (autogenerated by the SPD)
//using Input("we can get variables, run other events/methods, or execute a simscript/xojoscript from within the xojoscript or return a value to a declared xojoscript variable. This method allows for seamless interaction between all controls, window, xojoscripts, and simscripts.")
XScript?>

//Input is a XojoScript specific command only.

and

<?Event lstName_Change //used for control events Event?>

Functions, Declares, and Subs, as well as Frames and Proc’s can be used as well and called using the name directly, or like in Xojo using
“Call”.

I have an entire Language reference and help devoted to explaining the concept and use of the language, which most of it is auto-generated by the designer. I won’t get any lengthier here or get into dynamic HTML/Web based content :slight_smile:

[quote=52962:@Matthew Combatti]I use Real Studio for CGI/Console applications or applications which require MySQL/SQL database access since this was built-in to the license I have for Real Studio. Also, many users still use Real Studio, so classes, modules, and source code I create for the community, I try to make compatible between Real Studio and Xojo.

Sometimes a helpful

#if RSVersionString = "2012r2" '(etc) #else #endif
is required to help the compiler allow any of the mentioned I make compatible for users between studio versions.

SimScript can give end users access to create raw-text based plugins (can be edited in a text editor) and gives functionality much like that of XojoScript, only more control than XojoScript (but enough to create stand-alone applications or wreak havoc on your application). The developer can design their own plugin script editor which is provided to the end user, and simply use the TextOutputStream to save end user plugins for the application. SimScript has LoadCompiledPlugin(fname as FolderItem, DeveloperKey as String) and ExecuteSimScript(strScript as String) for two primary functions to fire a script. In the case of a raw-text plugin, the user can press a button to execute the script, or the developer can introduce a selection method (ie combo-box/menu) which loads the raw-text and executes the script.

For example:

//Anything outside of script tags will be output directly
<?sim
print "\
Anything within script tags will be executed."
?>[/code]

Special characters can be used such as \
 for newline or I could have put:

[code]print EndOfLine + "Anything within script tags will be executed."[/code]


or used any of the common programming language methods such as CRLF, CR, \
, chr(13), NewLine, EndOfLine.
SimScript began as a theoretical language I developed in college to make developers of many languages adapt more quickly and be more productive faster. It began as S++, (Simple Scripting Standard), and there still exists an environment for Windows I developed to compile Desktop, Console, CGI, or WebApps (long before Xojo/RS did so), and looks much like Real Studio did. SimScript is meant to recognize not a single syntax, rather many, and allow for multiple languages to be used together simultaneously as if a single language had been used. (I can send you a copy if you are interested in the Simulanics S++ Studio. last version 2012. In 2012 the language began to solidify into a single language for a company, which defeated its purpose so I discontinued its development after the endeavor.)

Other scripting tags for the Xojo port include (ie):
[code]<?XScript DemoDataList [lstName]
//Introduces a Xojo function based on a control context (autogenerated by the SPD)
//using Input("we can get variables, run other events/methods, or execute a simscript/xojoscript from within the xojoscript or return a value to a declared xojoscript variable. This method allows for seamless interaction between all controls, window, xojoscripts, and simscripts.")
XScript?>

//Input is a XojoScript specific command only.

and

<?Event lstName_Change //used for control events Event?>

Functions, Declares, and Subs, as well as Frames and Proc’s can be used as well and called using the name directly, or like in Xojo using
“Call”.

I have an entire Language reference and help devoted to explaining the concept and use of the language, which most of it is auto-generated by the designer. I won’t get any lengthier here or get into dynamic HTML/Web based content :-)[/quote]
I am currently developing a game making/software making tool. Would simscript work well for this or should I just use XojoScript?

Thanks

[quote=53060:@Oliver Scott-Brown]I am currently developing a game making/software making tool. Would simscript work well for this or should I just use XojoScript?

Thanks[/quote]
I will add you to the beta test and you can decide :slight_smile: pm me at xojodevspot.com username simulanics

Very good work Matthew! Here are some question (and a short introduction of me) !

I made the jump from vb6 to VB.net and now Xojo! I have developed amazing software in the past few months with Xojo and I am looking for powerful extending capabilities.

I made an ERP application which allows my users to create scripts using XojoScript (which is very powerful) but I miss the possibility to allow my users to design their own forms in combination with Xojoscript. (I miss the visual design combination with Xojoscript for my users)

Will this plugin allow my users to create for example forms, buttons and scripts and interface with my compiled application?

That would be great and I am hoping that I can somehow support or contribute to this project!

Please let me know if I can beta test or support/explore this project.

[quote=92901:@Pieter van den Bosch]Very good work Matthew! Here are some question (and a short introduction of me) !

I made the jump from vb6 to VB.net and now Xojo! I have developed amazing software in the past few months with Xojo and I am looking for powerful extending capabilities.

I made an ERP application which allows my users to create scripts using XojoScript (which is very powerful) but I miss the possibility to allow my users to design their own forms in combination with Xojoscript. (I miss the visual design combination with Xojoscript for my users)

Will this plugin allow my users to create for example forms, buttons and scripts and interface with my compiled application?

That would be great and I am hoping that I can somehow support or contribute to this project!

Please let me know if I can beta test or support/explore this project.[/quote]

Hello. The SimScript project for Xojo has been put away into a private use library as Xojo, Inc. did not want it being available to the public. The reasoning was that it violated the EULA by allowing developers (NOT END USERS) to create plugins for their existing software to extend its capabilities. According to the EULA, you may not provide access to XojoScript or the framework to the END USER of your software (which strictly it only allowed the developer of the particular software access to create plugins…). So, you may want to rethink your software before further development since under your current scheme you are providing your end users direct access to XojoScript to extend your software, and violating the Xojo EULA. But to answer your question, yes, SimScript is capable of creating forms and entire user interfaces as cross-platform equivalents of an ActiveX control for Windows… In a single file plugin format. SimScript’s development in the LiveCode and Java communities has continued to thrive. As great at Xojo is for rapidly creating software, in terms of extensibility none exists without extensive coding as was done for SimScript (and you will be denied the right to do such), so you may wish to reconsider staying with .Net, which is also cross-platform when using the Mono framework, and has no stipulations or limitations as to what you may develop.

Is that what you are speaking of? It does not prohibit it, it says the sole purpose. So, you are certainly allowed to provide your end user access to XojoScript to extend your application, as I read it. Now, as to your SimScript application, I do not know, but your above statement:

Seems to be incorrect?

I have an application in mind that SimScript would be exactly what would make the project mind blowing and different to anything else that is currently available. Surely as a community we should be able to get Geoff and the Xojo Inc lawyers to relook at this as what you are doing with SimScript is to allow “developers” to enable to make their application extendable by the end user which we should be aloud to do. I cant believe the Xojo Inc actively want to restrict developers from producing brilliant software with which they can credit Xojo for, I am guessing that the restriction is to stop abuse and circumvention of using Xojo without a licence etc.

Please please please can Xojo Inc look into this as without it my project idea will have to stay in the cupboard and I am sure that many other developers in the community would benefit from using SimScript.

By the way in the UK it is possible for a business to have a side letter the supersedes a EULA, this may be a way for Xojo Inc to allow you to release SimScript.

I think you may allow access to Xojoscript as a Macro it has been intended to offer your users to create some functionality or data-processing/extending for your application. Just watch the video: http://www.youtube.com/watch?v=ws7dAD-xNAM where the weekly webinar explains the usage of XojoScript. This is definitively also for end-users… It does not violate the EULA

"So, you are certainly allowed to provide your end user access to XojoScript to extend your application, as I read it. "
I think I agree with Jeremy here.
I think and just judging by the webinar that Xojo Allows you to have via the Scriptrunner the ability to have end-users to design code (but only script code)

Now I need as a result of that my users to design UI with for example only the use of Script code. I think this is allowed if end users may code in Xojoscript. All sound very logical xojoscript will result in a requirement of small components designer.

I don’t know exactly why your software voilates the EULA? I think it is a way of extending the usage Xojoscript (end user targeted) and not Xojo (developer targeted). It will benefit our applications to be more powerful but only with the purpuse of extending the application and not creating a competitor software for Xojo. Developers still require Xojo and if End-users do not sell it as a "xojo competitor software) then I think this plugin is legal.

I think this project is a great opportunity for Xojo too. Please tell us where it exactly voilated or what was stated by Xojo…

Hope this project can be revived.

I will use it for example to allow my ERP for customers be extended so it increases the life cycle. It will not be sold as only a code IDE or Xojo competitor but as main purpose to extend my ERP software for End users.

Keep me updated and I hope the xojo team can look into this.

Knowing how on the ball Matthew is I am sure he has looked into this extensively and tried to get Xojo Inc to allow it but also I would imagine that what he is doing is probably sailing somewhat close to the wind but inivators have to do this otherwise we just get the same old cr*p. I too need the visual designer to allow specific types of end users to be able to create extensions to the project with the ability to code as well if they wish to. I want to also add the ability to create a wizard that will take what they have created visually and then automatically create code behind it to give the basic structure of interfacing to the project itself. Again like you I have no intentions of allowing anyone to write code to compete with Xojo but to only allow the extension to my project itself.

I think it cannot be sold standalone but I do think it can be sold as an Xojo plugin. :wink: I will email Xojo. I think Jeremy did a great job and hard work and all things that can contribute to Xojo is win-win…

From the webinar Xojoscript usage is legal of course to be used as an extending feature
now an IDE for Xojoscript should also be legal…I cannot find any reason why not?