Xojo Web Framework 2.0

Anyone else incredibly excited about 2.0? This is how it’s being described by Xojo Inc.

“Xojo Web Framework 2.0 is a complete rewrite of the web framework bringing new controls, new features and a brand new modern look for your web projects.”

I wonder what specifics that contains? Wish I could afford to fly halfway around the world for Xojo Connect. Would also love to know the release date!

There was another thread showing a fair number of feedback cases about new features and corrections, marked implemented. I can’t find it this morning. So, yes there is cause to be optimistic and excited about Web 2.0.

Let’s not get carried away however. Web 2.0 will be at least as large and disruptive as API 2.0 was when 2019 R2 came out. It is not going to be smooth from the get go. So realistically, there will be much moaning, complaining and resistance (we are collectively very good at these behaviours as evidenced by the continuing complaints about API 2.0 based on preferences, not functionality.), coupled with real issues, regressions, bugs and incomplete features. Nonetheless, Web 2.0 will be for sure a much needed step forward for web applications made with Xojo.

I can’t be at Xojo.Connect either. I will avidly read the forum posts and blog posts on the Web 2.0 topic - and everything else happening at the conference.

Yes. Yes, I am.

Indeed.

I was really excited until I started using PHP while waiting. Xojo just has sooooo many bugs that I worry that it’ll take years before the bugs are worked out. Xojo just can’t keep up. :(. I’m sure Xojo Web 2.0 will rock someday…

I don’t see why you say that. There may be some bugs, but that many ?

Php and Xojo Web cannot really be compared.

Php is extremely spartan, and building an entire web app takes a loooot of work the Xojo framework takes care of by default.

Besides, there are many features that are not possible in pure Php, so it is necessarily Php + JavaScript + CSS to even get close to what Xojo Web does without coding.

Cannot wait to see what Xojo has come up with. Or should I write “Greg has come up with” ?

[quote=474063:@Michel Bujardet]I don’t see why you say that. There may be some bugs, but that many ?

Php and Xojo Web cannot really be compared.[/quote]

Yes just look at feedback. When i was using the heck out of Web 1.0 I ran into many WebContainer bugs that I wondered if anyone really used Web. For some bugs, it takes years to get fixed. Like http://feedback.xojo.com/case/45691 which took shy of three years. I’ve spent so much time debugging issues like that. in the meantime, I haven’t found a PHP bug.

The feature set of Web 2.0 that Greg demoed at past XDCs does look amazing but it has to ship someday. Then bugs have to be fixed on a timely basis. Time will tell.

my short answer is : optimistic

for 2 years I’ve stopped developing new web apps in xojo… so yes, looking forward with high expectations towards 2.0 in… this could dramatically increase my productivity and bring me back to xojo

Web 2.0 has been a long time coming and I’m excited to finally get to play with it and see what they’ve done. If I’m being honest the WebVersion of Xojo is the only reason I still use Xojo. Otherwise I would rather write code in more robust languages that supports nullable primitives, lambdas, generics etc… But Xojo Web’s session management, speed of development, and capacity to low-level customize when needed has kept me around! If Xojo can make Web2.0 solve the glaring issues around styling, positioning, responsiveness, etc… then I can see myself using it well into the future. The speed at which I can deploy a good looking WebApp is pretty remarkable and I have not found anything to match it.

I still have a variety of concerns that I’m not 100% sure are being fully addressed. They really need a Responsive Column-Based approach to control layout. This is how most modern UI frameworks (including bootstrap) do controls: Position.S(12).M(6).L(4).XL(3) or HideOnMediumAndDown. It’s easy to understand and easy to design good-looking layouts across mobile to very large screens all in a single design. While they showed off a fluid (flex-box) style solution and talked about auto-layout coming eventually this doesn’t really cover the ease and use of a column based design. If I have to hack the framework again to make this work I will, but 90% of my layouts utilize a column based approach and getting this baked in would be ideal.

Most of my Xojo WebApps have a single WebPage and everything else is just ContainerControls dynamically embedded inside ContainerControls. Making sure the new Listbox control can have ContainerControls as an option is essential to making this easy for users to design. They mentioned “Custom Column Types” but this seems like unnecessary complication for the Xojo users compared to using the existing ContainerControl as a row option.

I’m also hoping that transitioning most of my existing WebControlWrapper controls over to the new framework will be not overly cumbersome. I’ve built out quite an extensive library of custom controls.

The good news is that I have quite a bit of confidence in Greg’s work on the new Web2.0 Framework. He’s definitely been getting an earful of feedback over the last 6 years from me especially at XDC and it seems like he’s taken a lot of our feedback to heart. The performance improvement shown last XDC alone should be enough to be ecstatic about!

I’m really looking forward to trying it out. I haven’t used Xojo in a couple of years except for a couple of apps to parse text files. I’ve never been fond of the web framework for various reasons. I guess I’ve done the same as Hal and invested my time in Vue.js/Node.js and it would be almost impossible to switch to Xojo at this point, but I keep watching and waiting for the first release.

Xojo’s coordinate-based layout system and the nature of flowed content has always been at odds with each other. This was one of my big hangups from day one when I started prototyping. Even today, I don’t know how somebody would design a drag-and-drop editor that works with today’s responsive design standards.

I’m very curious what exactly has been done, and not from a “they should have done it that way” point of view either. The original web edition is roughly 10 years old and web development has changed A LOT since then. What was bleeding edge back then is ancient by today’s standards. So some modernization is a good thing.

My concern is actually that WE2 won’t go far enough actually. Don’t get me wrong, the changes being made are good and necessary changes and the product will be better for it. But my fear is that they are skating to where the puck has been, instead of where the puck is going to be. Personally, I believe a modern Xojo web app should be a progressive web app, utilizing service workers for caching, compiling user code to javascript, running everything on the client… that sort of thing. Hell, maybe even some web assembly. Compiling a Xojo web app should spit out some html, css, javascript, and images that can be uploaded to a CDN and used. I’ve got ideas about solving the client-to-server problem too, but I’m trying not to go too off the rails here.

I’m not trying to be a downer here though. WE2 sounds like it’ll be a great step in the right direction. I just want even more from it.

As many of you know, I’ll be speaking about all of this right after The 2020 Xojo.Connect Keynote in about 49 days (yikes!). Travis and I were talking today about how excited we are getting about using the new stuff ourselves for several internal projects that have been waiting for the new web framework to be done.

With regards to layouts, we’ve designed the new framework to support multiple layout types with the possibility of adding new ones in the future. For instance a Fixed layout will still be there by default, but we’re also targeting Flex(-box) for the initial release. We’ll also be able to support a constraint based system when we want and I see no reason why we (or perhaps an adventurous 3rd party developer) couldn’t make a responsive column based layout type.

We’ve done some experiments in this area already with mixed results. The biggest hurdle has been figuring out how to make it “just work” like the rest of Xojo without a lot of user intervention involved… and if there’s enough demand for such a thing. PWAs take many forms these days and it may be something we ease into as well.

Can’t wait to see everyone in Nashville so we can show you what we’ve got!

Oh of course it’s not without the challenges. There was plenty of failed experiments with 1.0 too.

I am also very much looking forward to seeing it at the conference!

I’m specifically interested in finding out a couple of things which you shouldn’t feel compelled to answer now since there are no specific official announcements about the underpinnings and I won’t try to compell you to do any such thing :wink: In case you happen to have thoughts about it though I’m going to write them out :wink:

It would be awesome if the new system used a web socket for back back and forth communications rather than the combination of server events like things and rest type connections. That would speed up the things I do a lot. A more or less http/1.1 capable server with keep alive support would also make things faster.

It’s also become important to me to have some stream level access to the sockets or some wrapper object of them. Specifically I need to be able to serve up large files like movies which with the current system requires that they be loaded entirely into memory which just isn’t practical for many things. If I could tell you the size of the content and then write directly down the socket that would make that trivial. Or mostly trivial since in order to support things like HTML5 video you also need to support chunked encoding which if I had lower level access to the back and forth I’d be able to implement myself if it wasn’t part of the built in server. Stream level access would also let me do things like multi-part mime replace video streams and other such persistent connection requirements. Implementing your own server events stream or mjpeg stream is not possible at all with the current system and running a separate server on a separate port just isn’t an option for me either.

I hope that some plugin API has made the cut even if it’s different from the current system. I make extensive use of that with the current system and will probably want to in 2.0 regardless of how terrific everything else works. I want quite a bit of the logic for manipulating specific interfaces to be in javascript and not requiring a back and forth to the server for everything.

I’m also very interested to see how handling of style data has changed! I recall that doing something dramatically different with that was one of the things you were looking forward to re-doing with 2.0.

[quote=474228:@James Sentman]It would be awesome if the new system used a web socket for back back and forth communications rather than the combination of server events like things and rest type connections. That would speed up the things I do a lot. A more or less http/1.1 capable server with keep alive support would also make things faster.
[/quote]
We experimented with WebSockets a while back, and while it did offer some speed improvements, they were not as significant as I would have liked. We are getting a much larger boost from the new http/1.1 engine in the new web framework for instance. We are also looking at http/2 and watching http/3 for the future.

Interestingly enough the framework doesn’t actually try to load the whole file into memory if you use a disk-based webfile. The problem is that the app loads data onto the socket a lot faster than it’s sent to the client. I usually suggest that you put videos on a protected CDN to offload that responsibility from the web app anyway though.

For better or worse, the WebSDK is being completely overhauled for Web 2.0. I’ll talk briefly about that in my session and will be around to answer questions as needed of course.

I’m right there with you. We’re getting Bootstrap 3 instead of 4 which will make it dated from the start. And all the modern web UI frameworks utilize the column-based approach (including bootstrap) yet they’re focused on Flexbox… it makes me concerned they don’t really understand modern web layouts and design. If they’re worried about IE explorer support with Bootstrap 4 - there’s a polyfill that will take care of that. At least we would start with the latest version then since Bootstrap 4 was a major overhaul.

I’ve definitely mentioned WebAssambly a few times and since Xojo compiles to LLVM it means there might actually be a nice path forward here. A PWA with full client-side code would be awesome. Xojo could add a special method call to trigger server-side code for secure database connections or IP protected code. Then the Server would just serve the client side application and act as an API Server for these special functions. It would make the app crazy fast and allow for offline usage.

I am curious if we will be allowed to keep our old Web apps around in Xojo for a while or if I’ll have to keep an old version of Xojo for these projects and opening in a newer version of Xojo will force the upgrade? It would be nice to have both Web versions supported in Xojo for a duration of time.