We’re .NET developers: Do we really care about Cross Platform?

added by Robert Greyling
3/16/2015 9:37:30 PM

2336 Views

Why do we want Cross Platform? What benefits does it bring? When do we use it? Do we use it at all? When you sit down to really think about these questions, how much energy has been spent on making .NET cross platorm just to be able to **say it’s possible** versus actually using it **because it's possible**?


25 comments

Robert Greyling
3/16/2015 10:44:57 PM
With the advent of Azure, it seems like the (cheaper) hosting on Linux arguments have started losing ground. The primary development environment, Visual Studio, doesn’t seem likely to make the leap, so why do we bother? Does it matter when we can often guarantee that our code will be deployed on Windows? Or can we guarantee that? I wonder what percentage of devs write and test on Windows environments and then deploy to Linux to save money? And what percentage dev and deploy in Linux environments?

Jeremy Morgan 
3/16/2015 11:37:14 PM
I absolutely do, for several reasons. As Robert mentioned the "cheap hosting" argument isn't really a big one these days, but there is some value to spinning up instances of Digital Ocean droplets at $5 a month for extra power or redundancy. The biggest reason I care is because I see a very clear win-win. Linux is huge and frankly still runs most of the internet. This is a great inroad to that world. Traditional Linux developers are starting to take a look at vNext, just because it's something new and cool to try out, and they're liking it. Linux people trying out ASP/vNext and Windows people trying out Linux? This is a good thing for everyone. C# is a fantastic language, and once developers start to use it, most will fall in love. This gives C# and .Net both better permeation into the market and brings other traditionally OSS developers into the .Net world. There is also the idea that you can start busting out some small C# apps on your Linux server that's already doing tons of stuff. Choice is always good. We are getting more choices. Not to mention at this point its the only chance of survival for Microsoft. They would be close to finished in 10 years if they kept ignoring this. This is why I care about cross platform stuff.

David Paquette
3/17/2015 1:17:09 AM
I'm a Windows person and haven't played around with Linux since my university days. All the software I write is geared towards large enterprises and has always been deployed to Windows servers. Based on my background, I'm intrigued by the idea of ASP.NET running cross platform but it wasn't a feature that I was asking for. Having said all that, I am extremely excited about the potential this gives the ASP.NET community to grow. It is reassuring to hear that Linux folks are starting to look at ASP.NET 5 and are liking what they are seeing. If all goes well I think we could really see the community flourish over the next 5-10 years.

Jason Imison
3/16/2015 11:48:08 PM
I prefer to develop on linux than any other OS. ASP.Net/vNext cross platform support is the best news I've heard in a long while. Also - Docker!

