Hi everyone, long time user going back to at least RB5 that has been working in python in the past few years (pandas, numpy, and little machine learning). The last version of Xojo Pro is 2017R2.1. Although, I didn’t really spend much time in that version or a few prior. That’s about the time I started into python.
I came back just in time to see Norman get the ban hammer. That’s a bit more drama than I had anticipated. I’ve met Norman at a few of the Xojo conferences, great guy, very engaging and has helped me with some things in the forums and NUG over the past, geez 2 decades? Yikes! Anyway, I’m not taking sides other than to say that it’s really too bad for all involved. A clear example of lose-lose.
Anyway, I do have a quick clarification. I have some things swirling around my head about the recent history that I might be misunderstanding. I get that Web2.0 is a complete rewrite. Easy. Got it. However there is also API 2.0 and from what I recall there was a rewrite of the “framework”. Is the framework change the same as API 2.0? I know that Phillip Zedalis and Thom (and probably others) have criticized the “new framework” so I’m curious if that’s also the 2.0 API. And relatedly, where does that stand?
It’s very confusing as I don’t have a linear timeline (trying to get caught up) and in a post today by Ulrich Bogun he said “The idea of the Xojo framework, which had not been discussed with the user community, caused a lot of backfiring until years later it was deprecated.” Which suggests that the “new framework” was abandoned. But it seems API2.0 is still thing so I guess I was conflating those two things. What’s the difference?
Thanks in advance for any clarification. I have a project in mind that Xojo might be a good fit for but I want to know what I’m getting myself into. I’m used to the Xojo drama but it does feel like it’s heated up. Or maybe I haven’t built up sufficient immunity.
From RB version 0 to the point iOS support was released there was the “Classic” API (or API 1.0)
iOS introduced the new “Xojo” framework which didnt require you to rewrite existing code in any targets but was the only one available on iOS. It could be used side by side with API 1.0
API 2 takes much of the classic API and renames properties, methods and, at one point even renamed events (which broke all kinds of code)
To follow up on Norman’s reply, “API” and “Framework” are synonymous.
The now old “new Xojo framework” was optional in that it was namespaced (Xojo.xxx), so you could opt to use it if you wanted but none of your other code would be affected. They got a lot of negative feedback about having to use a namespace, plus they never “completed” it - a lot of functionality was/is missing.
So now, beginning with 2019r2, they “switched” to another new framework, API 2.0, which was an evolution on the old/current API 1.0, where they changed hundreds of methods and method/property names (and event names which they later retracted). See https://docs.xojo.com/Category:Deprecated2019r2 for the extensive list. Most all items listed on those pages (the list takes four or five pages) have been replaced with a new one. Many of these changes are in name only - the functionality didn’t change one bit. A lot of them were changed to make everything involving an index to be 0-based.
Now, most of this is fine, except they basically force you to use the new one, as there’s no autocomplete, syntax help, or direct docs lookup for any of these deprecated items. So woking on an existing project in 2019r2 or later can be difficult. Also, upgrading/refactoring your code is tricky mostly because of the 0-based index changes (but there are a few others problems as well - Date to DateTime as one example).
Also, this first release of API 2 was just for core and Desktop/Console APIs. Web and iOS platform specific APIs weren’t affected. Now with 2020r1, Web has been “updated” to API 2 (along with a completely new platform). And supposedly the same will come for iOS.
So, eventually, everything will supposedly be on the same page, so to speak. But this still doesn’t help with legacy apps/code. Most of the thousands of examples/projects available outside of Xojo are basically useless for new projects and new developers (even many of Xojo’s own examples/documentation is still not fully updated).
That did help. I didn’t explain my issue very well, as to why I wanted to know this. That might have helped. I wasn’t confident whether I could start my project in the older version I have then update later. I didn’t want to get stuck in an abandoned framework. And since I wasn’t paying much attention to the changes after maybe 2015, I wasn’t even confident whether my latest version had new or old frameworks/API’s.
I’m still in the planning/pondering stage so I’m not in any hurry. Thanks again.
If you are planning on starting a new project (not reviving an old one), then you absolutely should start with the latest version of Xojo, as the new framework (and web platform) is here to stay, so why shackle yourself to a deprecated one?
Remember, you can download, develop and debug-run with Xojo all you want for free - you only need a license to build. So you could do some quick and dirty testing to see if Xojo will meet your needs.