At its TechEd conference today, Microsoft announced the next step in its “mobile first, cloud first” strategy with a preview of Apache Cordova support in Visual Studio. Cordova is a toolkit for building apps for iOS, Android, and Windows using HTML, CSS, and JavaScript. With the Cordova integration, Visual Studio will directly support building apps for all of these platforms.
This new thing Microsoft’s got going on takes a bit of getting used to. I hope it sticks for once, because this company has changed direction more often than a politician in need of campaign funding.
Guess they might even be serious about becoming multiplatform, at least they picked a cool framework to support…
Now lets hope they don’t go and do their Java-style embrace->extend again….
I think Microsoft is at the same point of evolution with its mobile apps as Apple was with early versions of OSX. Its a good platform, but hardly anyone wants to write apps for it because the market is so small. So they’ll support any cross platform system they can to keep the app count up.
I fully expect them to ditch this approach, if they become modestly successful in the mobile realm. Just as Apple did when it became successful again and ditched first class Java/Python integration with Cocoa.
I was pissed off when then threw away the JavaBridge.
On the other hand, I think it might have been the point that helped the new trend to return to pure ahead-of-time compilation.
As serious as they were with the support of the Windows CE for ARM ?
What they called “their support” was just a sadistic joke.
(A first, would be)
This could be their first stronghold in the mobile world.
How can we force people to buy our products if they don’t want them?!
I know, lets allow third party to terribly hack our Visual Studio IDE to build our competitors products poorly!!!
If we can some how get them to use the same crappy Visual Studio, we can make Android almost as unwanted as Surface!
Profit!…I think…
Edited 2014-05-12 22:17 UTC
So what exactly is so crappy about Visual Studio?
It’s a Microsoft product, so obviously it must be bad. That’s the logic, I think.
Hmmm… the Visual Studio Shell is extremely versatile and is used widely by third parties. Even MS now use it for their SQL Server Management Studio IDE. No third parties I’ve ever seen using it seem to have a problem, not are their offerings crippled.
Visual Studio is hardly “crappy” though. How does this ever stop anyone from downloading Android Studio (or Eclipse) and using that also?
Microsoft is only doing this because they have monetized Android. Its in their best interest to support Android. You won’t see this moving to Linux though as they don’t get anything out of Linux. And you can be sure that if they ever get to a point where they can make more money or gain more marketshare by screwing over the people who adopt this technology, they will.
That’s true, but that’s not why. The problem isn’t that they don’t get anything out of Linux, the problem is in the Linux development world no one uses Visual Studio to do development – and frankly no one wants to either.
On the other side of the equation, developers who prefer VS are not terribly interested in Linux development…
There would literally be no point in Microsoft supporting Linux desktop development with their tools. Their own developers won’t use them, and they certainly won’t attract anyone from the other side of the fence.
Mobile is different. There are lots of developers out there with a background in Windows development, who are comfortable with VS, who have experience with HTML5 development methodologies, and who want to do mobile development but would rather not stray away from the tools they know. For those people this makes sense, as it keeps them in the fold.
Also, Cordova is extremely easy for MS to support. Its not like they had to write their own framework from scratch – its just Phone Gap with a new name… Its already there, it already works, All they did was wrap it in a VS plugin (more or less). Easy win.
I’m just saying I don’t think this is about Android at all. Yes, Cordova can be used for Android apps – but it also supports iOS, Fire OS, Firefox OS, Blackberry 10, Ubuntu Mobile, Tizen, and of course Windows Mobile. It’s more than just an Android framework.
Completely disagree. As one developer that has done plenty of Linux development, I would love to have a high quality C++ IDE like Visual Studio available. I would even go as far as saying one of the reasons I switched back to Windows was exactly because I couldn’t find a proper VS replacement.
Same thing goes for OS X. While Xcode is continously getting better there, I would switch to VS there too if I could.
They won’t attract those that prefer terminals, make and emacs or whatever a lot of Linux devs might be using. But I think Microsoft’s biggest problem today is that they intentionally gimp their own products. If they were willing to support other platforms truly (like Xamarin Studio) they would return to an age where using MS tech empowers rather than limit.
Their problem is essentially their “the Microsoft way or the highway” attitude that historically worked so well for them in the later 90’s. It isn’t so much a question of winning over the Linux developer as it is about making sure that existing MS developers doesn’t jump ship. It used so be everyone elses problem if things didn’t integrate with MS – now the tables have turned and it has become MS’s problem.
And this is the real problem. Microsoft is yet to show they truly changed their ways. There are sign they may be changing, but adding a small plugin is little more than a PR move than an actual attempt of fixing the key issue.
Out of curiosity, what does make Visual Studio that good in your opinion?
I have used it extensively through the years, and although I don’t consider it to be a poor tool set, it is also not particularly stellar either.
The most important feature for me personally is probably source file management and navigation. Over the years I have developed a very efficient way to move between files virtually always using the keyboard and mix of “find in files” and go to reference.
You could argue that competing IDE’s have similar features, but somehow they always are lacking in one way or another. Take for example Xcode, which for 4 versions (10 years) refused to acknowledge the usefulness of tabbed open documents. And when they finally added the feature the tabs still arent behaving in a way where I get multiple open documents each time I try to open a new file. Add to that the tabs visually looks like ass and when you use a program every day such things matter too.
The competing Linux IDE’s like Anjuta tended to instead to have no intellisense (go to reference, etc.) and no proper debugger integration. A situation that is probably better today (I hope!) – I haven’t checked.
But don’t get me wrong in the sense that Visual Studio is the perfect IDE with no flaws – I just wanted to point out that developing for Linux doesn’t mean you can’t like or want the Visual Studio IDE. We are many developers that largely like the way VS works and some of us like Open Source at the same time too.
My main beef with Xcode is the lack of plugin support. I’d say that being able to customise IDEs using plugins is very important for developers.
That’s also my main beef with the Visual Studio Express Editions. No plugin support. Quite frankly, if I couldn’t get the proper, grown up versions of Visual Studio via BizSpark, I wouldn’t bother with Microsoft’s platforms. I need my Vim key bindings to be able to code.
The IDE that I’m currently spending the most time with is IntelliJ, due to the polyglot nature of it. I can do Web, PHP, Java/Android, Scala, even iOS development using a familiar tool. Which brings me to my main point. It’s hard to objectively rate an IDE. People usually like the one they’re most used to.
Your making an argument for porting VS to Linux – that isn’t the same thing. I still say no one doing Linux development wants to do it on Windows…
That doesn’t apply for mobile, because it is (at least up to now) restricted to embedded development.
Its not about Android. Its about getting people making apps for Windows mobile devices. But, since Microsoft makes money off Android, they don’t mind putting tools out for the platform. The real goal though is that now devs can make apps for both Android and WinPho without much trouble. Its a win-win
Microsoft´s new strategy is “devices and services”. Before they were basically an OS provider+leveraging that OS (and Office for Mac but anything apart from that). Now they develop for other OSs (Office, OneNote for Android, etc) so it´s logical that they want people to use their OS as a development plataform.
Or it is subtly “enhanced” so that it is hard to work on the resulting code outside Visual Studio?
It is probably the default suite right now, but I indeed wouldn’t put it past them to add “enhancements” in the future.
This has been Microsoft’s modus operandi for decades and old habits are hard to overcome.
I guess this move can be surprising for people who have not followed the recent history of the Microsoft dev tools, especially the web part.
The pace of which their web tools has improved is astonishing. They sucked for the longest time, creating such monstrosities as WebForms, but with the release of ASP.NET MVC 3 in early 2011 they really have a great platform. Afraid of lockin? Don’t be, it is licensed under the apache 2.0 license, http://www.asp.net/open-source
Not only does their own web tools now rock, but they integrate nicely out of the box with things like jQuery and Bootstrap, instead of inventing their own libraries. (The default templates it comes with are even based on bootstrap)
Their recent update of the authentication frameworks now includes standard OAuth support, so you can, again out of the box, accept logins from Twitter, Facebook, Google, etc in your project.
Don’t want to host your web app on windows? Then do it on mono, Microsoft is cooperating with mono. The below quote is taken from: http://www.hanselman.com/blog/IntroducingASPNETVNext.aspx
While Mono isn’t a project from Microsoft, we’ll collaborate with the Mono team, plus Mono will be added to our test matrix. It’s our aspiration that it “just work.”
So yes, this move follows nicely in thread with what they have been doing for the last 3 years without much attention from the general public.
So those slamming the Visual Studio team, please stop living in the past and stop with the standard knee-jerk reaction, or at least realize that Microsoft is a big company that doesn’t have one big coherent vision.
Now if you want to go yell at the Windows division and whoever made it totally impossible to figure out their server side licensing, then i am ready to join 🙂
(Also notice that integration with a boatload of 3rd party components is available from the package manager built into visual studio, and there are lots of 3rd party plugins to visual studio, so they most likely didn’t do anything that others couldn’t do as well)
Edited 2014-05-13 14:24 UTC
Cordova is, IMHO, the wrong way to do multi-platform development. I don’t like the one size fits all approach. You end up with a subpar user experience where the app does not feel native on any of the target platforms. Also, interpreted JavaScript in a web view? Bye bye performance.
Xamarin is the better way. It enables code reuse, but does not attempt to abstract away the underlying platform. You want the framework to bridge down to the first party APIs so that you can take advantage of the strengths of each platform. You don’t want the framework to wrap them and dumb them down to the capability of the lowest common denominator.
That’s all true – but that is assuming the target audience is mobile developers looking for a cross platform toolchain.
Cordova is not for that. It is targeted at web developers who want to do web apps for deployment on mobile. You don’t need to learn most of the intricacies of each platform, you don’t need to know Java or C#, etc.
No doubt. But arguably you can accomplish much of the same thing by moving your common libraries into C/C++ classes and just doing the UIs/platform specific stuff using each platforms native toolchain.
Xamarin users don’t because it is more complex, harder to learn, etc. Cordova is another rung or two down the ladder on the complexity scale.
For most of Cordova’s target audience, Xamarin is complete overkill (too complex, too much learning curve, too foreign, etc.).
Just saying, they both have their place in the world.
Edited 2014-05-14 01:16 UTC
You are right, my assumption was that the use case would be to enable multi platform. The other use case just does not resonate with me. I was a primarily a Web developer before I got into mobile. When I wanted to build iOS apps, I learned Objective-C and Cocoa Touch. And then when I wanted to get into Android, I also learned the platform. It only takes around 3 months to get up to speed with either. You won’t become an expert on any platform in 3 months, but your output will be better than what you’d be able to put out with Cordova.
I think that people should use the right tool for the job. Developers are doing a disservice to their users if they simply stick with what they know when that results in a subpar user experience.
I think what you say is true, in the perfect world you would use the best tool for the job, and all apps would both look and work great.
Unfortunately in the real world we often have limited resources and spending 3 months playing with a new platform means 3 months that could be spent actually being productive instead.
It is really quite simple, in most places development is prioritized after how much business value it generates compared to the resources needed to make it. Of course this is rather complex in reality as things change fast, new needs arise quickly, and quick fixes can be expensive long term, so things are a constant balancing act. The result of this is that things like Cordova is good enough in many cases because you can get an app out fast and move on with other things.
You don’t get to spend 3 months aimlessly playing with platforms anywhere though. You’d still be producing code while learning the platform. It’s par for the course for us developers.
How much of it is an actual business case for using Cordova vs. developer bias/inertia at the company? I’ve been in the situation before where the company I was working for was either going to outsource the work, or use Web technologies to build a mobile app. I put my hand up and said I was willing to take on the project and learn how to do it native. Sometimes that is all that it takes.
Some developers tend to pigeonhole themselves, and this is a disservice that they’re doing to themselves. For example, some see themselves as .NET developers, and that’s all they’ll stick with. Others may see themselves as Web developers. They’ll happily learn Angular JS or Dart, but somehow they’ll think that desktop or mobile is too different.
Sorry if I’m rambling on. Like I said before, I’m clearly biased in this matter
That is a great outcoming, assuming it meets the companies objectives. But there are sometimes other factors that matter too:
1. Cost of web developer vs mobile developer. If the developer leaves, what will it cost to replace them?
2. Are there even any experienced mobile developers in the employment pool of the company? In some areas of the country the pickings are rather slim. What happens if the guy who was willing to learn leaves and there is no one to step in.
3. How much time do you have? If you don’t already have an experienced mobile developer 3 extra months if learning (assuming the developer in question is as competent as you) might be too much.
4. How much of a difference will it make? Sometimes the app is so simple that there is little benefit to going native.
5. Are you porting an existing web app/site? Say something like a banking site. You’ll find in most cases these kinds of “apps” are using phoneGap/Cordova because doing anything else requires completely reworking how security is implemented.
6. Do you want to be able to do application updates without having to rebuild and deploy a new version to the app store?
I’m not arguing, just saying that there are cases where something like Cordova is a good fit.
This I completely agree with on principle. Developers should be more willing to expand their horizons a bit.