Showing posts with label Cross platform. Show all posts
Showing posts with label Cross platform. Show all posts

Saturday, November 6, 2010

The Gu to the rescue..

Well mostly.

I think much of the already shaky acceptance of Silverlight won't be solved by Mr. Guthrie's post (I'm talking globally here.  Let's be realistic, it's not exactly synonymous with Flash in terms of wide spread acceptance or even general public knowledge.  If I had a dime for every post I've seen that says "What's Silverlight?  I've avoided installing it because I don't know what it is..."...)


Mr. Guthrie did a good thing by attempting to smooth all this over. Given that there's a Chief Architect position open at Microsoft right now, it was probably a VERY good career move to do so.  Mr. Guthrie is one of the few individuals at Microsoft upper management that I know of that has commanded the respect and admiration of the Microsoft development community out of pure honesty and sincerity.  Heck, I know a couple of Microsoft haters that have nothing but good things to say about him.  Kudos Mr. Guthrie.  While I don't think this is a 100% improvement over Bob's version, nor is it exactly what all the developers wanted to hear, I'm betting more will certainly like your take on it by quite a bit.


I'm actually a bit surprised at the number of developers that were personally affected by BobMu's ZDNet interview and subsequent follow up on the Silverlight Team blog. There are several who have claimed that the fuster-cluck and mishandling of the Silverlight "strategy shift" have alienated projects they had championed.  Clients, who were once on board with it suddenly are not.

I can luckily say that the Silverlight applications I've championed and been involved with at work have had a very small audience (speaking in the global terms I spoke of above).  In fact, I green-lit Silverlight as the framework for our next application.  But the scope of usage is very well defined (Windows users only, connected to the intranet).  The fact it will probably run on a Mac too is just an irrelevant bonus. From the sounds of the Gu clarification of Mu clarification of the Mu interview, ours is a relatively safe use case (though to be fair, i don't think that was unclear in BobMu's clarification or his original interview).

However the reason for doing this wasn't so much the superior technology.  It wasn't even really the development tools.  We could easily accomplish the same thing with Winform or WPF.  It has a more to do with leveraging the reusable components we already had and how much easier/stable the deployment is strategy is in Silverlight.  If we had not already had a sizable investment in "ramp  up", and weren't already familiar with nuances, it would have been an extremely tough sell to management, let alone the rest of the team.

I still don't think those at Microsoft (including Scott Guthrie) completely understand the biggest complaint in all of this.  I think in the end, a good portion of the Silverlight community wanted a better Flash/Air, including the ability to run it on most platforms (or at the very least, as many as Flash can run on plus a couple more).  The only proof they need is from Microsoft's own feature request site (as of this writing, 5,417 votes and easily the top requested feature by over 1,500 votes)

Somehow, I doubt the expectation from the development community was that it would be on every product from your PC to your toaster.  I think the expectation was at LEAST the same platforms as Flash.  Or in other words, the top 8 most popular and feasible ones.  Heck, Microsoft owns at least 3 or 4 of those.  I think most developers would even be fine with the idea of it being an application framework with binary compatibility only at design time (which would make iOS deployment a real possibility).

A few weeks back, I wrote an entry on my predictions for PDC.  And while I was correct on a couple of minor items, I was WAY off in regard to the Silverlight strategy.  

In that entry, I noted that there is known evidence of Silverlight running on Moblin (and presumably Meego).  I was also pretty sure we would see Silverlight applications on the Xbox as well.  Especially since there is a Silverlight player on the Xbox 360 TODAY that developers outside of Microsoft do not have access to. 

Not to mention, they have a great symbiosis with the Mono team at Novell.  Given the proper authority, resources, and patent safety (beyond the Office leverage Novell already has), I suspect that team would be a great work horse to implement Silverlight-accurate Moonlight versions on other platforms while the Silverlight home team drives the core version forward.

So, I believe the cross platform story is attainable, and I suspect there is even a couple ports of it that are in 80-95 percentile area of completion.  But politically or otherwise, despite the fact it's something Microsoft's developer customers want (the top requested feature, to be exact), it's essentially over.

