Xojo and 3D web development

Hi all, first post here. I would need some advice about the development of a web app with medium/advanced 3D features, for CAD and architectural modelling. The open source library Three.js would be perfect as it provides all the features I’d need.

I have a long experience with Xojo desktop and a large library of math & geometry functions I have developed over the years, so clearly I am considering Xojo Web for this app. However, I am not sure I can use that library with Xojo and I fear I will run into unexpected limitations that would make me waste too much time too late.
Honest opinions only: is such an app possible with Xojo or should I look at React/Vue etc.?

I would not use Xojo for this. Even if you could get Three.js working with Xojo the server/client event model is not what most web apps are expecting. And creating a CAD tool is very event driven and while it may have decent performance in debugging (because the server is on the same machine as the server) the latency in a real web app is going to kill you.

If you spend any time on this forum, I think you’ll find that most of us do not recommend Xojo Web for a variety of reasons. I think you’ll be better off learning and using a more traditional web-centric dev environment. Just my two cents worth.

4 Likes

Dalu has one purpose in life… to sow misinforation and discontent in these forums.

That being said… I don’t have a specific reccomendation as I don’t do web apps myself,

But as to some people reccomending Java, or PHP or other tools, isn’t that exactly why you asked your question? To find out what those tools are, what situations others have seen when using them, information on how they may or may not help you?

Contrary to Dalu, this IS a forum to discuss ideas and projects.
Granted it was created as a forum to avoid the draconian methods on the Xojo forum, but since many of us have adopted other tools, this might just be the perfect place to get the informaiton you seek

2 Likes

Depends on how you use it… It could work fine anywhere you have a webviewer that can embed the javascript. :slight_smile:

The tool you use doesn’t really have much to do with the js library as the webviewer will do all the work.

I’ve used the same libs for hierarchies, calendars, etc in FileMaker, Xojo, PHP. They all worked. In each the tool was just a wrapper.

That said, Xojo is full of bugs, but at least your lib will likely work!

1 Like

The Small Mind that only Discuss People… (Your own words :rofl:)

As I said in the other forum, all the events in xojo make a round trip to the server, that is why it sucks for this kind of app. But if you move most of the work to the client side with custom WEB SDK controls and use xojo as a thin layer to serve the app, should be doable.

Just have in mind that xojo web apps are single threaded and dont scale easy, you need a lot more resources to have many instances running if you need more people using it.

1 Like

Interesting, thanks for the replies so far. I am watching the video about the WebSDK and indeed it looks like I would have to wrap everything to avoid the bad latency and to be able to use the JS library. The tutorial on the three.js website is very straightforward. I don’t want to jump to conclusions, and I’d really be happy using the tool I know, but it looks like with Xojo I’d have to put twice the effort to get what others have out of the box.

About suggestions, of course I welcome any insight/advice both about Xojo Web and other tools or packages. I don’t mind learning another language, such as Dart, Go, TypeScript or even Rust, if I can get things done properly and efficiently.

honestly, drop Xojo and use Unity Engine for this

1 Like

Actually you might have read that I moved away from Xojo Web exactly when I dived deep into the WebSDK. Not (only) because of Xojo Web but because I had to learn Typescript for that exercise. So by using the WebSDK the same will happen to you.

From that moment I dived into a bunch of other languages, as I have different requirements and do like learning new stuff. For Web I did most stuff with Vue3. Compared to Angular and React it is really easy to learn, especially the latest release. With the “composition API” the simplified so many things, that it is really fun coding with vue.

I can’t help on CAD and heavy graphics though, but I’ve the gut feeling that TomasJ proposal might me the better approach :wink: - Whatever modern tool you will use, you can be sure to have excellent high quality documentation and in general a helpful community. Though most of them can’t beat the Xojo community unfortunately. Those forums are often more noisy and you will see more troublemakers than on INN or TOF.

Yes because they mostly have no banmatic for banning every troublemaker like tof has. Mostly.

And Xojo has a more mature (aka older) audience not so many rebellic youngsters :-). But if Xojo had and has one big asset, it is in my eyes the user base, which really (since the beginning) tries to be helpful (to experts but beginners too).

Thanks, that’s helpful. Vue is one of the frameworks I am considering, along with React. By looking at the docs, the Three.js library works perfectly with js frameworks like Vue, no plugins required. Three.js has all the features I need because I a more interested in the design phase rather than the visualisation, which is what Unity is perfect at. For example, spline.design is built with three.js.

Any thoughts about Flutter? They recently announced plans to improve graphics and add 3D scenes.

