First silverlight, now this.
Why should I invest in the Microsoft stack? I'm done. Microsoft is no longer a platform I will work on and I will recommend open source products and frameworks from now on.
Can you imagine spending 5 years learning XNA and becomming a guru, only to have them yank the rug from under you?
Oh you have experience in XNA? You might as well have experience in Visual Foxpro.
F-U Microsoft - from thousands of XNA devs worldwide (including myself)
But yes, it sucks about XNA. But MonoGame has you covered.
I don't really know if I agree with this. It's just about the worst-documented thing I've ever worked with. Their example code for porting things to MacOS doesn't even work. It's a major headache for anything but iOS/Android.
I'd rather use Unity.
silverlight shouldn't have been something they bothered with in the first place.
2005 - Youtube was created. Adobe purchases Macromedia.
2006 - Kongregate was released. (Semi random example of a popular Flash gaming website.)
2007 - Microsoft releases Silverlight. Netflix starts streaming video online.
2008 - Hulu launches publicly
2010 - Apple releases the iPad, pushing Flash to the side. (Yes, the iPad was released just 3 years ago.)
And if we take into account the fact that Silverlight wasn't built in a day we could probably say that Microsoft started working on Silverlight before Youtube was born, during Flash's heyday, before HTML5 video was even an option, and half a decade before mobile devices started making Flash obsolete.
And let's not forget the fact that Silverlight is an extension of .NET and as a result it was a great competitor to technologies like Java Web Start.
Silverlight was dead on arrival because of the market penetration of Flash and it was killed a little later by tablets and by HTML5 and JS. But back then, for a short period of time, Silverlight made all of the sense in the world.
The video tag was invented in 2007, the same year the iPhone was released. Android followed in 2008, and it was becoming clear that the mobile web wouldn't play well with browser plugins. At the time, there was also a general trend to move away from proprietary standards (ODF was standardized in 2007), and it was obvious from the very beginning that Silverlight would be a closed-source, hard-to-reimplement, patented, Microsoft-supported-platforms-only thing.
In the end, it probably boiled down to developers not wanting Microsoft to gain control of the web ever again.
Java Web Start was never widely adopted - trying to come up with a 'competitor' to that was stupid. Not even in hindsight - that was a stupid reason in 2007.
MS should be defining the future, not playing catch-up to out of date software. Their continued failure to do so is contributing to their decline in relevance.
NaCl in Internet Explorer and later in mobile devices would have let them leverage much of their existing code base and developer tools, all with an "industry standard" imprimatur from Google. And where it wasn't supported (i.e., Firefox), you ship a plugin, which is no worse than Silverlight.
* Adobe Flex and Adobe Flash
* Mac OS X Carbon
* JavaFX and Java Applets
The net result is that for at least a decade or more, many Microsoft developers have lost the independent judgement needed to filter solid technologies from the over-hyped ones.
The truth is, Microsoft is a business like every other. And they have changed with the times in that they experiment a little more and admit failures a little sooner. The challenge for Microsoft is that they are still viewed as the "safe bet" by many in their own community and they have to reconcile this reputation among their base with their own ability to evolve.
Realistically, most EOL'd Microsoft development platforms had been in their period of being officially supported for no less time than it takes an open source platform to go from being the hot new thing to something that's barely worth mentioning on your resume anymore. And Microsoft still offers a lot of continuity - XNA and Silverlight may be dead and WPF might be on the way out. But those C# skills you learn on the old platforms are still usable all over the place, including in Unity (for game developers) and with Xamarin (for mobile). And those XAML skills will still hopefully be useful with WinRT. By contrast, it'll probably be a much bigger deal to switch platforms when Ruby finally becomes passe. For one, it'll take learning a whole new programming language.
Before I get jumped on, I should hasten to say that my intent isn't to criticize any open source for anything. It's to criticize the Microsoft community for developing an attitude of complacency and perhaps even entitlement.
But Microsoft is a chronic, habitual offender. It's a point of routine at MS rather than an occasional occurrence.
The principles are all the same, everywhere you go. The names change and the exact implementation details differ, but it's the same stuff with a different hat.
There's perhaps some truth to that, but they could handle things so much better.
Some of these technologies should perhaps be in perpetual beta or something, until they decide they're going to support it long-term. The problem is that Microsoft flogs them as the blessed platform, puts out the rallying cry for all developers to come running and use this cool new thing, and then drops them like a bad habit.
I actually can't think of a case as bad as Apple axing the Xserve line and telling people to use mac minis and mac pros in a rack.
Long story short: Microsoft realized that Entity Framework was taking longer than expected. But they really wanted an ORM to ship with LINQ. So they took a smaller mini-ORM project that was really written for testing LINQ and was never intended for production, hastily dressed it up, and pushed it onto the market as a stopgap. Entity Framework was still happening, mind you - Microsoft never actually planned to support LINQ to SQL long-term.
But they never really mentioned that was their plan. So a great many developers had already written data access layers based on it by the time Microsoft announced they were going to stop supporting it approximately 11 months after it was initially released.
Now, Apple has a whole hoard of technologies that Adobe and Microsoft didn't use that did not make the jump from OS 9.0 to OS X. OpenDoc is most famous for the youtube video where the angry developer questioned Steve Jobs. I suppose you could add Newton OS to that list, but it is more the closing of a whole platform.
In more modern times, if you started using GC, then you had to convert to ARC pretty soon thereafter.
I have been experiencing this since the mid 80's from all kinds of vendors.
Surely people older than me even have similar experiences from before.
It certainly seems clear to me (and seemed just as clear to me at the time) that Cocoa was being presented as the API of the future. Sure, Carbon is on the same slide, but so is Classic!
I also seem to recall (though I'm not an expert and I certainly don't have inside knowledge) that in those first few releases both Cocoa and Carbon were evolving, sometimes at different rates in different areas. Then I remember when Core Foundation and similar C-only APIs became a thing that people talked about, which as an onlooker of the platform kind of confused me at the time - was it an admission of some inadequacy of objc?
I don't think the evolution of C vs ObjC APIs was a good proxy for the future viability of Carbon vs. Cocoa. If an API was intended for Carbon apps, it had to be C. If it was exposing core OS services already implemented in C, it was more likely to be C. Even fairly new APIs like Grand Central Dispatch have both C- and ObjC-intefaced components, based on the level of abstraction.
Also, JavaFX Script is dead, but JavaFX the library is doing quite well (http://www.oracle.com/technetwork/java/javafx/overview/faq-1...).
So building products and applications on the flash player these days is quite the gamble.
It's not that much of a gamble as long as W3C and HTML/JS are still around.
We got fucked by Windows Workflow and Silverlight, both of which were canned. The former was rewritten completely but didn't support our use cases any more.
The main thing for me is that I have to relearn every damn API every 6 months to keep up.
We have some cool stuff deployed with it (long term service correlation, long running background processes, custom workflows for business processes), but you are right about it being complicated. We're in the financial sector so workflow and process management is king to us.
The API is there for us to not have to do all the legwork. Do you know how complicated it is to produce a workflow engine and do you know how many companies have their own half broken workflow engines?
I've heard a lot of poeple say "just leave it as 4.0", but we've been there since day one with .Net 1.0 and I'll tell you it's not fun being on the support trailing edge when you have to do a massive port.
I have made extensive use of projects in the past that have had active repos and mailing lists only to have them slowly turn into a ghost town because one of the major maintainers stopped working on it and nobody else stepped in.
For OSS I like for one of three things. Either "too big to fail" (i.e Linux , Rails). Interchangeability , i.e something built on top of an open protocol like an SMTP server. Or something with < ~10KLOC in language I am familiar enough with that I would feel comfortable folding the entire thing into the codebase as a whitebox.
While you can't fork XNA and support it, it's not even remotely tied to the OS. It's a content pipeline and a thin wrapper around DirectX's various components. There's really nothing magical there, and certainly no low-level pieces.
Typical modern Microsoft:
"Okay guys, now we're doing everything in API-Y which is quite different than API-X. And API-Y apps don't run on Windows version I which 90% of the market is running, they only run on Windows version J and higher, which 4% of the market is running."
Yeah, that's not cool, especially if you're doing this just about every time a new Windows version comes out.
I hope things get better for you.
That said, I'm starting to be skeptical on trusting them after all of these.
In other words, XNA is dying, but the C# and the managed game programming paradigm is not. It will be replaced by something, just not XNA.
Having said that, despite working in the Microsoft sphere for the bulk of my career, I've managed to sidestep these issues. XNA, Silverlight, XAML, WPF, Azure, even Winforms -- there have been a lot of solutions and technologies that were clearly of limited longevity or probability of success from the outset, so I moved in other directions.
In the case of Silverlight, I remember thinking to myself about how I would wait on it to see how it fared given the saturation of Flash everywhere else, and see how widespread the adoption was going to be. If I decided to dedicate myself to learning Silverlight I'd be very disappointed.
There's still the expectation that people use C++/CX, which is terrible, but I think the "indie" path will be pretty well-formed.
I'm shipping my own real-time cooperative game-making software (http://craftstud.io/) using XNA on Windows and MonoGame on Mac and although it was very rocky at first, after submitting a few patches/bug reports and with all the work happening, it's now in great shape.
The Linux version of MonoGame still has a few nasty issues, especially with window-sizing but those are being worked on.
Some of the core developers are now working on reimplementing the Content pipeline which is basically the spine of XNA and one of its big strength, so that MonoGame can be used without relying on XNA at all. It looks like it's well on tracks: http://www.youtube.com/watch?v=XvYOtWdMV2Q
Are the two interchangeable enough that you can just straight up use XNA things?
Well to be truthful, they last forever but you never know which one you should be using because there are about 3-4 concurrent APIs that do the same thing which may be deprecated at zero days notice.
There are third party things like Unity3D but that looks like overkill for just making a pixel art game.
Since we are now seeing 2d (and even 3d) games with good enough performance written in languages like JS & Java, forcing programmers to do low level memory wrangling to build a mario clone seems a little backwards.
Without XNA I don't see a big reason to build a Windows only game.
I said the exact same thing as you are before getting back into native development. "Why should I manage memory myself? Ew!" It was one of the biggest reasons I avoided C++, and I say that knowing C (albeit having left it unused for about six or seven years). Eventually I bit the bullet and jumped back in, and to my utter surprise found it completely easy. C++ is boilerplatey on its best day, but most of the hard problems are solved problems. Like, if you want to treat it like Java or C# (which I've spent much, much more time with), fling boost::shared_ptrs around. If you don't, spend a couple seconds thinking about what you're doing. It really is a non-factor once you get into the swing of things, and while I'm a pretty competent programmer I only started writing real C++ about three months ago and I no longer spend any significant time thinking about it.
C++ gives you sufficient advantages in terms of portability and performance that, if you're writing a game from scratch, you probably want to be using it. If you don't want to be writing C++, you probably want to be using Unity or another engine that bakes in the hard parts (with a corresponding loss of flexibility).
I've come to the same conclusion and as primarily a C# guy for the past 10 years, I've been hesitant to go the C++ route. If you haven't blogged about your experience, you might want to consider it, I know a few people that are looking for a better way to go building simple games (2d mostly) and Unity seems like overkill. Using C++ with something like Cocos2d seems like a much better way to go. I know LUA also supports Cocos2d but I guess I'd rather go with C++ since the syntax seems more my style (versus Lua's more Basic kind of syntax).
Anyway, thanks, if you've blogged about your experience please link to it, I know I and a few other would be really interested in hearing more about your experience.
I have a blog (http://edcanhack.com) but I am very bad about it. This seems like it'd be a good post, though - I'll come up with something tonight.
I always assumed that XNA was a play to keep indie developers invested in Windows/Xbox.
>There’s more content in today’s email regarding XNA which I don’t care to share, thanks to a stern NDA reminder. (Ironically, when MS finally gives us what they should be saying to the public all along, I can’t share it.)
Could someone more informed make a guess on whether that's good or bad news?
Why I learned it? Just in case someone offered me a XNA job...
Why I moved quickly to other things?
Well, because I expected that, and in fact I think it took TOO LONG to it happen, but it happened anyway...
Same thing they said about Silverlight or XNA just within months of discontinuing them.
"Can you imagine spending 5 years learning XNA and becomming a guru, only to have them yank the rug from under you?"
Maybe open source, the Web and JS is a better place to rely on, but I just love having a compiler.