Moving forward at PhoneGap
blog.phonegap.com
blog.phonegap.com
React Native is an order of magnitude better, still has a lot of issues but at least it's maintainable.
Otherwise, it's just BSD.
If Congress is unable or unwilling to act then why not take it upon ourselves to include these types of clauses in even more licenses?
Additionally they added a patent grant as long as you don't sue them for patent infringement. They could have simply remained silent on the issue and it would be worse for developers. A patent grant is only a positive thing.
IANAL Hypothetically, there _may_ be good reasons to sue Facebook over patents unrelated to React, especially if they happen to break a patent you or your company owns.
However, that would mean loosing access to React if I happen to develop applications that use that.
Wouldn't such a blanket statement skew the power balance excessively in Facebook's favor?
If you do (I have no idea if Facebook has relevant patents on React that would harm you), then consider your allowing Facebook to use your patents a fair deal with Facebook allowing you to use theirs.
To see several years later now that they're still trying to push forward surprises me. I know there are many apps that were built on this platform, and are likely still in maintenance phases, but is anyone starting down that route these days? If not, maybe it's time instead for the incredible journey announcement as they shift into deprecation and closure. At least on Adobe's side, as stated above, I don't know what value they have in continuing their support. Let it live on as only an Apache product if it must go on.
People keep mentioning they have problems with cordova but never state what they are. If your project is a big mess that it's no fault of the cordova platform. It's a wrapper with some well maintained plugins that don't drastically change. What about cordova is so hard for you, prepare, build, run.. whats steps are causing you to question 'hybrid' apps in the future and what are other wonderfully awesome cross platform alternatives are available that allow developers to jump right in.
Now, as to my specific issues, it's really the same as any other common anti-hybrid argument.
One, it's never write once run across platforms, it's write once and then debug across all platforms and insert various hacks for bits of slight inequality between all of them.
Two, plugins are native and consequently require knowledge of native to implement or, again, debug. If you're writing your own plugins, you can pretty easily get to a point where the js code is indeed write once for all platforms, but then you have to write the native portion for each still. This falls apart if you want to write more complex / device feature heavy apps. Given that may not be your use case, less complex apps are indeed easier to make cross platform. This isn't because "your project is a big mess," it's because you're trying to use features that aren't exposed to the browser js engine on the device.
Three, bugs in Cordova. As with any external dependency, you're at the whim of their quality and release cycle. Various bits of fun, "legacy" / backwards compat, and design decisions combine to lead to situations where things like the onload of the page in the cordova.js file is wrapped in a setTimeout intended to fix a problem on a platform a couple years ago in some way ends up taking your page nearly a second to display as it waits to gets it's turn on the js execution cycle again. Sure, one off example, but the one that I remember digging into. I logged a number of issues during my time, though.
Four, and perhaps most opinion based, the apps you're making almost never feel native. You spend all your time trying to make the app feel closer to what it would be if you wrote it natively, or look closer, or whatever, but you're again at the mercy of the js engine on the device. There are cases where it just can't compete, period.
So, what's so hard about Cordova for me? No one thing. Many little things. I didn't even touch the build process and what to do when that starts acting up. The amount of time I spent fighting Cordova (and to be fair, other hybrid frameworks) in my experience was as much as it would have been to write a nicer native app, and I would consequently never recommend anyone go that route for more than a trivial app.
As for "allowing developers to jump right in," well, I think you're a bit misguided. It's not more user friendly than any of the native app starters, and tbh is probably less so.
But that's all just my opinion, so keep writing whatever you enjoy.
I use a good amount of phonegap plugins (admob, google analytics, location, device orientation, dialogs, storage, accessibility) and they work as well I could hope with few minor hurdles. Its programming, there are always hurdles and I've had the least friction with phonegap
You native loving devs miss the entire point, phonegap and cordova exist and survive because of the nightmare of developing apps across multiple platforms. Any perceived benefit you get by going native is lost by the compounding pain of developing across multiple platforms.
I have developed my phonegap apps to the point where an average user can't tell the difference between it and native for the most part. I can deploy it across ios, android, windows and even a desktop app on my mac by running a few gulp commands. Its used by half a million people across multiple platforms and in multiple countries and it took a total of 1 person to create.
Now when I read about people saying it should be deprecated, I cant help but laugh. Phonegap has allowed me to make enough money from my work that I quit my regular job as a software dev drone in an office taking orders from some crappy boss stuck in some agile nightmare of meetings and shit talking. I am now my own boss and I can do my work anywhere I wish. Tell me, why wouldn't anyone choose that path?
Where did I say I was touching generated code, the cordova.js thing? Because I was trying to find the cause of our slow load in the app and stumbled through their init process into that issue.
The native plugins are usually good, as you mentioned, but don't cover more complex use cases. No, I'm not going to go through and talk about all of them -- this is two or three years ago now. We wrote native plugins for the features we needed that weren't available for our use cases, and it seems likely that any advanced app will end up needing to.
Your point about "compounding pain" is exactly how I feel about Cordova, because as I mentioned, it's as complex if not more in a hybrid app. You're fighting the build system, the js engine, the layout engine, etc. It's not as though you get it all for free because it's javascript.
It's great to enjoy your tools, and again, I'm glad you're able to make an independent living off it, but to claim that it's some sort of life changing tool the whole mobile world needs to take more seriously isn't realistic. And again, as far as new development, I'd love to hear people who are considering going the hybrid route chime in, but I at least don't know of anyone or any companies who are or would go that route.
The plugins are interfaces to the device APIs, what complexity did you encounter that was so far out the scope of the device APIs? I use many plugins and for many complex tasks, why are your's more complex?
You mention this was 3 years ago like somehow these platforms remained static in the time you last used them. 3 years is incredibly long time in mobile development. Phonegap/cordova community has grown, more plugins are available and js engines on mobile have improved immensely.
You are stating phonegap/cordova is not a viable alternative for the future and I say it is. That was the whole point about mentioning my work. You not liking it and 'not knowing anyone who is using it in the future' is purely anecdotal. Obviously each project has its own ambitions, costs and timeframes to consider, but limiting possible paths to a solution is not a good idea. Do your own dev, but there is no need to deprecate a framework for others because you had a bad experience once.
As long as they signal deprecation with enough notice (which they are very good about) then it shouldn't be any real issue.
It's annoying on a small scale, and I've been there myself (many times) so I'm sympathetic, but it's also a greater good overall.
The benefit of Ionic 2 is that there's hardly anything you have to do yourself to target the OS / device. It's all handled by Ionic.
Because I've written the game in JavaScript and it renders to Canvas. It also works in the browser. To go native, I'd have to rewrite everything from scratch. And then I have to maintain 3 platforms.
Maybe Unity is the solution, but right now, it's not written with Unity.
Check out the Twitter PWA (https://mobile.twitter.com). Accidentally swiping back happens to me a couple times per day.
In this case, just use whichever platform is easiest and slap a webview on there. I don't even think going full native + webview is even an advantage compared to phonegap + webview
- it can be forced to ignore cross-origin policies, which means you can build a backendless Twitter client using only HTML5 (api.twitter.com by default denies CORS requests)
- you get native access to camera livestreams - you can either use Canvas+video elements but lose the ability to focus/flash or you can use the File dialog which is clunky, disruptive and can't do video
- you get real filesystem access
- you can do the "full" app experience (no browser chrome, fullscreen without status bar, customize status bar color)
- proper push notifications even when browser is closed or not started
- code sharing between your webapp and "hybrid app"
- you don't have to use React (as with React Native) but can use any kind of JS framework - even no framework at all (plain JS or just jquery works fine too), or you can use and enhance already existing web apps. This alone is a massive advantage over any other solution: you don't have to code in a framework that expires / breaks in a year, rework entire apps or hire native app developers.
And for those people who complain "webapps are lower performance than native apps": drop that behemoth of Angular and your performance will skyrocket. The only things that do require a fully native app are full-blown 3D games or apps that deal with DRMd video. Even security with TouchID works fine with Cordova and it's easy to code up bridge plugins if there's anything native that you need.
The decline seemed to start with the Cordova mess, as the article notes.
Is anyone starting new PhoneGap apps these days?
e.g.: Weex, which uses Vue.js syntax - https://weex.apache.org/
I'm sure there are more.
It has the potential to be great for native guis if someone were to take the time to write the various bindings required, and probably a tool for building out the targets like the ones that exist for game/graphic oriented apps.
[1]: www.appcelerator.com
What if you have a web game (canvas) you just want to wrap as an app? Obviously I can't use React Native for that.
Once we find our groove and get to a stable point in terms of features, there will probably be a refactor to another hybrid framework (flutter looks cool right now). But until then, Cordova definitely gets the job done, and I'm glad to see the platform is maturing even further instead of stagnating.
So I explained to them that we could use Cordova, and that it would probably suck, but that's all they can afford for $10k. And they were happy with the delivered product.
Cordova has its place. You probably wouldn't use it on a team with many developers or at an enterprise level. But if you do client work and your clients don't have money to spend on native, then this is the best solution.
I am not ignorant of these cases; I just don't want them. The software world is teeming in mediocrity and below. I just rather small startups that can't do better to not do anything, rather than churn garbage software just to survive for a few more months then die out anyway (or be bought for unknown reasons - but result is still the same, garbage software is still abandoned).
This is not limited to mobile apps, of course, but seems like that's where most of the churn is these days. Desktop has its own fair share of that with the Electron nonsense, but mobile seems to get it worst.
Don't confuse ignorance with intolerance. I understand this place is startup oriented, but anyone who is willing to compromise on software quality for the sake of payday need to look at the big picture. Spoiler: it's not about your potential payday.
The goal of an MVP is to quickly determine whether the bare necessities of an idea solves the problem.
Your use of the word "lazy" has a negative connotation; an MVP is more positively described as "sufficiently efficient."
Why jumping through the hoops of setting up an account to install from an appstore, granting all kinds of access to god knows who to your private stuff. Instead of using the most uptodate version from a browser directly.