I have been developing a compiler (S++…continuation of my original work) (not in Xojo) to compile Xojo Application project files to direct machine-code. The compiler is written in C and has command-line options for compilation. So far, I can compile most applications (some Xojo classes will take more time to replicate using C). But so far I am extremely happy with the results. I can compile applications to both Windows and Linux…and am needing some help with the mac portion (I usually avoid mac when possible and am not familiar with all the Carbon/Cocoa APIs). No bulky frameworks are necessary, and like old versions of RealBasic, the compiled applications are single file… no dependency required applications.
In the screenshot, the compiled file sizes are intriguing. Shown is a Xojo Build of a project file, the Xojo project file compiled using S++ to Windows and Linux, and the same project ported to Visual Basic 6 and compiled in Visual Basic 6. Still, my compiler creates the smallest of the compiled projects due to the direct machine-code translation (faster speeds than Xojo as well).
I wouldn’t imagine this would violate an Xojo EULA’s (nor am I distributing the compiler publicly currently). But I have some really great apps such as my iOS Builder which can compile native iOS apps on Windows/Mac/Linux…and I’d like to make this available to the public. Under a Xojo compilation, it somehow “violates the EULA”…but compiling a Xojo project using a compiler I wrote in C (although read from a Xojo project file) wouldn’t violate any EULA’s would it?
(If anyone is familar with Mac assembly code and would like to help in the S++ Compiler…It would greatly save me time having to lookup items I may find questionable.) But so far GUI apps, Console apps, and with a few flags set, exported modules in Xojo can be compiled to DLLs and SO files (Which Xojo does not offer natively).
Well, the majority of the work has actually been completed for years (since 2001) in my VB to machine-code compiler (vb compiles to p-code not assembly)…so now I’ve been changing the syntax to match xojo’s (which is very similar to VB) I decided to port Xojo to S++ because I have a number of applications written in Xojo which are truly EULA questionable (like the iOS builder which uses Xojo syntax and GUI builder to make ios apps and at build time the code is converted directly to obj-c and compiled using GCC (like X-code does) and can compile and sign iOS apps on Windows using cgywin). Besides the fact that many of my smaller applications have seen HUGE performance gains in the translation and compilation in terms of size and speed. I was curious as to how the iOS Builder violated the Xojo EULA since it does not mimic the Xojo IDE, nor does it use the Xojo framework…merely uses similar Xojo syntax to generate obj-c code and acts as a front-end for the GCC compiler to create native iOS applications…and included a “Made with Xojo” emblem as stated in the “requirements for other language development tools.” I’m not trying to step on any toes or compete with Xojo… I love Xojo (is it obvious?). I merely want to distribute some of my more “questionable” software without any question of EULA’s and such. Another project which Geoff is currently reviewing is my SimScript Plugin Designer which creates cross-platform plugins (like OCX/DLL/DYLIB/SO files) in a small/single-file format that is compatible on all machines for use with Xojo applications…allowing GUI and non-gui interfaces for the host Xojo application, using Xojo-style syntax as requires next-to-no learning to use for the seasoned Xojo Developer. (There are recents posts in the forum here about it). Plus, Xojo doesn’t offer native plugin capabilites…led alone cross-platform single-file formats.
But if there isn’t too much hype on “conflict-of-interest” I may make the project open-source (to a small select group possibly). But this would pose issues since anyone can download Xojo freely and save project files, then they would use the S++ compiler to compile xojo applications without paying for Xojo (nor using the Xojo framework at all…only the designer and IDE to generate the project file)… This part I have an issue with making it open source as that would be a conflict in my interest of Xojo and the respect that I have for the Xojo development team as a whole. So far sockets, all controls (including openglsurface), windows, and the majority of classes exist in S++. With the introduction and conversion of my latest SimScript compiler and interpreter, “XojoScript” capabilities are also possibly (without using any Xojo or XojoScript framework at all). But I need to work on the Introspection and class-by-name (ie TextField(Control(i)).Text) and property methods. The codes in place, just making the Xojo-syntax play nicely with my compiler is the key at this point since the compiler is complete itself and has been done for years (it was used in my Xojo-like “Simulanics S++ Studio” for years until I stopped producing the studio…and relied heavily on Realbasic). It can use libraries as well and embeds them at compilation
I can share the original IDE and compiler for Windows if anyone is interested (does not use Xojo-style syntax in the original IDE but is quite easy to learn and migrate to). At this point I mostly need someone to “fill-in-the-blanks” within the mac compiler directives of the C code as has been done for Windows and Linux already. Then the S++ compiler itself will be cross-platform for all 3 systems and compile in 32 or 64 bit natively. I could integrate the iOS Builder for iOS software and my Android framework for Android compilation as well. I love Xojo, but the EULA sometimes complicates development for some applications even though they pose no “threat” to Xojo itself… thus why I’ve been diligently working to “clone” xojo without the need for Xojo in-effect.
Are you reading the binary files? Or is it just xml/text files that Xojo creates? Because if I remember correctly, users cannot save into anything but binary files unless they are registered paying users. If thats the case, Xojo is still protected against people using the software in a way that you didn’t intend.
[quote=58290:@Matthew Combatti]Well, the majority of the work has actually been completed for years (since 2001) in my VB to machine-code compiler (vb compiles to p-code not assembly)…so now I’ve been changing the syntax to match xojo’s (which is very similar to VB) I decided to port Xojo to S++ because I have a number of applications written in Xojo which are truly EULA questionable (like the iOS builder which uses Xojo syntax and GUI builder to make ios apps and at build time the code is converted directly to obj-c and compiled using GCC (like X-code does)
Xcode uses LLVM now - much better code quality & a much better tool in general
I think there are two sections of the EULA that would apply
If you are creating a development tool, you will include the “Made with Xojo” logo.
You agree that if you and/or Xojo, Inc., believe that any applications you create with the Xojo IDE are designed to aid in the development of software using a language other than Xojo, said applications must include a “Made with Xojo” logo in the application’s about box and splash screen and must adhere to the rules that govern the use of said logo. Contact Xojo, Inc. to obtain the logos and usage guidelines.
Not sure about others as there doesn’t seem to have been much reverse engineering of frameworks going on.
Maybe the binary file format if I read posts correctly.
I don’t think we’ve actually granted anyone a license for that - maybe Thomas - but I don’t really know for sure.
Xojo is not used at all in the S++ compildon’t everer, only pure c-code. The compiler translates a xojo project file directly to assembly code.
According to an international copyright/patent attorney:
Reviewing federal law, the Xojo binary project format may not be okay to use publicly should the compiler end up in public domain; as the binary format is specific to Xojo only. XML, on the other hand cannot be patented or copyrighted as it’s a markup language used for interoperability (data exchange). US Supreme court also ruled that a program language itself cannot be patented or copyrited. The Xojo IDE and framework only, may be copyrited and patented as its a protection of a process or specific creative work. Sun systems recentlfory lost a 1 billion dollar case against Google in the final ruling that although Google replicated Java, they did so on their own accord with no physical java source code included. The replicated Java source code was specific only to Google’s Java version. Java was suing for the right of a language itself. Supreme Court decided that every language is based on another, and copyright and patent laws prohibit protection of abstract ideas; Languages themselves being abstract. You can copyright and patent a specific can-opener and parts to make a specific one, but the idea of can-opener cannot be patented or copyrighted; thus cannot prevent creation of more advanced or different can-openers, based on other designs. Although your compiler directly compiles Xojo projects, you are not using the Xojo IDE or the framework itself during any portion of the compile process. Your compiler is merely compiling a program using a specific process unrelated to Xojo or the framework. Your compiler is a specific creative work specific only to you, using the widely open free C compiler to generate assembly code from a Xojo project template. The S++ compiler would not be in violation of the Xojo End User License Agreement. If you have further questions, you may call ******** or email me directly at ****@*****.
I was curious, but it’s good to know…I don’t produce development tools to compete with Xojo… Only make applications more useful and expendable (like the Simscript Plugin Designer that Geoff should have received yesterday for review of the beta when he has time). Like was said in “Field of Dreams,” “If you build it, they will come.” Plugin design in pure Xojo syntax or the ability to create cross-platform libraries has remained unavailable since the creation of Xojo. I don’t aim to steal users from Xojo, rather draw them further in, by making solutions that work. I have whole inboxes of 100’s (maybe even 1000+?) of developers whom were leaving Xojo over the years, “unless a solution appeared,” which in almost all instances I provided one, or migrated an external solution to Xojo to meet their needs. In almost all cases, done out of the goodness of heart alone and for the experience. In the end, generating further income for Xojo, and expanding my personal code ‘arsenal’. Like I’ve said, I’ve always aimed to respect the developers of Xojo and Geoff…which is why I always ask for their input and opinion…even if it conflicts with the demand of the public with “controversial” projects…even when Xojo is not used as the development platform. Many of my projects stay “in the dark.” Such as while awaiting iOS support, I created my own in March 2012, for personal use. Perhaps at a Xojo conference one of these days, I can display some of my controversial projects, for “see in action” only display. Such as my custom mysql database classes that allow mysql database access without the Xojo database license, or desktop to console app converter (without console license)… using basic system api calls and stdin/stdout when an app fires the app.open event, destroying the app gui…triggering console access (all api no hacks or reverse engineering…just like VB6 implements console apps.)
(Awe thanks guys…it has been a pleasure doing side works for you all as well) Let me get all the rest of my “in the dark” projects together and fully cleaned up and sparkling before I submit any resume :-p I enjoy helping you all currently, and that would take time away from all the great people I meet, working with you all reaching your own goals, and all the new comers that need one-on-one friendly personal help