Robert Greyling
3/16/2015 11:56:25 PM
And since you created the awesome [Omnisharp](http://www.omnisharp.net/), looks like things are only gonna get better! :) Love your work @JasonImison !

Jeremy Morgan 
3/17/2015 12:04:48 AM
I forgot all about Docker! Another solid reason to develop and deploy in Linux.

Robert Greyling
3/17/2015 12:04:26 AM
That's exactly the sort of response I was hoping for @JeremyCMorgan ! Seeing the people care about this stuff, and more particularly "why" is going to help spread the word further, but with purpose. That's mostly the reason for starting this discussion in the first place. I can't count the number of developers I see who walk around with blinkers on completely ignoring the possibilities of Cross Platform. It feels very much the same as dragging WinForms devs into the MVC or Web API world and further - now with vNext on the horizon they need to catch up even quicker. You throw the Cross Platform angle at them and they all but curl up into a ball. I think it's important that the message is driven home that this is not a scary thing at all, it's a MASSIVE win-win, but education is necessary, and I think that starts in the community with backup from the vendor. I'm hoping we get some more MVPs in here to talk about the merits and potential - you're right Jeremy, it really is the future!

David Paquette
3/17/2015 1:19:47 AM
That's interesting. I haven't seen the same resistance toward ASP.NET 5 as I did (and still do) with the whole WebForms to MVC/Web API.

Simon Timms
3/17/2015 3:20:52 AM
I for sure care about multi-platform. There is a ton of stuff that just works better on Linux than on Windows. It would be really nice to be able to have access to that technology right out the gate. Remember when nodejs and redis didn't run on Windows? With cross platform .net we could develop against these much earlier on. I spent about 4 years working with Linux, Solaris, HP-UX and AIX, FreeBSD and even ZOS(ugh). Some of them have huge technological advantages over Windows. No matter what powershell does it still doesn't have the historical weight of something like bash. How awesome will it be to be able to make use of ZFS in tandem with C#? It does mean that we, as developers, need to know even more than before but that's what we get paid for.

Chris S.
3/17/2015 2:00:25 PM
I third the DigitalOcean argument, but also Apache is far superior to IIS for configuration and general ease of use, and of course bash is years ahead of anything Microsoft offer, even with Powershell.

Robert Greyling
3/17/2015 2:17:46 PM
If what @yetanotherchris says is true, and Linux is a much more compelling and efficient environment to develop and deploy in, why the compulsion to use .NET? Why not Java or Rails or any other combo of frameworks that have been supported natively much, much longer? What does .NET bring to the party on Linux given that _most_ .NET devs started out on Windows at one time or another?

Jeremy Morgan 
3/17/2015 4:39:02 PM
Linux is a more compelling and efficient environment in my opinion, but what .Net brings to the table is everything we love about .Net. The efficiency, performance and power. It blows Java and Rails out of the water in my opinion. Basically you're taking an extremely performant and solid development architecture (.Net) and using it on a performant and solid operating system (Linux).

David Paquette
3/18/2015 5:58:00 PM
The Scotts (Hanselman / Hunter) made a really good point during their dotnetconf session this morning. Cross platform is important in the context of university or other classes. Today, an instructor can't teach ASP.NET as a web platform because a bunch of the students might not be running Windows. With a light weight & cross platform version of ASP.NET, the .NET framework has a much better chance of being a part of the curriculum.

John Atten
3/19/2015 4:16:46 AM
Cross platform is a win no matter how you slice it. I love all three major OS platforms, they all have their strengths and weaknesses. Bringing .NET X-plat is all upside. Is it going to create a surge of ASP.NET sites hosted on *nix servers? No. However, it does extend the available options for .NET devs, and also for those in the *nix environment. It does afford the potential to work in my preferred web development environment (ASP.NET/MVC/Web API) and yet spin up my site on a Linux server. For some deployments, this could be a real cost savings, or simply a convenience. And as @JeremyCMorgan says, it brings to Linux all that .NET has to offer. Beyond that, I think it represents a simple show of goodwill/good faith on MS' part. Are they still a bottom-line-driven corporation? You bet. But for too long the us-vs-them mentality has persisted on both sides of the OSS?Linux/MS divide. Hopefully, making the tools and the framework X-plat, and engaging the larger OSS community will help encourage diversity for both sides. God forbid some of the .NET haters out there take a chance, try it out, and discover some of what it has to offer, simply because they can now do so on their chosen platform. The direction the wind is blowing has been clear for a number of years, and MS has needed to broaden the availability and access of the tools and framework in order to ensure a seat at the table in the next decade. They are making all the right moves, including making the framework cross-platform, making VS Pro available as a "community" edition, and encouraging participation and angeagement in the broader developer community. Support for third-party OSS libraries, and supporting OSS projects. Hopefully it's not too little, too late. C#/.NET and all that comes with it gains by growing out of its insular "enterprise" shell and joining the community. In fact, one wonders where the .NET community would be if some of these moves had been made 5 or ten years ago? As developers, we in .NET land tend to get very dogmatic, and it pays for us to experience integration with other platforms. I swear, working on *nix (I'm not awesome, but I'm getting there) and with Node.js has changed and improved the way I approach my C# code. And vice-versa. I love .NET. I love Wondows. I Love *nix. I love that I will be able to mix and match. It's about time.

Robert Greyling
3/20/2015 4:52:10 PM
I think it's interesting @xivSolutions that you say you don't think it will lead to actual increase of deployments to _nix servers_. Why do you think that is? Surely folks would want to reap the rewards of faster code running on cheaper infrastructure if is was as easy as painting in the lines?

John Atten
3/21/2015 12:25:50 AM
@RobertTheGrey - Well, first off, I said "surge" not increase, because increase would imply there are ASP.NET deployments on *nix servers today (I know, I know, Docker and various experiments with Mono aside . . . ), which there really aren't. What I meant was not to say there won't be a certain level of deployment that way, just that ASP.NET on Linux is not likely to become the next big boom. I could be wrong. Don't get me wrong, it is TOO COOL that deployment of ASP.NET on Linux is now a reality, and this will very likely become more common. I just don't think it is going to become a huge new standard. Which does not mean I am saying it isn't w worthwhile and valuable thing. At all. In much the same way, Node.js runs on Windows (and on Azure), but the majority of Node deployments are, and will likely remain, on Linux boxes. Unless you are confused by what I wrote previously (admittedly, in a less-than-properly caffeinated state!), I am ALL FOR the direction .NET is headed, and think it is the best thing MS could have done to stay relevant int eh next decade. My real hope is that .NET devs break out of their shell and explore .NET on Linux, and vice versa for Linux folk who mock .NET without having tried it simply because, well, "M$" and "Lulz." In a truly great place, MS devs will jump in, and come up with some projects which truly flex the power of .NET ON THE LINUX PLATFORM and find some ways to build excitement between the two. Likewise, I hope some Linux folk are willing to put aside their bias and show some .NET folk some aspects of Linux which may lend themselves to better exploit the strengths of both. As to your original question, hope I answered that. I am optimistic about the way this is headed, and excited (and I think the community is as well). I only think that we should anticipate a reasonable, progressive uptake deployment-wise, instead of a sudden boom. :-)

Robert Greyling
3/25/2015 1:27:09 PM
Thanks @xivSolutions - you're right I assumed "increase" instead of "surge". As a dev who has only once or twice deployed anything .NET based to Linux over that last few years and spend most of my time pushing those to IIS, I do wonder where the benefit in that lies other than it's the vendor/client's chosen platform? I know there are cost differences especially with licencing obvisouly, but are there verifyable performance differences and maintenance benefits to deploying in the *nix space over IIS on Windows? I'm genuinely insterested if that is an area that .NET devs should be skilling up on? Totally agree that the cross pollination that will inevitably come from this is an excellent win tho.

Bob Senoff
3/25/2015 1:40:51 PM
For one @RobertTheGrey there are just a ton of developers who just don't know IIS and have no idea where to start with it. So anything that will let those guys use .Net with having to also learn IIS is a plus.

John Atten
3/25/2015 1:44:31 PM
I think .NET devs should be skilling up on Linux and other languages no matter what. Learning my way around linux, Node.js, and some non-standard (to MS platform) Relational database platforms has been the best thing I could have done for myself AS A .NET DEVELOPER. My understanding of file systems and how an OS works has been enhanced greatly. Plus, though I "grew up" on Windows/MS, the Unix terminal makes SO MUCH MORE sense to me than the Windows command line (or even Powershell). I suspect any perf issues with ASP.NET on Linux will resolve themselves much more quickly going forward. I don;t know that there will necessarily be huge perf benefits, but the simple fact that deployment to Linux environments is becoming an option, I think the focus should be on making sure there are not perf disadvantages. Also, whomever posted the reply below about devs not understanding IIS hits another nail on the head. IIS is a rather unique animal in that it (historically, anyway) has encompassed both the server environment and what we now recognize as the "middleware" pipeline. I AM one of those devs who only vaguely understands IIS. What I do know is that there are a lot of ways to bork the configuration.

Anotherlab
3/25/2015 1:39:02 PM
For me, cross-platform has been using Xamarin to do Android and iOS apps with the .NET stack. I use Linux, but as a tool, not a target to write .NET code for. While I have written for Android using Java and technically I could write for iOS with Obj-C (or Swift), I'm much more productive staying within the .NET stack and using the tools that I am comfortable with.

Robert Greyling
3/25/2015 1:44:49 PM
Great point @anotherlab - I've had similar thoughts when Xamarin came out. I was back in Turbo Pascal hell again with all the reference counting stuff working with Objective C and was only too happy to move over when I could. I haven't used Swift yet - probably because I'm comfortable with Xamarin and would rather benefit from the ability to write for Android at the same time as well. What do you think is the likelihood of native Swift devs taking a look at Xamarin as an alternative? Also, do you have any opinions on Telerik's NativeScript tools ofr the same job?

Anotherlab
3/25/2015 2:02:39 PM
The premise behind NativeScript is that it's geared to Javascript programmers who would preferusing that language. Which is fine, but I prefer C# over Javascript and Xamarin has more appeal for me. Swift is pretty good, but it's single platform only right now and that really doesn't appeal to me. Right now Xamarin has a lot of users out there and their support is top notch. If you get stuck in NativeScript, there is a much smaller pool of resources available to you. If I want to write an Android app that uses the bright shiny things in Material Design, it's as easy do in Xamarin.Android as it is with Java. I don't expect too many of the Swift developers to look at closely, they probably just stay in iOS. If they had to do Android, then they have to decide if they want to pay the premium price for Xamarin. If it's only for Android, you might was well stay with the traditional Android toolchain. They are not coming from the .NET world, the advantages that Xamarin brings to the table is less apparent to a Swift only developer. I am less concerned with 100% code resuse than I am with providing the best UX on the platform. If I'm doing an app for WinPhone, Android, and iOS and I'm sharing 50% of the code, I'm fine with that knowing that the non-shared code is UI or platform specific. We are finishing up a new app now on Xamarin.Forms and the shared code is about 98%. The non-shared code consists of custom map renderers and the platform code to handle push notifications.

Robert Greyling
3/25/2015 2:08:03 PM
Thanks, that clarifies a lot for me. Awesome news about the amount of code reuse on that latest app. You see, the thing I can't get my head around is with results like the ones you mention above, why developers (or companies for that matter) would silo themselves into one provider? If you can target multiple platforms just by changing the tools you use, for me it's a no-brainer. Maybe it's just lack of marketing or just plain apathy?

Anotherlab
3/25/2015 3:03:12 PM
Some people don't like the high cost of the Xamarin tools. It's priced for enterprise development, not for the hobbyist. That part is better now than a year ago, but we debated it before we bought our licenses. And we have had no regrets with that. It also competes with the 80 different variations of Cordovo, including the one that MS has for Visual Studio. You can do very good apps with Cordova, but I think you are more likely to get great apps when you go native.

rtpHarry
5/21/2015 1:19:30 PM
I guess as this plays out it will expand the developer pool and it will give us more options for hosting. I've stayed in my little Microsoft bubble for too long. Expanding my horizons with packages like npm, grunt, bower, alternative editors, less and all these sorts of technologies has been a rewarding experience for me recently. I've even set up and been using an Ubuntu VM to get some more experience. I suppose another positive about the cross platform will be opening it up for makers and IoT to get in there on low spec hardware.

rtpHarry
5/21/2015 4:21:58 PM
One thing I'm not seeing in this discussion is the SQL story that goes along with it. I haven't really seen anything from EF, are they going to be doing a MySQL provider for it? Without a DB behind it the .net deployments on other platforms aren't going to be up to much. You can pick up crazy cheap hosting packages, but (in the UK market at least) the cost blows up considerably when you want a SQL Server db alongside it. The hosts always hide behind the claim they are passing on licensing costs but not sure what the true story is. If I get a VM then I can install a SQL Server Express and do as many databases as I want so I don't know if it's just that they aren't allowed to package SQL Server Express DB's or if they just prefer to take the cut from selling a full strength SQL Server.

Robert Greyling
5/23/2015 9:38:29 AM
Good points @rtpHarry - I think the hosting provideres are not allowed to install the SQL Express option from a licencing perspective for the reason that it is not officially supported (by Microsoft) as a production database for multi-database or multiple users over a certain threshold, so the hosters just pass on the costs of SQL Server as it's no skin off their nose. Regarding providers, I'm not sure about EF ever supporting other DBs, but there are a number of ORMs and micro-ORMs out there that do have providers for many DBs including MySQL and PostgreSQL. It's worth checking those out in my opinion.

adron
8/23/2015 11:17:52 PM
I was about to scream and shout... but then realize people pretty much made every comment I was going to scream about. x-plat is fundamental. I left .NET entirely because of Windows, I'm partially back into F# and a little C# solely because I can get things done with those languages without Windows. IF people want to pay for it, that's cool, whatever, but I'm perfectly happy and super productive on OS-X & Linux and love that I can really get at two of my favorite languages on those operating systems now. So rock n' roll all day with the x-plat! :)