Of course, you never know what they are planning.  Optimistically, perhaps they are saving a big surprise for MIX 2011.  If that's the case, I think it would be a good idea to play one of those cards now (say the XBox one, if it exists).  And they best be prepared for the usual questions around Silverlight for Android (at the very least).  To be honest with you, I suspect a solution to that one platform would be enough to win everything back.

Sunday, October 24, 2010

PDC 2010 Predictions: The future is soon!

Microsoft Professional Developer's Conference starts this week.  Amazingly, this conference sold out only 5 weeks after opening.  Compare this to last year, where I was able to secure a spot there within a couple weeks of it’s first workshop day.

I wasn’t quick enough this year to secure a spot, but for those of you who were lucky enough to get a spot, PDC allows you to participate in a bit of Microsoft history.  PDC and MIX tend to bookend implied direction of Microsoft’s strategy.  Those of you who are like me and unable to make it this year, the PDC website is going to have live streaming.  Hopefully since Steve Ballmer is doing the keynote, we’ll see “Developers!: The sequel”.

It’s always fun to speculate based on the events of the past and news items that have floated around for awhile.  So here are a few things I think we will see this coming week before PDC comes to a close:


The No-brainers
Windows Phone 7 development will be a huge focus, as will Azure.
Heck, this isn’t really so much of a prediction as it’s mostly confirmed by the agenda at the PDC website.  But it will be pushed heavily through the magic of the mind control devices strategically placed in the auditoriums on the Microsoft campus as well as peer pressure from the well respected “who’s who” of the Microsoft development teams.  In all seriousness, these items have been and will be big deals to Microsoft’s future.  So therefore, they will get a lot of attention.

Certain limitations that exist within Azure right now, such as limited ability of customizing the virtualization images in your “spun up” farm drones, will probably be lifted with new announcements around this platform.  Hopefully a new pricing model will be announced as well or some analysis tools to give companies an idea of how much a cloud-based application will cost them.  As it is at the moment, it’s far too easy for an application in the cloud to cost a lot of money unless that application is optimized to minimize it’s dependencies on cloud transactions.

I believe the next version of the Windows Phone 7 operating system and Silverlight/XNA development tools will be announced as well.  Bringing it closer to Silverlight 4, and closing at least some of the criticized gaps in functionality that the launch version of the OS has.  I also predict that these upgrades will go beta for public consumption and testing with the goal of making it available on the handsets in time for WP7’s wider release to carriers that do not rhyme with Bay-Tee and Tee.


The ultimate in swag: Part II
Those that attended last year got the ultimate in swag: A limited edition Acer Aspire 1420P laptop, filled with features that allowed developers to exploit the new snazzy APIs that were revealed in the also announced Silverlight 4.  Continuing in that trend, I predict that developers will receive free phone hardware to assist them in writing Windows Phone 7 applications.  I’d also not be too surprised if attendees were to get a voucher waiving the first year’s $99 fee in the application store.  They do this already for the Dreamspark students, so it doesn’t seem too far-fetched to give the same opportunity to those who take their development efforts seriously enough to pay money to participate in a Microsoft conference.  In other words, if they HAVEN’T thought of this as a give-away.  They really should.  (And this is coming from a guy who won’t be there to reap the benefits of such giveaways)


Silverlight: the new Borg
The next version of Silverlight/Everywhere will be announced for PC and Mac. (Silverlight 5)

WPF will be officially dead (as previously alleged elsewhere).  Although “dead” in this case will just be a synonym to “rebranded” or in Borg-speak "assimilated".

Lately, Silverlight’s true definition is a little fuzzy.  What was originally intended to be a “code once, deploy many” type of framework, has turned into more of a clever marketing buzzword.
 
And in keeping with this trend, “Silverlight for Windows” will be the newest flavor to join the likes of “Silverlight for Windows Phone”, “Silverlight for Symbian”, “Silverlight for Windows Embedded”, and “Silverlight for your toilet” (Okay. Just kidding about that last one, I hope).  The book publisher of “Silverlight for Dummies” may have to change the name of their book to avoid potential confusion for those who may ultimately seek to develop for the “Dummies” platform. (which, in a way, would be somewhat ironic. Insert your iPhone/Android joke here.)

