MS has never been a technology leader as they tend to let others make the early mistakes then charge in, ask Netware, OS2/IBM, Sony, Netscape.
Early bird gets the worm but the second mouse gets the cheese!
MS has never been a technology leader as they tend to let others make the early mistakes then charge in, ask Netware, OS2/IBM, Sony, Netscape.
Early bird gets the worm but the second mouse gets the cheese!
A little background: some of my earliest bits of programming were on VB5, then VB6, and then .NET 1.0 when that first showed up. I spent most of my early years on MS platforms, and for the most part I liked them.
I picked up a Surface RT to hack on last year, after a long absence from .NET. The state of .NET shocked me.
For one thing, the subset of .NET that's available on WinRT vs. "real" Win8 vs. WinPhone is really poorly defined. The documentation is incredibly fragmented, and it was very frustrating the even some relatively basic utility classes weren't available on some platforms. It was a struggle trying to cobble even a basic WinRT app together because of how much trial and error there is ("does this class exist? oh shit, no, okay... what's the equivalent class that's named slightly differently in a slightly different namespace...")
There's also a tremendous lack of open source. I develop iOS apps for a living nowadays, and open source is a huge part of that community. .NET has a huge lack of it - everything substantial is proprietary and commercial. Where I can Google for a bit and slap together some libs in an hour on iOS, on .NET it's downloading the trial libs of some commercial libraries, trying them out, adding the totals, and realizing that the same feature set will cost you $10K a year for these licenses. The alternative on Android/iOS is free.
A more general complaint is MS's schizophrenic support of .NET. When .NET 1.0 first came about it was touted as Microsoft's long-term direction. This was the new platform, and we can count on it being supported as a first-class citizen on all MS platforms for a long-long time. That didn't pan out exactly. Microsoft has a really bad habit of making 90-degree turns every so often that destroys any developer trust. You can't rely on anything on a MS platform because in 3 month's time they could pull the rug out from under you with little to no warning.
But, but, but, Silverlight.
Microsoft is a public company that makes software and sells it for a profit, what is wrong with this business model?
All the free open source software you use to make a product, do you then give your product away?
Sure, the complaint isn't about pulling the plug on things in general, but rather how fragmented and difficult the documentation has become.
If class Foo has been deprecated in favor of class Bar in a different namespace, say so on Foo's page. If class Foo is a basic utility class, it would greatly help if the documentation could point to Bar, if Bar was the supported equivalent in WinRT.
Things like that. Considering how sparse the community support can be (I find .NET discussion on StackOverflow to be substantially less voluminous than, say, iOS/Cocoa dev), the reliance on first-party docs is not really optional.
> "Have you used NuGet yet with over 1100 packages?"
Yes.
> "Microsoft is a public company that makes software and sells it for a profit, what is wrong with this business model?"
You seem to be under the impression I'm railing against Microsoft. I honestly couldn't care less about Microsoft's business model. I'm strictly speaking from the perspective of an app developer - a demographic Microsoft seems to be keen to court. My experiences so far seems to indicate 3 choices:
- Develop on Android/iOS, gain access to enormous volume of free (as in beer) libraries that will speed my work along and make my life easier.
- Develop on WinRT (and WinPhone? my exposure on that side is limited) and home-brew a lot of core utility functionality because it doesn't exist in free (as in beer) form.
- Develop on WinRT and pay astronomical licensing costs for core utility functionality, which is an easier pill to swallow if the profitability of the Windows Store is more reliable.
This isn't a philosophical argument about profiting off of code, about the freedom of knowledge, or anything like that. This is a plainly pragmatic argument about developing for Microsoft's latest-and-greatest platform, and how there are very large consequences that make their platform much less attractive to developers as a consequence of both their business model as well as their approach to support and documentation.
But I am personally confident MS will attack this market with full steam and deliver native tools to their developers sooner rather than later.
How so? Microsoft has been completely behind .NET for a decade now. Early on, some .NET advocates demanded that Microsoft only back .NET, with complete ferocity (e.g. that Win32 would become a second class citizen), but that was silly to begin with and is unnecessary.
Various technologies that might have used .NET have come and gone, but Microsoft has been completely behind .NET.
[1]: http://nuget.org/
I think you're a bit off base on open source - there's not the same level of emphasis as on some other platforms, but there's a fair amount of high quality open source stuff for the platform, whether by Microsoft (F#, ASP.NET MVC, etc.) or by the community (Mono, Service Stack, nHibernate, etc.). The move towards NuGet packages has increased the momentum here significantly.
I also think that you're not being fair when you talk about Microsoft switching directions on developers. It's certainly true that the new hot MS technology may come out in 3 months and the way you've been doing things may no longer be recommended, but I can't think of any company as good as Microsoft at supporting their legacy technologies.