Why Microsoft has made developers horrified about coding for Windows 8
arstechnica.com
arstechnica.com
http://forums.mydigitallife.info/threads/26404-Windows-8-(79...
In this thread you'll see much more clearly what MS is planning. It's not just HTML/JS for these immersive apps. Rather it appears that the CLR will become a first class part of Windows. If you are a Windows dev or are interested in Windows dev, this is a must read thread. In fact I'm shocked that no major publications have noticed it.
There are lots of really interesting nuggets in there. In many regards I think they're finally delivering on a lot of the promises of Longhorn.
I must say I'm excited about it, and looking forward to September now. MS screwed up on the PR, but I think they may have gotten the technological direction right.
Microsoft's own immersive html application is just a thin layer over native code
http://forums.mydigitallife.info/threads/26404-Windows-8-(79...
.NET Ahead-Of-Time compiler is probably coming
http://forums.mydigitallife.info/threads/26404-Windows-8-(79...
[EDIT]
And for those worried Silverlight developers, scan that thread for DirectUI.
Personally I think IE9 is a shitty browser - no 3D context for canvasses, gradients, history, or 3D transforms. But you don't need to represent MS to prove that.
There is another article too in relation to this. Also, Mary Jo Foley and others have posted 'information' about Jupiter and whatnot.
It seems people are quickly taking advantage of this 'outrage' on the internets for some 'good' news stories.
Edit: I especially like the assertion that WPF is not fast. Evidently the author has never done much with the 3d transform functionality in WPF -- you can do insanely performant graphically-intensive apps using it. The fact that most developers don't understand how the API works doesn't mean the API doesn't kick ass. I'm not a fan of XAML, but everything else about WPF is really, really nice.
This signals a usability fail in my mind.
Thus, it would serve your fellow developers if you were to annotate the lacking documentation with (1) example code or (2) pointers to the blog postings that you found.
I mean we've had to buy a shit load of graphics cards to get acceptable performance on our (definitely not shoddy) kit.
They can. They just prefer to make every Windows developer jump through hoops, as it's so much more cost-effective.
Besides that, I think my assessment of the situation is solid. It is much more cost-effective to make your developers (who will follow you, as they have huge investments on your platform already and wouldn't be willing or able to switch) move the direction you want than move in the direction they want. In their position, being able to do whatever is convenient for them regardless of how inconvenient it is to their users, I'd do exactly the same.
It's a delicate act of balancing your inconvenience of moving along with your vendor and your cost of migrating to another. As long as the second half is kept high enough, they can do a lot of inconvenience on the first.
Be mindful of not slipping into the more emotional tone that some have observed nipping at the edges of the HN community.
(I don't mean to sound as if I'm speaking from a position of moral superiority, nor expertise with regard to the topic at hand. Just an observation and suggestion.)
P.S. For the record, I did not downvote anything. That is coming from elsewhere.
I wish MS would make a decision to bet everything on one platform (I don't care which), stick to it and make it really good.
1. MS wanted to keep Windows APIs growing quickly to keep anyone from making a compatible platform. I can't imagine how many $B a year it costs to maintain that. This is probably less of a goal than it used to be, as the baseline Windows install is now so many GB that it's an impediment for the nimble VMs and ultra-portable clients that are the future.
2. MS seems to pitch to (and staff from) a young audience, folks in school and moving to the workplace as application software developers. This crowd has a natural turnover period of only a few years.
But one thing they really are quite good at is supporting stuff for a long time. You can today build an app with .Net framework 2.0 with VS 2005 and it will install and run about as well as it ever did. For native code compatibility typically goes all the way back to Win95 apps. When old apps don't work it's usually a result of unambiguous security or stability improvements made to the OS. Even then Windows often provides virtualized registry and filesystem areas that trick the apps into working.
I have talked to many different developers and every one of them that is developing in C# and .NET are not worried at all. Main reason? This stuff is not really going to fly well within the corporate world, corporations still need their custom built applications (using older source bases most of the time), they still need to use all of their productivity apps, and they don't think the office team is suddenly going to re-write Word, PowerPoint, and Excel for a touch based graphical user interface.
All the noise I've heard so far are just the news sites blowing it out of proportion. Frankly it is getting annoying seeing it pop up every couple of days.
[1] (I really don't care what the actual timeframe is)
The key driving distinction between enterprise and consumer is that in the enterprise the person using the software had almost no say in its purchase and thus has almost no say in its development. Consumer software works well when you use it, enterprise software looks good when you see it in a powerpoint presentation next to a feature checkbox, or hear about it on a golf course. Since no one making the purchasing decision will ever actually use it, you're pretty much guaranteed sales. Especially if you can pair it with expensive training that is necessary because your software is designed so poorly.
Having features is generally how you get through an RFP the purpose of an RFP is to CYA. Thus if you have the RFP approved by management and the proposal meets the RFP you're guaranteed a sale if no one else can check the boxes. If you ever get approved for an RFP you should immediately apply to become the vendor of record / preferred vendor for everything in that space guaranteeing more sales of your atrocious software.
Never design software that works in the enterprise as you'll lose out on massive support / training revenue. The worse your software is the better it will sell. Hopefully you can figure out how to sell software that doesn't actually do ANYTHING until they hire programmers to customize it. (I'm looking at you CRM vendors)
Once you've been through a couple of these things you'll understand how it works and how crappy software is incentivized by the RFP system.
You should also have an RFP template ready that contains all the features your software has so that lazy employees from megacorp can submit it for approval. Your sales people should be all too ready to help the employee out with this task so that they have a very professional and tailored RFP. Now that they don't have anything to do that day you should take them out for a beer to celebrate how fast they submitted the RFP to management. Management will remember them as the guy who gets stuff done so quickly and professionally, they'll move up quickly.
Tablets, no-desktop households, webapps: all of these are key consumer devices. Speed, flexibility are key
Enterprises are stuck on the desktop workstations with local apps. Managability of the apps by IT is key.
For example, a significant proportion of them are now having to work out how to support Apple's devices for corporate network access, email, document sharing and delivering apps for internal users and consumers, and all because corporate executives are also consumers.
As for Peter Bright, (as long time Arstechnica reader and forum participant), I have observed that his articles are designed to get page views. Arstechnica does this by blasting Microsoft and fawning on Apple. As a cynic this doesn't bother me, I can filter the noise and realize that Peter and Conde Nast have bills to pay.
#1 Since I'm the only one in the thread who actually knows what they're talking about, naturally this will get downvoted to oblivion. Farewell sweet karma, I barely knew thee. :D
#2 In order to actually get anything done you have to 'bust out' into the Windows APIs anyway. See here for a prime example:
http://msdn.microsoft.com/en-us/library/aew9yb99(v=vs.85).as...
#3 For budgeting/political reasons I won't go into, I can say that this is possible with only the use of notepad. Speaking programmer to programmer, I strongly advise you to get better tooling than that. Really. This thing is an absolute pig to code and debug by hand.
#4 The horror is entirely justified. This is how bad it is... it actually makes those retarded Java enterprise projects, where you have to cobble together 14 different frameworks that are fundamentally incompatible, look good.
Since I'm the only one in the thread who actually knows
what they're talking about, naturally this will get
downvoted to oblivion. Farewell sweet karma, I barely
knew thee. :D
Do not ignore the possibility that your comment will garner downvotes for talking about being downvoted. Your observations are worth reading. Why bury them underneath meta-commentary that does not add to the discussion?For years most of my time has been spent developing through a terminal, with Vim as my editor and the world of Gnu command-line tools as my toolset. My primary development language was a scripting language, and my code-run-test iterative cycle took seconds. Now that I'm developing on .NET, it can take 20-30 seconds to restart my application to test a change I just made, not counting getting back to the part of the app I was working on. That's using the built-in IIS server; once I deploy to a real one I've got another round of testing and coding to do because they don't work the same way.
I was much more productive in the old environment. I'm happy to see Microsoft moving towards making HTML5+JS a full-fledged member of their development system; it means that their tools are going to get much better at developing web applications, and maybe I'll be able to reach my old productivity level again.
PS: I don't get the wailing about WPF getting replaced. WPF replaced WinForms, which replaced Win32, which replaced Win16, and I'm sure I'm missing some of the intermediates. The same kind of succession has occurred in most other parts of the Windows development stack. Microsoft has a long history of deprecating APIs and replacing them with completely different and incompatible APIs. All of these WPF developers, who I assume are simply too young to remember the earlier shifts, should be grateful that the new API has a fully backward-compatible history going back to the mid 90's and can carry them forward to any platform they might need to work on in the future.
I remember this being the case when we did VB6 application programming. We were constantly "shelling" to Win32. I'm surprised it is still so like that.
Our favorite call was Win32 LockWindowUpdate.
Actually, unless my memory fails me, it was that Microsoft video showing the tiled interface of Windows 8 that did that - it kind of implied HTML5 was the tool of choice (or, at least, the glue) for tiled and that tiled was the future. The thread kenjackson pointed out tells another story, but we can blame Microsoft for some confusion here.
Well, Microsoft may not have explained everything at once (Who does?) but that doesn't explicitly mean they forced people to overreact.
You can't force an open-source developer to work on something he/she doesn't like and agree.
Here's the link used in the article: http://allthingsd.com/20110601/microsofts-windows-8-demo-fro...
I stopped reading there. It's amazing that spreading unfounded trash like this can be called news. All this is is an attempt to twist and stretch the truth in hopes of provoking a reaction and attention -- simply pathetic.
Who knows, all those poor Microserfs might feel liberated in the end, when they get to use a technology that has not been designed to fuel the consulting business - needlessly complex and bloated, that is.
If so, it's too early to dismiss the technology as "inadequate".
If this becomes the standard, like I suspect it will, one of the biggest losers will be companies that run big app stores.
At best you'll be dealing with another fat abstraction layer with same kind of annoying small incompatibilities that plague(d) web browsers.
Those small incompatibilities may be annoying, but they're a small price to pay for the otherwise easy development and broad reach of the HTML+JS+etc platform.
For instance, HP WebOS uses additional attributes to turn DIVs into Buttons.
I've no idea what MS is going to come up with.
Corporations should be (and are) embracing the capabilities of web technologies for building internal tools quickly and enabling quick changes.
it means discarding rich, capable frameworks and the powerful, enormously popular Visual Studio development environment, in favor of a far more primitive, rudimentary system with substantially inferior tools
Seriously, try xaml and VS compared with [insert vim, emacs, etc] + html5.
They're light years apart in terms of capabilities.
On the other hand, I'd think it's far too early to worry, apart from MS have now gone all clam, which is worrying. They're fanning the flames themselves
It doesn't really affect me, but I can understand why a lot of developers would be anxious.
They don't want to use a clearly inferior technology and quite frankly a crappy language like JS.
Why would you deliberately handicap yourself on the HTML side? Ext JS + Ext Designer + IDE with automatic linting and auto-completion. That's one possible way to build rich web apps.
I've been programming in .Net for years now, but recently as I got new projects I figured to use them in HTML5/Javascript instead. But after countless of hours research it turns out .Net is by far the most efficient and only option in terms of speed and most direct relation to the hardware, which was important for my projects. They both play a part and neither should be ruled out. Using HTML5/Jquery for web projects and .Net for projects which requires quick access to local resources. Two different worlds. If I were Microsoft I would focus fuse those two worlds together. And if they can add 1+1 this is their intent.
The developers and corporations will continue to use whatever means to maximize profit with the most efficient way for their app. And the corporations in whole is who steer the direction of the consumer market in the end. Not one or two companies. Corporations use .Net not because Microsoft tells them to do so, but because it is most the efficient.
From a consumer point of view it might not be so easy to understand how these things works, as all you see in media is Microsoft that and Apple that and then one might think that's all there is to it.
I think it's just marketing BS from Microsoft, to be honest.
There is a lot to be said for what you are comfortable with using but at the end of the day HTML is a truly cross compatible technology that is becoming more and more capable every day. This could also bring in a lot of potential "developers" if the cost of entry is lowered.
I also understand that you don't want the technologies that you invested in to become extinct overnight but I simply can't imagine that happening.
Author's profile: (Microsoft Contributor) "Peter Bright dropped out of university (after about five minutes) to work as a software developer writing C++ and C#."
After reading that article I propose that he must have also spent another 5 minutes programming before deciding on his new career path of writing sensational crap.
I imagine we'll see other ways to build into the tablet UI apart from html5/js.
Nice flamebait, though.
He still makes some absurd claims though:
"... they were told that all their experience, all their knowledge, and every program they have written in the past would be useless on Windows 8"
Flamebait. FUD. Just look at the comments there.
Perhaps the only reason a shift in Win app development tooling isn't such a big deal today is simply that MS does not have the clout that they did back then. Windows 8? Seriously, it's many years off before anybody (including MS) going to try to make a profit on a shrinkwrapped app that doesn't run on Windows XP.
But there are nevertheless a great many developers who've hitched their wagon to MS as a career path. They're understandably antsy as they watch all the hot demand go for iPhone/Android/tablet development. This would explain a lot of the angst I think.
I am looking forward - and I just dont think Microsoft has its act together or even beleives its "Developers, Developers, Developers" mantra any more.
* HTML -> Web apps
* Silverlight -> Native Apps & Mobile Apps (DirectUI?)
* WPF -> Dead