On the other hand, Silverlight 5 may be enough to mark the end of further WPF development.  Like the COM capabilities introduced in Silverlight 4 through the “dynamic” keyword in the new .Net and Silverlight APIs, it’s probably not too far off to allow .Net assemblies a point of entry in a Silverlight application in nearly the same way.  In fact, you can bring in .Net assemblies today by leveraging some COM objects already built into Windows/.Net.  Silverlight just needs a more straightforward way to do it. This gives existing applications that sit a little closer to the .Net metal a migration path, and still allows a common Silverlight codebase.  Of course, this would have to exist under the blanket-centric “elevated trust” model, which has it’s own issues (as I ranted about here).




Silverlight expands 3 Screens and a Cloud.
Three screens and a cloud reveals it’s 3rd screen
Last year, Ray Ozzie evangelized his vision and strategy of leveraging the cloud as a service provider for browser and rich client plugins:
“So, moving forward, again I believe that the world some number of years from now in terms of how we consume IT is really shifting from a machine-centric viewpoint to what we refer to as three screens and a cloud:  the phone, the PC, and the TV ultimately, and how we deliver value to them.”
-Ray Ozzie 
With WP7, Zune, XBox 360, and Windows already able to consume XNA applications, one could argue that XBox 360 was already part of the 3-screen trifecta.  However, XNA’s purpose is nearly exclusive to gaming, doesn’t provide a standard UI for applications, and it’s application focus has not been one for consuming cloud content.  This doesn’t fulfill the true vision of applications AND games being represented on the three screens.

Rumors have been circulating for awhile that the Xbox 360 Dashboard’s 2010 update this fall (which I believe will be shortly after PDC) will have the “Indie games” area renamed to “Xbox Live Apps”.  XBox Live’s new dashboard looks to be heavily influenced by the Metro design standards.  And such a rename would imply that XBox would be the conduit to the television “screen” for more than game applications. It just seems more than a coincidence.

So, I suspect “Silverlight for XBox”, coupled with a renaming of the Indie portal on XBox Live will be the defining moment of the third missing screen in Mr. Ozzie’s vision and strategy.  This will be monetized the same way the Indie game developers and WP7 developers are charged now:  As development partners for the app store.


The PC screen gets bigger… (or rather, deeper)
Some time ago, Microsoft’s Silverlight team announced a collaboration to bring Silverlight to the Linux based open source Moblin operating system destined for their Atom-based netbooks.

There was even a live demonstration of Silverlight 3 in action on a Moblin netbook given at an Intel convention by (then) Microsoft General Manager Ian Ellison-Taylor (who recently resigned from Microsoft as well).

In parallel, Nokia was working on a similar mobile open source operating system called Maemo.

Recognizing similar philosophies and goals of targeting mobile and netbook devices, Nokia and Intel merged the projects and it became Meego.  This new hybrid project has basically been a mash up of the best features, and strengths on the two systems.

So where does Silverlight fit into all of this?  I posed that very question at the Meego forums, presenting all the evidence and questions around Silverlight’s implementation on the Moblin OS.  The result was a couple of friendly responses from community members.  But neither Nokia nor Intel’s people have commented.  In the course of 2 months, my post gathered over 800 views, which I think implies some interest for Silverlight on this platform.  And such popularity deserves a comment by someone “in the know”… unless they are forbidden to prior to official announcements.

A few changes at Nokia as a company point to this platform being a new home for Silverlight as well:

A former Microsoft President, Mr. Stephen Elop is now CEO of Nokia.  In announcing Mr. Elop’s departure from Microsoft, Steve Ballmer casually mentioned a continuation of a working relationship with him at Nokia.

Of course, this could mean something simply in the realm of a manufacturing agreement for Windows Phone 7 hardware.  Or it could mean that “Silverlight for Symbian” will be getting an upgrade sometime soon.

However, it’s been mentioned that Meego may be the operating system of choice on Nokia smart phones in the future.  And recent news implies that the Symbian foundation itself is facing a little bit of trouble.

So that really leaves Meego to be the platform successor for “Silverlight for Symbian”.


Moonlight
Just like last year, I expect the free software version of Silverlight (Moonlight) to be given an ultra quiet nod as well.  I suspect that Moonlight 3 will finally be released out of it’s preview state to either a beta or production release.  I would also expect to see the “Ahead of Time”/N-Gen compiling option getting added to Moonlight sometime in the future to give Silverlight an equivalent deployment strategy to iPhone as Adobe currently provides with Flash/Air. 




