Looks like Electron on steroids. The landing page is nice but it's like putting lipstick on a pig - it's still a pig in the end.
Also, I never understood why people hate native languages so much - why do you want to replace everything with Javascript? It's shit - it's a necessary evil in the browser but when the environment gives you something better (Swift, Java, etc) why not enjoy it?
Hi, Remi from Fusetools here.
In Fuse JavaScript is merely used as a scripting language to write business logic & tie the app together, so it's quite different from web & mobile frameworks where it's responsible for "everything". Native integrations are done in Swift / ObjC / Java, and all things visual & animation is handled in declarative markup.
Working with business logic in JS also allows us to do instant preview updates when you change your code, which is one of the few things I've envied web-developers. :)
And of course, a good argument for using JS rather than <some other script language> for this is the volume of developers (and to some extent non-developers) who can use it, as well as the amount of available resources & information out there.
> Also, I never understood why people hate native languages so much - why do you want to replace everything with Javascript?
Because people don't have the time, money or expertise to write multiple completely separate code bases for cross platform apps and having to keep these code bases in sync will dramatically slow down your ability to extend and adapt your product...?
You don't need completely separate code bases, just separate UI implementations.
When did we decide that developer time was more precious than user experience anyway? Every time I see an electron app now I just assume that the devs don't care about their users, just how much easier it is for them to push bloated crap out the door.
> When did we decide that developer time was more precious than user experience anyway?
I think people really over exaggerate native UI experiences... maybe a native experience is 10 out of 10 good and a non-native experience is something like 7 out of 10 good but it's not as bad as 1 out of 10 good. I'm sure there's lots of occasions where users will be happy with a non-native app rather than not having one at all because the developer didn't have enough resources for multiple native apps.
Don't we promote MVPs around here as well?
I use the Spotify, Whatsapp and Slack apps frequently for example and don't think they'd be vastly improved going native.
Spotify would be vastly improved going native. That thing has ridiculous lag when loading the app, trying to play a song. I have an older iPhone, so it's much more noticeable, but then when you use the built-in music app and see how fast it is, it's inexcusable. I've started buying music again instead of using Spotify because of it.
It's not just my ancient iPhone though - the Mac Spotify client regularly sticks for at least 30 seconds on the Browse screen, or if I try to search for an item. I could literally type my search, go make a coffee, and by the time I return it will almost be ready to display the result.
As for Slack, I deleted it because it was so slow and a resource hog. Pushover is faster and less resource intensive for my purposes.
>Don't we promote MVPs around here as well?
That's to get it out the door and evaluate whether it has business potential. That's not meant to be your final product. If your product is just an MVP you don't have much of a competitive moat - you also want it to be difficult for competitors to match what you have.
I wonder if it's struggling with the size of some of my playlists. I've got a 70 hour coding music playlist, that's the only thing I can think would slow it down during startup. My machine has 16GB RAM.
Helpful to know I might be an isolated case, though.
Hmm, 70H and downloaded? Because I have a 63H playlist in my 'Playlists' that I didn't make but have, and I have no lag like you describe on my Windows 10 machine.
The 70hrs isn't downloaded on my Mac desktop, just streaming. I've timed Spotify ("native" Mac app) at 25 seconds from launch to UI - but even at that point, the Browse UI still doesn't appear for a long time.
Guess I'm just unlucky on this one. Thanks for the additional info though.
> and a non-native experience is something like 7 out of 10 good
I'd agree. Maybe even as high as 9 out of 10, depending on the framework used and the adherence to platform norms. User experience is not just the UI though, using a GB of RAM when you could be using 10MB is also a poor user experience, particularly when you run out of memory. Most people won't be knowledgeable to blame the app for this poor experience though, they'll blame MS or think there's something wrong with their computer.
> Don't we promote MVPs around here as well?
An MVP can be single platform, multi platform is clearly not the minimum.
>I use the Spotify, Whatsapp and Slack apps frequently for example and don't think they'd be vastly improved going native.
On what hardware? A good chunck of users are on less than 4GB of RAM still (http://store.steampowered.com/hwsurvey). Even if you've got 16GB, what happens when everything in the computer starts to be a resource hungry as electron apps? These are companies with a tonne of money to spend, there is no reason they can't stop being so wasteful with their users resources.
And that's on desktop. Go get a low end android phone and see how many apps you can even install. Very quickly you have to start making decisions like "should I uninstall facebook or audible".
To be honest, I don't even use many desktop apps at all anymore besides a music player, terminal, IDE and a browser. Everything else has slowly transitioned to the web. I'd wager non-technical users are fine with this is well and really don't have strong feeling about what native apps are.
> and a non-native experience is something like 7 out of 10 good but it's not as bad as 1 out of 10 good
The problem is that when a native app falls short, it stays with the conventions of the platform. When a non-native app falls short, it'll stay with the convention of the framework and likely be confusing or broke for the user.
As an example Adobe Flash was really popular for 10+ years. On all platforms it broke copy/paste, swallowed keystrokes, and ate battery, cpu, and memory. Those things could technically be addressed, but rarely were. Most of the time the website was for a restaurant where I was only interested in the menu, location, or hours.
I don't use any of the apps you cited regularly, but I do often hear complaints about them using excessive battery and memory usage for apps that just do chat and music playback.
I also don't see why it matters if your MVP is built on a cross-platform abstraction? In my experience, I often find details where I have to fight the abstraction to access something exposed in the native API.
Reaching a larger audience isn't a minimum viable product. Especially, like I said, if you're fighting with the abstraction to achieve your minimum viable feature set.
Sure, use a library if it papers over deficiencies or adds features your app needs to be viable. That's always a technical debt : developer time call. But, especially with the amount of iteration on the native mobile platforms, I haven't heard of that very often.
As a user, if good native is 10/10 non-native is at best 5/10. Usually though a native app isn't good so it's only 6-7/10. Non-native though are usually in the 2-4 range...
That Spotify, Whatsapp and Slack don't have native apps is a disgrace beyond comprehension. Those are probably the easiest type of apps anyone can come up with.
> That Spotify, Whatsapp and Slack don't have native apps a disgrace beyond comprehension
Pretty easy to comprehend why you wouldn't burn more developer resources than necessary actually.
Try to set aside your own dev bias towards 'non-native' and consider what the average users of those apps think. They don't care the apps are non-native, they don't even know what that means.
> Pretty easy to comprehend why you wouldn't burn more developer resources than necessary actually.
No, it is incredibly short sighted and in the long run Spotify in particular must have spent a ridiculous amount of effort ironing out bugs and issues (this often takes many many months) that are a consequence of unnecessary cross-platform efforts.
The average user don't care about native and non-native. But they do absolutely care about performance, look and feel.
It's easier to transition from the (presumably) single code-base they have now to build specialised native apps later, if there's some expected pay-off, no?
But if they'd had separate code-bases all this time the maintenance effort to date would have been an order of magnitude higher. And consolidating to a single codebase from that would be a nightmare (should some new cross-platform toolkit mature).
> The average user don't care about native and non-native. But they do absolutely care about performance, look and feel.
And I've never heard anyone in my office (which has lots of non-devs) complain about Spotify's UI when they're changing the office music. Search for a song or playlist, play ... works fine as far as they're concerned.
Show me the evidence average users think there's a problem.
> consider what the average users of those apps think. They don't care the apps are non-native, they don't even know what that means.
Just because the average user is unaware the shitty UX, performance or battery-draining is your app's fault, doesn't make it a good or professional choice. It means you can get away with it, because the user is unaware there was a choice, who's making it, and based on what criteria.
Why would you say that? I'm not convinced you even looked at it longer than to arrive at the conclusion that it has some JavaScript in it so it must be like Electron.
The whole point of Fuse is that all the heavy loading is not JavaScript. Basically your business logic is JS, but the UI is declarative and both the UI and the animations are all hardware accelerated, compiled down to machine code. This makes it very much not like Electron, and more in spirit like, say, PyQt or something like that.
It's a bit more like React Native, in that the UI controls are native. But unlike React Native your UI composition (the "components" in React lingo) plus the animations are compiled down to machine code too, and always hardware accelerated.
And to answer your question - people don't hate native languages, they hate making the same app twice.
That's my problem, the business logic is in JS. I hate JS to begin with but I would have tolerated it if the only place it's used is for UI - but come on there are much better languages to write business logic in.
"iOS and Android from day one, with one shared codebase in UX Markup and JavaScript. You can also access all native features when needed by adding Objective-C, Swift or Java code directly to your project." (from their official site)
I guess their actual compiler for "UX Markup" could be written in .NET but Javascript is definitely and unfortunately invited.
Bent from Fuse here — The UX Markup compiler is actually written in Uno, a lightweight C# dialect that compiles to native C++ for iOS and Android. JavaScript is just used for business logic and runs on a separate thread from the UI engine.
>Why do you want to replace everything with Javascript?
Because a huge number of devs already know it, so you can have your web devs work on your mobile application.
That said, my company tried Fuse out around a year ago and went with Ionic instead. Partially because adapting Angular to Fuse was a lot of effort, and partially because at that time Fuse was not nearly release-ready.
Also, I never understood why people hate native languages so much - why do you want to replace everything with Javascript? It's shit - it's a necessary evil in the browser but when the environment gives you something better (Swift, Java, etc) why not enjoy it?