This means if I want to write universal code that even touches TCP, I need to write a universal wrapper class to unify Global.TCPSocket and behind a single API.įor me, this is not okay and severely limiting my adoption of the new framework. If I'm trying to write universal code, there is currently a lot of features available in the new framework that is only available in iOS, such as Xojo.Threading and. Platform parity is a bigger concern for me. The new framework was introduced in 2015r1, gained some platform feature parity in 2015r2, and sat largely unchanged for 2015r3. What is not to be expected is the rate of improvement. The new framework is woefully far behind the classic framework, but I'm not too concerned with this. There are two kinds of feature parity in this case: framework-to-framework and platform-to-platform. Xojo took the comparatively easy way out at our expense. It would have been much more challenging to come up with ways to deprecate and fix the classic framework. Unfortunately, the chosen solution is very much "throwing the baby out with the bath water." Rather than introduce an alternate API for FolderItem.Item - such as FolderItem.Child(ZeroBasedIndex As Integer) - it was decided to ditch everything. This is because Text-to-String will always work, but String-to-Text will fire an exception if no encoding is defined. For example, Text into String has an implied conversion, but going in reverse requires an explicit String.ToText. There is very little in terms of implied conversions. The new framework is very, very explicit. String can be a particular mess, which is why Text was introduced. There are a number of problems like this. This can't simply be changed to a 0-based index because it would break code silently. The most common example is FolderItem.Item being a 1-based index. The classic framework has a number of problems. So if you have to rewrite your whole project anyway, why not look into alternatives? Xojo (the tool) is probably still your best choice if you need cross platform, but Xojo (the company) should not be giving their users an excuse to look at the competition. Jared and I have spent a few days porting a medium-sized project and eventually just gave up. And the community is expected to do that for their own projects too. That's months that, quite frankly, Xojo can't spare. Even if done in smaller chunks - which is probably what will happen - it will require months of work. The Xojo IDE, for example, is so large and complex that it is likely impossible to port to the new framework. Porting was and still is my primary concern. This becomes especially complex for lines such as Mid( String, InStr( String, + 1). You can't just swap Mid( String, 1) for Text.Mid( 1) because you'll get an incorrect result that can't be caught by the compiler. It's a time-consuming task that requires analyzing and understanding every line of code. The problem is that porting classic code is no simple task. In my mind, the classic framework is already end-of-life and we're on borrowed time. I know the intention is to keep the classic framework around as long as possible - ideally at least ten years - but at the rate Apple deprecates and moves forward, I fear the classic framework will reach its end-of-life moment sooner than preferred. Asking us to replace our entire codebase is a very bad idea, even if we've been given an indeterminate grace period. Primary concernsĪs a whole, I believe the new framework was a bad idea filled with lots of small good ideas. There's no sense in sticking my head in the sand and pretending it isn't happening. So my involvement with the new framework is about equal with the rest of the community, aside from the fact that I was arguing against it for much longer.ĭespite my concerns, the new framework has happened and there is no going back now, so I'm making every attempt to learn and adopt it. By this point in my tenure with the company, some of the engineers were largely ignoring my input so when the API proposals came around, I rarely contributed or even read them. Work on the new framework began while I was still with Xojo, but I had practically zero input on it. But I've got some things I want to write down regarding the new Xojo Framework. I'm not looking to undermine or belittle anybody's work. This is going to be a difficult entry for me to write, because I'm still on good terms with Geoff and I want to remain civil and fair.
0 Comments
Leave a Reply. |