What we won’t see…
Silverlight for Android handsets
So what will NOT be making an appearance at PDC?  I highly doubt we will see anything resembling “Silverlight for Android Phone” outside of anything that the Mono/Moonlight team at Novell may have brewing.  Why? Such an announcement would take the wind out of the sales (ha, get it?) of Windows Phone 7.

While Microsoft has not denied any work in the area of Android, the timing for this is not correct (at least on the smartphone/ARM version.  More on this in a minute)

Best bet would be some announcement at MIX11 if there’s a strategy in place to monetize application deployment similarly to WP7 without hurting WP7 momentum.  And even then, I doubt support will be a priority if only out of respect for their partnership with Nokia/Symbian/Meego.

Silverlight for iPhone
Big surprise?

The long shot: The app store bandwagon
I know this might seem WAY out there, but if you were at PDC last year, eBay was given some airtime during the keynote to tout their “App store” to allow Silverlight 4 developers to monetize their development efforts.

I suspect we will see a similar product announced as an agreement between Microsoft and Intel.
Intel’s AppUp developer sales portal is already live, and it’s very possible that it’s going to be heavily promoted through their OEMs on all Intel devices in the near future.

AppUp currently supports .Net applications for Windows, Moblin has an SDK, but I imagine that’s just going to remain there until the Meego SDK is announced (which will probably also work with the Moblin deployments out there that just won’t go away).  Silverlight support has also been noted on the roadmap.
If this is true, Miguel de Icaza's Windows App Store idea might actually take some shape here, even if not specifically managed by Microsoft themselves.

So what’s in it for Microsoft?  If a partnership is in place here (and there is suspicion that one already is based on this little "top-secret" exchange), it means plenty of opportunity for monetization.  Monetization in the form of some sort of profit sharing agreement, perhaps.  Or, Azure could simply be providing the hosting for the applications.  Hosting costs as well as download “transactions” equate to dollars (or rather, many, many cents) in Azure’s typical billing agreement.  This means that “cross platform” platform strategies such as Silverlight existing outside of the Windows eco system widens the audience and revenue stream for these downloads.

This also figures into Mr. Ozzie’s strategy.  Let’s not forget that Silverlight applications, regardless of the platform it runs from, is a good catalyst for cloud transactions from within the applications themselves.  And as Microsoft knows, money that doesn’t originate from an application running on Windows is just as green as one running from Meego... (or a tablet based Android)

Android support without disrupting WP7?
Intel has been working on an Android tablet running on the Atom processor.

One of the things that many people do not realize about Android is that while it is an “open” operating system, there are a few key closed applications that Google reserves for their licensed handset partners.

One such item is their App Store browsing application.  This is a very important application currently.  However, if Intel has it’s own app store, and has it’s own application for browsing it, I don’t imagine it’s too far fetched to allow Android applications to exist on AppUp as well and offer this to OEMs as a free/subsidizing alternative to Google’s store.

And if the only applications that exist on this store are Android netbook applications running on a version of Silverlight for x86 Android, this doesn’t necessarily interfere with Windows Phone 7 since the Android handsets run on the ARM/Snapdragon processors.  In fact, the netbook version of Meego’s Silverlight (if it exists) probably ports to the x86 version of Android with little effort due to their common Linux roots.




Politics…
In conclusion, its worth noting that Ray Ozzie has not been mentioned as a keynote speaker this year.  Clearly this is due to his recent announcement to leave the company.
So who should succeed Mr. Ozzie?

PDC is a great place to make this announcement if it’s someone that Microsoft KNOWS that the development community will approve of and get behind.  If anything, Microsoft knows how to market to it’s developers.

So.. will the next chief software architect hire be a Jobsian move, and bring Bill Gates back?  I doubt it.  If an announcement is made at all, I’m personally betting on the red shirt.


To all of you attending PDC this year, have a good time!  I can attest that 2009’s was one of the best events I’ve ever attended.  Be sure to wave on the web cast.  I’ll be looking for you.

Sunday, July 18, 2010

Cross Plat-formalities

I recently enjoyed an article written by Microsoft employee Justin Angel on the cross platform nature of Silverlight.

