Is it possible to write good mobile apps in JS and HTML, compared to Android or iOS? I don't know much about mobile programming, but it seems much harder for JS to compete with native apps, no?
The startup I work for was approached some time ago by Firefox in order to ship our app on FFOS (our app has ~1 million daily users, so we regularly have this kind of proposals).
I did not participate in this firsthand, but from what I gathered from my colleagues, the FFOS SDK is so atrocious that sadly the idea of porting our app to this OS is laughable.
On the other hand, we are fully committed to our iOS and Android app (in objc & java) and are mostly satisfied by these two SDKs.
It might be an unfair comparison though, Google and Apple have had way more time than Mozilla to improve their respective SDKs.
I'm interested in knowing more what makes developing for Firefox OS "atrocious". There's no sdk per se, and maybe this is what bothers you. If you have no web version of your app and not seasoned web developers then for sure the porting effort can be almost a full rewrite, but so it is with any new "native" platform.
I tinkered with Android development when the original Google Developer Phone came out (aka G1). And, after years of not paying it any attention, because my focus was on server development, I've started learning my way around it again. It's not even the same world. So much of the tedium of developing in Java has gone away, due to better libraries, much better tooling, and just all around a bigger/better ecosystem. Making apps for Android, even without starting with a third party framework or tool, is vastly less time-consuming than it used to be.
I believe it's fair to say Firefox OS SDK will get better. I suspect we'll see interesting things happen just because it is primarily JavaScript+HTML5. There are a half dozen (or more) projects to make it possible to make Android and iOS apps in JavaScript, and they're popular, despite having dramatically less support and tooling available (as much as I hate Java, and I really do hate Java, Android Studio almost makes it tolerable).
I haven't seen the Firefox OS SDK yet, though I plan to check it out, and pick up some kind of dev phone soonish, but I would bet that it's at least on par with some of the early JavaScript+native frameworks cropping up lately. Stuff like Ionic, React Native, etc. All of those are new and sloppy and don't have settled toolchains, etc. But, the desire to work in JavaScript instead of ObjC or Java is pretty strong for many people, as evidenced by the huge quantity of people doing it despite it probably being more effort than coding in the standard language of the platform.
JavaScript is the path a lot of people want to walk for making mobile apps. Firefox OS is the first to make it the primary way to develop apps for the platform. I suspect the application developer uptake will be very rapid; probably more rapid than previous platforms, and more rapid than the actual user uptake. This is a platform that allows you to use your existing web development skills right out of the box...and there are a lot more web developers than Java or ObjC developers in the world.
"JavaScript is the path a lot of people want to walk for making mobile apps. Firefox OS is the first to make it the primary way to develop apps for the platform."
Not true at all, actually; I was doing this back in 2009 on Palm's webOS platform as one of the first wave of devs with early SDK access.
IMO, webOS' adoption of HTML5/JS apps as "native" was too ahead of its time, and unfortunately early enough where the intersection of hardware of the time and browser JS performance left it looking pretty janky compared to IOS and Android. Still, I loved developing for the platform in spite of everything that happened around the OS.
All that said, I'll probably give FFOS a shot as a development target in the near future.
I have to say that WebOS on the touchpad was probably my first positive tablet experience as a user.. the UI made total sense and worked incredibly well... I think that Android and iOS have finally caught up, but there's something to be said for webOS' simplicity in design.
It was definitely ahead of its' time.. I didn't stick with it long, as the browser became very dated, very quickly.. but overall it is still one of the better devices I've used (aside from HP's choice for a janky proprietary charger).
While I really like a lot of where the current Android has gone, I think some choices are just difficult for power users.. for more than 2 email accounts (let alone 5+) the gmail interface truly sucks... some of the flyover buttons (like new message) are just awkward, and some of the other apps are weird too.
The experience in google maps seems to be getting worse with time and more use as well. Hangouts as a replacement for google voice is cumbersome and incomplete... I think of this era of android to be akin to Windows Vista at release... some great ideas, but half baked... Hopefully it gets better not worse.
I haven't used iOS on a regular basis enough to comment there. I prefer JS + HTML for apps, it's not a bad idea all around... It (webos) was one of the earlier places for node development (before it got really good).
The webOS UI design and interaction model was something pretty damned amazing for its time, and still unparalleled in certain aspects. No doubts there.
JavaScript is the path a lot of people want to walk for making mobile apps. Firefox OS is the first to make it the primary way to develop apps for the platform.
It has been possible to write fully native (not webview wrappers) Windows Phone apps in HTML and JavaScript for the last four or so years, but web developers didn't really adopt the platform (and those that did primarily used C# and XAML).
You can scoff that it was something to do with Windows Phone OS's abysmal market share but then I don't see how you would be able to draw a different conclusion that FFOS will fare any better.
1. I had no idea you could make native Windows Phone apps in HTML. This may be a failing on my part for having less than zero interest in Windows Phone (though I find my dislike of Microsoft has faded quite a bit, as they've embraced more openness and more fair dealings with the rest of the world).
2. I don't think we mean the same thing when I say "the primary way to develop apps for the platform". I googled "how to develop windows phone apps" and followed the trail to the most obvious seeming instructions, and found this in the Microsoft Dev Center:
"When you create a new project, you also make the following selections:
Your preferred programming language - Visual C#, Visual Basic, or Visual C++."
So, if JavaScript+HTML5 is a good, and "official", way to make apps for Windows Phone, somebody needs to tell Microsoft, because they don't seem to realize it.
"Get started with Windows Runtime apps. You can write a Windows Runtime app in a variety of languages, such as C# or C++ with XAML, C++ with DirectX, and JavaScript with HTML/CSS. Now you can easily create apps for Windows devices and Windows Phone from a single project."
If I had the choice to program in C# or Java I wouldn't touch Js.
I can't take the language seriously when the are languages that does things so much better being offered.
Funny how that works. Some people like one thing, others like another. It just doesn't make sense, sometimes! Why doesn't everyone only like what I like?
100% agree here. I have same feeling.For some reason 15 years ago i learned basic java script from some "learn in 21 days book" and they quoted it as a helper language to get things done at client. And for some reason i can't seem to come out of that and still use it only where i needed.
I'm not sure that's the entire story of what's happening. There are a lot of factors that play into whether a new platform succeeds, and it is never just the way one makes apps for it that makes or breaks the platform. Obviously, there are people who will use any technology, no matter how poor, if it means they can make money in a growing market. iOS showed that; while the APIs for iOS are quite well-designed, ObjC is not particularly wonderful environment for GUI apps compared to many modern alternatives. But, a huge user base means people will learn ObjC in order to make apps for it. In fact, the only reason ObjC is relevant at all is because Apple put in on their phones and tablets. But, even Apple can't keep it alive forever...Swift is obviously their answer to more modern development approaches.
This has played out in many other markets, including desktops and servers, where higher levels of abstraction won mindshare over time as technology (both hardware and software) advanced to make it feasible. When I started using person computers (8 bit machines), software of any seriousness was written in assembly. The next generation (16 bit machines) brought good C and Pascal compilers, and applications built with those tools. Only now are we seeing serious talk of replacing C/C++ with something else for systems programming (maybe Rust, maybe Go, etc.).
Being right but at the wrong time is just as bad as being wrong. Maybe WebOS was right, but at the wrong time...maybe apps made in JavaScript five years ago weren't snappy enough on a phone. Maybe the tooling wasn't there. Maybe the VMs weren't good enough. Maybe they are, now.
I don't know. But, Mozilla has shown itself capable of taking on the biggest companies in the world with open web technologies, and holding their ground tenaciously. I believe they have the clarity of vision and the technical chops to pull it off.
Finally, I just want a Firefox phone. So, I may have rose-colored glasses. I think Firefox is the bee's knees, and I think Mozilla truly represents one of the most positive forces for good in technology today. I want Firefox OS to win. If it can't win, I want it to be a serious contender.
I don't know. But, Mozilla has shown itself capable of taking on the biggest companies in the world with open web technologies, and holding their ground tenaciously.
There are zero switching costs associated with a browser. It costs nothing to download and run Chrome, Firefox, Safari, IE, etc... The switching costs associated with phones is obviously much higher. Mozilla has to win ground in the mobile OS wars before they can even think about defending it.
Not trying to be a downer, I would like a viable mobile OS to break up the current duopoly, especially one that really embraces the web. I just think Mozilla has a hell of a fight ahead of it and it can't win it on merit alone.
Isn't the point of JS that you do not need an SDK!? If I need to use something else then notepad to write a program for FFOS - that would be a big turn-off.
I think you're mistaking a SDK (software development kit) with an IDE (integrated development environment). A SDK is nothing more than a set of libraries that allow you to write code for the target hardware. In this case, the SDK consists of a Firefox extension that you can install, which gives you an emulator that will simulate the phone hardware.
You can totally write FirefoxOS apps in Notepad if you want to. It is just HTML, CSS and Javascript (and a JSON manifest that tells the OS where the entry point for your app is).
I thought the whole point of Firefox OS was that the hardware layer would be accessed through JS API's like window.ondevicemotion, Canvas, navigator.geolocation, window.DeviceOrientationEvent, navigator.getUserMedia, navigator.vibrate, 'devicelight', navigator.battery.level, SMS, contactList, etc. And that the Firefox team would add even more features that can be accessed from the VM layer. And making the Firefox OS the most secure OS by adding app permissions. And that the VM could not be bypassed unless the computer gets re-flashed.
This might sound funny, but considering Moore's law and where we currently are on that exponential curve, making a fully virtual OS will be the next step in the PC evolution. You shouldn't have to write low level interrupts or accept that apps need full root access anymore.
>This might sound funny, but considering Moore's law and where we currently are on that exponential curve,
In case you haven't noticed, the exponential curve has already started to level off. Moore's Law is done. Every incremental improvement from Intel offers smaller and smaller improvements, as transistor sizes run into fundamental physical limitations imposed by quantum mechanics and thermal and battery-life constraints impose limitations on the amount of power a chip can use. Combine that with fact that RAM speed stopped scaling about a decade ago, and the conclusion is clear. Moore's Law isn't ending. It's already gone. As far as desktop application developers are concerned, Moore's Law ended about a decade ago when single-thread performance plateaued.
Yes, we have more and more cores, and more and more cache. But the cache is only there to make up (poorly) for the fact that RAM speeds haven't scaled. And more cores don't help, because most desktop applications don't parallelize easily beyond ~2 threads. Yes, the user is able to run more applications at the same time, but each individual application is still running at about the same speed.
I briefly looked at Firefox OS a few months ago and my conclusion was that the primary issue was neither JS nor HTML but rather that there is no canonical UI framework for the OS (please correct me if I'm wrong here). This means that there is no consistent look and feel across apps.
It all depends on the hooks that Mozilla provides to the JavaScript developers. These hooks are the way that the web page can interact with the phones built in hardware. If these API's are sufficient then there is no reason that these apps can't execute as well as an app on any other phone.
Correct me if I'm wrong but I don't think you can write native apps for Android or iOS either. Also recently there's been way more effort on improving JavaScript VMs than Java's.
On the latter, why is that? Is it that Java's VM is already very mature and the community doesn't feel that urgency on "improving" it?
Another question. What does Java VM have to do with Android?
I'm not a mobile developer so you shouldn't ask me but basically because of web browsers there's a JS VM in every PC and smartphone nowadays which isn't necessarily the case with Java. And Android runs its applications on a Java VM called Dalvik: http://en.wikipedia.org/wiki/Dalvik_(software)
Dalvik is not a Java VM though it is a VM.
As of Lollipop Android left the whole VM thing behind and moved to ART so there is no stagnation on that front
You linked to the page that states it all but its like you didn't bother to read it yourself.
Ok thank you, that information is pretty hard to stumble upon when you don't know where to search. Although on Android you can't seem to be able to build a whole "native app", only some components of it cf this now removed quote from: