}

Note: We Have Moved from Blogging to Writing Technical Articles

Instead of blogging, we have switched to writing technical articles on topics related to our products.
Click here to see our full article listing.

The Future of Microsoft Office Add-In Development

BreezeTree sells one Excel add-in and another is targeted for release later this year. Despite that, I don't know that I would recommend getting into this market. Many developers may point to the dwindling influence of Microsoft in the software world, competing online office suites, and the rise of mobile and tablets. Don't kid yourself. The Microsoft desktop market is still huge, and Microsoft Office still has hundreds of millions of users.

Since the release of Office 2013 and Office 365, I've been asked if FlowBreeze supports Office 365. Talking to customers, many of them are left confused by what difference is between the two. (In short, Office 2013 is the desktop installation, and Office 365 augments your desktop version with cloud-based storage and web-based editing.) It is clear that Microsoft would like to move to a subscription-based, recurring revenue model, but I'm not convinced the user base will follow. So I'm taking a step back to consider whether there is a viable future in Office add-in development.

COM vs. VBA vs Apps for Office

FlowBreeze is a COM add-in. These are Windows-only and allow you to create add-ins using any programming language that can interface with COM. Most COM add-in developers use Visual Studio (with C#, VB.Net, or C++) and create the UI elements with Winforms or WPF. I've also seen some nice add-ins developed in Python and Delphi.

[Microsoft itself doesn't push pure COM add-in development. Instead, they promote VSTO (Visual Studio Tools for Office), which are also COM based. I won't cover VSTO because, frankly, I don't know much about it. It always struck me as a tool set for developing in-house, enterprise-level add-ins for Office.]

By "Windows-only" I mean that COM add-ins will work in the desktop Office environment, but will not be accessible when editing a document with the web interface. If you want to target Office for Mac, you would need to develop in Visual Basic for Applications (VBA). If it weren't for the Mac aspect, I wouldn't even bother covering VBA, but since cross-platform support is relevant, I will cover it a bit. VBA was introduced back in 1993, and the language kept sync with old school Visual Basic. After VB6's release back in 1998, the only notable change to VBA was the Long data types to support 64-bit Excel in VBA7. At the same time, the 64-bit version dropped support for the common controls in MSComCtl and MSComCt2 (which was a step backward for Windows development but those controls weren't cross platform anyhow). VBA has always been limited, and because the form building tools haven't been updated in the last 15 years, I don't consider VBA to be viable for commercial add-in development, especially where a polished UI is desired.

To allow developers to target both the desktop and web-based versions of Office applications, Microsoft introduced Apps for Office, which are written using HTML5, XML, CSS3, and JavaScript. Currently, the API's are very limited in what they can access and only target Excel 2013 and Outlook 2013. They are so limited that the Apps for Office Store is basically a wasteland. Microsoft has developed a reputation for a yoyo-like introduction of technologies in recent years, pushing them out and then pulling back active development and support. They have not provided a clear roadmap as to what's in store for the future of Apps for Office development. I believe they are committed to it in the long run, but given the initial offering, it doesn't look like a top priority for Microsoft.

From Leader to Follower to ?

When Google started dominating search, Microsoft followed suit and threw resources at MSN, then Live, and now Bing. Apple had the iPod, and Microsoft launched the Zune. When Apple started dominating the smart phone market, Microsoft again pursued, bringing up the market rear. After the iPad was released, the mess that is Windows 8 was conceived. And it's not just that they were followers. Google followed Apple into the smart phone and tablet markets and is now a strong competitor in market share. Microsoft's effort is lackluster by comparison.

When you think that forcing a tablet interface on desktop users is a good idea, maybe it's time to step back and look at what your core strengths are. Over the past decade, Microsoft has gone from a leader to a follower, chasing whatever technology other tech giants are succeeding with. For Microsoft, two of their big cash cows are Windows and Office. To milk the Office cow further (try not to form a mental image), they are moving to a subscription service with Office 365, but I think they risk weakening their position on two fronts.

First, they recently announced Office 365 for iOS. The smart thing that they did is to make it available for Office 2013 users only. If that requirement is dropped in the future, they risk commoditizing Windows as just another operating system capable of running their cloud-based Office applications.

Second, they do not provide a consistent and fully-capable add-in development system across all environments. Ultimately, anything that lets users leverage even more functionality out of Office applications helps Microsoft and cements their market position.

Software Ecosystems

Google, Apple, and Microsoft each have ecosystems that developers can leverage to make money. Although Apple has a steady ~10% of the computer market, their core strength is the mobile / tablet space, so most developers target their App Store. Apple gets a 30% cut. Google is tech-driven advertising company with a rising mobile / tablet decision, so developers can leverage their ecosystem by buying ads to sell their software, displaying ads within their software, or by selling their apps through the Google Play Store. Obviously, Google makes money off the ads, and they charge a 30% fee for Google Play transactions. So, in short, both Apple and Google have engineered ecosystems that allow them to get a cut of the revenue.

In an attempt to establish their own app marketplace, Microsoft offers two marketing channels for developers - the Windows Store and the Office Store. Neither has succeeded yet.

Ironically, given Microsoft tenuous relationship with OSS segments of the developer world, Microsoft has one of the most open ecosystems for creating and selling software. Other than having to pay (rent-seeking) Authenticode certificate providers, developers are free to create and sell their Windows desktop software directly to customers without paying a 30% transaction fee. The same can be said for non-"Office App" add-ins.

I realize the ridiculousness of a lone developer trying to offer advice to a behemoth like Microsoft, but (ask my wife) I've never been one to back away from a futile argument.

I believe that if Microsoft wants to continue their office suite dominance for another decade or two, they need to provide users with reasons not to switch to Google Docs, Zoho, or one of the Open Office variants. The Office applications - especially Outlook, Excel, and Word - are more than just applications. They are extensible development platforms that ISV's leverage to provide additional utility for end users. They more utility they offer, the more likely it is that customers are anchored to Office. In order to take advantage of that, Microsoft needs an Office add-in development model that provides a full-featured API. I mean a really full-featured API. The tools need to let you develop add-ins that will work on the desktop, the web, and across platforms. And as long as I'm asking Santa for a pony, I will throw in that they need to provide backward compatibility for Office 2010, which has the lion's share of the Microsoft Office user base. (Except for the Office 2010 support), they are headed in that direction with Office Apps but are nowhere near there yet.

tl;dr: Add-ins extend the functionality of Office. Added functionality anchors your user base. Therefore, Microsoft needs to strengthen its add-in development tools to enable developers to extend Office functionality. In the meantime, I'm sticking with COM.

References

This post was inspired by two recent blog posts that I read:

[1] http://www.add-in-express.com/creating-addins-blog/2013/03/04/office-2013-for-sale-office-app-store-already-dead/

[2] http://blogs.msdn.com/b/officeapps/archive/2013/06/18/roadmap-for-apps-for-office-vsto-and-vba.aspx