I have to admit.. I like Silverlight a lot.  Or at least I think I do.  I like the idea of what I think Silverlight is... (rest assured I will elaborate about that on a separate date).

But something struck me in Justin's article:

"A common trend amongst all the differences we’ve surveyed in this article is that they’re all to do with deep Operating System Integration or Browser Integration.  These are either issues with the operating system or the browser itself. 
Remember that .Net at it’s core is just a framework abstraction on top of the O/S. 
And as anyone who’s ever written a framework knows, some differences cannot be abstracted away. "


I can make no claim of writing a framework the magnitude of .Net, and I am sure there are a number of show stoppers regarding what is exposed to Silverlight outside of Microsoft's home turf of the Windows environment.

But, I do have some experience with cross platform development, and I would have to say that I ran into these same issues under Python and Java.

So what's my boggle?

In those situations, I certainly had to write platform specific code/factories and execute their strategies based on where the application was running.  However, I wrote this code as a shared middleware layer.  All of my client application code called this middleware layer without worrying about the platform it was sitting on, and the middleware handled the appropriate funneling of platform specific code.

If that isn't abstraction, I don't know what is.  So, if I can do this, why can't Silverlight, Python or Java?  Justin's assertion that "some differences can't be abstracted away" is true in a "I can right click and you can't" or a "I have to touch/tilt and you have a keyboard" type of way... But what about those things below the surface of user interfaces and interaction?

I think the fuzzy truth here is one of politics and avoidance of religious debate.  With my framework, I had the luxury of making a decision about how it should behave.  And I also knew that I likely wouldn't have to worry about platforms outside of Windows and Posix flavors.


Often times, OS's have functions that are similar in feature, but behave slightly differently.  For example, in Linux, if you attempt to move a file across a hard drive boundary, the operating system would bark at you.  It's not legal because a "move" in Linux implies that you're merely changing it's pointer in the file look-up table.  Windows is another story, it will change the pointer if it's on the same drive, and do a copy/delete operation if it's not.


In my framework, I had a version of "move" called by all of my client code that made this operation behave like Windows across the board.  Clearly, I didn't have a horde of ravenous Linux fanboys to worry about here saying that I was doing it "wrong", or I was trying to mislead anyone into believing Redhat did that operation some other way.

But, you can imagine the type of drama Microsoft would have to deal with if they took it upon themselves to say that some operations on the Mac should be changed to act more like a Windows box?  Perhaps the Mono team is running into similar challenges with Moonlight.

So.. I would revise Justin's statement slightly to say that "aside from extreme, unresolvable cases, some differences can't be abstracted away without introducing bias toward one platform"

In a perfect world, I'd like to see cross platform frameworks take the best features of one side or the other.  Like a stew of the best functions of each platform they target.  Of course, this will never happen, and in some cases isn't always feasible (as Justin's article indicates, there are some Windows OS concepts that simply don't exist on OSX).  And it puts the burden of those decisions on the cross-platform framework developers.  Probably not a place they would prefer to be.

In closing, I'd like to add another Option to Justin's "What should developers do?"

Option 4 - Know what you want to target, and implement your own abstractions where you can.

The powers behind Silverlight, Java, Python, etc..  They really can't make these command decisions without causing turmoil (whether it's the burden of additional testing around overriding native behavior of a platform, or the danger of a lynching from fans of a particular OS).  But nothing stops you from doing it if you own your application.  If you want Mac and Windows to both return "INFINITY", thats a trivial abstraction you can do to reduce the burden of code branching in your client code.

Want drag and drop to work without thinking about it? If you're using ASP.Net, you can easily make a UserControl composed of the silverlight plug-in and the necessary javascript events and code if the client browser is running on Safari.

Or... if you don't like such hackery, KNOW what you want to target, and go out of your way to avoid the APIs where things are known to behave differently or flaky.

Cross platform development is tricky business and requires a high level view of the app's expectations across all the places it's going to run.  But there are a lot of software developers out there that are doing it.  Particularly in the game development realm.

Next time you go to the store, see how many of the same titles exist between Playstation 3 and XBox, and see how many common middleware frameworks are credited on the back of the box.  (Havok, Bink Video, fMod, etc) This is a prime example of Option 4 in action.

In the end, it all has to behave the same, so the differences are formalities.  Or as I like to put it... Cross Plat-formalities...