I am not objective on Flutter. I’ve played around with it and find it pretty easy, but I’m having a problem with Alphabet’s tools. I’ve hit a wall with Google too many times in my life because projects have been shelved.

On the other hand: of course this also applies to Go and Google is also a sponsor of vue etc. every programming language and especially frameworks have sponsors today. But Rust and Java are probably an idea more “independent”.

But in the end it probably just comes down to your own preference and you should look at several tools.

I got stuck with vue3 because of the simplicity on the one hand, the very good and numerous tutorials and also sometimes because of good frameworks that build on vue, such as e.g. https://quasar.dev/

But I don’t use quasar for everything either, here too, in my opinion, it always comes down to weighing up what you want and need to achieve. quasar was a huge help for a few intranet tools (basically administration panels), but it certainly wasn’t the solution for all requirements.

Vue3 has another advantage for me. Vuex is outdated and was complicated. The new Pinia (https://pinia.vuejs.org/) is an excellent store that alone, compared to react, takes away a lot of worries. There is also a vue3 extension (devTools) for Chromium to debug Vue3 more easily.

What I can say for sure: if you have a good command of vue3, which should be the case after 2-3 months, then switching from overlying “frameworks” is actually child’s play.

One last piece of advice: I personally think it’s a waste of time to deal with the performance differences between angular, react, vue3, svelte, etc. They are more of a theoretical nature. All tools have advantages and disadvantages here, but basically we are talking about marginal differences. If so, you should rather invest time in your choice of an IDE. I personally use the Jetbrains toolset because they bring me a lot of benefits, but it sure is that VSCode gets updates quicker as languages are expanded. In addition, most tutorials are designed for VSC. So it’s probably not a mistake to start learning with VSC.

Even if I’m happy with Jetbrains now, in hindsight I certainly made my life more difficult to learn 2 things at the same time: a new language and a new IDE.

Thanks for your reply, that’s very appreciated! I totally understand your opinion about the tools from big companies, their size is no guarantee that the tool will not be deemed insufficiently profitable at any time. Another point, though Flutter does look attractive, is that I am hesitant about binding myself to a “proprietary” language and framework. I’d rather learn TypeScript well, which I like honestly, instead of Dart or Go.

Great tips about Quasar and Pinia!
I will follow the Vue Quick Start over the weekend. I find myself comfortable with VS Code so I’ll go with it for the time being.

Ah, quick question: will I be able to compile an iOS app with Vue using the same code base? Is it done through Electron?

Yes, quasar for instance can build for Electron (desktop) and mobile (cordova). I don’t particularly like the Electron overhead nor cordova, but it works easily. That’s the charme of quasar. Their approach is one code base in vue3 for all platforms.

Tauri app is a promising alternative. I wrote something about my experience (but mobile still missing):

https://medium.com/tauri-app/publishing-a-tauri-app-to-mac-app-store-b655bbf26f27

Don’t be worried about rust. You can use your TS code and easily add tauri later. Most tauri built-in functionality is forwarded as TS Apis. But of course: ideally you would build your backend in rust. I prefer tauri over electron, but of course you will find more documentation, hints and tips for electron than tauri.

1 Like

I wouldn’t dwell on this point too heavily. Firstly, I wouldn’t consider Flutter or Dart proprietary as they are both open source.

Secondly, whilst Google has a reputation for dropping support for their products just as you are starting to enjoy them, I think they are quite clearly all in with Flutter and Dart. Dart has already been around for the best part of a decade.

Finally, I use Dart a lot for small command line utilities and it’s very performant. I’ve only done a little bit of web development with it but it performs very well. Flutter continues to improve month by month and at this point its web target is quite good. The desktop platforms still need work however.

1 Like

That’s interesting, I’ll definitely look at Flutter along with the other options!
It’s true, Dart is open source. By proprietary I actually meant that its use is circumscribed to Flutter, just like Swift is to Xcode, but as you say it should not be a critical point.

I read on their forums that libraries such as Three.js need to be rewritten in Dart and that’s not very appealing, but on the other hand their promises of gpu-accelerated graphics and native 3D APIs are what raised my interest. They clearly understand that a modern development tool without performant graphics and 3D is too limited to be useful.

yes, I agree. Flutter will likely survive, as Go will. They have so many people and companies using it meanwhile … somehow too big to fail, but still Google is unpredictable :-).

But then again, this applies to all modern languages, tools, frameworks. The good news: if you are using a tool millions are using, you will at least not be alone it will get sunset.