• Interoperability @ Microsoft

    Greater Interoperability for Windows Customers With HTML5 Video


    Google recently announced that its Chrome web browser will stop supporting the H.264 video format. At Microsoft we respect that Windows customers want the best experience of the web including the ability to enjoy the widest range of content available on the Internet in H.264 format.

    Today, as part of the interoperability bridges work we do on this team, we are making available the Windows Media Player HTML5 Extension for Chrome, which is an extension for Google Chrome to enable Windows 7 customers who use Chrome to continue to play H.264 video.

    We believe that Windows customers should be able to play mainstream HTML5 video and, as we’ve described in previous posts, Internet Explorer 9 will support playback of H.264 video as well as VP8 video when the user has installed a VP8 codec.

    We are committed to ensuring that Windows customers have the best Web experience, and we have been offering for several years now the extremely popular Windows Media Player plug-in for Firefox, which is downloaded by millions of people a month who want to watch Windows Media content.

    We also recently provided an add-on for Windows 7 customers who choose Firefox to play H.264 video so as to enable interoperability across IE, Firefox and Chrome using HTML5 video on Windows.

    For many reasons - which you can read about on other blog posts here and here - H.264 is an excellent and widely-used video format that serves the web very well today. As such, we will continue to ensure that developers and customers continue to have an optimal Web experience.

    Claudio Caldato,

    Principal Program Manager, Interoperability Strategy Team

  • Interoperability @ Microsoft

    Sublime Text, Vi, Emacs: TypeScript enabled!


    TypeScript is a new open and interoperable language for application scale JavaScript development created by Microsoft and released as open source on CodePlex. You can learn about this typed superset of JavaScript that compiles to plain JavaScript reading Soma’s blog.

    At Microsoft Open Technologies, Inc. we are thrilled that the discussion is now open with the community on the language specification: you can play (or even better start developing with TypeScript) with the bits, read the specification and provide your feedback on the discussion forum. We also wanted to make it possible for developers to use their favorite editor to write TypeScript code, in addition to the TypeScript online playground and the Visual Studio plugin.

    Below you will find sample syntax files for Sublime Text, Vi and Emacs that will add syntax highlighting to the files with a .ts extension. We want to hear from you on where you think we should post these files for you to be able to optimize them and help us make your TypeScript programming an even greater experience, so please comment on this post or send us a message.


    TypeScript support for
    Sublime Text
    TypeScript support for
    TypeScript support for

    Olivier Bloch
    Senior Technical Evangelist
    Microsoft Open Technologies, Inc.

  • Interoperability @ Microsoft

    Roadmap for Outlook Personal Folders (.pst) Documentation


    By Paul Lorimer, Group Manager, Microsoft Office Interoperability

    [UPDATE: 05/24/2010, Two open source projects to facilitate interoperability with Outlook .pst data files]
    [UPDATE: 02/20/2010,
    New Office Documentation Now Publicly Available

    Data portability has become an increasing need for our customers and partners as more information is stored and shared in digital formats. One scenario that has come up recently is how to further improve platform-independent access to email, calendar, contacts, and other data generated by Microsoft Outlook.

    On desktops, this data is stored in Outlook Personal Folders, in a format called a .pst file. Developers can already access the data stored in the .pst file, using Messaging API (MAPI) and the Outlook Object Model—a rich set of connections to all of the data stored by Outlook and Exchange Server—but only if Outlook is installed on the desktop.

    In order to facilitate interoperability and enable customers and vendors to access the data in .pst files on a variety of platforms, we will be releasing documentation for the .pst file format. This will allow developers to read, create, and interoperate with the data in .pst files in server and client scenarios using the programming language and platform of their choice. The technical documentation will detail how the data is stored, along with guidance for accessing that data from other software applications. It also will highlight the structure of the .pst file, provide details like how to navigate the folder hierarchy, and explain how to access the individual data objects and properties.

    This documentation is still in its early stages and work is ongoing. We are engaging directly with industry experts and interested customers to gather feedback on the quality of the technical documentation to ensure that it is clear and useful. When it is complete, it will be released under our Open Specification Promise, which will allow anyone to implement the .pst file format on any platform and in any tool, without concerns about patents, and without the need to contact Microsoft in any way.

    Designing our high volume products to enable such data portability is a key commitment under our Interoperability Principles, which we announced in early 2008. We support this commitment through our product features, documented formats, and implementation of standards. The move to open up the portability of data in .pst files is another step in putting these principles in action.

    Over the past year, Microsoft Office has taken several steps toward increased openness and document interoperability. We’re proud of the work we’ve done around document interoperability, offering customers a choice of file formats and embracing a comprehensive approach that includes transparency into our engineering methods, collaboration with industry stakeholders, and shared stewardship of industry standards.

    We’re excited about the possibilities created for our customers and partners by this kind of effort, and we look forward to continued collaboration with the industry in our pursuit of improved interoperability with Microsoft Office. Stay tuned.

    Paul Lorimer, Group Manager, Microsoft Office Interoperability.

    Related Items:

  • Interoperability @ Microsoft

    Announcing one more way Microsoft will engage with the open source and standards communities


    JeanOpenTechI am really excited to be able to share with you today that Microsoft has announced a new wholly owned subsidiary known as Microsoft Open Technologies, Inc., to advance the company’s investment in openness – including interoperability, open standards and open source.

    My existing Interoperability Strategy team will form the nucleus of this new subsidiary, and I will serve as President of Microsoft Open Technologies, Inc.

    The team has worked closely with many business groups on numerous standards initiatives across Microsoft, including the W3C’s HTML5, IETF’s HTTP 2.0, cloud standards in DMTF and OASIS, and in many open source environments such as Node.js, MongoDB and Phonegap/Cordova.

    We help provide open source building blocks for interoperable cloud services and collaborate on cloud standards in DMTF and OASIS; support developer choice of programming languages to enable Node.js, PHP and Java in addition to .NET in Windows Azure; and work with the PhoneGap/Cordova and jQuery Mobile and other open source communities to support Windows Phone.

    It is important to note that Microsoft and our business groups will continue to engage with the open source and standards communities in a variety of ways, including working with many open source foundations such as Outercurve Foundation, the Apache Software Foundation and many standards organizations. Microsoft Open Technologies is further demonstration of Microsoft’s long-term commitment to interoperability, greater openness, and to working with open source communities.

    Today, thousands of open standards are supported by Microsoft and many open source environments including Linux, Hadoop, MongoDB, Drupal, Joomla and others, run on our platform.

    The subsidiary provides a new way of engaging in a more clearly defined manner. This new structure will help facilitate the interaction between Microsoft’s proprietary development processes and the company’s open innovation efforts and relationships with open source and open standards communities.

    This structure will make it easier and faster to iterate and release open source software, participate in existing open source efforts, and accept contributions from the community. Over time the community will see greater interaction with the open standards and open source worlds.

    As a result of these efforts, customers will have even greater choice and opportunity to bridge Microsoft and non-Microsoft technologies together in heterogeneous environments.

    I look forward to sharing more on all this in the months ahead, as well as to working not only with the existing open source developers and standards bodies we work with now, but with a range of new ones.



  • Interoperability @ Microsoft

    Redis on Windows – stable and reliable


    The MS Open Tech team has been spending quite a bit of time testing the latest build of Redis for Windows (available for download from the MS Open Tech Github repo). As we approach completion of our test plan, we thought we’d share some very promising results.

    In phase I of our stress testing, we put Redis on Windows through various tests with execution times ranging from 1 to 16 days, and configurations ranging from a simple single-master setup to more complex configurations such as the one shown below, with one master and four replicas. You can find an overview of the testing strategy and configurations that we used on the wiki page here.


    The results are encouraging – we found only one bug, which we’ve already fixed.

    These tests have been done with the port of the Redis 2.6.8 version from Linux to Windows, and this version includes all of the work we announced in January, including 64-bit support. Our goal is to ensure developers that they can trust using Redis on Windows on scenarios where reliability is an important requirement, and we plan to keep testing the code on more ‘demanding’ scenarios to assure that we haven’t missed anything.

    If you have comments or recommendations on any scenario we should add to our test plan, or any other suggestions on how we can improve our testing strategy, please let us know. We’ll be happy to consider using any app or scenario that Redis developers feel would be a good test case for Redis.

    Claudio Caldato
    Principal Program Manager Lead
    Microsoft Open Technologies, Inc.

  • Interoperability @ Microsoft

    Announcing PHP SDK for Windows Azure… and much more!


    I’ve just arrived at TechEd India where I’m going to talk about interoperability in my sessions “Build Mission Critical Applications on the Microsoft Platform Using Eclipse, Java & Ruby” and “Developing PHP Applications using Microsoft Software & Services”. In addition to presenting the on-going activities that Microsoft is driving to strengthen interoperability, I’m excited to be able to demo a new set of interoperability projects related to PHP. I’m going to give you a glimpse of these projects in this post for those that are unable to join us in India.

    The first PHP interoperability bridge that we’re announcing is the PHP SDK for Windows Azure. This SDK is the result of an open source development project by RealDolmen, for which Microsoft is providing funding. I’d like to personally thank Maarten Balliauw of RealDolmen for his work on the project. The goal of the SDK is to provide high-level abstractions that enable PHP developers to interoperate readily with Windows Azure.

    Keep in mind that the Azure Services Platform has been designed to be open, standards-based and interoperable.

    The Azure Services Platform’s support for XML, REST and SOAP standards means that any of the Azure services can be called from other platforms and programming languages. To facilitate the interoperability between the Azure Services Platform and non-Microsoft languages and technologies, Microsoft has  provided funding for two other SDK projects that support 3rd party programming languages: Java SDK for Microsoft .NET Services and Ruby SDK for Microsoft .NET Services

    The PHP SDK for Windows Azure focuses on REST and provides the following core features:

    • PHP classes for Windows Azure blobs, tables & queues
    • Helper Classes for HTTP transport, AuthN/AuthZ, REST & error management
    • Manageability, instrumentation & logging support


    Windows Azure is the foundation of the Azure Services Platform and it includes the services hosting environment for the platform. At MIX 2009, Microsoft announced the inclusion of FastCGI in Windows Azure’s hosting environment. The FastCGI protocol enables developers to run web applications on Windows Azure that were written using 3rd party programming languages including PHP. This opens up new options for PHP developers to deploy their applications. For example, in the context of the PHP SDK for Windows Azure you have the 2 following options for deploying your PHP web applications:


    A Technology Preview of the PHP SDK for Windows Azure will be released by RealDolmen under a “BSD” license. This version of the SDK supports interoperability with Windows Azure blog storage. A functionally complete version of the SDK – additionally supporting tables and queues - is expected to be available from the download project site by the fall of 2009. Of course you're welcomed to try out and provide suggestions & feedback to the project by joining the user forum.

    The second piece of announcement, I’m excited to make is the launch of a series of third party projects that offer samples and toolkit that enable PHP developers to easily include in their web applications the following Microsoft technologies:


    Features for PHP developers

    Embedding Silverlight in PHP

    Include Silverlight controls in PHP web applications

    Web Slices and Accelerators in PHP

    Include IE Webslices & Accelerators in PHP web applications

    SQL CRUD Application Wizard for PHP

    Automatically generated a simple “Create, Read, Update, Delete (CRUD)” PHP application from a table in SQL Server

    Virtual Earth Integration Kit for PHP

    Include Microsoft Virtual Earth maps in PHP web applications

    Microsoft is providing funding for a series of projects, of which this first batch have been developed by Accenture. The third party projects are available on Codeplex.com under a BSD license:

    More to come; stay tuned and once again I encourage you to take a look. Feedback is very welcomed.

    Vijay Rajagopalan, Principal Architect, Microsoft Corp.

  • Interoperability @ Microsoft

    More news from MS Open Tech: announcing the open source Metro style theme for jQuery Mobile


    Starting today, the Metro style theme for JQuery Mobile, the popular open source mobile user interface framework, is available for download on GitHub and can be used as a NuGet package in Visual Studio.

    The theme enables HTML5 pages to adapt automatically to the Metro design style when rendered on Windows Phone 7.5. The Metro style theme is open source and available for download here. This new Metro style theme’s development was sponsored by Microsoft Open Technologies, Inc. working closely with Sergei Grebnov, an Apache Cordova committer and jQuery Mobile developer.

    The theme looks just gorgeous, doesn’t it?

    clip_image002 clip_image002 clip_image006image

    The CSS and Javascript theme adapts to the current theme used in Windows Phone and applies the right styling to the jQuery Mobile controls.This allows mobile HTML5 web sites and hybrid applications to naturally integrate into the Windows Phone Metro style experience. This offers developers the choice of rapidly integrating the theme into their existing application but also to contribute to this open source project through GitHub.

    You can see an extensive demo of the theme on this page and you can learn more on this site where we are publishing new articles, references and source code sample for developing with Apache Cordova and the Metro style theme for jQuery Mobile.

    This is another milestone in our continuous engagement with the community. Our team has been working closely with the Windows Phone division to support the mobile HTML5 and JavaScript open source communities over the last year to bring popular open source projects to Windows Phone:

    • A few months ago, we sponsored the development of full Windows Phone support for PhoneGap (now Apache Cordova), the open source framework that lets applications be built for iOS, Android, Windows Phone and other mobile platforms using HTML5, CSS and JavaScript.
    • At the same time significant improvements were brought to jQuery Mobile (read more about this in our previous blog post): feedback from the community has been great and was partly responsible for our decision to expand our engagement with jQuery Mobile and sponsor this work.

    We believe it is important for developers to have choices when targeting Windows Phone, and we also want them to be able to deliver a good experience to the users of their applications, especially when making the choice of using Web standards (HTML5, CSS and JavaScript) to target multiple mobile platforms by picking solutions such as Apache Cordova.

    To do so, developers already enjoy a selection of Apache Cordova Plugins that give their application a Windows Phone touch such as Social Share, Bing Map launcher and Live Tile. Now developers can use the new open source Metro style theme for jQuery Mobile to give their mobile apps and websites the Metro style look and feel, and offer the final users an experience similar to the one they get with native applications.

    As usual we are very interested in hearing from developers and gathering feedback about the experience of developing HTML5-based applications and websites on Windows Phone. Let us know what other features, tools and frameworks you’d like to see.

    Abu Obeida Bakhach
    Program Manager
    Microsoft Open Technologies, Inc.
    A subsidiary of Microsoft Corporation

  • Interoperability @ Microsoft

    Here’s to the first release from MS Open Tech: Redis on Windows


    The past few weeks have been very busy in our offices as we announced the creation of Microsoft Open Technologies, Inc. Now that the dust has settled it’s time for us to resume our regular cadence in releasing code, and we are happy to share with you the very first deliverable from our new company: a new and significant iteration of our work on Redis on Windows, the open-source, networked, in-memory, key-value data store.

    The major improvements in this latest version involve the process of saving data on disk. Redis on Linux uses an OS feature called Fork/Copy On Write. This feature is not available on Windows, so we had to find a way to be able to mimic the same behavior without changing completely the save on disk process so as to avoid any future integration issues with the Redis code.

    The version we released today implements the Copy On Write process at the application level: instead of relying on the OS we added code to Redis so that some data structures are duplicated in such a way that Redis can still serve requests from clients while saving data on disk (thus achieving the same effect of Fork/Copy On Write does automatically on Linux).

    You can find the code for this new version on the new MS Open Tech repository in GitHub, which is currently the place to work on the Windows version of Redis as per guidance from Salvatore Sanfilippo, the original author of the project. We will also continue working with the community to create a solid Windows port.

    We consider this not to be production ready code, but a solid code base to be shared with the community to solicit feedback: as such, while we pursue stabilization, we are keeping the older version as default/stable on the GitHub repository. To try out the new code, please go to the bksavecow branch.

    In the next few weeks we plan to extensively test the code so that developers can use it for more serious testing. In the meantime, we will keep looking at the ‘save on disk’ process to find out if there are other opportunities to make the code perform even better. We will promote the bksavecow branch to master as soon as we (and you!) are confident the code is stable.

    Please send your feedback, file suggestions and issues to our GitHub repository. We look forward to further iterations and to working with the Redis community at large to make the Windows experience even better.

    Claudio Caldato

    Principal Program Manager

    Microsoft Open Technologies, Inc.

    A subsidiary of Microsoft Corporation.

  • Interoperability @ Microsoft

    MPEG-DASH Tutorial: Embedding an adaptive streaming video within your HTML5 application


    Poor quality streaming video solutions resulted in an estimated $2.16 Billion of lost revenue in 2012 (according to the 2013 Conviva Viewer Experience Report). That’s a LOT of zeros!

    Since we at Microsoft Open technologies, Inc. (MS Open Tech) believe this is simply unacceptable, we’d like to share some ways in which developers can leverage open source code to ensure their own delivery of video is of the highest possible standard.

    For this tutorial, we have chosen to use the dash.js player to deliver MPEG-DASH video to any browser that supports the W3C Media Source Extensions (MSE).

    What is MPEG-DASH and dash.js?

    MPEG-DASH is an ISO standard for the adaptive streaming of video content, which offers significant benefits for those who wish to deliver high-quality, adaptive video streaming output. Many of these benefits directly address opportunities for improving user engagement identified in the Conviva report, such as:

    • 226% increase in video consumption given a buffer-less experience
    • Fourfold increase in likelihood of watching the video if start-up is less than two seconds
    • 25% increase in consumption for higher quality streams

    With MPEG-DASH, the video stream will automatically drop to a lower definition when the network becomes congested. This reduces the likelihood of the viewer seeing a "paused" video while the player downloads the next few seconds to play (aka buffering). As network congestion reduces, the video player will in turn return to a higher quality stream. This ability to adapt the bandwidth required also results in a faster start time for video. That means that the first few seconds can be played in a fast-to-download lower quality segment and then step up to a higher quality once sufficient content has been buffered.

    Dash.js is an open source MPEG-DASH video player written in JavaScript. Its goal is to provide a robust, cross-platform player that can be freely reused in applications that require video playback. It provides MPEG-DASH playback in any browser that supports the W3C Media Source Extensions (MSE), today that is Chrome and IE11 (other browsers have indicated their intent to support MSE).

    Creating a browser-based streaming video player

    In simple terms, the intention of the below example is to demonstrate how easy it can be to build an MPEG-DASH player into your website. If you have any problems applying this example to your own real world use case, pop over to the dash.js community mailing list, where we will be happy to help you out.

    To create a simple web page that displays a video player with the expected controls such a play, pause, rewind etc., you will need to:

    • Create an HTML page
      • Add the video tag
    • Add the dash.js player
    • Initialize the player
    • Add some CSS style
    • View the results in a browser that implements MSE

    The only part of this process that may be new to most of you is the "Initialize the player" step. This step can be completed in just a handful of lines of JavaScript code. Using dash.js, it really is that simple to embed MPEG-DASH video in your browser based application - including native applications that use HTML and JavaScript!

    Creating the HTML page

    The first step is to create a standard HTML page containing the <video> element, save this file as basicPlayer.html. You will tell the player to display its controls (by including the “control"), but won’t need to initialize any other aspects of the player in the HTML. This configuration could be managed completely in JavaScript, if desired.

    Here is the HTML you should have in basicPlayer.html:

    <!DOCTYPE html>
      <head><title>Adaptive Streaming in HTML5</title></head>
        <h1>Adaptive Streaming with HTML5</h1>
        <video id="videoplayer" controls></video>

    Since there is nothing unusual about this HTML. let’s move quickly on to the dash.js player code.

    Adding the dash.js player

    To add the dash.js reference implementation to the application, you’ll need to grab the dash.all.js file from the 1.0 release of dash.js project. This should be saved in the JavaScript folder of your application. This file is a convenience file that pulls together all the necessary dash.js code into a single file. If you have a look around the dash.js repository, you will find the individual files, test code and much more, but if all you want to do is use dash.js, then the dash.all.js file is what you need.

    If you prefer you could use the code from the master branch. The master branch contains the latest fully tested version of the code. At the time of writing this tutorial will work with the mater branch, and this should always be the case. The adventurous might want to use the development branch, which contains all the latest changes that have been accepted by the project community. This is the code that will go into the next release of dash.js. While there has been some testing on this branch, it is development code to be used at your own risk.

    Should you encounter any problems with any version of the code, please discuss them on the projects mailing list. If you uncover any bugs please report them via our issue tracker. In addition, as an open source project, we welcome appropriate code contributions, please fork the project on GitHub and issue a pull request.

    Whichever version of dash.all.js you choose to use, you will need to be load it into your application, to do this add a script tag to the head section of basicPlayer.html:

    <!-- DASH-AVC/265 reference implementation -->
    <script src="js/dash.all.js"></script>

    Next, create a function to initialize the player when the page loads. Add the following script after the line in which you load dash.all.js:

    // setup the video element and attach it to the Dash player
    function setupVideo() {
      var url = "http://wams.edgesuite.net/media/MPTExpressionData02/BigBuckBunny_1080p24_IYUV_2ch.ism/manifest(format=mpd-time-csf)";
      var context = new Dash.di.DashContext();
      var player = new MediaPlayer(context);

    This function first creates a DashContext. This is used to configure the application for a specific runtime environment. From a technical point of view, it defines the classes that the dependency injection framework should use when constructing the application. In most cases, you will use Dash.di.DashContext.

    Next, instantiate the primary class of the dash.js framework MediaPlayer. This class contains the core methods needed such as play and pause, manages the relationship with the video element and also manages the interpretation of the Media Presentation Description (MPD) file which describes the video to be played. You will be working with this MediaPlayer from now on.

    The startup() function of the MediaPlayer is called to ensure that the player is ready to play video. Amongst other things this function ensures that all the necessary classes (as defined by the context) have been loaded. Once the player is ready, you can attach the video element to it using the attachView() function. This enables the MediaPlayer to inject the video stream into the element and also control playback as necessary. Finally, pass the URL of the MPD file to the MediaPlayer so that it knows about the video it is expected to play.

    The setupVideo() function just created will need to be executed once the page has fully loaded. Do this by using the onload event of the body element. Change your <body> element to:

    <body onload="setupVideo()">

    Finally, set the size of the video element using CSS. In an adaptive streaming environment, this is especially important because the size of the video being played may change as playback adapts to changing network conditions. In this simple demo simply force the video element to be 80% of the available browser window by adding the following CSS to the head section of the page:

    video {
      width: 80%;
      height: 80%;

    Playing video

    That's it. You now have a fully functional JavaScript MPEG-DASH player that will work in any browser that supports MSE. Point your browser at your basicPlayback.html file, click play on the video controls and watch your video in all its adaptive streaming glory.

    From here it is a relatively small step to create, for example, a Windows Store application using dash.js. Or you could create a module for Drupal, Joomla, WordPress or some other content management system.

    Our goal with dash.js is to make it as reusable as possible. If you need any help getting it to work for you contact us through the project mailing list. We will be happy to help!

  • Interoperability @ Microsoft

    How to develop for Windows Phone 8 on your Mac


    UPDATE 01/07/13: added instructions to enable Hyper-V in Parallels Desktop VM


    Interested in developing apps for Windows Phone 8, but you are developing on a Mac? No problem...check out the guide below to find a variety of options.

    First you should consider whether to build native WP8 applications or Web applications. Applications will run directly on the phone platform, and will deliver advanced performance and a fully integrated experience to the end user. Web applications developed with HTML5 and JavaScript will take advantage of the Web standards support of Internet Explorer 10 and the cross platform nature of HTML5 applications.There is a lot of debate about which way to go, native app or Web app with HTML5, and I would say that the answer is… it depends. In this post, I will try to present the main options to go one way or the other based on the assumption that you have a Mac and want to stick to it Smile.

    WP8 application development on a Mac

    To build applications for Windows Phone, you need Visual Studio 2012 and the WP8 SDK. There is a free version that bundles these two and that allows you to do pretty much all you need to build and publish an application to the Windows Phone store:

    • Write and debug code in an advanced code editor
    • Compile to app package
    • Test the application in an emulator leveraging advanced features
    • Connecting and deploying to an actual device and do cross-debugging, and performance analysis
    • … and these are only the basic features available, there are plenty more!

    Visual Studio 2012 runs on Windows 8 and Windows 7 but the Windows Phone emulator relies on Hyper-V, which comes only in Windows 8 64 bit. So basically, you need to have a Windows 8 64 bit install if you want to leverage the emulator, and you need a way to have Hyper-V enabled in your Windows 8 install.

    Using a recent Macintosh, you have a couple of options to run Windows 8:

    1. Run Windows 8 on your Mac natively using Boot Camp
    2. Run Windows 8 in a virtual environment using software like VMWare Fusion 5 or Parallels Desktop 8 for your Mac

    There is plenty of documentation online on how to set up the environments for both options to get Windows to run on your Mac, and you can also find details on MSDN here.

    Boot Camp

    If you want to go the Boot Camp way, once you have set up Windows 8, you can go ahead and follow the default instructions to download and install the WP8 SDK.

    VMWare Fusion 5 or Parallels Desktop 8

    If you want to use VMWare Fusion or Parallels and still be able to use the WP8 Emulator, here are the steps you need to follow:

    • Install VMWare Fusion 5 or Parallels Desktop 8if you don’t have it yet
    • Download Windows 8 64 bits ISO:
      • you can find the evaluation version on the evaluation center here.
      • If you want the retail version then it is a little tricky on a Mac as there is no way to download the retail iso directly. The trick consists in installing the evaluation version of Windows 8 on a VMware Fusion VM or Parallels following the below instructions, then from Windows 8, run the Windows 8 setup (a link is available in the first lines of the email you will receive after the purchase of Windows 8) that will offer the option of downloading the retail ISO after entering you product key as described on this article.
    • Create a new VM setting up the below parameters:
      • On WMWare Fusion 5:
        • ensure that you have the following settings (be sure to check the “Enable hypervisor applications in this Virtual machine” option):


        • Important:
          • Hyper-V requires at least 2 cores to be present.
          • The Windows Phone Emulator will use 258MB or 512MB virtual memory, therefore, don’t be shy with memory assigned to the VM and assign at least 2 GB.
          • In the advanced settings, ensure you have selected “Preferred virtualization engine: Intel VT-x with EPT” option
        • Modify the .vmx file to add or modify the following settings:
          • hypervisor.cpuid.v0 = "FALSE"
          • mce.enable = "TRUE"
          • vhv.enable = "TRUE"
      • On Parallels Desktop 8:
        • Ensure that you have the following settings for the new VM (go into VM Settings>General>CPUs):


        • Still in settings, you need to enable virtualization pass-thru support in Options>Optimizations>Nested Virtualization

    Screen Shot 2013-01-04 at 3.58.43 PM


    • Install Windows 8 on your VMware Fusion or Parallels Desktop VM (you can find plenty of guides online on how to install a VM from an ISO)
    • Once Windows 8 is installed, download and install the WP8 SDK.


    The SDK install will setup the Hyper-V environment and will set things up for you to be able to use the Emulator within the VMWare Fusion or Parallels Desktop image.

    on VMware Fusion… on Parallels Desktop…

    Screen Shot 2012-12-04 at 1.48.09 PM

    Screen Shot 2013-01-04 at 4.04.35 PM 

    You are now set to build, debug and test WP8 applications. You can start your development and debugging by leveraging the emulator and its tools, and you can consider using an actual Windows Phone 8 device, plugging it in your Mac, and setting things up so that the USB device shows up in the VM.

    You can find extensive information on how to use Visual Studio 2012 for Windows Phone 8 development, along with its emulator, and how to publish an application, get samples, as well as everything a developer needs here.

    WP8 Web applications development on a Mac

    Here we are talking about two different things:

    • Development for mobile websites that will render well in the Windows Phone 8 browser.
    • HTML5 application development using the Web Browser control hosted by a native application, model that is used by frameworks and tools such as Apache Cordova (a.k.a. PhoneGap), also known as hybrid applications.

    Windows 8 offers a “native HTML5/JS” model that allows you to develop applications in HTML5 and JavaScript that will execute directly on top of the application platform, but we will not discuss this model here as Windows Phone 8 proposes a slightly different model for HTML5 and JS applications development.

    On Windows Phone 8, in both cases mentioned above, the HTML5/JavaScript/CSS code will be rendered and executed in the same Internet Explorer 10 engine on Windows Phone 8. This means that whether you are writing a mobile website, or a PhoneGap type application, you can do so on your usual tool or editor all the way down to the debugging and testing phases.

    While you can do a lot of debugging in a Web browser for your HTML5/JS code, you will need to do actual tests and debugging on the actual platform (WP8 Emulator or/and actual device). Even if you are using Web standards, you need to consider that the level of support might not be the same on all platforms. And if you are using third party code, you also need to ensure that the code doesn’t contain platform specific elements so that things will run correctly. For example, you need to get rid of any dependencies on WebKit specifics.

    Making sure your Web code is not platform specific

    When writing this code, you need to consider the various platforms that your mobile Web application will be used. Obviously the less specifics there are for each of the platforms, the better for you as a developer! Good news is that HTML5 support is getting better and better across modern mobile browsers. IE10 in Windows Phone 8 is no exception and brings extended standards support, hardware acceleration and great rendering performances. You can take a look at the following site directly from your Windows Phone 8 device to check that out: www.atari.com/arcade


    To learn more on how to make sure your mobile Web code will render well on Internet Explorer 10 on Windows Phone 8 as well as on other modern mobile browsers, you can read this article.

    Testing and debugging your Web application for WP8 on a Mac

    Once you have clean HTML5 code that runs and renders well in a Web browser, you will need to test it on IE10 on a Windows Phone 8 device or emulator.

    In the IE10 desktop, there are powerful debugging tools (“F12”), which is not the case on Windows Phone 8. One of the recommended ways to do advanced debugging is to leverage the “F12” debugging capabilities on IE10 Desktop in order to cover most if not all of the debugging and testing cases for your mobile Web application for Windows Phone 8. For a Mac, you will need to look into the various options to install a Windows 8 virtual machine, which are mentioned in the beginning of this article, and load your code in Internet Explorer 10 within Windows 8. Once IE is launched, press the "F12" key or go to the settings menu and select “F12 Developer tools.”


    In the debugging tool at the bottom, you can then change the User agent setting and the resolution from the “Tools” menu to match what IE10 on Windows Phone 8 exposes.


    Once you have done these tests on Internet Explorer 10 desktop, you can deploy and test on an actual Windows Phone 8 device or on the emulator (see previous chapters on how to set things up to make the emulator work on a Mac).

    Now what?

    With these steps you should be set to start developing and deploying Windows Phone 8 applications from your Mac.

    But there are certainly other tips and tricks that you will figure out and you may already know. We would love to hear from you to make this post even more useful for developers wishing to expand their reach to the Windows Phone 8 platform. Do not hesitate to comment on this post with your suggestions, ideas, tips…

  • Interoperability @ Microsoft

    Speed and Mobility: An Approach for HTTP 2.0 to Make Mobile Apps and the Web Faster


    This week begins face to face meetings at the IETF on how to approach HTTP 2.0 and improve the Internet. How the industry moves forward together on the next version of HTTP – how every application and service on the web communicates today – can positively impact user experience, operational and environmental costs, and even the battery life of the devices you carry around.

    As part of this discussion of HTTP 2.0, Microsoft will submit to the IETF a proposal for “HTTP Speed+Mobility." The approach we propose focuses on all the web’s end users – emphasizing performance improvements and security while at the same time accounting for the important needs of mobile devices and applications.

    Why HTTP 2.0?

    Today’s HTTP has historical limitations based on what used to be good enough for the web. Because of this, the HTTPbis working group in the Internet Engineering Task Force (IETF) has approved a new charter to define HTTP “2.0” to address performance limitations with HTTP. The working group’s explicit goal is to keep compatibility with existing applications and scenarios, specifically to preserve the existing semantics of HTTP.

    Why this approach?

    Improving HTTP starts with speed. There is already broad consensus about the need to make web browsing much faster.

    We think that apps—not just browsers—should get faster too. More and more, apps are how people access web services, in addition to their browser.

    Improving HTTP should also make mobile better. For example, people want their mobile devices to have better battery life. HTTP 2.0 can help decrease the power consumption of network access. Mobile devices also give people a choice of networks with different costs and bandwidth limits. Embedded sensors and clients face similar issues. HTTP 2.0 can make this better.

    This approach includes keeping people and their apps in control of network access. Specifically, the client remains in control over the content that it receives from the web. This extends a key attribute of the existing HTTP protocol that has served the Web well. The app or browser is in the best position to assess what the user is currently doing and what data is already locally available. This approach enables apps and browsers to innovate more freely, delivering the most relevant content to the user based on the user’s actual needs.

    We think that rapid adoption of HTTP 2.0 is important. To make that happen, HTTP 2.0 needs to retain as much compatibility as possible with the existing Web infrastructure. Awareness of HTTP is built into nearly every switch, router, proxy, load balancer, and security system in use today. If the new protocol is “HTTP” in name only, upgrading all of this infrastructure would take too long. By building on existing web standards, the community can set HTTP 2.0 up for rapid adoption throughout the web.

    Done right, HTTP 2.0 can help people connect their devices and applications to the Internet fast, reliably, and securely over a number of diverse networks, with great battery life and low cost.


    The HTTP Speed+Mobility proposal starts from both the Google SPDY protocol (a separate submission to the IETF for this discussion) and the work the industry has done around WebSockets.

    SPDY has done a great job raising awareness of web performance and taking a “clean slate” approach to improving HTTP to make the Web faster. The main departures from SPDY are to address the needs of mobile devices and applications.

    Looking ahead

    We are looking forward to a vigorous, open discussion within the IETF around the design of HTTP 2.0. We are excited by the promise of an HTTP 2.0 that will serve the Internet for decades to come. As the effort progresses, we will continue to provide updates on this blog. Consistent with our other web standards engagements, we will also provide early implementations of the HTTP 2.0 specification on the HTML5 Labs site.

    - Sandeep Singhal, Group Program Manager, Windows Core Networking

    - Jean Paoli, General Manager, Interoperability Strategy

  • Interoperability @ Microsoft

    Binary to Open XML (B2X) Translator: Interoperability for the Office binary file formats


    [05/18- Update:
    this translator is highlighted in today's Document Interoperability Inititice (DII) event that just happened in London ]

    In support of Microsoft’s ongoing efforts to increase the interoperability of its various technologies, we have partnered with Dialogika to create a translator that converts the Microsoft Office binary file formats (.DOC, .XLS, and .PPT) into the Office Open XML standard format (.DOCX, .XLSX, .PPTX).

    A majority of the world’s documents are available in the binary Office formats and, for developers working with these formats (including .DOC, .PPT, and .XLS.), Microsoft published the specifications under the Open Specification Promise (OSP) in June 2008.


    A new version of the Binary to Open XML (B2X) Translator has just been released ; this version adds support for PowerPoint (.PPT) and Excel (.XLS) files:

    Supported .XLS Features

    Supported .PPT Features

    • Shared Formulas
    • String Formatting
    • Data Type Formatting (number, date, currency, etc.)
    • Cell Formatting


    • Textbox Formatting
    • Shapes
    • Animations
    • Notes (including Formatting)

    (Detailed features http://b2xtranslator.sourceforge.net/architecture.html#mapping )

    From an architectural point of view, the translator can be seen as a series of pipelines during which transformation steps are applied to translate from the binary to Open XML format:


    (more details on http://b2xtranslator.sourceforge.net/architecture.html )

    While it has been possible to manually convert documents between formats by opening the file in the relevant application and saving in the other format, before the release of the translator there was no software tool to automate this task as a stand-alone application, or in a batch mode.

    So from the end-user point of view the translator offers two options:


    While using Windows’ context menus to translate the files is self-explanatory (right-click, convert to…) doing so from the command line warrants a bit more study. The command line utility consists of three separate executables, one for each file type (ppt2x.exe for spreadsheet, doc2x.exe for document, and xls2x.exe for presentation). The executables use the same command line syntax, and support the usual basic command line options:
    This includes the input filename, output filename, and the level of debug verbosity. The resulting command is easy to include in automation scripts, and batch processes.

    The command-line architecture allows the translators to be integrated into existing systems such as document management systems running on a server.

    Using the source of B2X translator (ppt2x.exe, doc2x.exe, xls2x.exe), you can rebuilt them using the .NET Framework on Windows or Mono on Linux, thus ensuring portability across operating systems and platforms.

    As an open source project, the Translator is a solid foundation for engineering work around the Office binary format. Dialogika’s development team has put together a few “how to” guides, including the Freeform Shapes in the Office Drawing Format guide, that helps to explain the specification and give some valuable tips. For developers and ISVs the code of this translator can be reused in their own applications enabling a wide range of document interoperability solutions.

    We’re excited by this latest release making the translators more functional and addressing practical document conversion scenarios. Of course, there’s still work ahead of us! We are currently in the planning stage for the next version. In addition to the goals outlined above, it is very important to us that the translator adequately addresses practical user scenarios. To this end, we would love to hear feedback on this release as well as your feature requests for the next version. Please provide your feedback on the Sourceforge site.

  • Interoperability @ Microsoft

    Introducing the WebSockets Prototype


    As we launch our new HTML5 Labs today, this is one of two guest blogs about the first two HTML5 prototypes. It is written by Tomasz Janczuk, a Principal Development Lead in Microsoft’s Business Platform Division.

    In my blog post from last summer I wrote about a prototype .NET implementation of two drafts of the WebSockets protocol specification - draft-hixie-thewebsocketprotocol-75 and  draft-hixie-thewebsocketprotocol-76 - making their way through the IETF at that time.

    Since then, there have been a number of revisions to the protocol specification, and it is time to revisit the topic. Given the substantial demand for code to experiment with, we are sharing the Windows Communication Foundation server and Silverlight client prototype implementation of one of the latest proposed drafts of the WebSockets protocol: draft-montenegro-hybi-upgrade-hello-handshake-00.

    You can read more about the effort and download the .NET prototype code at the new HTML5 Labs site.

    What is WebSockets?

    WebSockets is one of the HTML 5 working specifications driven by the IETF to define a duplex communication protocol for use between web browsers and servers. The protocol enables applications that exchange messages between the client and the server with communication characteristics that cannot be met with the HTTP protocol.

    In particular, the protocol enables the server to send messages to the client at any time after the WebSockets connection has been established and without the HTTP protocol overhead. This contrasts WebSockets with technologies based on the HTTP long polling mechanism available today.

    For this early WebSockets prototype we are using a Silverlight plug-in on the client and a WCF service on the server. In the future, you may see HTML5 Labs using a variety of other technologies.

    What are we making available?

    Along with the downloadable .NET prototype implementation of the WebSocket proposed draft-montenegro-hybi-upgrade-hello-handshake specification, we are also hosting a sample web chat application based on that prototype in Windows Azure here. The sample web chat application demonstrates the following components of the prototype:  

    1. The server side of the WebSocket protocol implemented using Windows Communication Foundation from .NET Framework 4. The WCF endpoint the sample application communicates with implements the draft WebSocket proposal.
    2. The client side prototype implementation consisting of two components:
      1. A Silverlight 4 application that implements the same draft of the WebSocket protocol specification.
      2. A jQuery extension that dynamically adds the Silverlight 4 application above to the page and creates a set of JavaScript WebSocketDraft APIs that delegate their functionality to the Silverlight application using the HTML bridge feature of Silverlight.

    The downloadable package contains a .NET prototype implementation consisting of the following components:

    1. A WCF 4.0 server side binding implementation of the WebSocket specification draft.
    2. A prototype of the server side WCF programming model for WebSockets.
    3. Silverlight 4 client side implementation of the protocol.
    4. .NET 4.0 client side implementation of the protocol.
    5. A HTML bridge from the Silverlight to JavaScript that enables use of the prototype from JavaScript applications running in browsers that support Silverlight.
    6. Web chat and stock quote samples.

    Given the prototype nature of the implementation, the following restrictions apply:

    1. A Silverlight client (and a JavaScript client, via the HTML bridge) can only communicate using the proposed WebSocket protocol using ports in the range 4502-4534 (this is related to Network Security Access Restrictions applied to all direct use of sockets in the Silverlight platform).
    2. Only text messages under 126 bytes of length (UTF-8 encoded) can be exchanged.
    3. There is no support for web proxies in the client implementation.
    4. There is no support for SSL.
    5. Server side implementation limits the number of concurrent WebSocket connections to 5.

    This implementation has been tested to work on Internet Explorer 8 and 9.

    Why is this important?

    Through access to emerging specifications like WebSockets, the HTML5 Labs sandbox gives you implementation experience with the draft specifications, helps enable faster iterations around Web specifications without getting locked in too early with a specific draft, and gives you the opportunity to provide feedback to improve the specification. This unstable prototype also has the potential to benefit a broad audience.

    We want your feedback

    As you try this implementation we welcome your feedback and we are looking forward to your comments!


  • Interoperability @ Microsoft

    Eclipse and Silverlight, another interoperability journey has begun


    Silverlight is a cross-platform browser plug-in that enables rich media experiences and .NET-based Rich Internet Applications (RIAs) within the browser. While Microsoft creates developer and designers tools, interoperability scenarios using other tools makes sense simply because in many situations there are development teams working in heterogeneous environments. Searching for ways to assist these teams is how Eclipse tools for Silverlight came to life!

    The Eclipse tools for Silverlight project, aka eclipse4SL, is an eclipse plug-in that enables Eclipse developers to use the Eclipse IDE to create applications that run on the Microsoft Silverlight runtime platform. Announced in October of last year, the project is led by Soyatec, an IT solutions provider based in France & China, and also an Eclipse Foundation member (Yves Yang, Soyatec President). Microsoft provides funding and architectural guidance (in particular my colleagues Vijay Rajagopalan and Stève Sfartz).

    Since the release of a new beta version in December, additional technical content for Java developers has been published on the project site, giving guidance on key interoperability scenario sought by developers: facilitate interoperability between Silverlight clients and REST and SOAP (JAX-WS/CXF) Java web services.

    Even though the V1 of the project is not yet complete, Soyatec has done a great job of building the early pieces of this bridge between Eclipse and Silverlight. The interoperability scenarios this project enables are very interesting, as it provides more choices to Java/Eclipse developers and opens up new opportunities for Silverlight adoption.

    So if you haven’t had a chance to see the Eclipse tools for Silverlight in action, take a look at this demo. It gives an overview of the developer experience of creating a basic Silverlight application in Eclipse, shows how collaborating with a designer could work, and finally you’ll see a sample Silverlight application talking to a Java web service, from the www.Youtube.com/interopbydesign channel:

    If you want to try it for yourself it’s very easy, just follow the step-by-step installation guide on http://www.eclipse4sl.org/download/. The eclipse4SL plug-in can be installed directly from the internet with the Eclipse software update wizard (see screenshot below):


    Then you can explore the Hello, world and DataGrid tutorials that my colleague Stève Sfartz has prepared for you. Also you might want to check this tutorial that has just been posted on Devx: Getting Started with Silverlight for Eclipse.

    I don’t write a lot of code these days, but from a developer point of view I think it is cool to deliver interoperability at this level, and to extend the Silverlight development experience to Eclipse developers. For a nascent project, the eclipse4SL has been well received by the community and is currently in the top 10 “Top Rated” on www.eclipseplugincentral.com (a portal that helps developers find Eclipse plug-ins):

    (Screenshot taken on 02/03/2009)

    Interop BloggsThe Eclipse tools for Silverlight project aka eclipse4SL is an eclipse plug

    Of course, if you have feedback, feel free to join the conversation.

    Jean-Christophe Cimetiere - Sr. Technical Evangelist

  • Interoperability @ Microsoft

    OpenXML Document Viewer v1 released: viewing .DOCX files as HTML


    [05/18- Update:
    this translator is highlighted in today's Document Interoperability Inititice (DII) event that just happened in London ]

    The OpenXML Document Viewer project idea came from the discussions with the participants of the Document Interoperability Initiative (DII) workshops (in particular last year’s Cambridge event). The point was to find a way to simply be able to view Open XML files as HTML. Following up, Microsoft provided funding to start the Open XML Viewer project, an open source project developed by MindTree Limited. The first beta version was unveiled at the last DII in Brussels, giving a first peak of the viewer (see a demo here).

    Today I’m excited to announce the version 1.0 of Open XML Document Viewer. It provides direct translation for Open XML Documents (.DOCX) to HTML, enabling access to the information in the Open XML format from any platform with a Web browser. The project, which already includes a plug-in for Firefox IE7 and IE8 and now also offers a plug-in for Opera, allows users to view Open XML documents (.DOCX) within the browser on Windows and Linux platforms without the need to install Microsoft Office or other productivity products.
    Check out the demo my colleague Jean-Christophe Cimetiere has recorded to see the Open XML Document Viewer in action from the end user perspective:

    For more detail on the supported features go visit the project site http://www.openxmlviewer.com 

    In principle, the functionality of the viewer is simply to translate OpenXML files into HTML for direct consumption in a web browser.

    Here’s a scenario (the sample document is attached):

    · You have an Open XML document (.DOCX). Let’s view it in Office Word 2007 first:


    · Then, let’s say you email this file to your friend who’s using OpenSUSE Linux. Your friend saves the document on the desktop and drags & drops it into the Opera browser:


    · The Open XML Document Viewer kicks off and creates the HTML that’s displayed by the browser:


    The experience is similar with Firefox on Linux and and with Internet Explorer 7/8, Firefox 3.0.x, and Opera 9.x on Windows:


    Next let’s examine the high level architecture:


    The core of the project is the Translation Engine that does most of the work, meaning opening the .DOCX document, reading, mapping and transforming to HTML. The Translation engine is exposed as a client side browser plug-in with support for Firefox, Opera, and Internet Explorer, and as a cross platform command line translator for use in server side applications.

    The result is a translator that enables Open XML document (.DOCX) visibility within browser applications without the use of any of the usual office productivity or word processing applications, across multiple platforms and environments, as either a server side application or as a client side end user solution. Developers, Independent Software Vendors (ISVs), Solutions Integrators & Mobile Solution providers can use these tools to enable their customers to view Open XML documents on heterogeneous platforms and browser applications. Be sure to check out the Demo web site. It showcases server side document processing scenarios that represent very typical use cases.

    We’re very excited with this new version and look forward to your feedback.

    Join us at http://www.codeplex.com/OpenXMLViewer

    Sumit Chawla, Technical PM/Architect, Microsoft Interoperability Team

  • Interoperability @ Microsoft

    HTML5 Video and Interoperability: Firefox Add-On Provides H.264 Support on Windows


    As you know, Microsoft is committed to interoperability, and the IE team has previously blogged about and provided developer previews and samples showing “Same Markup” – the same HTML, CSS, and script working across browsers – in action.

    Today, as part of the interoperability bridges work we do on this team, we’re making available a new Firefox add-on that enables Firefox users on Windows to play H.264-encoded video on HTML5 by using the built-in capabilities found in Windows 7.

    Microsoft has already been offering for several years now the Windows Media Player plug-in for Firefox, which is downloaded by millions of people a month who want to watch Windows Media content.

    This new plug-in, known as the HTML5 Extension for Windows Media Player Firefox Plug-in, is available for download here at no cost.

    It extends the functionality of the earlier plug-in for Firefox, and enables web pages that that offer video in the H.264 format using standard W3C HTML5 to work in Firefox on Windows. Because H.264 video on the web is so prevalent, this interoperability bridge is important for Firefox users who are Windows customers.

    H.264 is a widely-used industry standard, with broad and strong hardware support. This standardization allows users to easily take what they've recorded on a typical consumer video camera, put it on the web, and have it play in a web browser on any operating system or device with H.264 support, such as on a PC with Windows 7.

    H.264 is also a very well established and widely supported video compression format, developed for use in high definition systems such as HDTV, Blu-ray and HD DVD as well as low resolution portable devices. It also offers better quality at lower file sizes than both MPEG-2 and MPEG-4 ASP (DivX or XviD).

    The HTML5 Extension for Windows Media Player Firefox Plug-in continues to offer our customers value and choice, since those who have Windows 7 and are using Firefox will now be able to watch H.264 content through the plug-in.

    Microsoft is already deeply engaged in the HTML5 process with the W3C as we believe that HTML5 will be important in advancing rich, interactive web applications and site design.


    Claudio Caldato,

    Principal Program Manager, Interoperability Strategy Team

  • Interoperability @ Microsoft

    IndexedDB Prototype Available for Internet Explorer


    As we launch our new HTML5 Labs today, this is one of two guest blogs about the first two HTML5 prototypes. It is written by Pablo Castro, a Principal Architect in Microsoft's Business Platform Division.

    With the HTML5 wave of features, Web applications will have most of the building blocks required to build full-fledged experiences for users, from video and vector graphics to offline capabilities.

    One of the areas that has seen a lot of activity lately is local storage in the browser, captured in the IndexedDB spec, where there is a working draft as well as a more current editor's draft.

    The goal of IndexedDB is to introduce a relatively low-level API that allows applications to store data locally and retrieve it efficiently, even if there is a large amount of it.

    The API is low-level to keep it really simple and to enable higher-level libraries to be built in JavaScript and follow whatever patterns Web developers think are useful as things change over time.

    Folks from various browser vendors have been working together on this for a while now, and Microsoft has been working closely with the teams at Mozilla, Google and other W3C members that are involved in this to design the API together. Yeah, we even had meetings where all of us where in the same room, and no, we didn't spontaneously combust!

    The IE folks approach is to focus IE9 on providing developer site-ready HTML5 that can be used today by web developers without having to worry about what is stable and not stable, or being concerned about the site breaking as the specifications and implementations change. Here at the HTML5 Labs we are letting developers experiment with unstable standards before they are ready to be used in production site.

    In order to enable that, we have just released an experimental implementation of IndexedDB for IE. Since the spec is still changing regularly, we picked a point in time for the spec (early November) and implemented that.

    The goal of this is to enable early access to the API and get feedback from Web developers on it. Since these are early days, remember that there is still time to change and adjust things as needed. And definitely don't deploy any production applications on it :)

    You can find out more about this experimental release and download the binaries from this archive, which contains the actual API implementation plus samples to get you started.

    For those of you who are curious about the details: we wanted to give folks early access to the API without disrupting their setup, so we built the prototype as a plain COM server that you can register in your box.

    That means we don't need to mess with IE configuration or replace files. The only visible effect of this is that you have to start with "new ActiveXObject(...)" instead of the regular windows.indexedDB. That would of course go away if we implement this feature.

    If you have feedback, questions or want to reach out to us for any other reason, please contact us here. We're looking forward to hearing from you.

    As a side note, and since this is a component of IE, if you want to learn more about how IE is making progress in the space of HTML5 and how we think about new features in this context, check out the IE blog here.


  • Interoperability @ Microsoft

    A new bridge for PHP developers to .NET through REST: Toolkit for PHP with ADO.NET Data Services


    [Update - March 16, 2010: the toolkit is now called "OData SDK for PHP", and "ADO.NET Data Services" is now called "WCF Data Services". Check related posts on OData

    Today, I’m excited to announce that we are releasing a new project that bridges PHP and.NET.
    More precisely, we are releasing today the Toolkit for PHP with ADO.NET Data Services which makes it easier for PHP developers to take advantage of ADO.NET Data Services, a set of features recently added to the .NET Framework. ADO.NET Data Services offer a simple way to expose any sort of data in a RESTful way. The Toolkit for PHP with ADO.NET Data Services is an open source project funded by Microsoft and developed by Persistent Systems Ltd. and is available today on Codeplex: phpdataservices.codeplex.com

    You can see an overview and quick demo of the toolkit in the following Channel9 video with Pablo Castro (software architect of ADO.NET Data Services) and me:

    Get Microsoft Silverlight

    A little bit more about ADO.NET Data Services

    ADO.NET Data Services (formerly known as Project “Astoria”) is a technology used to expose a wide range of data sources through a RESTful service interface. Data sources can be relational databases, XML files, and so on. ADO.NET Data Services defines a flexible addressing and query interface using a URL convention, as well as the usual resource manipulation methods on data sources (it supports the full range of Create/Read/Update/Delete operations).

    There is full support for ADO.NET Data Services in Visual Studio 2008 SP1 as well as in the upcoming Visual Studio 2010; this includes direct support for both creating and consuming data services directly from the development environment. You can find more information about ADO.NET Data Services here, (I recommend the “How do I…” videos).

    Architecture of the Toolkit for PHP with ADO.NET Data Services

    You should consider two aspects of the PHP Toolkit:

    • At design time: the PHP Toolkit generates proxy classes based on the metadata exposed by the ADO.NET Data Services (built with Visual Studio, including Express editions).
    • At run time: you call from your code the PHP proxy classes, so that you can easily program against the ADO.NET Data Service using a set of local PHP classes that represent the structure of the remote data. Using RESTful services over HTTP, the communication between the PHP application and ADO.NET Data Services is taken care of by the PHP proxy classes and the Toolkit libraries, but of course you can look at (or edit) this code.


    Running the Toolkit for PHP with ADO.NET Data Services step by step

    In the following steps we assume that you have already created the ADO.NET Data Services on top of the Northwind sample SQL Server database (check this “How do I…” video). The service I created exposes data like this, through a simple URL:


    The next step is to use the PHPDataSvcUtil.php utility that is part of the toolkit, and point it to the URL of the Data Service. It will read the Data Service metadata and create the PHP proxy classes (called northwinddb.php in our example):


    The code generated (northwinddb.php) looks like this:


    At runtime, you simply include in your code the northwinddb.php files and the URL of the data service:


    And then you can start writing your PHP code to access the data collections. Note the first highlighted line: it defines the query over the data service. Many options are available, the full description of the query format can be found here.


    And here is the result:


    I hope you enjoy reading this quick introduction to the Toolkit for PHP with ADO.NET Data Services.
    Feel free to check the project site on Codeplex phpadodataservices.codeplex.com. As always your feedback is welcomed!

    Claudio Caldato, Senior Program Manager,
    Interoperability Technical Strategy team.

  • Interoperability @ Microsoft

    Celebrating the W3C & HTML5 With a New Logo Program


    W3C is the home of web standards

    The World Wide Web Consortium (W3C) has been the home of web standards since 1994 and is a unique place where every major browser vendor (Apple, Firefox, Google, Microsoft, Opera) participate as one of the 322 W3C members.

    Logo now available

    Today, the W3C is introducing a new logo program for HTML5. A logo with a consistent visual design is an important indication of the growing maturity of many components of HTML5. As developer and site owners see this logo across the web, we hope it will signal that while there is still a lot of work to do until all the HTML5 technologies are ready, real sites are starting to take advantage of them today.

    The logo links back to W3C, the place for authoritative information on HTML5, including specs and test cases. It’s time to tell the world that HTML5 is ready to be adopted. You can find some examples of how real sites are using HTML5 today here.

    Microsoft and the W3C

    Microsoft, as part of its ongoing focus on interoperability, is committed to the W3C and we currently have had some 66 participants in 38 technical groups. We work closely with other members on a range of matters, from drafting early specifications to developing test suites to improve interoperability.

    Parts of HTML5 are ready to be used today

    HTML5 offers tremendous improvements in interactivity, graphics, typography and more. One question we often hear is “When should my site start embracing HTML5?” Our answer is simple. Today. But it’s important to recognize that HTML5 is not just one technology, but rather that it encompasses a broad set of technologies. So, while there are some parts that are very stable and are ready to be used in real sites today, there are also some parts that are still changing rapidly.

    With IE9 and HTML5 Labs - which gives developers a stable foundation to build their experiences on IE9 knowing that their sites will continue to work with build updates - we are making this line clearer to encourage adoption rather than waiting. In IE9, we have put the site-ready parts of HTML5 that can be used today without worrying about the site breaking as the specification changes.

    In the HTML5 Labs environment, we are building prototypes for unstable specifications where we can iterate quickly and freely as we make it clear to developers not to include these in sites as yet. Microsoft’s Interoperability Bridges & Labs Center has started publishing prototype implementations of unstable specifications where significant change is expected.

    Congratulations to the W3C on the new HTML5 logo program!

    Jean Paoli

    GM: Interoperability Strategy

  • Interoperability @ Microsoft

    Eclipse Tools for Silverlight (Eclipse4SL): now for Mac developers


    One more step for the Eclipse Tools for Silverlight (Eclipse4SL) project: the Customer Technology Preview (CTP) of Eclipse4SL with support for Macintosh is being delivered at MIX09, Microsoft’s conference for Web developers, designers, business and digital marketing professionals. With this plug-in, Mac developers using Eclipse can develop Rich Internet Applications (RIAs) using the Silverlight platform.

    If you’re new to Eclipse4SL, here’s a quick recap: “The Eclipse tools for Silverlight project, aka eclipse4SL, is an Eclipse plug-in that enables developers to use the Eclipse IDE to create applications that run on the Microsoft Silverlight runtime platform. Announced in October of last year, the project is led by Soyatec, an IT solutions provider based in France & China, and also an Eclipse Foundation member (Yves Yang, Soyatec President). Microsoft provides funding and architectural guidance (in particular my colleagues Vijay Rajagopalan and Stève Sfartz)” (read the full introduction at Eclipse and Silverlight, another interoperability journey has begun)

    The CTP not only enables support for the development experience on a Mac but it also includes many new features also available for the Windows version. To get the plug-in go to http://www.eclipse4sl.org/download/.

    • Watch the demo for a quick walkthrough:

    The demo is also posted on Youtube and MSN Video.

    If you are attending MIX09, I encourage you to go to Vijay Rajagopalan’s session “Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!” (Friday, March 20, 10:45 AM-12:00 PM).

    Vijay will give an overview of how Microsoft has delivered multiple technologies that focus on interoperability with non-Microsoft and open source technologies.

    And of course he will also show the Eclipse Tools for Silverlight along with other interoperability scenarios, like combinations of Java, Ruby and PHP with the Azure Services Platform and the use of claims-based identity in support of heterogeneous identity systems.

    Going back to the Eclipse4SL plug-in, let me share a few screenshots showing the new features:

    • Eclipse4SL on Mac, overview: the Project explorer, the Silverlight rendering surface, the advanced XAML code editor, the Controls Palette
    • Code completion in the XAML editor
    • Code generation from the XAML editor, to generate the C# event handlers
    • Code generation in the C# editor

    Finally, while the Eclipse4SL plug-in brings Silverlight development capability to Eclipse, it also preserves the project structure to retain compatibility with other Microsoft tools (Visual Studio and Expression Blend) enabling collaboration between Eclipse developers (Java, PHP, etc…), .NET developers, and designers:


    Finally, if you have feedback, join the conversation at http://www.eclipse4sl.org/community/

    Jean-Christophe Cimetiere - Sr. Technical Evangelist

  • Interoperability @ Microsoft

    //build/ today with open source frameworks on Windows Phone 8


    Added support for Windows Phone 8 in Apache Cordova, Sencha Touch, Cocos2D, Ogre3D and other open source frameworks.

    The cool news for developers keeps on rolling at //build/ 2012. We’re thrilled to relay the announcements from a broad range of open source communities that their support for Windows Phone 8 goes live on “Day 1” of the SDK availability, along with other partners. There are several open source frameworks to choose from today.

    The Windows Phone team and Microsoft Open Technologies, Inc. engaged early in the process with open source communities to enable Windows Phone 8 in these popular open source and cross platform frameworks. We provided technical support and information, gave early access to the tools and MS Open Tech contributed code to the Cocos 2D and Ogre3D projects.

    The market opportunity just got bigger and easier for all developers with this news. We believe it is important that developers have choices and can reuse their skills and code to build Windows Phone 8 applications.

    This added support for Windows Phone 8 in diverse open source and cross platform frameworks was made possible thanks to new features in Windows Phone 8: native C++ programming and Internet Explorer 10 expanded HTML5 support.

    Developers who have applications based on these frameworks can publish them to the Windows Phone Store in record time. And this applies to various domains, like gaming with C++ or C# frameworks such as Cocos 2D, Ogre 3D and SharpDX, or cross platform development with HTML5 and JavaScript leveraging Apache Cordova, Trigger.io, Sencha Touch or jQuery Mobile. Developers using popular open source tools and frameworks such as SQLite or GalaSoft MVVM toolkit will also be able to reuse their code and skills.

    “Nearly 50% of Sencha customers have expressed interest in building apps for Windows Phone 8 in the next 6-12 months. Supporting Windows Phone 8 is a natural choice for Sencha to enable our customers to build universal apps for mobile devices.” - Abraham Elias, CTO Sencha Inc.

    Jay Garcia, CTO at Modus Create, and his team are developing a mobile companion application for the game Diablo III:
    Using Blizzard’s Diablo III web APIs in combination with PhoneGap and Sencha Touch, we were able to hugely increase the game’s fan base because we could build and publish our application to both iOS and Android with the same HTML5 and JavaScript code base. It literally took us a few days to get the same code to run on Windows Phone 8 thanks to this newly added support.”

    You can read more about Modus Create work to migrate their application to Windows Phone 8 on their blog post.

    Craig Walker, CTO at Xero commented on the new support for Windows Phone 8 in Sencha Touch:
    Using web standards-based technologies such as Sencha Touch and Apache Cordova for our mobile accounting software application Xero Touch helped us target a wide range of platforms so our customers could focus on their business, not the underlying technology. Support for these technologies in Windows Phone 8 tools made it an easy Xero Touch build for our dev team, and a smart addition for our customers who need flexibility managing their business on the go.”

    Microsoft Open Technologies, Inc., supported the jQuery Mobile and Sencha Touch communities to deliver themes that will allow developers to integrate their applications into the Windows Phone 8 user experience.

    As Craig Walker from Xero stresses, it is crucial for developers to be able to deliver a seamless consumer experience integrated into the platform. You can see below a video demonstrating the Sencha Touch theme for Windows Phone 8.

    Brett Nagy, Technical Director at Microgroove, and his team got a chance to try the Windows Phone 8 tools and the early Sencha Touch support for Windows Phone 8:
    Our apps have been making companies more productive for well over a decade. Sencha Touch support for Windows Phone 8 has made our engineer team more productive by allowing us to easily re-use code from one mobile platform to another.
    Within a couple of hours, we had the basic Windows Phone 8 themed version of an existing app without requiring any changes to its JavaScript codebase. Now that producing builds that run on Windows Phone 8 is part of our regular workflow, the next step is to build out functionality that really takes advantage of that platform. Knowing that we can do that in HTML + JS allows us to extend our reach beyond iOS and Android with minimal change to our projects timelines.

    For developers using jQuery Mobile, Sergey Grebnov from Akvelon, who previously published a jQuery Mobile theme for Windows Phone 7.5 is releasing a new jQuery Mobile theme for Windows phone 8. You can see below a short demo of how to apply the theme to a Windows Phone 8 application.

    This is the first time so many open source and cross platform frameworks are on board with Windows Phone on the first day of a new SDK version release. It is great to see how much communities are eager to work with Windows Phone.

    And today is just the beginning. We want to continue this effort to help open source developers enable their frameworks on Windows Phone 8. It’s important for developers to reuse their skills, expand the market opportunity to make money on our devices, and build the next generation of apps. Imagine the possibilities.

    Go check out the various frameworks and let us know if you think of other ones you would love to be able to use to build Windows Phone 8 applications.

  • Interoperability @ Microsoft

    MS Open Tech Open Sources Rx (Reactive Extensions) – a Cure for Asynchronous Data Streams in Cloud Programming


    Erik Meijer, Architect, Microsoft Corp.
    Claudio Caldato, Lead Program Manager, Microsoft Open Technologies, Inc.

    Updated with a quote from Ferranti Computer Systems NV

    Updated: added quotes from Netflix and BlueMountain Capital Management

    If you are a developer that writes asynchronous code for composite applications in the cloud, you know what we are talking about, for everybody else Rx Extensions is a set of libraries that makes asynchronous programming a lot easier. As Dave Sexton describes it, “If asynchronous spaghetti code were a disease, Rx is the cure.”

    Reactive Extensions (Rx) is a programming model that allows developers to glue together asynchronous data streams. This is particularly useful in cloud programming because helps create a common interface for writing applications that come from diverse data sources, e.g., stock quotes, Tweets, computer events, Web service requests.

    Today, Microsoft Open Technologies, Inc., is open sourcing Rx. Its source code is now hosted on CodePlex to increase the community of developers seeking a more consistent interface to program against, and one that works across several development languages. The goal is to expand the number of frameworks and applications that use Rx in order to achieve better interoperability across devices and the cloud.

    Rx was developed by Microsoft Corp. architect Erik Meijer and his team, and is currently used on products in various divisions at Microsoft. Microsoft decided to transfer the project to MS Open Tech in order to capitalize on MS Open Tech’s best practices with open development.

    There are applications that you probably touch every day that are using Rx under the hood. A great example is GitHub for Windows.

    According to Paul Betts at GitHub, "GitHub for Windows uses the Reactive Extensions for almost everything it does, including network requests, UI events, managing child processes (git.exe). Using Rx and ReactiveUI, we've written a fast, nearly 100% asynchronous, responsive application, while still having 100% deterministic, reliable unit tests. The desktop developers at GitHub loved Rx so much, that the Mac team created their own version of Rx and ReactiveUI, called ReactiveCocoa, and are now using it on the Mac to obtain similar benefits."

    And Scott Weinstein with Lab49 adds, “Rx has proved to be a key technology in many of our projects. Providing a universal data access interface makes it possible to use the same LINQ compositional transforms over all data whether it’s UI based mouse movements, historical trade data, or streaming market data send over a web socket. And time based LINQ operators, with an abstracted notion of time make it quite easy to code and unit test complex logic.”

    Netflix Senior Software Developer Jafar Husain explained why they like Rx. "Rx dramatically simplified our startup flow and introduced new opportunities for performance improvements. We were so impressed by its versatility and quality, we used it as the basis for our new data access platform. Today we're using both the Javascript and .NET versions of Rx in our clients and the technology is required learning for new members of the team."

    And Howard Mansell, Quantitative Strategist with BlueMountain Capital Management added, “We are very pleased that Microsoft are Open-Sourcing the Reactive Extensions for .NET. This will allow users to better reason about performance and optimize their particular use cases, which is critical for performance and latency sensitive applications such as real-time financial analysis.”

    From Belgium, Guido Van de Velde, Director  MECOMS Product Organisation for Ferranti Computer Systems NV, explains how Rx is important for their global company: “Ferranti uses Rx in its vertical solution for the utility market, MECOMS™, to process and manage all data and events from the Smart Grid. Its architecture allows the setup of data processing pipelines which can scale and deliver excellent performance. Performance testing together with Microsoft showed that this architectures supports up to hundreds of millions of smart meters and other sensors, running on  commodity hardware. Thanks to Rx we can focus on component functionalities and don’t have to worry about interfaces and connections between the different components saving significant development time.”

    Part of the Rx development team will be on assignment with the MS Open Tech Hub engineering program to accelerate the open development of the Rx project and to collaborate with open source communities. Erik will continue to drive the strategic directions of the technology and leverage MS Open Tech Hub engineering resources to update and improve the Rx libraries. With the community contribution we want to see Rx be adopted by other platforms. Our goal is to build an open ecosystem of Rx-compliant libraries that will help developers tackle the complexity of asynchronous programming and improve interoperability.

    We are also happy to see that our decision is welcome by open source developers.

    “Open sourcing Rx just makes sense. My hope is that we’ll see a couple of virtuous side-effects of this decision. Most likely will be faster releases for bug fixes and performance improvements, but the ability to understand the inner workings of the Rx code should encourage the creation of additional tools and Rx providers to remote data sources,” said Lab 49’s Scott Weinstein.

    According to Dave Sexton, http://davesexton.com/blog, “It’s a solid library built around core principles that hides much of the complexity of controlling and coordinating asynchrony within any kind of application. Opening it will help to lower the learning curve and increase the adoption rate of this amazing library, enabling developers to create complex asynchronous queries with relative ease and without any spaghetti code left over.”

    Starting today, the following libraries are available on CodePlex:

    • Reactive Extensions
      • Rx.NET: The Reactive Extensions (Rx) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators.
      • RxJS: The Reactive Extensions for JavaScript (RxJS) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators in JavaScript which can target both the browser and Node.js.
      • Rx++: The Reactive Extensions for Native (RxC) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators in both C and C++.
    • Interactive Extensions
      • Ix: The Interactive Extensions (Ix) is a .NET library which extends LINQ to Objects to provide many of the operators available in Rx but targeted for IEnumerable<T>.
      • IxJS: An implementation of LINQ to Objects and the Interactive Extensions (Ix) in JavaScript.
      • Ix++: An implantation of LINQ for Native Developers in C++.
    • Bindings
      • Tx: a set of code samples showing how to use LINQ to events, such as real-time standing queries and queries on past history from trace and log files, which targets ETW, Windows Event Logs and SQL Server Extended Events.
      • LINQ2Charts: an example for Rx bindings. Similar to existing APIs like LINQ to XML, it allows developers to use LINQ to create/change/update charts in an easy way. We would love to see more Rx bindings like this one.
      • With these libraries we are giving developers open access to both push-based and pull-based data via LINQ in Microsoft’s three fundamental programming paradigms (native, JScript and Managed code).

    We look forward to seeing you guys use the library, share your thoughts and contribute to the evolution of this fantastic technology built for all you developers.

  • Interoperability @ Microsoft

    Redis on Windows – new version and NuGet Packages


    Continuing our support for Redis on Windows, Microsoft Open Technologies, Inc. has just released the latest version (2.6.12). It has been tested and validated by our test team using the same process we used in the past to ensure stability and reliability.

    We’ve also released Redis-32 and Redis-64 NuGet packages to make it easier to install for developers that don’t need access to the source code.

    We are also working on adding support for the Web Platform Installer (WebPI) so stay tuned for more news soon!

  • Interoperability @ Microsoft

    Apache incubator project, Stonehenge: showcasing Web Services interoperability


    I am a Principal Program Manager in Jean Paoli’s Interoperability Technical Strategy Team. Among other things, I am also the lead for Microsoft’s participation in the Apache incubator project, Stonehenge. I am really excited about Microsoft’s participation in this effort and look forward to our continued involvement with it.

    As Jean discussed in his post, Microsoft has been working on many open source projects but this is the first time that Microsoft is participating as a code contributor in an Apache project! This has been a very valuable learning experience for us here at Microsoft that will significantly inform and influence many future projects, I am sure.


    In November, I wrote on port25 about ApacheCon and the Stonehenge incubator project. Lots of activities have taken place since then around Stonehenge. It was approved as an incubator project within Apache Software Foundation, and WSO2 and Microsoft have already contributed code for a web-services based sample application (called StockTrader) to this effort. Our code can be found here, along with the contributions from WSO2.


    We have three committers from Microsoft on the Stonehenge incubator project. Most of the credit must go to Greg Leake, who wrote the original StockTrader application, and Drew Baird, who worked to get it ready for contribution to Stonehenge. Mike Champion is also going to play an active role in this effort, as he mentioned in his recent blog where he describes how “Stonehenge can help wire up the "last mile…"


    Projects like Stonehenge are very important to enhance interoperability between different software implementations. Standards organizations do a great job and the roll out of various WS-* standards is a testimonial to the fact that they can work efficiently. But interoperability work doesn’t stop at the end of the standardization process… in fact, that is where it really starts.


    It is important for customers and the industry to have multiple implementations of these standards and have the ability to choose the best ones for their scenarios and requirements. This will encourage competition and ensure the production of better quality software in response to market forces. Interoperability work  within an open community generates both competition and collaboration. Customers will be able to get working code on multiple platforms and vendors will be able to catch bugs and test interoperability issues in an open manner.


    Stonehenge has attracted some very prominent committers so far and I hope that the momentum will be sustained. I am looking forward to seeing code contributions from other folks and seeing the StockTrader sample application enhanced with new features. I also hope that new sample applications will be developed to cover other areas of the WS-* standards that are not best represented by the StockTrader application. I look forward to participating in this discussion with the Stonehenge community.


    I also want to thank the folks at WSO2 inc. for their leadership and guidance in driving the Stonehenge project. Congratulations are due to Paul Fremantle, Sanjiva Weeravaran, Jonathan Marsh and their dev team for successfully launching and steering this project so far. We are happy to follow and work with other participants in making it successful.


    I would like to hear comments and feedback on the Stonehenge project and also discuss ideas around other interoperability projects of similar nature. Looking forward to the conversation!

  • Interoperability @ Microsoft

    The WebSockets Prototype Gets Another Update


    We have just updated the WebSockets prototype on our HTML5 Labs site, bringing the implementation in line with the recently released IETF WebSockets 09 Protocol Specification.

    This latest release updates both the server and client prototype implementations based on the IETF 09 specification, and brings no  significant feature changes.

    We will release additional HTML5 labs prototypes if there are further changes to the specification.


    Claudio Caldato,

    Principal Program Manager, Interoperability Strategy Team

  • Interoperability @ Microsoft

    WS-I Completes Web Services Interoperability Standards Work


    imageThe final three Web services profiles developed by the Web Services Interoperability Organization (WS-I) have been approved by WS-I’s membership. Approval of the final materials for Basic Profile (BP) 1.2 and 2.0, and Reliable Secure Profile (RSP) 1.0 marks the completion of the organization’s work. Since 2002, WS-I has developed profiles, sample applications, and testinimageg tools to facilitate Web services interoperability. These building blocks have in turn served as the basis for interoperability in the cloud. As announced today by the WS-I, stewardship over WS-I’s assets, operations and mission will transition to OASIS (Organization for the Advancement of Structured Information Standards).

    It took a lot of work to get real products to fully interoperate using the standards. WS-I members have delivered an impressive body of work supporting deliverables in addition to the profiles (test tools, assertions, etc.). One might ask “why did it take so long, and what exactly did all this hard work entail?”

    When WS-I started up, interoperability of the whole stack of XML standards was fragile, especially of the SOAP and WSDL specifications at the top of the stack. It was possible for a specification to become a recognized standard with relatively little hard data about whether implementations of the specs interoperated. Specs were written in language that could get agreement by committees rather than in terms of rigorous assertions about formats and protocols as they are used in conjunction with one another in realistic scenarios. In other words, the testing that was done before a spec became a standard was largely focused on determining whether the spec could be implemented in an interoperable way, and not on whether actual implementations interoperated.

    At WS-I the web services community learned how to do this better. One of the first tasks was to develop profiles of the core specifications that turned specification language containing “MAY” and “SHOULD” descriptions of what is possible or desirable to “MUST” statements of what is necessary for interoperability, and removing altogether the features that weren’t widely implemented. We learned that it is important to do N-way tests of all features in a profile across multiple implementations, and not just piecewise testing of shared features. Likewise, since the SOAP based specs were designed to compose with one another, it is important to test specs in conjunction and not just in isolation.  During this period of learning and evolving, it was really necessary to go through the profiling process before the market would accept standards as “really done.”

    The underlying reality, especially in the security arena, is quite complex, a fact which also slowed progress. Different products support different underlying security technologies, and adopted the WS-* security-related standards at different rates. Also, there are many different ways to setup secure connections between systems, and it took considerable effort to learn how to configure the various products to interoperate. For example, even when different vendors support the same set of technologies, they often use different defaults, making it necessary to tweak settings in one or both products before they interoperate using the supported standards. The continuous evolution of security technology driven by the ‘arms race’ between security developers and attackers made things even more interesting.

    This work was particularly tedious and unglamorous over the last few years, when the WS-* technologies are no longer hot buzzwords. But now, partly due to the growing popularity of test driven development in the software industry as a whole, but partly due to the hard-won lessons from WS-I, the best practices noted above are commonplace. Later versions of specifications, especially SOAP 1.2, explicitly incorporated the lessons learned in the Basic Profile work at WS-I. Other Standards Development Organization (SDO) such as OASIS and W3C have applied the techniques pioneered at WS-I, and newer standards are more rigorously specified and don’t need to be profiled before they can legitimately be called “done.” Newer versions of the WS-* standard as well as CSS, ECMAScript, and the W3C Web Platform (“HTML5”) APIs are much more tightly specified, better tested, and interoperable “out of the box” than their predecessors were 10 years ago.

    We at Microsoft and the other companies who did the work at WS-I learned a lot more about how to get our mutual customers applications to interoperate across our platforms than could be contained in the WS-I documents that were just released. And to support this effort we are compiling additional guidance under a dedicated website: http://msdn.microsoft.com/webservicesinterop


    This has a set whitepapers that go into much more depth about how to get interoperability between our platform / products and those from other vendors and open source projects.  Available whitepapers include: 

    Finally, it might be tempting to believe that the lessons of the WS-I experience apply only to the Web Services standards stack, and not the REST and Cloud technologies that have gained so much mindshare in the last few years. Please think again: First, the WS-* standards have not in any sense gone away, they’ve been built deep into the infrastructure of many enterprise middleware products from both commercial vendors and open source projects. Likewise, the challenges of WS-I had much more to do with the intrinsic complexity of the problems it addressed than with the WS-* technologies that addressed them. William Vambenepe made this point succinctly in his blog recently:

    But let’s realize that while a lot of the complexity in WS-* was unnecessary, some of it actually was a reflection of the complexity of the task at hand. And that complexity doesn’t go away because you get rid of a SOAP envelope …. The good news is that we’ve made a lot of the mistakes already and we’ve learned some lessons … The bad news is that there are plenty of new mistakes waiting to be made.

    We made some mistakes and learned a LOT of lessons at WS-I, and we can all avoid some new mistakes by a careful consideration of WS-I’s accomplishments.

    -- Michael Champion, Senior Program Manager

  • Interoperability @ Microsoft

    Apache Stonehenge, interoperability at work



    When Microsoft decided to participate in the Apache Stonehenge project our goal was to deliver guidance through practical applications that span languages and platforms and demonstrate how to achieve interoperability. As I mentioned a few months ago multiple implementations including .NET, Java, Php, Python & Ruby of the Stonehenge Stocktrader sample application have been committed to the repository (check the code here: http://svn.apache.org/viewvc/incubator/stonehenge/contrib/stocktrader/)

    Since then we’ve been working and I’m glad to report that we’ve reached a key milestone: to deploy a first set of these samples and make them work together. The Stonehenge community is currently going through the final testing required for the “M1 release”, and it is taking votes on a release. From a simplified architecture point of view the Stonehenge Stocktrader application is built as follows:



    • A User Interface layer delivering the web front end (HTML)
    • A middle tier layer including a Business Services layer (login, account processing) and an Order Processing layer (buy/sell transactions)
    • A Data Access layer to provide access to the database for the middle tier layer (Business Services and Order Processing)
    • And finally the database where the application data lives

    So far we have been focusing on the .NET, PHP, and Java interoperability scenarios, and have deployed the three Stocktrader implementations in multiple configurations. If you want to reproduce the environment, you can get the installation and configuration steps for the .NET, PHP and Java versions at http://cwiki.apache.org/confluence/display/STONEHENGE/Index. The PHP and Java implementations were contributed by WSO2 using their Web Services Frameworks (http://wso2.org/projects).

    Then we ran a series of tests mixing and matching the layers from the three implementations, playing with the configurations and leveraging the Web Services standards, including WS-Security, to provide message integrity and security.

    In short (that’s only a partial view of the scenarios), the following diagram shows where we were able to achieve interoperability using Web Services (each arrow represents Web Service based dialog):


    A detailed “interoperability walkthrough” explaining all the different configurations has been posted at http://cwiki.apache.org/confluence/display/STONEHENGE/Stonehenge+Interoperability+Walk-through

    From the end user perspective whichever middle tier layer (Business Services or Order Processing) is activated during the scenario is completely transparent, since each of the implementations executes the same transactions. Even though the most interesting part of the interoperability walkthrough happens at the Web Services standard level, I wanted to give you a sense of how the scenario looks from multiple perspectives. In the following example, we are looking at the “Buy Stocks” transaction in both the .NET & PHP applications (the current Java version does not implement any UI):

    Stocktrader .NET

    Stocktrader PHP

    Buying stocks




    Transaction confirmation




    Portfolio summary information




    This new outcome from the Stonehenge project is very encouraging. With the implementation of the WS-* Standards, we get the benefit of distributed applications and platforms. We recognized that it is not always easy to achieve these goals, but I really feel this type of practical guidance will be helpful for these types of scenarios.

    We’re very encouraged by the success of this first step, and we invite you to take a closer look to give comments and feedback.  There are lots of roles for you to participate in the project, whether you are a developer or a user: developing code on your preferred platform, suggesting new scenarios and applications that will provide real value to people in your field, or even just looking over the code and documents to see if they address the challenges you might have had developing interoperable services. 

    We look forward to getting your comments and ideas about how to keep this project moving in a direction that meets real people’s needs.


  • Interoperability @ Microsoft

    MS Open Tech publishes HTML5 Labs prototype of a Customizable, Ubiquitous Real Time Communication over the Web API proposal


    Prototype with interoperability between Chrome on a Mac and IE10 on Windows


    Martin Thomson
    Senior Architect, Skype, Microsoft Corp.

    Bernard Aboba
    Principal Architect, Lync, Microsoft Corp.

    Adalberto Foresti
    Principal Program Manager, Microsoft Open Technologies, Inc.

    The hard work continues at the W3C WebRTC Working Group where we collectively aim to define a standard for customizable, ubiquitous Real Time Communication over the Web. In support of our earlier proposal, Microsoft Open Technologies, Inc., (MS Open Tech) is now publishing a working prototype implementation of the CU-RTC-Web proposal on HTML5Labs to demonstrate a real world interoperability scenario – in this interop case, voice chatting between Chrome on a Mac and IE10 on Windows via the API.

    By publishing this working prototype in HTML5 Labs, we hope to:

    • Clarify the CU-RTC-Web proposal with interoperable working code so others can understand exactly how the API could be used to solve real-world use cases.
    • Show what level of usability is possible for Web developers who don’t have deep knowledge of the underlying networking protocols and interface formats.
    • Encourage others to show working example code that shows exactly how their proposals could be used by developers to solve use cases in an interoperable way.
    • Seek developer feedback on how the CU-RTC-Web addresses interoperability challenges in Real Time Communications.
    • Provide a source of ideas for how to resolve open issues with the current draft API as the CU-RTC-Web proposal is cleaner and simpler.

    Our earlier CU-RTC-Web blog described critical requirements that a successful, widely adoptable Web RTC browser API will need to meet:

    • Honoring key web tenets – The Web favors stateless interactions that do not saddle either party of a data exchange with the responsibility to remember what the other did or expects. Doing otherwise is a recipe for extreme brittleness in implementations; it also raises considerably the development cost, which reduces the reach of the standard itself.
    • Customizable response to changing network quality – Real time media applications have to run on networks with a wide range of capabilities varying in terms of bandwidth, latency, and packet loss. Likewise, these characteristics can change while an application is running. Developers should be able to control how the user experience adapts to fluctuations in communication quality. For example, when communication quality degrades, the developer may prefer to favor the video channel, favor the audio channel, or suspend the app until acceptable quality is restored. An effective protocol and API should provide developers with the tools to tailor the application response to the exact needs of the moment.
    • Ubiquitous deployability on existing network infrastructure – Interoperability is critical if WebRTC users are to communicate with the rest of the world with users on different browsers, VoIP phones, and mobile phones, from behind firewalls and across routers and equipment that is unlikely to be upgraded to the current state of the art anytime soon.
    • Flexibility in its support of popular media formats and codecs as well as openness to future innovation – A successful standard cannot be tied to individual codecs, data formats or scenarios. They may soon be supplanted by newer versions that would make such a tightly coupled standard obsolete just as quickly. The right approach is instead to support multiple media formats and to bring the bulk of the logic to the application layer, enabling developers to innovate.

    CU-RTC-Web extends the media APIs of the browser to the network. Media can be transported in real time to and from browsers using standard, interoperable protocols.


    The CU-RTC-Web first starts with the network. The RealtimeTransportBuilder coordinates the creation of a RealtimeTransport. A RealtimeTransport connects a browser with a peer, providing a secured, low-latency path across the network.

    At the network layer, CU-RTC-Web demonstrates the benefits of a fully transparent API, providing applications with first class access to this layer. Applications can interact directly with transport objects to learn about availability and utilization, or to change transport characteristics.

    The CU-RTC-Web RealtimeMediaStream is the link between media and the network. RealtimeMediaStream provides a way to convert the browsers internal MediaStreamTrack objects – an abstract representation of the media that might be produced by a camera or microphone – into real-time flows of packets that can traverse networks.

    Rather than using an opaque and indecipherable blob of SDP: Session Description Protocol (RFC 4566) text, CU-RTC-Web allows applications to choose how media is described to suit application needs. The relationship between streams of media and the network layer they traverse is not some arcane combination of SDP m= sections and a=mumble lines. Applications build a real-time transport and attach media to that transport.

    Microsoft made this API proposal to the W3C WebRTC Working Group in August 2012, and revised it in October 2012, based on our experience implementing this prototype. The proposal generated both positive interest and healthy skeptical concern from working group members. One common concern was that it was too radically different from the existing approach, which many believed to be almost ready for formal standardization. It has since become clear, however, that the existing approach (the RTCWeb protocol and WebRTC APIs specifications) is far from complete and stable, and needs considerable refinement and clarification before formal standardization and before it’s used to build interoperable implementations.

    The approach proposed in CU-RTC Web also would allow for existing rich solutions to more easily adopt and support the eventual WebRTC standard. A good example is Microsoft Lync Server 2013 that is already embracing Web technologies like REST and Hypermedia with a new API called the Microsoft Unified Communications Web API (UCWA see http://channel9.msdn.com/posts/Lync-Developer-Roundtable-UCWA-Overview). UCWA can be layered on the existing draft WebRTC API, however it would interoperate more easily with WebRTC implementations if the standard adopted would follow a cleaner CU-RTC-Web proposal.

    The prototype can be downloaded from HTML5Labs here. We look forward to receiving your feedback: please comment on this post or send us a message once you have played with the API, including the interop scenario between Chrome on a Mac and IE10 on Windows.

    We’re pleased to be part of the process and will continue to collaborate with the working group to close the gaps in the specification in the coming months as we believe the CU-RTC-Web proposal can provide a simpler and thus more easily interoperable API design.

  • Interoperability @ Microsoft

    Beta of Windows Phone Toolkit for Amazon Web Services released


    I am pleased to announce the beta release of the Windows Phone Toolkit for Amazon Web Services (AWS). Built by Microsoft as an open source project, this toolkit provides developers with a speed dial that lets them quickly connect and integrate Windows Phone applications with AWS (S3, SimpleDB, and SQS Cloud Services)

    To create cloud-connected mobile applications, developers want to have choice and be able to reuse their assets and skills. For developers familiar with AWS, whether they’ve been developing for Android, iOS or any other technology, this toolkit will allow them to comfortably port their applications to the Windows Phone Platform.

    Terry Wise, Director of Business Development for Amazon Web Services, welcomes the release of the Windows Phone Toolkit for Amazon Web Services to the Developer community.

    “Our approach with AWS is to provide developers with choice and flexibility to build applications the way they want and give them unlimited storage, bandwidth and computing resources, while paying only for what they use. We welcome Windows Phone developers to the AWS community and look forward to providing customers with new ways to build and deploy Windows Phone applications,” he says.

    Jean Paoli, General Manager of Interoperability Strategy at Microsoft, adds that Windows Phone was engineered from the get-go to be a Cloud-friendly phone.

    “The release of the Windows Phone Toolkit for AWS Beta proves that Microsoft’s goal of building a Cloud-friendly phone is true across vendor boundaries. It literally takes minutes to create a Cloud-ready application in C# with this toolkit. We look forward to this toolkit eventually resulting in many more great apps in the rapidly growing Windows Phone marketplace,” he said.

    Developers can download the toolkit , along with the complete source code under the Apache license. A Getting Started guide can be found on the Windows Phone Interoperability Bridges site along with other resources.

    And as always your feedback on how to improve this beta is welcome!

  • Interoperability @ Microsoft

    Open Sourcing POSH-NPM, a set of Powershell scripts to enable tab-completion for NPM commands


    Two weeks ago we released a .NET library for NPM, today we are releasing a small utility that will make easier for Windows developers to use NPM in Powershell.

    Posh-npm is a set of Powershell scripts that enable tab completion on the Powershell console for all NPM commands. For instance by typing npm ins<tab> in Powershell will complete the command by listing all available commands that starts with ins.

    The WebMatrix team is working on adding console support for node.js and will be using the posh-npm library to provide tab completion in WebMatrix as well.

    Special thanks to Keith Dahlby’s posh-git project, it made our life much easier.

    Claudio Caldato
    Principal Program Manager
    Microsoft Open Technologies, Inc.

  • Interoperability @ Microsoft

    MS Open Tech early contributor to open source dash.js community to accelerate advanced video streaming through MPEG-DASH standard


    MPEG-DASH is key to the future of online video as it is the latest ISO standard for Internet streaming. Over 75% of surveyed European broadcasters are planning to adopt the standard by the middle of 2014. To accelerate this new media technology, Microsoft Open Technologies, Inc. (MS Open Tech) recently contributed code on a new open source project called dash.js that will deliver an MPEG-DASH video player for Internet Explorer 11, and other browsers.

    In June, at the //BUILD/ conference, Netflix demonstrated MPEG-DASH playback in Internet Explorer 11 (IE11) without any browser plugins. IE11 was also shown playing MPEG-DASH content using dash.js JavaScript player. This marked a significant step forward in facilitating cross platform content streaming since it removes the need to develop proprietary plugins for each platform. Using the dash.js code developers can more easily build browser based MPEG-DASH players in order to directly address broadcasters concerns about a lack of MPEG-DASH players.

    MS Open Tech contributions

    Dash.js is an early stage community project, initiated by members of the DASH-IF, to build a cross-platform video player that is compliant with the DASH-AVC/264 Implementation Guidelines. In the latest release of dash.js, our work focused on features that stabilize the player and its ability to stream content in browsers that support Media Source Extensions (MSE), a W3C specification that allows JavaScript to generate media streams for playback.

    As a part of this work, the essential on demand video streaming operations such as seek, play and pause have been refactored to address potential incompatibilities between different browser implementations. We have also put considerable effort into improving the development process through the provision of a better test infrastructure. This makes it easier for third parties to participate in the project in order to further enhance the player.

    Building the developer ecosystem

    MS Open Tech contributions, when combined with the work of other community members, has enabled plugin free video streaming in IE11 and other browsers supporting MSE and we look forward to continuing to play our part in delivering on the promise of MPEG-DASH. To be one of the first to experience the future of Internet video install the Windows 8.1 preview and take a look at dash.js project. Your feedback is important to us and as part of the dash.js project community we welcome all forms of input.

    Kirk Shoop, Senior Software Development Engineer
    Microsoft Open Technologies, Inc.

    Ross Gardler, Senior Technical Evangelist
    Microsoft Open Technologies, Inc.

  • Interoperability @ Microsoft

    PHP and IE8 Web Slices


    image Internet Explorer 8 (IE8) shipped with a new feature for web users called Web Slices. You can learn more about web slices here. Essentially it lets you add enhanced links to your favorite bar that allow you to preview snippets of content from websites that you frequently visit without having to open up the page. It’s really useful to do little tasks like check on your web based Inbox, check the weather in cities you live or visit, traffic status, stock tickers, headlines, sports, the list goes on and on and you can check the IE add-on gallery for more examples of useful web slices and for inspiration. [UPDATE: if you’re into sports then check out web slices by Buzztap that showcases a whole bunch to keep you up to date, also see the blog post by Jon Box]

    A web slice is content on a web page which a user can subscribe to.  The content is then available from a button in the Internet Explorer 8 Favorite's toolbar. When the content is updated, the button glows orange to alert the user that there is new content.  When the user clicks the button, they see a drop down window with the updated content of the web slice.

    To enable Web Slices on your PHP web site. We have created a project, Web Slices and Accelerators for PHP that lets you get started quickly and the source is available on Codeplex too. The solution contains HTML and PHP samples to create web slices in Wordpress, Wikimedia and Facebook,, all popular php blogging, content and social sites that you may want to have your code interoperate with to get started. Download the package and unzip the file to a directory on your machine.

    The code is based on HTML and XML and can be easily integrated into any other web site, framework or platform you may be working with. The markup is displayed in a client web browser and IE8 will discover and update content when it parses the code. Any web server can be used including IIS or Apache on phpie8websclicearchitectureLinux/Windows.

    There are three things to mark content as a web slice. You will need specific CSS class names to start with;  first, a div marked with a class equal to ‘hslice’; second, the div must have a unique id; third, a child element marked with a class equal to ‘entry-title’.


    The HTML tags you use to structure your web slice are immaterial, the important thing is to specify the right CSS class names. We can create a PHP function to output this HTML structure.  The function will accept a unique name for the web slice, a title and a string representing the content.


    The code will render in your browser and when you hover over it, you will notice a green box around the content as well as a green button shows up next to your Home page button as illustrated below. You will only need to click on any of these buttons to get the dialog box that add this content to your favorites bar.


    Another handy feature that web slices have is a built in reader which can display the first item of an RSS feed. The HTML is almost identitcal but instead of specifying an element with a  class equal to 'entry-content', you create an anchor tag pointed to the content source. Note that you must specify an attribute rel='feedurl' and pointthe link to the URL of the RSS feed you choose to use.


    We can modify our above PHP function to accept another parameter which specifies the feed URL too. Note that this example also includes a parameter for content, which is displayed on the page advertising the web slice. The content from the feed, however, will be the actual content to which a user subscribes to.


    The following web slice was created using the above code with our Interoperability Blog RSS feed showing the first item on the list when this post was written.


    You may already have content and or feeds on your website that could get a little spotlight today! It will also handy for your website users by using Internet Explorer 8 Web Slices. We hope that you take a look at the sample and please share your feedback!

    Happy Coding!

    Jas Sandhu
    Technical Evangelist, Interop Vendor Alliance Manager, Interoperability Strategy Team
    Twitter@jassand, FriendFeed@jassand

  • Interoperability @ Microsoft

    Using Drupal on Windows Azure: Hands-On with 4 new Drupal Modules


    Since the launch of Windows Azure a couple years ago, we’ve been working on driving Interoperability scenarios that enable various developers to harness the power of the Windows Azure cloud platform. In parallel, we’ve supported interoperability projects, in particular on PHP and Drupal, in which the focus is showing how to simply bridge different technologies, mash them up and ultimately offer new features and options to the developers (azurephp.interoperabilitybridges.com).

    Today, I’d like to show you the result of some hands-on work with Drupal on Windows Azure: We are announcing today the availability 4 new Drupal Modules, Bing Maps, Windows Live ID, OData and the Silverlight Pivot Viewer that can be used with Drupal running on Windows Azure. The modules are developed by Schakra and MindTree.

    To showcase this work, the new Drupal 7was deployed on Windows Azure with the Windows Azure Companion: Check out the Drupal & Windows Azure Companion tutorial
    IMPORTANT NOTE - July 13, 2011
    The Windows Azure Companion was an experimental tool to provide a simple experience installing and configuring platform-elements (PHP runtime, extensions) and web applications on Windows Azure.  Based the feedback and results Microsoft has decided to stop any further development of the Windows Azure Companion and instead we recommend using the new  tools available at http://azurephp.interoperabilitybridges.com/downloads to deploy applications to Windows Azure.

    On top of this Drupal instance running on Windows Azure, are deployed the four NEW generic modules that allow Drupal administrators/developers to provide their users with new features:

    The Bing Maps Module for Drupal provides for easy & flexible embedding of Bing Map in Drupal content types, such as a technical article or story.



    The Windows Live ID Module for Drupal allows Drupal user to associate their Drupal account to their Windows Live ID, and then to login on Drupal with their Windows Live ID.



    The OData Module for Drupal allows developers to include data sources based on OData in Drupal content types. The generic module includes a basic OData query builder and renders data in a simple HTML Table. In this case, we are taking the Netflix OData catalog and using a simple visual query engine, generating a filtered query to display on our Drupal “Article” page.



    The Silverlight Pivot viewer Module for Drupal enables enables easy & flexible embedding of Silverlight PivotViewer in Drupal content types, using a set of preconfigured data sources like oData producers or existing Pivot collections


    In this example, we are using the wedding venues pivot collection exposed on http://beta.hitched.co.uk to render the interactive Silverlight PivotViewer of that collection with deep zoom image support and a complete visual query experience.


    These modules are independently developed and contributed by Schakra and MindTree, with funding provided by Microsoft. The modules have all been made available on GitHub, and we hope to see them moved to the Drupal module gallery in the near future. As always I look forward to your comments and feedback.


    Craig Kitterman, Sr. Interoperability Evangelist, Microsoft

  • Interoperability @ Microsoft

    Latest WebSockets Release Interoperates with Firefox, Eclipse's Jetty


    We have updated the WebSockets prototype on our HTML5 Labs site, which brings the implementation in line with the recently released WebSockets 06 Protocol Specification.  

    We have extended our interoperability testing so that now, along with LibWebSockets, we tested interoperability with Jetty, an open-source project providing an HTTP server, HTTP client, and javax.servlet container, developed by the Eclipse community, and we accepted the invitation of Patrick @Docksong.com to test our code with a Firefox Mindfield version he built with an implementation of the 06 Protocol Specification.

    We tested the WebSockets interoperability between our HTML5 Labs prototype client and Jetty server, which recently added support for the 06 version of the spec (you can find the Jetty code here.)

    We also tested the WebSockets interoperability with a test Firefox build that supports the 06 protocol specification. We are hosting a chat demo page on Azure, which can be opened in Firefox and will use native browser WebSocket instead of the Silverlight-based one. 

    WebSockets is a technology designed to simplify much of the complexity around bi-directional, full-duplex communications channels, over a single Transmission Control Protocol (TCP) socket. It can be implemented in web browsers, web servers as well as used by any client or server application.

    This fourth update of our WebSocket prototype brings ping-pong support: automatic client to server ping every 50 seconds. It also now supports the binary and fragment frames feature defined in the WebSocket protocol specification, but they are not yet exposed to javascript because the W3C API working group is still working on defining a set of APIs that can work with binary data. 

    Jetty Testing

    Our testing involved setting up Jetty server on Win2K8 server machine, and hosting a chat WebSocket endpoint, which has the same functionality as this chat sample

     We then directed our existing chat client web page to use the Jetty-hosted endpoint (instead of WCF-hosted endpoint), and we confirmed that the chat app was fully functional. 

    This screenshot shows the chat page opening a WebSocket connection to ws://localhost:4502/chat



    This screenshot shows Jetty server accepting the WebSocket connection from the browser


    This screenshot shows the chat page connected to Jetty WebSocket connection


    And, as I said earlier, we are hosting the Jetty chat endpoint on Azure, and have updated our existing chat demo to use it. To deploy the Jetty endpoint in Azure, we used the recently released Windows Azure Starter Kit for Java, developed by our Interoperability team.

    Firefox Testing

    Our testing involved hosting a chat WebSocket endpoint using the WCF-based HTML5 Labs prototype.

     We modified our existing chat page to use native browser WebSocket API (instead of the HTML5 Labs WebSocketDraft API), and we confirmed that the chat app was fully functional.  

    This screenshot shows the chat page works in Firefox using native browser WebSocket API 

    This prototype forms part of our HTML5 Labs Web site, a place where we prototype early and not yet fully stable drafts of specifications developed by the W3C and other standard organizations. The WebSocket API is currently being standardized by the W3C and the WebSocket protocol is being standardized by the IETF.

    Building these prototypes in a timely manner will also help us have informed discussions with developer communities, and give implementation experience with the draft specifications that will generate feedback to improve the eventual standards.

    Claudio Caldato,

    Principal Program Manager, Interoperability Strategy Team

  • Interoperability @ Microsoft

    SQL Server Driver for PHP 2.0 CTP adds PHP's PDO style data access for SQL Server


    Hi, I’m Ashay Chaudhary, Program Manager at Microsoft. Today at DrupalCon SF 2010, we are reaching an important milestone by releasing a Community Technology Preview (CTP) of the new SQL Server Driver for PHP 2.0, which includes support for PHP Data Objects (PDO). Alongside our efforts, the Commerce Guys, a company providing ecommerce solutions with Drupal, is also presenting a beta version of Drupal 7 running on SQL Server using this new PDO Application Programming Interfaces (API) in the SQL Server Driver for PHP 2.0.

    The SQL Server Driver for PHP 2.0 with PDO will enable popular PHP applications like Drupal 7 to use the PDO “PHP style” and interoperate smoothly with Microsoft’s SQL Server database.

    For PHP developers, this will reduce the complexity of targeting multiple databases and will make it easier to take advantage of SQL Server features (like business intelligence & reporting) as well as SQL Azure features (like exposing OData feeds).

    About the SQL Server Driver for PHP 2.0 CTP with PDO

    My team and I have been working hard over the past months to introduce PDO into the existing SQL Server Driver for PHP. The decision to add PDO was a direct result of the feedback we received from the PHP community.

    The new version now supports the API defined by PDO. Of course, we continue to maintain the existing SQL Server native API. To provide better support and consistency for both API, we are creating a common layer including the core features shared across the two API, as shown on the architecture diagram below:

    SQL ServerDriverforPHP_PDO

    The SQL Server Driver for PHP 2.0 CTP is available for download at the Microsoft Download Center (installation through Web PI available as well: http://www.microsoft.com/web/drupal/). 
    Don’t be surprised if you don’t find the source yet, we have packaged only the binaries for now. Rest assured that the SQL Server Driver for PHP 2.0 will be available as a shared source project (like current version 1.1) in our next public release. We expect the final version in the second half of this year. Stay tuned!

    Porting Drupal 7 to SQL Server using the SQL Server Driver for PHP 2.0

    Putting the SQL Server Driver for PHP 2.0 to the test of real world applications is a key aspect of our development process. We started a discussion with the Commerce Guys (a company providing ecommerce solutions with Drupal) who were interested in porting the upcoming version 7 of Drupal to SQL Server, and quickly realized we had a great opportunity to partner with the Drupal community.  So Microsoft provided some funding and initial support through technical specifications and early builds of the driver for Commerce Guys, in order for them to independently develop updates to the code for a contributed module for Drupal 7. After initial success with Drupal 7 working with SQL Server, Commerce Guys disclosed that the Views module, one of the most popular contributed modules for Drupal, also works well with SQL Server.

    If you happen to be at DrupalCon SF, join us for the “Drupal 7 and Microsoft SQL Server” session (this afternoon at 4:15pm) to see it in action.

    For more details about the work Commerce Guys did on Drupal 7, I invite you to read their blog: http://www.commerceguys.com/about/news/

    Give it a try, send your feedback

    Microsoft is very excited about this new milestone and the early success we’ve seen with Drupal 7. Having reached this important milestone, we are not done yet and continue to polish it up. We plan to ship CTPs on a regular basis, so stay tuned!

    Of course, we appreciate feedback, which you can submit by visiting our SQL Server Driver for PHP forum or by visiting SQL Server’s Connect site.

    Ashay Chaudhary
    Program Manager, SQL Server Driver for PHP

  • Interoperability @ Microsoft

    Open XML made easier for Java developers with Apache POI


    [05/18- Update:
    Apache POI project is highlighted in today's Document Interoperability Inititice (DII) event that just happened in London ]

    When developers are tasked to deal with document file formats it might be challenging to do the right thing if you don’t have a good experience with a particular format, and need to crack it open and understand all the details.

    For Java developers and Microsoft Office file formats there’s a very interesting solution with the Apache POI project, which provides a Java API to access Microsoft Office formats. Last year Microsoft and Sourcesence announced that they would collaborate to add support of the Open XML file format to the Apache POI project, and the resulting Open XML support has been integrated as part of POI 3.5 beta 5.

    The end result: Good news for Java developers who need to manipulate the Office Open XML files (.XLSX, .DOCX, .PPTX), because it really makes it easier for them to do the job!

    To illustrate the point, let me walk you through a demo scenario that uses Apache POI Java Libraries and actually combines it with the PHPExcel project (for PHP developers) and the Open XML Format SDK 2.0 (for .NET developers). My goal is just to give you a sense of the type of scenarios you can easily develop using multiple languages and multiple platforms.

    We will make that demo available with more explanation in an article on http://openxmldeveloper.org/. Before we get into the demo itself I want to thank Julien Chable and Maarten Balliauw for their help in building this demo.

    For now, let me walk you through the scenario. For the sake of our demonstration we are going to show how raw data can be consumed by a Java web application using the Apache POI, to create an .XLSX file from scratch. How that file can then be accessed and modified by a PHP application (with PHPExcel). And finally how the resulting file can be digitally signed and finalized via the .NET framework using the Open XML Format SDK.

    Here’s the data flow:


    Step 1 of the scenario starts in the Java Web applications:


    Once the “Create Spreadsheet” button is pressed, it creates the files:


    And does some processing to inject the initial XML data and formatting. The result looks like this:


    Most of the Java code required to do this fits in this code snippet:


    Step 2, moving to the PHP application, the UI is similar:


    This step adds cell protection, renames the .XLSX file, changes cell formatting, and inserts additional content formatting. The result looks like this:


    And the code to accomplish it looks like this:


    Step 3, finally, from the ASP.NET web applications using the Open XML Format SDK:


    Where the code for adding the digital signature looks like this:


    Easy, don’t you think?
    Stay tuned, as I said earlier, we will follow up on http://openxmldeveloper.org/ with a more detailed article.

    Additional background on PHPExcel and the Open XML SDK:

    The PHPExcel project is an open source project available on Codeplex. It consists of a set of classes for PHP that enables PHP applications to read and write to various file formats. These formats include HTML, PDF, and the relevant one for our demonstration…Excel 2007’s .XLSX format. This class set supports features such as setting spreadsheet meta data (author, title, description ...), multiple worksheets, different fonts and font styles, cell borders, fills, gradients, and adding images to spreadsheets. In parallel to this project, there is also the sister project PHPPowerPoint, which is intended to operate along similar lines as the PHPExcel application but with a focus on the .PPTX file formats. Both of these projects are built around the OpenXML standard, and the PHP framework. Read this nice article: Use PHP to create Open XML Spreadsheet reports

    The Open XML Format SDK provides methods for .NET developers to access and manipulate XML content, including XML data contained in OXML document formatted files. It provides strongly typed part classes to manipulate Open XML documents. The SDK also uses the .NET Framework Language-Integrated Query (LINQ) technology to provide strongly typed object access to the XML content inside the parts of Open XML documents. The April 2009 CTP release also adds support for the validation of Open XML documents.
    Read Brian Jones' blog to go deep on Open XML SDK. 

    Jean-Christophe Cimetiere  - Sr. Technical Evangelist

  • Interoperability @ Microsoft

    Identity Interoperability scenario combining PHP, “Geneva” Server, Windows CardSpace, and Information Cards


    At the RSA Conference 2009 in April, Microsoft’s Scott Charney included a video from a project for the Lake Washington School District in his keynote. The project features a very interesting identity interoperability scenario between the Lake Washington School District’s internal Active Directory and Intand’s Tandem for Schools SaaS application. The key challenges were to manage effectively identities while preserving the security of the users and the system.

    The project combines Microsoft code name “Geneva” (the “Geneva” Server and Windows CardSpace “Geneva”) and Intand’s PHP-based Tandem for Schools application that uses the Zend Framework’s information card support for interoperability.

    The project is based on upon the use of Microsoft code name Geneva Server, Windows CardSpace Geneva and Intand’s PHP application using the Zend Framework’s information card support for interoperability.

    To get deeper and learn more about this exciting project, watch these videos:

    Finally I wanted to point out other open source interoperability work our team has been contributing to around information cards for heterogeneous web applications. This includes information card support for Java , Ruby on Rails and a generic C module

    Jean-Christophe Cimetiere - Sr. Technical Evangelist

  • Interoperability @ Microsoft

    Microsoft, Zend and others announce Simple API for Cloud Application Services


    Zend Technologies today launched the Simple API for Cloud Application Services project, “a new open source initiative that allows developers to use common application services in the cloud, while enabling them to unlock value-added features available from individual providers.”

    The initial goal of the project is to provide a set of programming interfaces for PHP developers to facilitate the development of applications that have basic cloud storage needs.

    The project’s announcement includes a quote from Microsoft’s Doug Hauger, General Manager Windows Azure: “Microsoft is pleased to continue to work with Zend and join efforts with other contributors to this project. The Simple Cloud API is an example of Microsoft’s continued investment in the openness and interoperability of its platform. We’re excited to see how this project will foster adoption of cloud computing platforms by PHP developers and hope that many of these developers are encouraged to use Windows Azure.”

    What is the Simple API for Cloud Application Services

    Cloud computing platforms are new technologies and the platform vendors are innovating rapidly in their platforms to address varied customer needs. Some projects do not require the richness provided by vendor-specific APIs and can instead be built with simple APIs that provide an abstraction layer across different platforms. From a developer’s perspective, simple APIs make it easier to write code that remains the same whatever the destination platform.

    simple api for cloud application services zend microsoft interoperability

    This project is pragmatic. The first available implementation of the “Simple API for Cloud Application Services” is provided by Zend who will ship the “Zend Cloud” adapters that will target storage services such as:

    • File storage services, to enable all kinds of files to be stored
    • Document Storage services, to enable manipulation of structured data in a tabular form
    • Simple queue services, to enable storage and delivery of messages.

    simple api for cloud application services zend microsoft interoperability php sdk

    It encourages PHP developers to explore cloud computing by writing code that leverages commonalities across different platforms’ storage services. As the developers become proficient and learn each platform, they will be further inclined to learn vendor-specific features to take advantage of richer functionality.

    Microsoft’s contribution to the project

    A few months ago, Microsoft started to work with Real Dolmen on a Windows Azure SDK for PHP developers. This SDK has been submitted to the Zend Framework (see “July CTP of Windows Azure for PHP Released and support in Zend Framework”) and it now forms the basis of Microsoft’s contribution to the Simple Cloud API project.

    PHP developers will be able to program against Windows Azure using the Simple Cloud API to access the main features of Window Azure Storage:


    For PHP developers who need to use Windows Azure specific features that are not included in the Simple Cloup API (e.g. Windows Azure storage supports transactions unlike some other cloud storage services) they will be able to combine Simple Cloud API code with Windows Azure storage specific code using the dedicated Windows Azure SDK for PHP. The goal is to allow “developers to use common application services in the cloud, while enabling them to unlock value-added features available from individual providers”.

    The Channel9 video provides more information on this announcement:

    Get Microsoft Silverlight

    Going Forward

    Windows Azure is an open platform. We believe that initiatives like the Simple Cloud API will benefit adoption of cloud computing platforms by developers. The Simple Cloud API gives PHP developers more choices and for Microsoft this is a great opportunity to encourage them to use Windows Azure.

    Let’s meet at www.simplecloud.org

    Vijay Rajagopalan, Principal Architect, Microsoft Corp.

  • Interoperability @ Microsoft

    Momentum Grows as OData v4 Achieves Standards Milestone


    OData Industry Adoption Builds with v4 Now in Public Review in OASIS

    Based on the industry collaboration between Citrix, IBM, Microsoft, Progress Software, SAP AG, WSO2, and others, we are pleased to report that the OASIS OData Technical Committee recently approved Committee Specification Draft 01 (CSD01) of OData version 4.0 and has initiated a public review of OData v4.0 during May 3, 2013 through June 2, 2013. OData v4.0 is expected to become an OASIS Standard in 2013.

    Much of the data on the Web today lives in silos, needing different protocols, APIs, and formats to query and update the data. With the rapid growth of online information and big data sources, open data protocols and services are in demand more than ever before.

    OData is a Web protocol for querying and updating data. OData is built on a set of RESTful conventions that provide interoperability for services that expose data. It builds on standardized web technologies such as HTTP, REST, Atom/XML, and JSON. It provides an entity data model and has support for vocabularies for common ontologies such as Sales (with Customers, SalesOrder, Product, ...), Movies (with Title, Actor, Director, …), or Calendars (with Event, Venue, …), etc. OData enables the creation of REST-based data services which means that resources identified using Uniform Resource Identifiers (URIs) and defined in an Entity Data Model (EDM), can be published and edited by Web clients using simple HTTP messages.

    The OASIS OData version 4.0 specification is based on the popular OData version 3.0. OData version 4.0 defines data model changes to significantly simplify and expand how relationships are expressed and used as well as how metadata is described and partitioned, expanded query capabilities for inline collections and fulltext search, and extended functionality for change tracking and asynchronous processing.

    The OASIS Technical Committee has produced three work products; OData version 4.0 defines the core semantics and facilities of the protocol, including a set of conventions for addressing resources, query string operators for querying a service, and an XML representation of the Entity Data Model exposed by an OData service. OData JSON Format version 4.0 defines representations for OData request and response bodies using a JSON format. OData Atom Format version 4.0 defines an equivalent representation for OData request and response bodies using an Atom/XML format.

    Many organizations are already working with OData, and it has proven to be a useful and flexible technology for enabling interoperability between disparate data sources, applications, services, and clients. Here are some recent examples:

    Microsoft Research Explores OData and the Semantic Web

    Microsoft Research (MSR), in collaboration with The British Library and the Digital Enterprise Research Institute (DERI), has just published a whitepaper Linking Structured Data that explores how OData can be used to expose data within an RDF triple store through an end-user oriented model, and consumed by a broad range of consumer-oriented tools and applications. To better understand how RDF data could be exposed and consumed by OData clients in a real world example, MSR went from theory to practice by focusing on some scenarios from The British Library which publishes its metadata on the Web according to Linked Data principles.

    Join the OData Community

    If you’re interested in using or implementing the OData protocol or contributing to the OData standard, now’s the time to get involved.

    • Learn more about OData and the ecosystem of open data producer and consumer services by visiting the recently revamped OData.org web site for information, content, videos, and documentation.
    • Get the latest information for what's going on in OData by join the OData.org mailing list.
    • Get involved in the #OData discussion and contribute to the OData community.
    • Join the OASIS OData technical committee (OData TC) to contribute to the standard.
    • Send comments on OData version 4.0 to the OASIS OData Technical Committee

    We’re looking forward to continued collaboration with the community to develop OData into a formal standard through OASIS.

    Mark Gayler, Senior Technical Evangelist
    Microsoft Open Technologies, Inc.

    Ram Jeyaraman, Senior Standards Professional
    Microsoft Open Technologies, Inc. and co-Chair of the OASIS OData Technical Committee



  • Interoperability @ Microsoft

    Now on IE and Firefox: Debug your mobile HTML5 page remotely with weinre (WEb INspector REmote)


    Great news for HTML5 mobile developers: the remote DOM inspector tool weinre is no longer restricted to Webkit-based browsers and can be used with Internet Explorer 10 or Firefox, thanks to the community contribution with technical support from Microsoft Open Technologies, Inc.

    WEb INspector REmote

    Weinre (WEb INspector REmote) is an HTML5 debugging tool addressing the challenge of testing and troubleshooting web pages on mobile devices. It is part of the Apache Cordova projects and intends to help developers debugging their mobile web page or Cordova-based mobile apps on actual device. It allows doing DOM inspection remotely and generally makes it way easier to validate that an HTML5 page will render and behave properly on actual devices.

    If you are familiar with the F12 tools on IE, Firebug on Firefox or Web Inspector on Chrome, then you will feel at home to debug your HTML5 pages on mobiles devices.

    Removing WebKit dependencies

    Thanks to the recent community work with MS Open Tech technical support, WebKit dependencies were removed from weinre and the tools now perfectly works on Internet Explorer and Firefox, giving you the option to use your favorite modern browser.

    For HTML5 developers wrapping web code into native applications with tools such as Apache Cordova (PhoneGap), this tool is a great addition to the native development tools that will not allow to do DOM inspection on the HTML5 content that is encapsulated in their native apps with Apache Cordova. Using weinre, they can now test the HTML5 part of their apps in a real environment, no longer “simulating” actual devices with desktop web browsers.


    Check out the video below to see a short demo of Weinre used to debug an HTML5-based application on Windows Phone 8.

    Get Started with weinre on IE 10 and Windows Phone 8

    To get started with weinre, visit the weinre Apache project page.

    You can install weinre with npm using the following command in the Node.js command prompt: npm -g install weinre

    A debug server (running on Node.js) is launched on your development machine. A debugger client web page allows you to inspect and manipulate the DOM elements of your HTML5 page. In the Node command prompt, just type weinre –boundHost xx.xx.xx.xx (where xx.xx.xx.xx is the IP address of the Network adapter you want to use).

    You can obviously set a number of settings so that the server is bound to a specific Network connection, and uses a specific port.

    You can then access the debugger instruction web page going to the http://xx.xx.xx.xx:8080/ page.


    You can then start your debugger client page: http://xx.xx.xx.xx:8080/client.

    Instrument your mobile web page with the following script line:

    <script src="http://xx.xx.xx.xx:8080/target/target-script-min.js#anonymous"></script>

    Then bring up your mobile page on a connected device whether through the browser on in your app. The client will show the new target connection and you will be able to play with your DOM elements!


    Call for feedback

    Once you gave a try to weinre to inspect your HTML5 markup on a Windows Phone 8 device, we would love to have your feedback and input. Please comment below to let us know what you think.

  • Interoperability @ Microsoft

    Open Source OData Tools for MySQL and PHP Developers


    To enable more interoperability scenarios, Microsoft has released today two open source tools that provide support for the Open Data Protocol (OData) for PHP and MySQL developers working on any platform.

    The growing popularity of OData is creating new opportunities for developers working with a wide variety of platforms and languages. An ever increasing number of data sources are being exposed as OData producers, and a variety of OData consumers can be used to query these data sources via OData’s simple REST API.

    In this post, we’ll take a look at the latest releases of two open source tools that help PHP developers implement OData producer support quickly and easily on Windows and Linux platforms:

    • The OData Producer Library for PHP, an open source server library that helps PHP developers expose data sources for querying via OData. (This is essentially a PHP port of certain aspects of the OData functionality found in System.Data.Services.)
    • The OData Connector for MySQL, an open source command-line tool that generates an implementation of the OData Producer Library for PHP from a specified MySQL database.

    These tools are written in platform-agnostic PHP, with no dependencies on .NET.

    OData Producer Library for PHP


    Last September, my colleague Claudio Caldato announced the first release of the Odata Producer Library for PHP, an open-source cross-platform PHP library available on Codeplex. This library has evolved in response to community feedback, and the latest build (Version 1.1) includes performance optimizations, finer-grained control of data query behavior, and comprehensive documentation.

    OData can be used with any data source described by an Entity Data Model (EDM). The structure of relational databases, XML files, spreadsheets, and many other data sources can be mapped to an EDM, and that mapping takes the form of a set of metadata to describe the entities, associations and properties of the data source. The details of EDM are beyond the scope of this blog, but if you’re curious here’s a simple example of how EDM can be used to build a conceptual model of a data source.

    The OData Producer Library for PHP is essentially an open source reference implementation of OData-relevant parts of the .NET framework’s System.Data.Services namespace, allowing developers on non-.NET platforms to more easily build OData providers. To use it, you define your data source through the IDataServiceMetadataProvider (IDSMP) interface, and then you can define an associated implementation of the IDataServiceQueryProvider (IDSQP) interface to retrieve data for OData queries. If your data source contains binary objects, you can also implement the optional IDataServiceStreamProvider interface to handle streaming of blobs such as media files.

    Once you’ve deployed your implementation, the flow of processing an OData client request is as follows:

    1. The OData server receives the submitted request, which includes the URI to the target resource and may also include $filter, $orderby, $expand and $skiptoken clauses to be applied to the target resource.
    2. The OData server parses and validates the headers associated with the request.
    3. The OData server parses the URI to resource, parses the query options to check their syntax, and verifies that the current service configuration allows access to the specified resource.
    4. Once all of the above steps are completed, the OData Producer for PHP library code is ready to process the request via your custom IDataServiceQueryProvider and return the results to the client.

    These processing steps are the same in .NET as they are in the OData Producer Library for PHP, but in the .NET implementation a LINQ query is generated from the parsed request. PHP doesn’t have support for LINQ, so the producer provides hooks which can be used to generate the PHP expression by default from the parsed expression tree. For example, in the case of a MySQL data source, a MySQL query expression would be generated.

    The net result is that PHP developers can offer the same querying functionality on Linux and other platforms as a .NET developer can offer through System.Data.Services. Here are a few other details worth nothing:

    • In C#/.NET, the System.Linq.Expressions namespace contains classes for building expression trees, and the OData Producer Library for PHP has its own classes for this purpose.
    • The IDSQP interface in the OData Producer Library for PHP differs slightly from .NET’s IDSQP interface (due to the lack of support for LINQ in PHP).
    • System.Data.Services uses WCF to host the OData provider service, whereas the OData Producer Library for PHP uses a web server (IIS or Apache) and urlrewrite to host the service.
    • The design of Writer (to serialize the returned query results) is the same for both .NET and PHP, allowing serialization of either .NET objects or PHP objects as Atom/JSON.

    For a deeper look at some of the technical details, check out Anu Chandy’s blog post on the OData Producer Library for PHP or see the OData Producer for PHP documentation available on Codeplex.

    OData Connector for MySQL

    The OData Producer for PHP can be used to expose any type of data source via OData, and one of the most popular data sources for PHP developers is MySQL. A new code generator tool, the open source OData Connector for MySQL, is now available to help PHP developers implement OData producer support for MySQL databases quickly and simply.

    The OData Connector for MySQL generates code to implement the interfaces necessary to create an OData feed for a MySQL database. The syntax for using the connector is simple and straightforward:

    php MySQLConnector.php /db=mysqldb_name /srvc=odata_service_name /u=db_user_name /pw=db_password /h=db_host_name

    figure2The MySQLConnector generates an EDMX file containing metadata that describes the data source, and then prompts the user for whether to continue with code generation or stop to allow manual editing of the metadata before the code generation step.

    EDMX is the Entity Data Model XML format, and an EDMX file contains a conceptual model, a storage model, and the mapping between those models. In order to generate an EDMX from a MySQL database, the OData Connector for MySQL needs to be able to do database schema introspection, and it does this through the Doctrine DBAL (Database Abstraction Layer). You don’t need to understand the details of EDMX in order to use the OData Connector for MySQL, but if you’re curious see the .edmx File Overview article on MSDN.

    If you’re familiar with EDMX and wish to have very fine-grained control of the exposed OData feeds, you can edit the metadata as shown in the diagram, but this step is not necessary. You can also set access rights for specific entities in the DataService::InitializeService method after the code has been generated, as described below.

    If you stopped the process to edit the EDMX, one additional command is needed to complete the generation of code for the interfaces used by the OData Producer Library for PHP:

    php MySQLConnector.php /srvc=odata_service_name

    Note that the generated code will expose all of the tables in the MySQL database as OData feeds. In a typical production scenario, however, you would probably want to fine-tune the interface code to remove entities that aren’t appropriate for OData feeds. The simplest way to do this is to use the DataServiceConfiguration object in the DataService::InitializeService method to set the access rights to NONE for any entities that should not be exposed. For example, you may be creating an OData provider for a CMS, and you don’t want to allow OData queries against the table of users, or tables that are only used for internal purposes within your CMS.

    For more detailed information about working with the OData Connector for MySQL, refer to the user guide available on the project site on Codeplex.

    These tools are open-source (BSD license), so you can download them and start using them immediately at no cost, on Linux, Windows, or any PHP platform. Our team will continue to work to enable more OData scenarios, and we’re always interested in your thoughts. What other tools would you like to see available for working with OData?

  • Interoperability @ Microsoft

    Migrating HTML5-based applications to Windows Phone overnight with Apache Cordova and jQuery Mobile


    Microsoft Open Technologies, Inc., the Apache Cordova team and the JQueryMobile team recently met with over 20 top PhoneGap/Apache Cordova developers for a Hackathon in San Francisco to gather feedback on building HTML5 applications running on Windows Phone with Apache Cordova and the jQuery Mobile theme for Windows Phone (Metro style). The Windows Phone team also joined the party, asking developers about their HTML5 and Javascript experiences on top of the Windows Phone Web Browser control.

    While some of the developers had backgrounds in start-ups and others were independent developers, every attendee had one thing in common: all of them had PhoneGap/Cordova applications published on Android and/or iPhone platforms. During the event, using Apache Cordova and jQuery Mobile, we helped attendees migrate their HTML5-based applications to Windows Phone. For many of the attendees, this was their first time to work with Windows Phone. The energy at the event was amazing as developers got to experience first-hand the ease of integrating Apache Cordova and jQuery Mobile with Windows Phone.

    You can read the report on the event from Jesse and Steve from the Apache Cordova team here.

    After a few hours of learning Visual Studio Express for Phone, coding and eating pizza, the first demos of HTML5 applications running on Windows Phone started to pop up. Developers saw their applications running on their new Windows Phone devices, which they received as part of the event along with AppHub tokens for them to publish applications on the Windows Phone marketplace.

    Developers from Learnzapp, with no previous experience on Windows Phone development, migrated their Cordova/JQuery Mobile Law School Admission Test application to Windows Phone and applied the jQuery Mobile theme for Windows Phone (Metro style) to their HTML5 controls in only a few hours. Those developers plan to submit the application to the Windows Phone marketplace in the next few days. You can read their own report on the event on their blog. Below is a screenshot of the LSAT application running on an Android device, a Windows Phone and an iPhone.


    Developers from Tiggzi, delivering a cloud based Builder for HTML5, jQuery Mobile and Apache Cordova applications, kicked off the addition of Windows Phone to the list of platforms their tool targets. They announced the added support for Windows Phone earlier this month, only 3 weeks after the event.

    The event was a success not only because developers left the Hackathon with functional HTML5-based Windows Phone applications, after migrating their applications in a single night, but also because experienced developers helped us identify the key aspects of the migration process which will enable making the HTML5 and Javascript development for Windows Phone even better.

    We want to thank everyone who attended the event, and look forward to further engagement with this community. Be sure to take a look at the video below to see a short demo of an HTML5 application development with Apache Cordova, jQuery Mobile and the new jQuery Mobile theme for Windows Phone (Metro style).

    To learn more about HTML5 and JavaScript development for Windows Phone, visit this page where you will find related resource, articles and tutorials.

    Abu Obeida Bakhach
    Program Manager
    Microsoft Open Technologies, Inc.
    A subsidiary of Microsoft Corporation

  • Interoperability @ Microsoft

    News from MS Open Tech: Initial HTTP Speed+Mobility Open Source Prototype Now Available for Download


    Microsoft Open Technologies, Inc. has just published an initial open source prototype implementation of HTTP Speed+Mobility. The prototype is available for download on html5labs.com, where you will also find pointers to the source code.

    The IETF HTTPbis workgroup met in Paris at the end of March to discuss how to approach HTTP 2.0 in order to meet the needs of an ever larger and more diverse web. It would be hard to downplay the importance of this work: it will impact how billions of devices communicate over the internet for years to come, from low-powered sensors, to mobile phones, to tablets, to PCs, to network switches, to the largest datacenters on the planet.

    Prior to that IETF meeting, Jean Paoli and Sandeep Singhal announced in their post to the Microsoft Interoperability blog that Microsoft has contributed the HTTP Speed+Mobility proposal as input to that conversation.

    The prototype implements the websocket-based session layer described in the proposal, as well as parts of the multiplexing logic incorporated from Google’s SPDY proposal. The code does not support header compression yet, but it will in upcoming refreshes.

    The open source software comprises a client implemented in C# and a server implemented in Node.js running on Windows Azure. The client is a command line tool that establishes a connection to the server and can download a set of web pages that include html files, scripts, and images. We have made available on the server some static versions of popular web pages like http://www.microsoft.com and http://www.ietf.org, as well as a handful of simpler test pages.

    We invite you to inspect the open source code directly in order to familiarize yourself with how everything works; we have also made available a readme file at this location describing the various options available, as well as the meaning of the output returned to the console.

    So, please download the prototype, try it out, and let us know what you think: every developer is a stakeholder in the HTTP 2.0 standardization process. We look forward to hearing your feedback, and to applying it to upcoming iterations of the prototype code.

    Adalberto Foresti
    Senior Program Manager
    Microsoft Open Technologies, Inc.
    A subsidiary of Microsoft Corporation

  • Interoperability @ Microsoft

    Customizable, Ubiquitous Real Time Communication over the Web (CU-RTC-Web)


    UPDATE: See our latest W3C WebRTC Working Group blog post on 01-17-2013 http://aka.ms/WebRTCPrototypeBlog describing our new CU-RTC-Web prototype that you can download on HTML5 Labs.


    Matthew Kaufman - Inventor of RTMFP, the most widely used browser-to-browser RTC protocol on the web
    Principal Architect, Skype, Microsoft Corp.

    Martin Thomson
    Senior Architect, Skype, Microsoft Corp.

    Jonathan Rosenberg - Inventor of SIP and SDP offer/answer
    GM Research Product & Strategy, Skype, Microsoft Corp.

    Bernard Aboba
    Principal Architect, Lync, Microsoft Corp.

    Jean Paoli
    President, Microsoft Open Technologies, Inc.

    Adalberto Foresti
    Senior Program Manager, Microsoft Open Technologies, Inc.



    Today, we are pleased to announce Microsoft’s contribution of the CU-RTC-Web proposal to the W3C WebRTC working group.

    Thanks in no small part to the exponential improvements in broadband infrastructure over the last few years, it is now possible to leverage the digital backbone of the Internet to create experiences for which dedicated media and networks were necessary until not too long ago.

    Inexpensive, real time video conferencing is one such experience.

    The Internet Engineering Task Force and the World Wide Web Consortium created complementary working groups to bring these experiences to the most familiar and widespread application used to access the Internet: the web browser. The goal of this initiative is to add a new level of interactivity for web users with real-time communications (Web RTC) in the browser.

    While the overarching goal is simple to describe, there are several critical requirements that a successful, widely adoptable Web RTC browser API will need to meet:

    • Honoring key web tenets – The Web favors stateless interactions which do not saddle either party of a data exchange with the responsibility to remember what the other did or expects. Doing otherwise is a recipe for extreme brittleness in implementations; it also raises considerably the development cost which reduces the reach of the standard itself.
    • Customizable response to changing network quality – Real time media applications have to run on networks with a wide range of capabilities varying in terms of bandwidth, latency, and packet loss.  Likewise these characteristics can change while an application is running. Developers should be able to control how the user experience adapts to fluctuations in communication quality.  For example, when communication quality degrades, the developer may prefer to favor the video channel, favor the audio channel, or suspend the app until acceptable quality is restored.  An effective protocol and API should provide developers with the tools to tailor the application response to the exact needs of the moment.
    • Ubiquitous deployability on existing network infrastructure – Interoperability is critical if WebRTC users are to communicate with the rest of the world with users on different browsers, VoIP phones, and mobile phones, from behind firewalls and across routers and equipment that is unlikely to be upgraded to the current state of the art anytime soon.
    • Flexibility in its support of popular media formats and codecs as well as openness to future innovation – A successful standard cannot be tied to individual codecs, data formats or scenarios. They may soon be supplanted by newer versions that would make such a tightly coupled standard obsolete just as quickly. The right approach is instead to support multiple media formats and to bring the bulk of the logic to the application layer, enabling developers to innovate.

    While a useful start at realizing the Web RTC vision, we feel that the existing proposal falls short of meeting these requirements. In particular:

    • No Ubiquitous deployability: it shows no signs of offering real world interoperability with existing VoIP phones, and mobile phones, from behind firewalls and across routers and instead focuses on video communication between web browsers under ideal conditions. It does not allow an application to control how media is transmitted on the network. On the other hand, implementing innovative, real-world applications like security consoles, audio streaming services or baby monitoring through this API would be unwieldy, assuming it could be made to work at all. A Web RTC standard must equip developers with the ability to implement all scenarios, even those we haven’t thought of.
    • No fit with key web tenets: it is inherently not stateless, as it takes a significant dependency on the legacy of SIP technology, which is a suboptimal choice for use in Web APIs. In particular, the negotiation model of the API relies on the SDP offer/answer model, which forces applications to parse and generate SDP in order to effect a change in browser behavior. An application is forced to only perform certain changes when the browser is in specific states, which further constrains options and increases complexity. Furthermore, the set of permitted transformations to SDP are constrained in non-obvious and undiscoverable ways, forcing applications to resort to trial-and-error and/or browser-specific code. All of this added complexity is an unnecessary burden on applications with little or no benefit in return.


    The Microsoft Proposal for Customizable, Ubiquitous Real Time Communication over the Web

    For these reasons, Microsoft has contributed the CU-RTC-Web proposal that we believe does address the four key requirements above.

    • This proposal adds a real-time, peer-to-peer transport layer that empowers web developers by having greater flexibility and transparency, putting developers directly in control over the experience they provide to their users.
    • It dispenses with the constraints imposed by unnecessary state machines and complex SDP and provides simple, transparent objects.
    • It elegantly builds on and integrates with the existing W3C getUserMedia API, making it possible for an application to connect a microphone or a camera in one browser to the speaker or screen of another browser. getUserMedia is an increasingly popular API that Microsoft has been prototyping and that is applicable to a broad set of applications with an HTML5 client, including video authoring and voice commands.

    The following diagram shows how our proposal empowers developers to create applications that take advantage of the tremendous benefits offered by real-time media in a clear, straightforward fashion.


    We are looking forward to continued work in the IETF and the W3C, with an open and fruitful conversation that converges on a standard that is both future-proof and an answer to today’s communication needs on the web. We would love to get community feedback on the details of our CU-RTC-Web proposal document and we invite you to stay tuned for additional content that we will soon publish on http://html5labs.com in support of our proposal.

  • Interoperability @ Microsoft

    One step closer to full support for Redis on Windows, MS Open Tech releases 64-bit and Azure installer


    I’m happy to report new updates today for Redis on Windows Azure: the open-source, networked, in-memory, key-value data store. We’ve released a new 64-bit version that gives developers access to the full benefits of an extended address space. This was an important step in our journey toward full Windows support. You can download it from the Microsoft Open Technologies github repository.

    Last April we announced the release of an important update for Redis on Windows: the ability to mimic the Linux Copy On Write feature, which enables your code to serve requests while simultaneously saving data on disk.

    Along with 64-bit support, we are also releasing a Windows Azure installer that enables deployment of Redis on Windows Azure as a PaaS solution using a single command line tool. Instructions on using the tool are available on this page and you can find a step-by-step tutorial here. This is another important milestone in making Redis work great on the Windows and Windows Azure platforms.

    We are happy to communicate that we are using now the Microsoft Open Technologies public github repository as our main go-to SCM so the community will be able to follow what is happening more closely and get involved in our project.

    We have already received some great feedback from developers interested in using Redis on Windows Azure, so we are committed to an open development process in collaboration to the over 400 Github followers which, among other benefits, will provide more frequent releases.

    Now our journey continues with two additional major steps:

    - Stress Testing: Our test team spent quite some time testing the code but we need more extensive stress testing that will exercise the new code’s reliability and also guarantee Redis on Windows Azure can be used under significant workload and for an extended period of time before it can be reliably used for production scenarios.

    - Redis 2.6: Our development team will be focused in getting the code base up to the latest version on Linux, 2.6. UPDATED 01/22/2013: an alpha version of Redis 2.6 was released today. It has a few known issues, but we expect to have a stable version in a few days.

    In addition we want to make easier for developers to deploy Redis by adding support for nuGet and WebPI deployment. We will make these features available very soon.

    If you are interested in running Redis on Windows, the best thing you can do is to use this release as much as you can, log bugs and share your comments and suggestions. We also have a long list of features/changes/enhancements that we’re ready to make so let us know if you’re interested in helping - we’re looking for a few more smart developers that want to join our dev team as contributors to the project on Github. Let us know if you want to join the virtual team!

    Claudio Caldato
    Principal Program Manager Lead
    Microsoft Open Technologies, Inc.

  • Interoperability @ Microsoft

    New open source releases: Reactive Extensions (Rx) libraries for Python and Ruby


    Microsoft Open Technologies, Inc is releasing two new open source libraries for Reactive Extensions (Rx) today that support Python and Ruby.

    Rx is a programming model that allows developers to use a common interface on multiple platforms to interact with diverse data sources and formats, such as stock quotes, Tweets, real-time events, streaming data, and Web services. Developers can use Rx to create observable sequences, and applications can subscribe to these sequences and receive asynchronous notifications as new data arrives. Rx was open-sourced by MS Open Tech in November, 2012, and since then has become an important component behind the scenes in several high-availability, including NetFlix and GitHub.

    Developers direct an Observer interface to observe (subscribe to) a data source, which is called an Observable Interface in Rx. The Observer Interface waits for and then reacts to pushed data until it is sent a signal from the Observable Interface that there is no more data to react to. An Observable interface maintains a list of dependent Observer interfaces and notifies them automatically of any state changes. Employing such a model is useful for performance and reliability in many scenarios, especially in UI-heavy client environments in which the UI thread is blocked while waiting for events.

    Rx is available for different platforms such as .NET, JavaScript, C/C++, and Windows Phone frameworks, and as of today, Ruby and Python as well. You can download the libraries, as well as learn about their prerequisites at the Rx MSDN Developer Center.

    You can find the projects on CodePlex: Rx for Ruby is available here, and Rx for Python is available here. Try them out and please share feedback!  This is our initial effort for both Ruby and Python and we are looking forward to working actively with the Ruby and Python communities to make sure that implementing Rx is as easy and flexible as possible. You can leave comments here, or start a discussion on CodePlex for Ruby or Python.

  • Interoperability @ Microsoft

    New CU-RTC-Web HTML5Labs Prototype from MS Open Tech Demonstrates Roaming between Cellular and Wi-Fi Connections


    Demonstrating a faster mobility scenario that would be more difficult with the current WebRTC draft

    Adalberto Foresti
    Principal Program Manager, Microsoft Open Technologies, Inc.

    Since we submitted the initial CU-RTC-Web proposal to the W3C WebRTC Working Group in August 2012 with our proposed original contribution, vibrant discussions over the proposed RTCWeb protocol draft and WebRTC APIs specifications have continued both online and at face to face W3C and IETF Working Group meetings. The amount of energy in the industry around this subject is remarkable, though the road to converge on a quality, implementable spec that properly addresses real-world use cases remains long.

    Last month, our prototype of CU-RTC-Web demonstrated a real world interoperability scenario – voice chatting between Chrome on a Mac and IE10 on Windows via the API.

    Today, Microsoft Open Technologies, Inc., (MS Open Tech) is now publishing an updated prototype implementation of CU-RTC-Web on HTML5Labs that demonstrates another important scenario – roaming between two different connections (e.g. Wi-Fi and 3G, or Wi-Fi and Ethernet) - with negligible impact on the user experience.

    The simple, flexible, expressive APIs underlying the CU-RTC-Web architecture allowed us to implement this important scenario just by building the appropriate JavaScript code and without introducing any changes in the spec, because CU-RTC-Web is a lower level API than the current proposed WebRTC API draft.

    By comparison, the current high level proposed WebRTC API draft would not allow JavaScript developers to implement this scenario: the current draft would need to see modifications done ‘under the hood’ at the platform level by the developers modifying the browser capability itself. There is a proposal for addressing mobility cases in the IETF, but standardization of these mechanisms and subsequent implementation in the browser takes time.

    This example also illustrates that we should not assume everything that will ever be done with WebRTC is already known at the time the standard is developed. It is tempting to develop an opaque, high level API that is optimized for some well-understood scenarios, but that requires development of new, probably non-interoperable extensions to cover new scenarios - or creating yet another standard to enable such applications. We believe that web developers would prefer to be empowered by a lower level, general API that truly enables evolving, interoperable scenarios from day one. Our earlier CU-RTC-Web blog described critical requirements that a successful, widely adoptable Web RTC browser API will need to meet, particularly in the area of network transport. We mentioned how the RealtimeTransport class connects a browser with a peer, providing a secured, low-latency path across the network.

    Rather than using an opaque and indecipherable blob of SDP: Session Description Protocol (RFC 4566) text, CU-RTC-Web allows applications to choose how media is described to suit application needs. The relationship between streams of media and the network layer they traverse is not some arcane combination of SDP m= sections and a= mumble lines. Applications build a real-time transport and attach media to that transport.

    If you want to learn more about the challenges that SDP brings, some very insightful comments have recently been shared by Robin Raymond of Open Peer on the RTCWEB IETF mailing list. Go here to see Robin’s well-crafted Blog post on the issues – SDP the WebRTC Boat Anchor. As a community, it is important we continue to share these views as inaction will constitute a self-defeating choice, for which the industry would pay a high price for years to come.

    As with our previous release, we hope that publishing this latest working prototype in HTML5Labs provides guidance in the following areas:

    • Clarify the CU-RTC-Web proposal with interoperable working code so others can understand exactly how the API could be used to solve real-world use cases.
    • Encourage others to show working example code that shows exactly how their proposals could be used by developers to solve use cases in an interoperable way.
    • Seek developer feedback on how the CU-RTC-Web addresses interoperability challenges in Real Time Communications.
    • Provide a source of ideas for how to resolve open issues with the current draft API as the CU-RTC-Web proposal is cleaner and simpler.

    The prototype can be downloaded from HTML5Labs. We look forward to receiving your feedback: please comment on this post or send us a message once you have played with the API, and stay tuned for even more to come.

    We are proud to be part of the process and will continue to collaborate with the working group to close the gaps in the specification in the coming months. We remain persuaded that the general principles that governed CU-RTC-Web are valid and that a lower level API such as CU-RTC-Web is preferable to the higher level API within the current proposed WebRTC API draft.  This would result in the most agile and robust standard, one that will empower web developers to create innovative experiences for years and decades to come.

  • Interoperability @ Microsoft

    jQuery Adds Support for Windows Store Apps, Creates New Opportunities for JavaScript Open Source Developers


    jQueryonWinRTThe popular open source JavaScript Web framework jQuery is adding full support for Windows Store applications in the upcoming v2.0 release, thanks to recent contributions from appendTo with technical support from Microsoft Open Technologies, Inc. (MS Open Tech). Considering the opportunity Windows Store apps represent for developers, this is a great news for JavaScript developers who can now develop apps for Windows 8 using what they already know along with their existing JavaScript code, hopefully leading to a new wave of jQuery-based Windows Store applications.

    The Windows 8 application platform introduced support for HTML5 and JavaScript development leveraging the same standard-based HTML5 and JavaScript engines as Internet Explorer. As developers would expect, some popular open source JavaScript frameworks can already be used in the context of a Windows Store application, like backbone.js, Knockout.JS, YUI. You can learn more about how to build a Windows 8 app with YUI in this YUI blog from Jeff Burtoft, HTML5 evangelist for Microsoft.

    Windows 8 provides access to all the WinRT APIs within the HTML5 development environment. Developers should be aware that there are some additional security features to consider when developing Windows 8 applications or HTML5-based cross platform applications for Windows. You can learn more about these features on MSDN.

    jQuery paves the way for open source JavaScript frameworks use in Windows Store applications

    According to the buildwith.com site, jQuery is the most widely used JavaScript framework on the Web. This makes it even more exciting that jQuery 2.0 will fully support Windows Store applications as this will benefit developers who already use jQuery and also demonstrates how other JavaScript frameworks can be integrated into the Windows 8 application model.

    “The jQuery team is excited about the new environments where jQuery 2.0 can be used. HTML and JavaScript developers want to take their jQuery knowledge with them to streamline the development process wherever they work. jQuery 2.0 gives them the ability to do that in Windows 8 Store applications. We appreciate the help from appendTo for both its patches and testing of jQuery 2.0 and MS Open Tech for its technical support.”Dave Methvin, president, jQuery Foundation

    appendTo, long-time JavaScript and Web development experts and jQuery contributors, extended its expertise to the Windows 8 application development, working with the jQuery community with technical support from MS Open Tech to enable jQuery support for the Windows 8 application model.

    While jQuery meets the language criterion for Windows Store applications, Windows 8 exposes all the WinRT APIs within the HTML5 development environment, which comes with a new security model that made some code and common practices of jQuery flagged as unsafe in the context of a Windows Store application. AppendTo reviewed and re-authored portions of jQuery core to bring it into alignment with the Windows security model, as well as identified key areas where alternative patterns would need to be substituted for actually-used conventions.” Jonathan Sampson, director of Support for appendTo.

    appendTo submitted code directly to the jQuery Core project, which will integrate this support, and the alternative patterns mentioned by Sampson were submitted to the net.tuts+ site to help jQuery developers understand the Windows 8 security model and easily build Windows 8 applications using jQuery. You can read appendTo’s blog post with more details on this work.

    Although these patterns apply to the jQuery framework, most of them transfer to all JavaScript frameworks and will definitely help you if you are planning to use your favorite open source JavaScript framework to build Windows 8 applications.

    Mobile cross platform development frameworks and tools

    HTML5 is now supported on all modern mobile platforms and open source tools such as Apache Cordova (aka PhoneGap), allowing developers to publish their applications built with HTML5 and JavaScript to multiple platforms with minimal effort and maximum code reuse. As in all HTML5/JavaScript development, developers love to be able to use their favorite frameworks, to help with their MVC model, database, UI or simply JavaScript code structure.

    Developers can already use some of these mobile cross-platform development frameworks and tools on Microsoft Devices as we mentioned in a previous post about Windows Phone 8 support added to popular open source tools and frameworks. MS Open Tech continuously engages with open source communities (contributing code, providing technical support, getting developers early access to future versions of the platforms, helping with testing devices, etc.), and we’ve found that developers are eager to publish their HTML5 apps to Windows 8 and Windows Phone 8 Stores.

    "At HP IT, we use Enyo to build apps for conference attendees. Our Enyo-based conference apps deliver a first-class user experience on Windows 8 and Windows Phone 8 — not to mention iOS, Android and a host of other platforms. The ability to serve users across platforms and device types with a single app is a huge win for us." — Sharad Mathur, sr. director, Software, Architecture & Business Intelligence Printing & Personal Systems HP IT

    Here are some recent notable developments in HTML5 mobile cross platform development:

    If you are an HTML5 and JavaScript developer, you should definitely consider building Windows 8 applications leveraging not only your development experience and skills but also your existing JavaScript code and libraries. Take a look at the jQuery new patterns proposed by appendTo, and start coding for Windows — who knows, you might be sitting on the next Cut the Rope!

  • Interoperability @ Microsoft

    New release - Tx (LINQ to Logs and Traces)


    We are proud to announce the release of Tx (LINQ to Logs and Traces), an open source project to help with the debugging of software from logs/traces, and the building of real-time monitoring and alerting systems.  

    This tool is code that has been used within Microsoft, for example, by the Windows Communication Foundation (WCF) and the ServiceBus teams. With this release, the Tx code is now available for use in your own projects.  

    Tx allows the use of Language Integrated Query (LINQ) queries on raw event sources. LINQ is a Microsoft .NET Framework component that adds native data querying capabilities using any of the supported .NET languages 

    Tx enables the use of Reactive Extensions (Rx) on real event sources and provides support for multiplexed event sequences (a stx multiplexed sequence as you might find in a typical logsingle sequence containing events of different types in order of occurrence). Using Tx, it is possible to hide the heterogeneity of event sources and thus provide a single query across multiple sources. Such queries use the same API for both real-time and past history.  

    When working on historical log/trace files. multiple queries can be performed with a single read. For example, a single pass over a file can count all “Warning” events, match “Begin” and “End” events, and calculate the average duration of each activity. This functionality is extremely useful when working with large files as it is possible to perform the same real-time queries efficiently over historical data to gain additional insights. 

    With this first release Tx (LINQ to Logs and Traces) provides:

    • Parsers that surface various trace/log formats as IObservables
    • LINQPad Driver, allowing the usage of LINQPad directly on files and real-time sessions
    • Samples illustrating how to use Reactive Extensions + LINQ to Objects on:
      • trace/log files that have no size restriction
      • real-time sessions

    This release also provides the following NuGet packages:

    • Tx.Core
      • Common components that are not specific to a specific tracing format and are commonly reused across different formats.
    • Tx.Windows provides support for:
      • Event Tracing for Windows (ETW) which allows application programmers to start and stop event tracing sessions, instrument applications and consume trace events.
      • Event Logs (.etvtx) and listening for changes in event logs
      • Performance counters from files (.blg, .csv, .tsv) and from real-time counter API
      • IIS text logs in W3C format
    • Tx.SqlServer
      • SQL Server Extended Events (XEvent)
    • Tx.All
      • A convenience package containing all the above

    Please check out the Tx project site on CodePlex for more information and the corresponding documentation.


    Georgi Chkodrov, Developer, Microsoft Corp.
    Ross Gardler, Senior Technical Evangelist, Microsoft Open Technologies, Inc.
  • Interoperability @ Microsoft

    Working with Microsoft Silverlight on PHP


    Architecture diagram for an embedded Silverlight controlSilverlight Microsoft Silverlight, now at version 3.0, is a great way to create rich web applications that run on Windows, Mac OS and Linux. It provides an engaging, rich, safe, secure, and scalable cross-platform experience. Best of all you can run it off any web server (IIS, Apache for e.g.) and it can be called from any PHP website! Our team has released some helper samples to get you started. You can find the project on the Samples for PHP with Silverlight web page, and the project source can be found on Codeplex. The project includes sample HTML and PHP scripts.

    How it works? Silverlight content is embedded into an HTML or PHP web page and in turn is transferred to the client browser where it is displayed by the Silverlight runtime (plugin) installed on the client computer. The architecture is shown on the right.

    You will first create a Silverlight application file (.xap). We have provided a sample file, HelloPHPDevelopers.xap within the download or you can also create one for yourself by using another tech bridge we have, Eclipse Tools for Silverlight. Our colleague Steve Sfarz in France has a great post up on his site describing how to get started with it and create your own .xap file. This file is essentially a packaged archive or .zip file (try changing .xap to .zip and browse into it) with a collection of libraries that you have compiled for your application. If you follow the directions on the site you will end up with a button on a form with some custom actions.

    You will then copy the .xap file you have created to a directory within your web site where you plan to host the Silverlight content. You will then want to create a custom HTML or PHP page that includes the following code in it’s body


    That’s all you need to run the .xap file you created and you can swap it out to any other file Silverlight application you choose to use.  If a user does not have the Silverlight plugin installed they will be presented with a 'Get Microsoft Silverlight' image and a link to install the plugin too. You should see an example of this in action right below this paragraph.


    To do this dynamically from PHP, you can use the function below. This is handy if you have Silverlight content in more than one place on your website.


    That’s all you need to take advantage of Silverlight as a content source for your PHP website. Have fun and share your experience back with us!

    Jas Sandhu
    Technical Evangelist, Interop Vendor Alliance Manager, Interoperability Strategy Team
    Twitter@jassand, FriendFeed@jassand

  • Interoperability @ Microsoft

    Partnering to foster Eclipse and Microsoft platform interoperability


    I’m very happy about today’s announcements at the Eclipse Summit in Ludwigsburg, Germany. Microsoft,Tasktop and Soyatec announced a series of projects to help developers using the Eclipse platform do two things: take advantage of new features in Microsoft® Windows 7 and Window Server 2008 R2 and reinforce Java and PHP interoperability with Windows® Azure and Microsoft® Silverlight.

    In the first of the four projects, Microsoft is partnering with Tasktop Technologies, a leading Eclipse-based solutions provider from Canada, to create an Eclipse “next-generation experience” on Windows 7 and Windows Server 2008 R2, which shares the same user interface improvements. Tasktop Technologies will contribute enhancements to the Eclipse IDE, which will be available under the Eclipse Public License in Q1 of 2010.

    In addition, Microsoft has collaborated with Soyatec, a France-based IT solutions provider, to develop three solutions:

    Microsoft is providing funding and architectural guidance for all four of the projects. Let’s take a look at some of the details.

    Eclipse “next-generation experience” on Windows 7

    Microsoft and Tasktop will collaborate to extend the Eclipse Rich Client Platform (RCP), and in particular the Standard Widget Toolkit (SWT), to include the mapping of new features offered by Windows 7. This will allow Eclipse developers to take advantage of the new user interface features offered by Windows 7, directly from the Eclipse IDE and from any desktop applications built on top of the Eclipse platform.

    Here are a couple of sample features that illustrate what I’m talking about:

    • Taskbar Progress integration. Windows 7 provides a new visual representation of the progress bar, which is included in the default behavior of the Windows 7 taskbar. The progress bar is actually part of the application icon, and shows progress horizontally across the icon.
      Here’s how it might look in the Eclipse IDE:
      And here is another view of the progress bar from an application built using the Eclipse RCP:
    • Taskbar Jump Lists. The redesigned Windows 7 taskbar allows applications to expose frequently used features or files that users can select directly. Eclipse-based applications will be able to leverage this feature. For example the next screenshot shows how you could launch Eclipse commonly used features (“New…” or “Synchronize”) directly from the taskbar:

    Of course, these features and screenshots are the result of early prototyping, so they may not precisely duplicate the features that will be delivered during the first phase of the project. Microsoft and Tasktop Technologies are working together to establish the following list features, which are currently entered as bugs in the Eclipse bugzilla:

    These goals mark the beginning of a momentous journey for us. We expect to complete the first phase in Q1 2010.

    As always, feedback from the developer community about “most wanted” features is very important to us. So if you have ideas, don’t be shy about speaking up—we would love to hear them. I also encourage you to read Mik Kersten’s blog post (Mik is Tasktop’s CEO and project lead of Mylyn) to get his perspective on the project.

    Windows Azure Tools for Eclipse for PHP developers

    Microsoft worked with Soyatec on Windows Azure Tools for Eclipse, a project to produce an open source plug-in that enables PHP developers using Eclipse to create web applications that target Windows Azure. Windows Azure Tools for Eclipse provides a series of wizards and utilities that allow developers to write, debug, and configure for and deploy PHP applications to Windows Azure. It is available for download at www.windowsazure4e.org


    Architecturally speaking, the plug-in leverages the PHP Development Tools (PDT) framework for enabling PHP developers with integrated developer experiences.

    The plug-in also bundles the existing Windows Azure SDK for PHP, which we introduced a few months ago. In a nutshell, this SDK provides a speed dial for PHP developers who use the Windows Azure storage component, making it very easy to use the blob, queue and table data storage features. If you need more details about this SDK, just visit the project site at http://phpazure.codeplex.com/.

    In the coming months, we’ll detail many of the additional features you’ll find in the Windows Azure Tools for Eclipse plug-in. For now, you can get a quick overview by watching a video we just recorded with Robert Hess for Channel9:

    Get Microsoft Silverlight

    Windows Azure SDK for Java developers

    First let me say that the Storage Explorer is really one of the coolest features of Windows Azure Tools for Eclipse—it allows developers to browse data contained in the Windows Azure storage component, including blobs, tables, and queues. Storage Explorer was developed in Java (like any Eclipse extension), and we realized during the Windows Azure Tools for Eclipse development with Soyatec that abstracting the RESTful communication aspect between the Storage Explorer user interface and the Azure storage component made a lot of sense. So this led us to package the Windows Azure SDK for Java developers as open source, which is available at www.windowsazure4j.org.

    The Windows Azure SDK for Java enables developers to easily leverage Azure storage service in their Java applications. The logical architecture is very simple:


    The Windows Azure Storage Explorer feature that is part of Windows Azure Tools for Eclipse illustrates perfectly a Java application using the SDK:

    Eclipse Tools for Silverlight

    The Eclipse Tools for Silverlight (Eclipse4SL) plug-in is an open source, cross-platform plug-in for the Eclipse development environment that enables Eclipse developers to build Silverlight Rich Internet Applications (RIAs).

    We have developed subsequent beta versions, including the Mac version, since announcing the Eclipse4SL project in October 2008. So, I’m very excited to announce that Microsoft and Soyatec have released version 1.0 of the Eclipse Tools for Silverlight plug-in, which can be downloaded here: http://www.eclipse4sl.org/

    Version 1.0 of Eclipse4SL targets Silverlight 2.0. We are working with Soyatec to add support for subsequent releases of Silverlight (Silverlight 3.0 was released in July). You can find a roadmap of the milestones that we have projected on the project site: http://www.eclipse4sl.org/#roadmap . Video demo walkthrough of the plug-in are available here and here (Mac version).

    We are always working hard to find new ways to provide more choice and opportunity for developers in our ongoing journey to foster interoperability between Microsoft products and other technologies. We are hoping that today’s announcements give developers the additional choices and opportunities they’re looking for, and that they amount to yet another reason why choosing Microsoft platforms means keeping all the options open.

  • Interoperability @ Microsoft

    Sun Joins Microsoft on JavaOne Stage in support of Apache Stonehenge Incubator Project


    As the co-owners of the Microsoft portion of the project, Kent Brown and I would like to thank everybody for their support and share our excitement over the future of the Stonehenge project.

    microsoft-sun-javaone There has been a lot of speculation surrounding Microsoft keynoting at JavaOne, and what it could mean to the Java world. Well, now we know that the announcement will be made: Sun has now agreed to participate in the Stonehenge project and will be contributing the Metro-based StockTrader application code. Steven Martin has just posted a note where you’ll find more details on the keynote, and on the new agreement with Sun.

    I’d just like to highlight the goals of Stonehenge : “While industry efforts like WS-* make interop possible, it still isn't always obvious or easy to figure out how to configure different products so that they actually interoperate […] Stonehenge will help us complete the “last mile” of interoperability between today’s standards-based infrastructure and tomorrow’s service-based applications.”

    I’m really thrilled and looking forward to working with Sun on developing new Stonehenge interoperability scenarios.

    Also, as I had hinted in my previous post, the M1 release of Stonehenge incubator project was reached last night. Congratulations to everyone on the Stonehenge team and a warm welcome to our friends from Sun Microssystems.

    Additional Stonehenge materials:

    Kamaljit Bath, Principal Program Manager

    [Update 06/09: JavaOne Radio episode (20 min audio) is available: Chris Mellisinos talks to Steven Martin of Microsoft after the Microsoft General Session keynote address at JavaOne
    javaoneradio ]

  • Interoperability @ Microsoft

    Instant Messaging Interoperability extended through XMPP and new partnerships


    Today, Microsoft announced a new XMPP Gateway for Office Communications Server 2007 R2 that enables interoperability with Cisco Jabber/XMPP and Google Talk, along with new licensing options for Office Communications Server customers to connect with AOL and Windows Live (read the details of the announcement).

    I had a chance to seat down with Ashima Singhal (Senior Product Manager) and Albert Kooiman (Senior Product Manager) from the Communication Server team to discuss the news focusing on Instant Messaging (IM) interoperability between different networks. Here's what they have to say about how all of this works:

    Get Microsoft Silverlight

    This video is posted on the Channel9 Interoperability topic area: Instant Messaging Interoperability extended through XMPP (Jabber)


    Jean-Christophe Cimetiere, Sr. Technical Evangelist

  • Interoperability @ Microsoft

    Kerberos Interoperability Testing Workshop hosted by Microsoft


    A few weeks ago Microsoft’s Kerberos team participated in the Kerberos Interop Workshop organized by the MIT Kerberos Consortium, being hosted here at the Microsoft campus here in Redmond. I had a chance to spend some time with the Microsoft folks (Michiko Short, Jeremy Viegas, Larry Zhu and Yi Zeng from the Microsoft’s Kerberos team) who participated in the event to discuss what happened. We thought it would be interesting to share a quick summary.

    This sort of interoperability workshop is an effort to gather developers together in a single location, to actually plug them into a network environment together and help each other work through the interoperability challenges associated with their current development efforts. In attendance were representatives from Cornell University, Centrify, Microsoft, MIT, Safe Mashups, and Sun Microsystems.

    A bit of background…

    For those of you that aren’t familiar with Kerberos, it is a network authentication protocol developed by MIT as part of a joint project with Digital Equipment Corporation and IBM designed to produce a campus wide distributed computing environment in 1983. Kerberos provides a mutual authentication system, and a high level of encryption, both designed to ensure network and data security. Kerberos was accepted by the Internet Engineering Task Force (IETF) as a standard in 1993. Since its creation Kerberos has become the most widely deployed system for authentication and authorization in modern computing networks.

    In September of 2007, MIT founded the MIT Kerberos Consortium to help establish Kerberos as the universal authentication platform for the world’s computer networks and many organizations joined since then (full list here). The consortium hopes that by opening up ongoing development of Kerberos to other interested parties, it will be possible to expand the scope of work being performed, enhance the evolution of Kerberos, and to help engage potential adopters.
    The MIT Kerberos has also a group on Facebook.

    Microsoft’s collaborative efforts regarding MIT and the Kerberos Consortium are nothing new. Microsoft was one of the original sponsors, and is represented on the board of directors by Microsoft’s Director of Development Slava Kavsan. To help standardize the testing processes for Kerberos developers, Microsoft contributed the GSS Monger interoperability testing framework to the consortium. It is now available on Codeplex using MS_PL, as an ongoing open source project.

    You may not know, but Microsoft has been using Kerberos as the default authentication package since Windows 2000. You may actually be using Kerberos authentication today in your solutions without even realizing it since it is part of negotiated authentication.

    Back to the interoperability plug fest…

    How does an interoperability plug fest like this work? Each participant prepares a desired test plan based on their own current projects and challenges, but beyond that the lab is very ad-hoc. All of the participants bring systems with their code/applications to the event; then everybody hooks up to the network and starts testing out scenarios against each other’s applications using MIT realms or Microsoft domains. This collaborative environment allows participants with different implementations of the same standard to test their interoperability in a real world environment, helping to identify and solve the road blocks that might otherwise cause them problems.

    One of the scenarios for the plug fest consisted of MIT & Microsoft collaborating on testing efforts for their next release. MIT has developed an implementation of a new Kerberos RFC (jointly defined by MS/MIT, and the IETF standards body). Since it was the first implementation there were no other implementations to be tested against. So, the Microsoft team developed a second implementation for the event for validation/comparison/interoperability testing.

    Cornell University came prepared with two scenarios to investigate. The network environment that both scenarios operate under consists of a mixed MIT realm with an Active Directory domain. This results in certain complications when it comes to integrating a Single Sign-on solution. The first of their scenarios was built around integrating CUWebAuth, the open source, Kerberos based, web authentication application they have built, with key IIS services that are connected to a central Active Directory. This integrates single sign-on for Microsoft applications such as Outlook Web Access with other campus web services that require a login. The second of their scenarios centered on integrating WebDav with the Kerberos based login across their network. Complicating matters, the systems used across this network are very diverse and heterogeneous, including desktops running Windows, Linux, and Mac. The Cornell University team has had trouble implementing Kerberos with WebDav on Windows machines that are not part of a domain. Initially, they were uncertain that support for the desired functionality was even possible for Windows based systems. The Microsoft developers attending the plug-fest were able to provide the necessary insights regarding how the problem could be solved on Windows Vista and higher machines.

    Peter Bosanko of Cornell University had this to say about the event:

    “At the KC Interop we worked side by side with an impressive group of Kerberos experts from MIT and Microsoft. This was extremely fortunate for us because our interoperability issues were all about tying together Microsoft systems with an MIT KDC. By the end of our first day we had already accomplished more than we expected to accomplish over the three day Interop.”


    What’s in it for Microsoft and other participants?

    Interoperability is a key pillar for the Kerberos team. Knowing that many customers are going to have a heterogeneous environment, ensuring that Microsoft’s implementation of Kerberos works with other implementations is considered a key to success. By getting all the people together at events like this gives developers an opportunity to really dig into how we work together in an efficient way, solving problems in real time. Also it allows us to see how our applications interoperate with all sorts of other systems and applications that we normally don’t get the opportunity to see. Finally, it allows us to help explore, expand on, and develop standards while learning from a diverse group of experts.

    We were delighted to see the turnout for this event, and wanted to extend a thank you to the MIT Kerberos Consortium for putting this together, and to the Kerberos team here at Microsoft for sharing it with us. With any luck the collaborative efforts of the participants will enable the ongoing development work on the various Kerberos implementations to proceed unhindered.



    Jean-Christophe Cimetiere - Sr. Technical Evangelist

  • Interoperability @ Microsoft

    SQL Server Reporting Services SDK for PHP: adding business intelligence and reporting features to PHP applications


    Wouldn’t it be awesome if PHP developers building reporting applications could use the wider range of ready-to-use tools and services to create, deploy, and manage their reports. Today the SQL Server Reporting Services SDK for PHP turns that scenario into a simple reality enabling PHP developers to easily create reports and integrate them in their web applications.

    Announcing the SQL Server Reporting Services SDK (Software Development Kit) for PHP

    I’m excited to announce that the first version of the SQL Server Reporting Services SDK for PHP is available today on Codeplex, as an open source project: http://ssrsphp.codeplex.com.

    This SDK enables PHP applications to simply utilize SQL Server Reporting Services, Microsoft’s Reporting and Business Intelligence solution. Best of all, these scenarios can be done using the free (as in “free beer”!) SQL Server 2008 Express with Advanced Services edition. This edition includes the SQL Server 2008 Express database engine as well as graphical administration tools and the Reporting Services server components for creating, managing, and deploying tabular, matrix, graphical, and free-form reports (SQL Server 2008 Express Advanced can be downloaded here).

    SQL Server Reporting Services SDK for PHP in a nutshell

    The SDK offers a simple Application Programming Interface (API) to interoperate with SQL Server Reporting Services. The API provides simple methods to perform the most common operations:

    • list available reports within a PHP applications,
    • provide custom parameters from a PHP web form,
    • manage the rendering of the reports within a PHP application.


    The API is built on top of the SQL Server Reporting Services Web Service API using SOAP as the underlying communication mechanism. PHP applications can then manage reports, parameters, credentials, and output formats with SQL Server 2008 Reporting Services.

    The design of the report is created with Business Intelligence Development Studio which comes with SQL Server 2008 Express with Advanced Services. Developers can alter the style of the output formats to fit their needs.

    From Reporting Services in SQL Server Express Edition,your access to remote data sources (SQL Server, OLEDB, ODBC, MySQL, Oracle and others) goes through a SQL Server Express instance installed on the same server, using either:

    • a linked server feature to allow your application to connect to a data source by creating views pointing to the original database.
    • importing of data so you can extract data from the original datasource and import it into the SQL Server Express instance.

    The Hello World demo scenario

    Using the SQL Server Reporting Services SDK for PHP, we’ve created a simple scenario showcasing how to manage reports within a PHP application. This sample is part of the package that you download from the project site.

    The application displays first the list of reports that are available:


    Once the user picks a report, he can select parameters which have been predefined for the report, for example:


    For the developer, it’s fairly simple to build such form. It requires only to call the “GetReportParameters” method provided by the SDK and then parse the result and associate the appropriate HTML controls.
    Here’s a snippet (the full Hello World demo is part of the SDK download):


    Finally, when the user validates its choices, the report is generated on the server side and returned to the PHP applications, which does the final processing to display the information in the context of the application. Here the HTML output for our sample report:


    Join the conversation

    Today, I’m actually presenting the SDK at the Jump In! Developer Web Camp event underway in Zurich. I’m sure I’ll get a lot comments from the PHP experts attending, But what about you: does the SQL Server Reporting Services SDK for PHP respond to your scenarios?
    Of course, feedback is welcome!

    To join the conversation, please visit SQL Server Reporting Services SDK for PHP on Codeplex: http://ssrsphp.codeplex.com.

    Claudio Caldato, Senior Program Manager, Interoperability Strategy Team.

  • Interoperability @ Microsoft

    Taking advantage of Windows Azure Storage from PHP: example with a WordPress plugin


    Continuing our efforts on improving interoperability between PHP and Microsoft technologies, we have created an example showcasing a new plugin for WordPress that allows WordPress developers to take advantage of the storage capacity of Windows Azure. This plugin enables WordPress to use Windows Azure Storage Service to host media for a WordPress-powered blog.

    The plugin, developed by Microsoft, is now available as an open source project from the WordPress repository: http://wordpress.org/extend/plugins/windows-azure-storage/

    About Windows Azure Storage and Content Delivery Network (CDN)

    Windows Azure Storage enables applications to store and manipulate large objects and files in the cloud via blobs, manipulate service state via tables, and provide reliable delivery of messages using queues. You can read more about Windows Azure Storage here.

    If you want to manage your media (images or any file offered for download) in a consistent way and share them across multiple websites then you might want to consider using Windows Azure Storage blobs. Windows Azure includes a service called Windows Azure Content Delivery Network (CDN) which offers developers a solution for delivering high-bandwidth content. Windows Azure CDN has currently 18 locations globally (United States, Europe, Asia, Australia and South America). Windows Azure CDN caches your Windows Azure blobs at strategically placed locations to provide maximum bandwidth for delivering your content to users. The benefit of using a CDN is better performance and experience for users who are farther from the source of the content stored in the Windows Azure Storage blobs. You can read more on the Windows Azure Team Blog and on MSDN

    Windows Azure Storage from PHP with a WordPress plug-in.

    The Windows Azure Storage plugin for WordPress allows developers running their own instance of WordPress to take advantage of the Windows Azure Storage services, including the Content Delivery Network (CDN) feature. It provides a consistent storage mechanism for WordPress Media in a scale-out architecture where the individual web servers don’t share a disk. Note that this scenario goes beyond WordPress and could also be very compelling any other web application where there’s a need to load balance across a number of web servers without shared disk.

    The plugin is a regular WordPress plugin developed in PHP, and can be deployed on any WordPress instance (running on Windows or Linux - requires at least version 2.8.0 and tested up to version 2.8.4). The plugin uses the Windows Azure SDK for PHP to handle the interactions with Windows Azure.

    Once the plugin is installed you’ll see it in the WordPress plugins management interface.

    Once the plugin is activated and configured, which simply consists of setting your Windows Azure account information and a few options, you can use it directly through the blog post editor:

    To include an image in the post, just click on the “Azure” icon. The following screen will pop up:

    From here you simply pick the image you want to include.

    When the plugin is installed, you can choose to have all media managed through the WordPress Media Management interface or during imports to also go to Windows Azure blob storage. Then it shows up in the regular list of media elements and not just under the Azure button.

    Once you have published the post you can see that your image lives on Windows Azure Storage, although your WordPress applications can be hosted anywhere else.

    Give it a try!

    The plugin is now available from the WordPress repository: http://plugins.svn.wordpress.org/windows-azure-storage/. Register for your Windows Azure account (try for free till July 31, 2010 with the Introductory Special), install the plugin, and get started!

    Feel free to share feedback!

    Additional links

    -- Jean-Christophe Cimetiere, Sr. Technical Evangelist, @openatmicrosoft

  • Interoperability @ Microsoft

    Two open source projects to facilitate interoperability with Outlook .pst data files


    Microsoft today announced the availability of two new open source projects that complement technical documentation recently released for Microsoft Outlook Personal Folders (.pst). From the press release:

    Combined, the documentation and tools advance interoperability with data stored in .pst files, reflecting customer requests for greater access to data stored and shared in digital formats generated by Microsoft Outlook and for enhanced data portability.”

    The two open source projects, available on Codeplex.com under the Apache 2.0 license are the following:

    • The PST Data Structure View Tool (http://pstviewtool.codeplex.com/) is a graphical tool allowing the developers to browse the internal data structures of a PST file. The primary goal of this tool is to assist people who are learning .pst format and help them to better understand the documentation.
    • The PST File Format SDK (http://pstsdk.codeplex.com/) is a cross platform C++ library for reading .pst files that can be incorporated into solutions that run on top of the .pst file format. The capability to write data to .pst files is part of the roadmap will be added to the SDK.

    To get more details about how these two projects came to life and understand what type of scenarios they enable, watch this video with Daniel Ko, development manager in the Outlook team.

    Get Microsoft Silverlight

    If you’re specifically interested about potential scenarios enabled by the SDK, watch this segment of the video:


    -- Jean-Christophe Cimetiere, Sr. Technical Evangelist, @openatmicrosoft

  • Interoperability @ Microsoft

    New Office Documentation Now Publicly Available


    By Paul Lorimer, Group Manager, Microsoft Office Interoperability 

    [UPDATE: 05/24/2010, Two open source projects to facilitate interoperability with Outlook .pst data files]

    Office LogoCustomers of Microsoft Office often work in heterogeneous IT environments, so their need for interoperability among disparate business systems is critical. They expect their trusted vendors to work together to make it happen, and Microsoft has demonstrated a strong commitment to the pursuit of interoperability through collaboration with industry players, open access and transparency when it comes to our intellectual property in this area, participating in the creation and maintenance of industry standards, and building our products in a way that makes interoperating with them easier by design.

    Ever since we released Microsoft Office 2007 SP2, we have been releasing tools and publishing tens of thousands of pages of documentation to help developers (including competitors) interoperate with the various products in the Office suite. Today we took another big step in our commitment to open access and transparency, delivering some highly anticipated documentation we’ve promised over the past year or so:

    • More documentation for Microsoft Office 2010. In July 2009, when Office 2010 was still in technical preview, we published thousands of pages of detailed technical documentation for the protocols used by our products to communicate with Office 2010. This enabled third parties to develop software that interoperates with Office 2010, informed by how other Microsoft products do so, while Office 2010 was still several months away from broad release. Today, as promised, we added thousands more pages to the canon. The addition of this new documentation will help other vendors bring interoperable products to market faster, increasing customer choice and satisfaction and driving better business results.
    • Brand new documentation for Microsoft Outlook files. Data portability is increasingly important for our customers and partners as more information is stored and shared in digital formats. One particular request we’ve heard is for improved access to email, calendar, contacts, and other data generated by Microsoft Outlook. On desktops, this data is stored in Outlook Personal Folders, in a format called a .pst file. Last fall we promised to release documentation that would make it easier for developers to read, create, and interoperate with the data in .pst files across a variety of platforms, using the programming language of their choice. After seeking input on the documentation from the community, today we delivered on that promise (here's the link to the documentation on MSDN: http://msdn.microsoft.com/en-us/library/ff385210.aspx).

    This kind of transparency provides exciting possibilities for our customers and partners. We’re proud of the work we’ve done in this area, and you can count on Microsoft to continue its vigorous pursuit of interoperability through a comprehensive approach, of which transparency is one of the keystones.

    Paul Lorimer, Group Manager, Microsoft Office Interoperability

    Related items:

  • Interoperability @ Microsoft

    The IndexedDB Prototype Gets an Update


    I'm happy to be able to give you an update today on the IndexedDB prototype, which we released late last year.

    The version 1.0 prototype that we released in December was based on an editor's draft specification from November 2, 2010. I'm happy to announce that this new version includes some of the changes that were added to the specification since then, and which bring it in-line with the latest version of the spec that is available on the W3C web site. However, it is important to note that while this prototype is very close to the latest spec, it is not 100 percent compliant.

    The protoype forms part of our HTML5 Labs Web site, a place where we prototype early and not yet fully stable drafts of specifications developed by the W3C and other standard organizations.  These prototypes will help us have informed discussions with developer communities, and give implementation experience with the draft specifications that will generate feedback to improve the eventual standards. It also lets us give the community some visibility on those specifications we consider interesting from a scenario point of view, but which are still not at the stage where we can consider them ready for official product support.

    The goal of IndexedDB is to introduce a relatively low-level API that allows applications to store data locally and retrieve it efficiently, even if there is a large amount of it. The API is low-level to keep it really simple and to enable higher-level libraries to be built in JavaScript and follow whatever patterns Web developers think are useful as things change over time.

    Folks from various browser vendors have been working together on this for a while now, and Microsoft has been working closely with the teams at Mozilla, Google and other W3C members that are involved in this to design the API together.

    If you notice that this prototype of IndexedDB behaves differently and doesn't work with code you have written, it may be due to some of the following changes:

    • VERSION_CHANGE transaction as described in the spec is implemented except for one feature. The feature NOT implemented is the versionchange event to notify other open database connections, as in the specification. The workaround for this is to not launch two Internet Explorer tabs to open the same database.
    • The createObjectStore() method of the asynchronous database object is now a synchronous operation as described in the specification. Also, this method can only be called from within the onsuccess() handler of the IDBVersionChangeRequest object returned by the setVersion() method. See the samples in the CodeSnippets folder for the exact syntax.
    • The deleteObjectStore() method of the asynchronous database object can only be called from within the onsuccess() handler of the IDBVersionChangeRequest object returned by the setVersion() method. See the samples in CodeSnippets folder for examples.
    • The transaction method of the asynchronous database object now accepts parameters as described in the specification. See the sample in the CodeSnippets folder for examples.
    • The asynchronous transaction object now implements auto-commit. The Javascript code needs to have the close() method on the asynchronous database object for auto-commit to work. See the samples in the CodeSnippets folder for examples.

    The goal of the prototypes is to enable early access to the API and get feedback from Web developers, as well as to keep it up to date with the latest changes in the specifications as they are published. But, since these are early days, remember that there is still time to change and adjust things as needed.

    You can find out more about this experimental release and download the binaries from this archive, which contains the actual API implementation plus samples to get you started.

    Claudio Caldato,

    Principal Program Manager, Interoperability Strategy Team

  • Interoperability @ Microsoft

    Prototyping Early W3C HTML5 Specifications


    Today we launched the HTML5 Labs Web site, a place where we prototype early and not yet fully stable drafts of specifications developed by the W3C and other standard organizations. 

    These prototypes will help us have informed discussions with developer communities, and give implementation experience with the draft specifications that will generate feedback to improve the eventual standards. It also lets us give the community some visibility on those specifications we consider interesting from a scenario point of view, but which are still not at the stage where we can consider them ready for official product support.

    Microsoft's approach with Internet Explorer as outlined in a blog post by Dean Hachamovitch, the Corporate Vice President for Internet Explorer, is to implement standards as they become site-ready for broader adoption.

    Writing Sites to IE Based on Stable HTML5

    For developers, this means that they can write sites to Internet Explorer and be confident that it is based on stable HTML5 and will work in future browser upgrades.  For users, it means that sites continue to work as they upgrade their browsers and they don't get locked in to older browsers.

    At the same time, Microsoft sees an important need in continuing to drive experimentation and testing of new specifications in the standards organizations. It is part of the process of ensuring that specifications are actually ready for real-world usage.

    This new HTML5 Labs Web site is the place where our Interoperability Labs will publish prototype implementations of certain unstable and in-progress W3C, IETF, ECMA and other standards specifications still undergoing a lot of change. So, developers should expect that code and web pages based on these prototypes will have to be re-written as the specifications mature.

    First Prototypes: WebSockets and IndexedDB

    The first two prototypes we are delivering today are Web Sockets and IndexedDB.

    WebSockets is a technology designed to simplify much of the complexity around bi-directional, full-duplex communications channels, over a single Transmission Control Protocol (TCP) socket. It can be implemented in web browsers, web servers as well as used by any client or server application. The WebSocket API is currently being standardized by the W3C and the WebSocket protocol is being standardized by the IETF.

    For its part, IndexedDB is a developing W3C Web standard for the storage of large amounts of structured data in the browser, as well as for high performance searches on this data using indexes. IndexedDB can be used for browser implemented functions like bookmarks, as well as for web applications like email. IndexedDB also enables offline scenarios where the browser might be disconnected from the Internet or server.

    We chose these two specifications primarily because they are potentially very useful but currently unstable. These are the two specifications we currently believe the community stands to benefit the most from, but both are in flux. 

    The details of the HyBi protocol underlying WebSockets are being hotly debated in IETF right now, and the IndexedDB spec will soon be updated to reflect decisions made at a recent W3C working group meeting.

    A Call to Action

    So please experiment with these prototypes and tell us and other working group participants whether the APIs are usable. We are making them available to help improve the final specifications. 

    Other implementers can use these prototypes to determine whether we have interpreted the specifications in the same way, and a larger audience can get a better sense of what potential will be unlocked when these specifications have stabilized into interoperable implemented standards.

    Also, please participate in the appropriate standards bodies to help finalize the specifications.

    Many thanks,

    Jean Paoli

    GM: Interoperability Strategy

  • Interoperability @ Microsoft

    Bienvenue - Benvenuto - Welcome to Microsoft Gianugo Rabellino, Senior Director, Open Source Communities.


    Fourteen years ago, I relocated from France to join Microsoft, where I expanded my dream to do big things with technology.  As General Manager for Interoperability Strategy at Microsoft today, I have the privilege of leading a talented team of people who draw inspiration from delivering the most value out of technology for the benefit of our customers. As I review the work Microsoft has been doing to support these efforts, I am continually impressed by the company’s commitment to addressing the customer realities of today’s mixed source IT environments. 

    You may know our team accomplishments from our Interoperability Bridges & Lab Center, but we do much more. We strive to take a holistic approach to interoperability and openness,  always exploring new ways to engage and build deeper technology connections.  As part of that effort, I’m extremely pleased to announce a new addition to my team – Gianugo Rabellino, who will be a Senior Director engaged directly with the broader open source world. In his role, Gianugo will work to foster relationships with the open source communities worldwide. I expect he will be a tremendous resource in helping identify ways open source communities and Microsoft can better work together and to help Microsoft product teams with their open source strategies.

    gianugoMany of you may already know Gianugo as he’s been a well-known figure in open source communities for years. Given his previous roles as Founder and Chief Executive Officer of Sourcesense and Vice President of the Apache XML Project Management Committee, Gianugo possess a deep understanding of open source technologies and platforms. When he joins Microsoft this coming month, Gianugo will bring his wealth of experience and knowledge to a group of passionate and committed individuals who share his same enthusiasm for interoperability and openness between Microsoft and non-Microsoft platforms.

    Gianugo will be relocating from Italy to Redmond to do big things with technology.  And he’ll go big with the support of my team, our company and many of you who follow our blog.  Once he’s had time to settle into his new role, you can expect to hear from Gianugo directly about his plans around his new role, and the adventures in moving a young family from Italy to the Seattle area.

    Jean Paoli, General Manager for Interoperability Strategy

  • Interoperability @ Microsoft

    The OData Producer Library for PHP is here



    I’m pleased to announce that today we released the OData Producer Library for PHP. In case you missed it, we released last year a client library that allows PHP applications to consume an OData feed, and with this new library it now easy for PHP Applications to generate OData Feeds. PHP developers can now add OData support to their applications so it can be consumed by all clients and libraries that support OData.

    The library is designed to be used with a wide range of data sources (from databases such as SQL Server and MySQL to data structures that are at the application level for applications such as CMS systems). The library is available for download under the open source BSD license: http://odataphpproducer.codeplex.com/
    In order to make the library generic so it can be used on a wide range of scenarios we didn’t take any dependency to specific data structures or data sources. Instead the library is based on 3 main interfaces that, when implemented by the developers for the specific data source, allow the library to retrieve the appropriate data and serialize it for the client. The library takes care of handling metadata, query processing and serialization/deserialization of the data streams.

    Two examples are included that show how a full OData service can be built using the library: the Northwind DB example uses an SQL Express DB as data source and the WordPress example that uses the WordPress’s MySQL DB Schema to expose a feed for Posts, Comments and Users.

    Quick Introduction to OData

    Open Data Protocol is an open protocol for sharing data. It is built upon AtomPub (RFC 5023) and JSON. OData is a REST (Representational State Transfer) protocol, therefore a simple web browser can view the data exposed through an OData service.

    The basic idea behind OData is to use a well-known data format (Atom feed or JSON) to expose a list of entities.

    The OData technology has two main parts:

    • The OData data model, which provides a generic way to organize and describe data. OData uses the Entity Data Model (EDM).The EDM models data as entities and associations among those entities. Thus OData work with pretty much any kind of data.
    • The OData protocol, which lets a client make requests to and get responses from an OData service. Data sent by an OData service can be represented on the wire today either in the XML-based format defined by Atom/AtomPub or in JavaScript Object Notation (JSON).

    An OData client accesses data provided by an OData service using standard HTTP. The OData protocol largely follows the conventions defined by REST, which define how HTTP verbs are used. The most important of these verbs are:

    • GET : Reads data from one or more entities.
    • PUT : Updates an existing entity, replacing all of its properties.
    • MERGE : Updates an existing entity, but replaces only specified properties.
    • POST : Creates a new entity.
    • DELETE : Removes an entity.

    Each HTTP request is sent to a specific URI, identifying some resource in the target OData service's data model.

    The OData Producer Library for PHP

    The OData Producer Library for PHP is a server library that allows to exposes data sources by using the OData Protocol.

    The OData Producer supports all Read-Only operations specified in the Protocol version 2.0:

    • It provides two formats for representing resources, the XML-based Atom format and the JSON format.
    • Servers expose a metadata document that describes the structure of the service and its resources.
    • Clients can retrieve a feed, Entry or service document by issuing an HTTP GET request against its URI.
    • Servers support retrieval of individual properties within Entries.
    • It supports pagination, query validation and system query options like $format, $top, $linecount, $filter, $select, $expand, $orderby, $skip .
    • User can access the binary stream data (i.e. allows an OData server to give access to media content such as photos or documents in addition to all the structured data)

    How to use the OData Producer Library for PHP

    Data is mapped to the OData Producer through three interfaces into an application. From there the data is converted to the OData structure and sent to the client.

    The 3 interfaces required are:

    • IDataServiceMetadataProvider: this is the interface used to map the data source structure to the Metadata format that is defined in the OData Protocol. Usually an OData service exposes a $metadata endpoint that can be used by the clients to figure out how the service exposes the data and what structures and data types they should expect.
    • IDataServiceQueryProvider: this is the interface used to map a client query to the data source. The library has the code to parse the incoming queries but in order to query the correct data from the data source the developer has to specify how the incoming OData queries are mapped to specific data in the data source.
    • IServiceProvider: this is the interface that deals with the service endpoint and allows defining features such as Page size for the OData Server paging feature, access rules to the service, OData protocol version(s) accepted and so on.
    • IDataServiceStreamProvider: This is an optional interface that can be used to enable streaming of content such as Images or other binary formats. The interface is called by the OData Service if the DataType defined in the metadata is EDM.Binary.

    If you want to learn more about the OData Producer Library for PHP, the User Guide included with the code provides detailed information on how to install and configure the library, it also show how to implement the interfaces in order to build a fully functional OData service.

    The library is built using only PHP and it runs on both Windows and Linux.

    This is the first release of a Producer library, future versions may add Write support to be used for scenarios where the OData Service needs to provide the ability to update data. We will also keep it up to date with future versions of the OData Protocol.

    Claudio Caldato, Principal Program Manager, Interoperability Strategy Team

  • Interoperability @ Microsoft

    Microsoft announces Apache Cordova integration in Visual Studio for Multi-Device Hybrid App development


    Today at TechEd US, Microsoft announced the preview release of Visual Studio tooling support for Apache Cordova. This new capability is based on the open source project Apache Cordova, whereby developers can target Android, iOS, Windows Store and Windows Phone 8 from a single project using existing HTML5 and JavaScript skills and code to build apps that take advantage of the native capabilities of the device.

    Read more on the MS Open Tech blog.

  • Interoperability @ Microsoft

    AMQP 1.0 Specification Now Available


    I am happy to report that today the Advanced Message Queuing Protocol (AMQP) Working Group announced the availability of the AMQP 1.0 specification.

    I am in New York attending the fourth annual AMQP business messaging conference and launch event for this important milestone, and Microsoft is thrilled to have been able to participate in the work to get the specification to this point.

    As an open, interoperable, high-performance messaging protocol, AMQP opens up new possibilities in communications that span the client to the cloud, and will provide customers with increased choice.

    AMQP has been developed over the years through the collective work of the 24 companies - and the many diverse communities they represent - that constitute the AMQP Working Group, including JP Morgan, VMware, Red Hat, Deutsche Borse Group, Microsoft, INETCO Systems, Goldman Sachs, and WS02.

    These WG members are all committed to working together on open standards and represent a diverse range of communities, many of them Open Source. 

    Microsoft has been a member of the AMQP WG since 2008 and we have actively contributed to the development and testing of the protocol.

    We are also supportive of, and excited about, the transition of the AMQP work to OASIS, a consortium whose goal is to advance open standards, and the subsequent standardization of AMQP 1.0, which is an important first step towards wider adoption of the specification.

    Microsoft supports thousands of standards in its products and we actively participate in more than 150 standards organizations and over 350 working groups worldwide. We will continue to participate actively in these standards bodies, contributing to the development of new open standards and the improvement of existing standards.

    We recognize that no single company can address interoperability challenges on its own and that collaboration with customers, partners, open source communities and other vendors is of critical importance. This collaboration includes open communication on the interoperability challenges that customers are experiencing and the ways in which those challenges can be addressed.

    Openness and interoperability are important to Microsoft, our customers, partners, and developers, and AMQP has the potential to improve interoperability between various vendor products, which is extremely important to our customers.


    Ram Jeyaraman

    Technical Diplomat: Microsoft's Interoperability Group

  • Interoperability @ Microsoft

    Windows Azure Platform gets easier for PHP developers to write modern cloud applications


    OSIDaysThis week, I’m attending the Open Source India conference, in Chennai, India where I had the chance to participate in the opening keynote. During my talk, I gave a quick overview of the Interoperability Elements of a Cloud Platform, and I illustrated some elements through a series of demos. I used this opportunity to unveil a new set of developer tools and Software Development Kits (SDKs) for PHP developers who want to build modern cloud applications targeting Windows Azure Platform:

    • Windows Azure Companion – September 2010 Community Technology Preview(CTP)– is a new tool that aims to provide a seamless experience when installing and configuring PHP platform-elements (PHP runtime, extensions) and Web applications running on Windows Azure. This first CTP focuses on PHP, but it may be extended to be used for deploying any open source component or application that runs on Windows Azure. Read below for more details.
    • Windows Azure Tools for Eclipse for PHP - September 2010 Update–is a plug-in for PHP developers using the Eclipse development environment, which provides tools to create, test and deploy Web applications targeting Windows Azure.
    • Windows Azure Command-line Tools for PHP – September 2010 Update– is a command-line tool, which offers PHP developers a simple way to package PHP based applications in order to deploy to Windows Azure.
    • Windows Azure SDK for PHP– Version 2.0 – enables PHP developers to easily extend their applications by leveraging Windows Azure services (like blobs, tables and queues) in their Web applications whether they run on Windows Azure or on another cloud platform.


    These pragmatic examples are good illustrations demonstrating Windows Azure interoperability . Keep in mind that Microsoft’s investment and participation in these projects is part of our ongoing commitment to openness, which spans the way we build products, collaborate with customers, and work with others in the industry.

    A comprehensive set of tools and building blocks to pick and choose from

    We’ve come a long way since we released the first Windows Azure SDK for PHP in May 2009, by adding complementary solutions with the Eclipse plug-in and the command line tools.

    The Windows Azure SDK for PHP gives PHP developers a speed dial to easily extend their applications by leveraging Windows Azure services (like blobs, tables and queues), whether they run on Windows Azure or on another cloud platform. Maarten Balliauw, from RealDolmen, today released the version 2.0 of the SDK. Check out the new features on the project site: http://phpazure.codeplex.com/.
    An example of how this SDK can be used is the Windows Azure Storage for WordPress, which allows developers running their own instance of WordPress to take advantage of the Windows Azure Storage services, including the Content Delivery Network (CDN) feature. It provides a consistent storage mechanism for WordPress Media in a scale-out architecture where the individual Web servers don't share a disk.

    Today we are also announcing updates on the Windows Azure Tools for Eclipse for PHP and the Windows Azure Command-line Tools for PHP.

    Developed by Soyatec, the Windows Azure Tools for Eclipse plug-in offers PHP developers a series of wizards and utilities that allows them to write, debug, configure, and deploy PHP applications to Windows Azure. For example, the plug-in includes a Window Azure storage explorer that allows developers to browse data contained into the Windows Azure tables, blobs, or queues. The September 2010 Update includes many new features like enabling Windows Azure Drives, providing the PHP runtime of your choice, deploying directly to Windows Azure (without going through the Azure Portal), or the Integration of SQL CRUD for PHP, just to name a few. We will publish detailed information shortly, and in the meantime, check out the project site: http://www.windowsazure4e.org/.

    We know that PHP developers use various developments environments – or none J, so that’s why we built the Windows Azure Command-line Tools, which let you easily package and deploy PHP applications to Windows Azure using a simple command-line tool. The September 2010 Update includes more deployment options, like new support for the Windows Azure Web & Worker roles.

    So you might think that from the PHP developer point of view, you’re covered to write and deploy cloud applications for Windows Azure.” The answer is both yes, and no!
    Yes, because these tools cover most scenarios where developers are building and deploying one application at time. But what if you want to deploy open source PHP SaaS applications on the same Windows Azure service? Or what if you are more of a Web applications administrator, and just want to deploy pre-built applications and simply configure them?

    This is where the Windows Azure Companion comes into the picture.

    A seamless experience when deploying PHP apps to Windows Azure


    IMPORTANT NOTE - July 13, 2011

    The Windows Azure Companion was an experimental tool to provide a simple experience installing and configuring platform-elements (PHP runtime, extensions) and web applications on Windows Azure.  Based the feedback and results Microsoft has decided to stop any further development of the Windows Azure Companion and instead we recommend using the new  tools available at http://azurephp.interoperabilitybridges.com/downloads to deploy applications to Windows Azure


    The Windows Azure Companion – September 2010 CTP– is a new tool that aims to provide a seamless experience when installing and configuring PHP platform-elements (PHP runtime, extensions) and Web applications running on Windows Azure. This early version focuses on PHP, but it may be extended for deploying any open source component or application that runs on Windows Azure. Read below for more details.

    It is designed for developers and Web application administrators who want to more efficiently “manage” the deployment, configuration and execution of their PHP platform-elements and applications.

    The Windows Azure Companion can be seen as an installation engine that is running on your Windows Azure service. It is fully customizable through a feed which describes what components to install. Getting started is an easy three step process:

    1. Download the Windows Azure Companion package & set your custom feed
    2. Deploy Windows Azure Companion package to your Windows Azure account
    3. Using the Windows Azure Companion and your custom feed, deploy the PHP runtime, frameworks, and applications that you want


    So, how did we build the Windows Azure Companion? The Windows Azure Companion itself is a Web application built in ASP.NET/C#. Why C#? Why not PHP? The answer is simple: the application is doing some low-level work with the Windows Azure infrastructure. In particular, it spins the Windows Azure Hosted Web Core Worker Role in which the PHP engine and applications are started and then executed. Doing these low level tasks in PHP would be much more difficult, so we chose C# instead. The source and the installable package (.cspkg & config files) are available on the MSDN Code Gallery: http://code.msdn.microsoft.com/azurecompanion. And from a PHP developer perspective, all you need is the installable package, and you don’t have to worry about the rest unless you are interested!

    All you need is in the feed

    The Windows Azure Companion Web application uses an ATOM feed as the data-source to display the platform-elements and Web applications that are available for installation. The feed provides detailed information about the platform element or application, such as production version, download location, and associated dependencies. The feed must be hosted on an Internet accessible location that is available to the Windows Azure Companion Web application. The feed conforms to the standard ATOM schema with one or more product entries as shown below:

    <?xml version="1.0" encoding="utf-8"?>
    <feed xmlns="http://www.w3.org/2005/Atom">
    <title>Windows Azure platform Companion Applications Feed</title>
    <link href="http://a_server_on_the_internet.com/feed.xml" />
    <name>Interoperability @ Microsoft</name>
    <id>http://a_server_on_the_internet.com/feed.xml </id>
    <installCategory>Frameworks and SDKs</installCategory>
    <!-- UI elements shown in Windows Azure platform Companion -->
    <title>OData SDK for PHP</title>
    <summary>OData SDK for PHP</summary>
    <!-- Installation Information -->
    <installerFile url="http://download.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=odataphp&amp;DownloadId=111099&amp;FileTime=129145681693270000&amp;Build=17027" version="2.0">
    <installationProperty name="downloadFileName" value="OData_PHP_SDK.zip" />
    <installationProperty name="applicationPath" value="framework" />
    <!-- Product dependencies -->

    If you want to see a sample feed in action and the process for building it, I invite you to check Maarten Balliauw’s blog: Introducing Windows Azure Companion Cloud for the masses. He has assembled a custom feed with interesting options to play with. And of course, the goal is to let you design the feed that contains the options and applications you need.

    We are on a journey

    Like I said earlier, we’ve come a long way in the past 18 months, understanding how to best enable various technologies on Windows Azure. We’re on a journey and there’s a lot more to accomplish. But I have to say that I’m very excited by the work we’re doing, and equally eager to hear your feedback.

    Vijay Rajagopalan, Principal Architect

  • Interoperability @ Microsoft

    HTML5 : Microsoft Participation in the W3C HTML Working Group


    W3chtml5wg I’m Paul Cotton, Group Manager, Web Services Standards and Partners, in the Interoperability Strategy Team. I’m in charge of a team that works on web services standards and interoperability.  My team is involved in W3C, OASIS, WS-I, Apache and ISO/IEC JTC1 and cooperates with the vendor and user communities to advance interoperability of the WS-* specifications.  In addition, I am co-chair of the W3C HTML Working Group that is developing the next version of HTML.

    The Web has grown significantly over the last decade based largely on the interoperability of the W3C HTML4 Recommendation.  HTML forms the backbone of interoperability on the Web and the specification is being evolved at the W3C as part of the HTML5 effort.  Along with many other companies and individuals, Microsoft is contributing significant resources and expertise to work with the W3C to ensure the success of the HTML5 efforts (see this blog post [http://blogs.msdn.com/ie/archive/2010/03/09/Working-with-the-HTML5-Community.aspx]). 

    I had a chance to sit down last week with Philippe Le Hégaret who’s a staff member of the W3C, to discuss Microsoft’s view on HTML5 interoperability and our work in the HTML WG. Please read the minutes of  the interview on the W3C blog: “Interview: Paul Cotton on Microsoft Participation in the W3C HTML Working Group

    Paul Cotton

  • Interoperability @ Microsoft

    Creating PHP CRUD Apps with SQL Server on your Server or in the Azure Cloud


    Microsoft SQL Server 2008 Express Do you know PHP and have data in a Microsoft SQL Server database? Well we have an application wizard that will make your lives a little easier. The project, open source and hosted on CodePlex, will help you build a simple CRUD (Create, Read, Update, Delete) application that works against Microsoft SQL Server, SQL Azure and Windows Azure Storage. The application is installable on Windows and supports data navigation, paging, sorting and UI customization using simple CSS.  crudwizard_arch_sm

    Here’s what you will need, a working PHP web server, a connection to the internet, a SQL Server 2005 or higher. You can also use the free version. “SQL Server Express” that is available for download and installable as part of the Web Platform Installer. As an added bonus you can also work against your Windows Azure Storage or SQL Azure database.   Windows Azure tokens are available by registering for Windows Azure Services and redeemable at http://windows.azure.com

    To begin download the wizard, open the.zip and install on your PC. There is a handy deployment guide that helps you get started. You will simply need to set up a database account with a username and password. Install the SQL Server 2005 Native Client DLL and the  SQL 2005 PHP Driver 1.1 which will give you a .dll for the appropriate version on PHP you are running (5.2 or 5.3, thread-safe and non). Copy the appropriate .dll to your PHP extension directory (e.g. C:\php\ext) and add a reference to your PHP.ini file (e.g. C:\php\php.ini) to call the .dll, (e.g. extension=php_sqlsrv_xx_yyy.dll)

    You will then want to use “SQL Server Management Studio” (ssms.exe) from the Start Menu (All Programs or Programs) or from C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE to create a new user and a database. The tutorials listed below are a quick way to get started

    Following the steps above I created a login to my SQL Server, Created a database “sqlcruddemo” and a new table called “customer” and associated a database user “demo” to it.  In the table I then created 3 columns. ID, set as a non-null integer and a “Primary Key” plus Firstname and Lastname both as variable character strings of length 50.  This is how it looks like from the design tool.


    Once you have the database set up you can run the file PhpSiteGenerator.exe either from the “PHP SQL Crud Application Builder” entry in your Start menu or from the Installation folder (typically C:\Program Files\PHP SQL Crud Application Builder). The splash page shows up as below. You will want to enter in the name of the database user you created (e.g. demo) and it’s password. Then click the button “Find Database” where it will bring down entries for the “Database” and “Table” drop down menus. I have selected the entries I created before (database “sqlcruddemo” and table “customer”) and the checkboxes for the columns (ID, Firstname, Lastname)

    Hit the “Next” button to get to the second screen where you can set CSS styles for the table of the CRUD application. I decided to change the “.tblHeaderCell” tag, which sets the table headers, with a blue background-color and bold fonts. The CSS in the generated file, “style.css” and the form looks like  … PHPGenerator1



    Hitting “Generate Site” will yield the result in the following form, “index.php”, which I have populated entries using the “Create New” button which calls the “create.php” file also displayed in the browser belowCRUD












    You can use these generated helper php files and forms as the building blocks for the database driven application that you would like to write against SQL Server. As you can see most of the PHP code you need to manipulate data from SQL Server has been taken care for you.

    Take a look!

    Jas Sandhu
    Technical Evangelist, Interop Vendor Alliance Manager, Interoperability Strategy Team
    Twitter@jassand, FriendFeed@jassand

  • Interoperability @ Microsoft

    Voice your opinion on .NET interoperability with Windows Communication Foundation (WCF)



    Who says Microsoft doesn’t listen? Here is a chance to voice your opinion and make .NET more interoperable and easier to use when dealing with other languages/runtime through Web Services (WS-*).


    The .NET Windows Communication Foundation (WCF) team is planning its next set of features and wants to hear from developer’s experiences. For that purpose, they have provided a quick, to-the-point survey for you to provide a developer to developer feedback.

    Achieving interoperability between platforms should be easy and straightforward, right? We know it’s not always the case. So, go ahead provide your feedback today on what is keeping you awake at night and what would make you happy.  We are early in the product cycle, but need your feedback by July 15th to truly make the impact we all want.

    The survey is right here: http://mymfe.microsoft.com/WCF/Feedback.aspx?formID=283

    If you have any questions on the survey, please contact Abu Obeida Bakhach, Interoperability Program Manager at abu.obeida@microsoft.com


  • Interoperability @ Microsoft

    phpBB: Available for the Microsoft Web Platform


    From the Microsoft Web Platform Team Blog:

    “ Today Microsoft is announcing that the Windows Web Application Gallery and Web Platform Installer (Web PI) now supports the download of the new phpBB release, which supports Windows, IIS and SQL Server. logo_phpbb_thumb_1

    Version 3.0.7-PL1 of phpBB takes advantage of a number of features for PHP applications on the Microsoft Web Platform with Windows, IIS and SQL Server including:

    • SQL Server Driver for PHP 1.1, provides key interoperability for PHP applications to use SQL Server for data storage. Released under the OSI approved MS-PL license and available on CodePlex.
    • WinCache Extension for PHP 1.0.1, provides increased performance for PHP applications on Windows and IIS. Released under the BSD license, is available from the PHP Extension Community Library (PECL) website. “

    More on the Microsoft Web Platform Team Blog: Announcing phpBB: Available for the Microsoft Web Platform.

  • Interoperability @ Microsoft

    July CTP of PHP SDK for Windows Azure Released and support in Zend Framework


    [Update: Maarten Balliauw has posted some samples. You'll see how easy it is to use the SDK:  PHP SDK for Windows Azure - Milestone 2 release

    I am pleased to communicate the availability of July Technology Preview of PHP SDK for Windows Azure.  As part of Microsoft’s continued commitment to interoperability, we announced the open source PHP SDK for Windows Azure in May in collaboration with our development partner RealDolmen.

    There are two key activities that I am excited about in this release:

    • Submission of PHP SDK for Windows Azure to Zend Framework
    • Feature completion of Windows Azure Table Storage APIs in PHP

    We received good feedback in the past couple of months and have addressed a few defects in the blob storage as well.

    Submission of PHP SDK for Windows Azure to Zend Framework

    Microsoft & RealDolmen have decided to make PHP SDK for Windows Azure available as part of Zend Framework. By extending support for Windows Azure through Zend Framework, millions of PHP developers that use Zend Framework can build web applications seamlessly targeting Windows Azure. Realdolmen has formally submitted the July CTP repository to Zend Framework’s laboratories to begin the review and approval process. Upon approval, Zend Framework will publish a technology preview package of the SDK on the Zend Framework website.  We will continue to work closely with Zend to ensure consistency across the standalone and Zend Framework versions of the PHP SDK for Windows Azure.

    I worked with Zend when we demonstrated information card interoperability on PHP based web applications through Zend Information card (read this to see it in action) and continue to enjoy the great working experience.  I look forward to the release for PHP Support for Windows Azure in Zend Framework.

    Support for Table Storage.

    The Windows Azure Table service offers structured storage in the form of tables which contain a set of Entities, which contains a set of named Properties. A Few highlights of Windows Azure Table are

    • Compile time type checking when using the ADO .NET Data Services client library.
    • A rich set of data types for property values.
    • Support for unlimited number of tables and entities, with no limit on the table size.
    • Strong consistency for single entity transactions.
    • Optimistic concurrency for updates and deletes.


    The Table service exposes a REST API.  The PHP classes for the Table service provide developers with an abstraction upon the REST APIs for CRUD and Query operations. Some of the features supported in this milestone are:

    • SharedKey Lite authentication (for local table storage service from SDK)
    • Query, Create, Delete & Update Tables - Enumerates the tables in a storage account.
    • Query, Create, Delete & Update Entities - Queries data in a table.
    • Batch Transactions

    Detailed usage scenarios of Table Storage can be found here

    Please note that you need to have the May CTP of Windows Azure to take advantage of the features in this release of PHP SDK for Windows Azure.

    - Vijay Rajagopalan

  • Interoperability @ Microsoft

    Interoperability Award Winners at Imagine Cup 2009


    Imagine Cup Interop award Last week under gaze of the Great Pyramids on the Giza Plateau, the only remaining monument of the Seven Wonders of the Ancient  World, I was fortunate to participate in the final ceremony of the Imagine Cup 2009 competition, called the World Festival and the announcement of our Interoperability Award winners. Before I go there I wanted to provide a brief recap of the proceedings of the event.

    After a long trip for many of the competitors, judges and the Microsoft staff. My role was captain and finals judge for the Interoperability award and that ALB_1474_webstarted with a briefing for all participants, the judges and the competitors plus the ability to tour the competition rooms. After the housekeeping was done with, we all filed for a tour and our opening ceremony at the Citadel in Cairo, a major landmark there housing a beautiful and grand Mosque, a fort and museums. We had a great ceremony in the courtyard with a cool breeze that cut the heat and a beautiful sunset.

    We then started the proceedings with a bunch of keynotes and the highlight of the evening was definitely the presentation from Ray Ozzie, our chief software architect at Microsoft who pepped up the students CIMG0229about how they can shape the future through technology, innovation, and creativity with his own personal anecdotes of starting in the world of software. Joe Wilson, senior director of Academic Initiatives at Microsoft, then inspired and gave some advice to our students on the competition, and with all our keynoters joining him onstage started the competition off with a grand laser light display that made our historical venue show off grandly.

    I had a spectacular set of judges for our award, the judges pictured here with me, from left Tiago Cardoso from Institute for the Development of New Technologies (UniNova) in Portugal, Rob Miles from University of Hull in the UK and Dennis Anderson from Pace University in New York. They all have great credentials, had an eye for interoperability and were very fair in scoring our teams. We all seemed to be very in sync on how we gave out points. They’re also a fun bunch of guys :)  The criteria we used and the points percentages was 10% for Architectural Design, 20% for Innovation, 30% for Interoperability, 20% for Coolness and 20% for Presentation.

    The final awards were presented at the World Festival by Jon Perera, General Manager for Education Strategy and Audience Marketing, All of these teams have spent numerous hours perfecting their solutions and highlight a disparate set of technologies and multiple platforms to showcase Interoperability.

    … and the winners are …CIMG0311

    Third Place, winning US$3,000, went to Team ECRAM from Jordan, with their Elder & Children Remote Mobile Application. Their application allowed for a mobile phone to  be remotely control by another client, typically another mobile, especially in the use of elder or child care. It was particularly interesting that it came from a real world problem that one of the team members was facing with his grandmother who wanted to place calls and speak to family members but had difficulties using the phone and required the help of her grandchildren. Being a busy student he was not always available and so thought of solving the problem using technology and software. The system utilized multiple different systems including mobile carriers and web services to solve the problem. Here’s a picture of the team speaking to S. Somasegar, senior vice president of Developer Division at Microsoft

    CIMG0308  Our Second Place, winning US$4,000 went to Team FteamS from Poland,  with their Universal Solution for Remote Education, Eduko. These guys were innovative and cool in the use of disparate technologies on multiple platforms and devices to create a system that enabled teachers and students to interact using a virtual whiteboard system that was enabled on the desktop and even projected on any surface. What was particularly interesting was the use of a WII controller as a camera for their custom IR marker. It served as a very captivating presentation tool. The team also were very smart in the use of mobile devices sending things like text and coursework via SMS and MMS. Very little payload for a lot of information, did you know a single MMS message can send 15 pages of documentation? The guys also put together a very well rehearsed presentation with every team member participating and that impressed our judges too.

    Our First Place winner, winning the US$8,000 went to Team Proativa from Brazil, with their Virtualized and Social Education system ProLearning whichCIMG0312 is designed to maximize the experience of distance learning. The use of an immersive virtual reality environment, where students exchange experience and study together the interaction between tutor and pupils dynamic and communal. they utilized social networks to keep students interested in the learning process and engaged continually not just during a lesson. It was a holistic system that facilitated the learning process end to end and that impressed the judges who were all teachers themselves and whom felt they could use it today in their classes. The students had also the capability of using mobile devices to personal and automatically update students on schedules and prompting their network for activities when doing distance learning. It was also novel that they integrated the social networks, mobile devices and voice over IP to get students who were friends or classmates to engage with each other for lessons making the learning experience a team based activity. The main reason that the team won this award however was that they had built a piece of software on the server that brokered different services that didn’t necessarily plug in with each other serving as a technical bridge of sorts. This proved to be the differentiator that help them cinch the award. They had a rousing fanfare by their Brazilian teammates at the finals by being the first prize recipients of the night and helping their country grab the most awards at the competition this year.

    Here are the teams videos entries:

    First place Proativa Team from Brazil

    Get Microsoft Silverlight

    Second place FteamS from Poland

    Get Microsoft Silverlight

    Third place: ECRAM from Jordan

    Get Microsoft Silverlight

    I would like to thank all the competitors who participated in the awards, their mentors, Academic Developer Evangelists, family and friends. Congratulations to our final three winners on behalf of the judges, the Interoperability Strategy team and all of us at Microsoft. I know a lot of work and sweat went into your entries and I want to share how much we all appreciate your contributions! I hope that you all will join me again next year for the Interoperability Award at Imagine Cup 2010. See you in Poland!


    Jas Sandhu
    Senior Technical Evangelist, Interoperability Strategy Team
    Twitter@jassand, FriendFeed@jassand

  • Interoperability @ Microsoft

    Interoperability at MIX09



    Well, it came as no surprise that interoperability was a big part of the discussion at MIX09… at the keynote, in the breakouts, on the blogs, on Twitter, etc. Of course interoperability is a key consideration any time that you talk about cloud computing. Let’s be clear: Interoperability between the services platforms, the identity providers, the mashable services, the social networks and so on is now an integral part of the landscape.

    MIX is a very special annual conference where Microsoft attempts to bridge the worlds of technology, design, entrepreneurship and business. Zooming into technology, we could draw much more interrelated circles, but my point is not to give a holistic view. Instead, I’ve highlighted a few sessions for you that are going deep into interoperability scenarios.


    I’ll start with Vijay Rajagopalan’s session
    Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!” where he presented:

    • Microsoft’s approach to Interoperability: 6-7 minutes that really helps to explain how and why Microsoft is going this direction!
    • Silverlight interoperability with the Eclipse Tools for Silverlight project, with the new Mac support (see my post Eclipse Tools for Silverlight (Eclipse4SL): now for Mac developers) and a sample integration of Silverlight and PHP
    • Azure Services Platform Interoperability and .NET Services, where Vijay demos the Java SDK for .NET Services (Jdotnetservices) and the Ruby SDK for .NET services (check also John Shewchuk’s session below for more on .NET Services/Interoperability)
      • Slide 38 at approx 31':
    • A prototype of PHP Tooling from Eclipse for Windows Azure, enabling developers to browse the Windows Azure Storage, and publish a PHP application that would leverage the FastCGI support in Azure (see Using 3rd Party Programming Languages via FastCGI).
      • The Azure Storage Explorer in Eclipse at approx 46' 

    Speaking about Azure, from the moment we kicked off our cloud computing effort, openness and interoperability stood at the forefront, we spelled it out clearly with Azure (see http://www.microsoft.com/azure screenshot below), and we mean it as this post illustrates.



    The next session I’d recommend is Shaun Hirschman & Michael Joffe’s
    Running PHP on Microsoft Servers and Services: Windows + PHP, explore the possible

    As Michael states in the opening, everybody is aware that PHP runs on Windows, but you don’t necessarily know all the legwork the Microsoft has been doing to enhance PHP on Windows, as well as all the interoperability touch points between PHP and Microsoft’s technologies. So in this session you’ll get the big picture. In particular don’t miss these demos:

    • Web Platform Installer: getting all you need to build your web applications in one simple and customizable installer, including popular web applications like WordPress.
    • Live Services + PHP: extend PHP applications (WordPress in the demo) by adding your Live Contacts and syncing blog content with Live Mesh

    clip_image014[4]Finally, I invite you to check out John Shewchuk’s session A Lap around Microsoft .NET Services, where he is doing “something a little wacky” as he said!

    John demonstrates interoperability scenarios with .NET Services (which is part of the overall Azure Services platform) combined with different languages and platforms. John’s demos show how to leverage the Access Control Service & the Service Bus, with an application built using Python+JQuery running on the GoogleApp engine and using Yahoo as the OpenId provider. These are great scenarios involving notifications and federated identity across firewalls boundaries and heterogeneous systems.


    Further down the talk, I also really liked the Facebook (PHP)/CinemaMIX (ASP.NET) application allowing users to invite friends to share (view/edit) your Netflix video queue. That’s cloud interoperability in action

    This is only a short selection of the sessions tackling Interoperability. There are many other interesting sessions to discover, so get lost at http://videos.visitmix.com/MIX09 and have fun!

    Jean-Christophe Cimetiere  - Sr. Technical Evangelist

  • Interoperability @ Microsoft

    Open XML /ODF Translator: document interoperability scenarios


    Service Pack 2 for the 2007 Microsoft Office System that has just been released includes the ability to open, edit and save documents in version 1.1 of the Open Document Format. The Open XML / ODF translator on Sourceforge will continue to be the solution for Office 2003 and Office XP users who wish to Open & Save ODF documents.

    The open source Translator project was started in July 2006, when Microsoft worked with partners (Clever Age, Dialogika & Sonata) to demonstrate pragmatic interoperability between Microsoft Office and Open Office documents. Today, after multiple releases of the project with more than 2.5 millions downloads, the translator is a mature project and version 3.0 was released in March 2009 (read the blog post).

    Version 3.0 focuses on improving the overall fidelity of the translation between Open XML and ODF as well as the performance. The previous version (2.5) of the Translator introduced ODF compatible  “Templates” intended to provide greater visual fidelity during the translation process:


    Here’s a demo of the Translator created by my colleague Jean-Christophe Cimetiere with version 2.5, but from the end-user perspective version 3.0 is identical:

    Open XML-ODF Translator Demo

    From a technical perspective, the translator consists of a set of XSL transformations between the two XML formats (Open XML and ODF), along with some pre- and post-processing to manage the packaging (zip / unzip), and some advanced processing (complex transformations). The following diagram is a high level architecture of the Translator:


    The translation engine at the core of the Translator may be used independently and hosted by a back-office server application or incorporated into hosted services or batch processing. In the latter case, Translator includes a command line interface.

    As an open source project, the Translator could be a great foundation for engineering work around document interoperability. ISVs can use the code as the basis for additional translators and programs and create a wide range of interoperability solutions that bridge Open XML and ODF. Novell has incorporated the translator into its implementation of OpenOffice for SUSE Linux, and others have taken the translator and integrated it into the Ubuntu Linux Open Office version.

    The Open XML / ODF Translator project is hosted on Sourceforge, where you can get the installers (7 languages are supported) as well the source code: http://odf-converter.sourceforge.net/

    Vijay Rajagopalan, Principal Architect, Microsoft Corp.

  • Interoperability @ Microsoft

    Viewing public government data with Windows Azure and PHP: a cloud interoperability scenario using REST



    This week Microsoft is participating in the first Gov 2.0 Summit produced by O'Reilly Media, Inc. and TechWeb in Washington D.C., to explore how technology can enable transparency, collaboration and efficiency in government. Today, we're pleased to present a cloud interoperability scenario which takes advantage of the recently announced Toolkit for PHP with ADO.NET Data Services to view public government data with Windows Azure and PHP.

    As you may recall, few weeks ago, Microsoft announced the Toolkit for PHP with ADO.NET Data Services, a new bridge enabling PHP developers to connect to .NET using a RESTful architecture. Today, we've published a cloud interoperability scenario where a Windows Azure application exposes data in a standard way (XML / Atom) and how you can simply “consume” this data from a PHP web application. This scenario takes advantage of the Open Government Data Initiative (OGDI), another piece of Microsoft's Open Government effort, built on the foundation of transparency, choice and interoperability.

    A few words about OGDI

    The Open Government Data Initiative (OGDI) is a project launched in May by our colleagues from the Microsoft Public Sector Developer Platform Evangelism team

    In a nutshell, Open Government Data Initiative (OGDI) is a cloud-based collection of software assets that enables publicly available government data to be easily accessible. Using open standards and application programming interfaces (API), developers and government agencies can retrieve the data programmatically for use in new and innovative online applications, or mashups.

    Data and Platform Interoperability scenario in the cloud

    Publicly available government data sets have been loaded into Windows Azure Storage, and the OGDI team built a data service that exposes the data through REST web services, returning data by default in the Atom Publishing Protocol format. The OGDI application uses ADO.NET Data Services to expose the data. On the diagram below you see the list of available data sets: http://ogdi.cloudapp.net/v1/dc.

    This list is then accessed by the data browser web application built in PHP. To build the PHP applications the Toolkit for PHP with ADO.NET Data Services was used by simply generating the PHP proxy classes that would match the data sets exposed through REST at this URI: http://ogdi.cloudapp.net/v1/dc.


    Trying out the sample application

    The PHP Data browser sample application is deployed on Windows Azure. Although it is not required and it could be deployed on any PHP compatible hosting environment, this sample application showcases a PHP application running on Azure. You can view or download the source of this sample from the demo site: http://ogdiphpsample.cloudapp.net/

    The OGDI Service demonstrates some of the possibilities of the Azure platform and you can try the OGDI interactive SDK http://ogdisdk.cloudapp.net to understand how it works, as it features a similar data browser developed in .NET.

    Moving forward

    This sample application illustrates how you can simply create applications leveraging data and platform interoperability (PHP & .NET). The Toolkit for PHP with ADO.NET Data Services makes it easier for PHP developers to interoperate with .NET, including Azure which supports multiple internet protocols, including HTTP, REST, SOAP, and XML.  This scenario is just one among many we are working on using RESTful architectures.
    Stay tuned, more to come soon!

    Finally, here’s a recap of related resources:

    For more information on Microsoft's Open Government efforts and participation at the Government 2.0 Summit, check out: FutureFed, the voice of Microsoft's Federal division.

    Jean-Christophe Cimetiere - Sr. Technical Evangelist

  • Interoperability @ Microsoft

    SAML 2.0 interoperability testing: passed


    passed-SAML20-ADFS Active Directory Federation Services (AD FS) 2.0, formerly known by codename “Geneva” Server, passed SAML 2.0 interoperability testing. You can read more on the Forefront team blog in today’s post: MSFT Identity and Access news: Forefront Identity Manager RC1 and ADFS 2.0 SAML interoperability

    Additional readings:


    Jean-Christophe Cimetiere - Sr. Technical Evangelist

  • Interoperability @ Microsoft

    MS Open Tech releases Kinect Common Bridge, a simple open source way for infusing the magic of Kinect in creative development



    Want to control your 3D model animation with your body, Minority Report style? We’ve got you covered. Today, Microsoft Open Technologies released the open source project Kinect Common Bridge for Kinect for Windows.

    To learn more about this release and access the project on GitHub, visit out post on our new blog: http://aka.ms/kinectcommonbridgeblog

  • Interoperability @ Microsoft

    Hortonworks HDP -- Open Source Apache Hadoop Distribution is Enterprise-ready


    Generally Available on Linux, Windows Server and Windows Azure.

    From: Gianugo Rabellino, Senior Director of Open Source Communities, Microsoft Open Technologies, Inc.

    Great news! Hortonworks’ HDP for Windows is now generally available on Windows and Linux.

    Here’s what the Microsoft SQL Server team had to say about the GA release (The Beta was announced and released in March):

    “HDP offers customers a 100 percent Open Source Apache Hadoop distribution that is Enterprise-ready and interoperable across Linux, Windows Server and Windows Azure. For more details visit the Hortonworks website.”

    And here’s what Hortonworks had to say about the new release:

    “Built and packaged by the core architects of Apache Hadoop, Hortonworks Data Platform includes all of the necessary components to refine and explore new data sources, and find new business insights. As an ecosystem-friendly platform, HDP extends existing investments in applications, tools and processes with Hadoop.”

    Note that existing HDP for Windows users in Windows or Linux can migrate easily the Windows Azure-based HDInsight service when they’re ready to take advantage of the performance advantages and low operating costs of Hadoop on Windows Azure.

    We at Microsoft Open Technologies are glad to see this bridge open for customers’ big data needs.

    Congratulations to the Hortonworks and Microsoft teams on a job well done!

  • Interoperability @ Microsoft

    MS Open Tech releases open source Jenkins plugin for using Windows Azure Blob service as a repository


    Continuous integration (CI), where software teams integrate their work continuously into frequent builds in an Agile environment, has been around for a relatively long time. Tools for managing the CI process have been around too, and have been gaining in popularity in the last few years, as the CI process becomes more complicated and the benefits of CI become more obvious. CI tools can be used in conjunction with existing SCM version control tools to manage today’s complex build, test and deployment processes that SCM tools and processes don’t cover completely on their own.

    Jenkins is a popular open source CI tool, with many installations and extensions, as well as strong community commitment. For this reason Microsoft Open Technologies, Inc. has released a Jenkins plugin for using Windows Azure’s Blob Storage service as a repository of build artifacts.

    Using our Jenkins plugin can improve your CI process by using the Windows Azure Storage plugin to manage artifact storage in a Windows Azure Blob. Choosing the Windows Azure Blob service to store your build artifacts ensures that you have all the resources you need each time a build is required, all in a safe and reliable yet centralized location, with configurable access permissions. This takes a load off on-premise network bandwidth and storage, and improves continuous build performance.

    We’ve also open-sourced our plugin to share with the community. Source code for the plugin is available on Github here.

    Setting up a Jenkins Continuous Integration Server on Windows Azure

    The plugin works with any Jenkins CI installation. VM Depot, MS Open Tech’s community-driven repository of Linux Virtual Machines, also has several preconfigured Linux and Jenkins Virtual Machines ready to quickly get Jenkins up and running in a Windows Azure Linux VM. For more information on setting up VM Depot Virtual Machines on Windows Azure, follow this link.

    It’s also easy to set up a custom instance of Jenkins on a customized Windows Azure Virtual Machine. Here are some great resources to get started.

    For source code versioning and repository management, Jenkins on Windows Azure can use the built-in CVS or Subversion instances that are downloaded with Jenkins, or you can connect to any code management repository source that a plugin exists for, including Team Foundation Server (via the Jenkins TFS plugin), or the GitHub plugin.

    Once you have a code repository and a Jenkins instance set up, you’re ready to configure Jenkins for build management and deployment. We’ve created a detailed tutorial here on how to set up and use the plugin.

    Configure Jenkins Projects to manage Build Artifacts

    To install the plugin, go to Manage Jenkins > Manage Plugins, select the Available Plugins tab and select the Windows Azure Storage Plugin from the Artifact Uploaders Category.


    After selecting Install without Restart, you should see a confirmation screen like this one when done:


    Set up your Windows Azure Storage Account Configuration

    After the plugin is installed, the first step you should take is to configure one or more Windows Azure storage accounts for Jenkins to use. You do that using Jenkins’ Configure System page, in the Windows Azure Storage Account Configuration section:


    Configure Projects to use Windows Azure Blob Storage

    After you have configured your storage account(s), you can start adding this new Post-Build action to your jobs: Upload artifacts to Windows Azure Blob Storage:



    Selecting and configuring this option will enable you to work with your artifacts using Azure Blob Storage services, which helps with management and speed of integration. For more information on the configuration options, please refer to our tutorial.

    Next Steps

    We’re excited to be participating in the Jenkins ecosystem to enable build artifacts to be stored in Windows Azure storage. As always, we’re looking for ways to make it easier for developers to interact with Windows Azure services in any way we can, so if you have suggestion on what we can do to improve interoperability between Jenkins and Windows Azure, let us know!

  • Interoperability @ Microsoft

    You’re invited to help us celebrate an unlikely pairing in open source


    We are just days away from reaching a significant milestone for our team and the open source and open standards communities: the first anniversary of Microsoft Open Technologies, Inc. (MS Open Tech) -- a wholly owned subsidiary of Microsoft.

    We can’t think of anyone better to celebrate with than YOU, the members of the open source and open standards community and technology industry who have helped us along on our adventure over the past year.

    We’d like to extend an open (pun intended!) invitation to celebrate with us on April 25, and share your burning questions on the future of the subsidiary, open source at-large and how MS Open Tech can better connect with the developer community to present even more choice and freedom.

    I’ll be proud to share the stage with our amazing MS Open Tech leadership team: Jean Paoli, President; Kamaljit Bath, Engineering team leader; and Paul Cotton, Standards team leader and Co-Chair of the W3C HTML Working Group.

    We will share personal anecdotes about how an unlikely pairing -- Microsoft and open source / open standards – may go down in history as successful as Chocolate & Peanut Butter, Cats & the Internet, and Pirates & Ninjas.

    Come raise a toast to how far we have come as a community, and to the exciting places we’ll be headed in the next 12 months.

    Find your ticket below, and register here http://congratsmsopentech.eventbrite.com.


    Gianugo Rabellino
    Senior Director, Open Source Communities
    Microsoft Open Technologies, Inc.


  • Interoperability @ Microsoft

    MS Open Tech Updates HTML5Labs HTTP/2.0 Prototype Delivering Internet Security in Open Source Encryption Libraries


    Download prototype that provides support in OpenSSL for Application Layer Protocol Negotiation

    Adalberto Foresti
    Principal Program Manager,
    Microsoft Open Technologies, Inc.

    As part of the HTTP/2.0 effort, the industry is collaborating in the IETF Transport Layer Security Working Group (TLS WG) towards a safer and simpler Internet communication security approach. The conversation within the TLS WG on the best way to reinforce Internet communication security continues at a fast pace.

    At Microsoft Open Technologies, Inc. we have been participating in this industry collaboration and are now releasing a refreshed open source HTTP/2.0 prototype on HTML5Labs.com that introduces support in the OpenSSL open source encryption library for ALPN (Application Layer Protocol Negotiation).

    Earlier in February we had published on HTML5Labs an updated version of our HTTP/2.0 prototype that introduced support for ALPN. Shortly thereafter, on Thursday 2/21, Stephan Friedl and Andrei Popov proposed an update to the ALPN spec draft that refines the protocol in a couple of important aspects:

    - “Application Layer Protocol Negotiation Extension” now defines ProtocolNameList and ProtocolName as variable-length arrays, as typically done in TLS. This increases payload size by 2 bytes, but allows the use of the normal TLS parsers.

    - “Protocol Selection” defines a new fatal alert no_application_protocol, to be used with ALPN extension only, instead of using a generic handshake_failure alert. This is done to help distinguish application protocol negotiation issues from other handshake failures.

    As we mentioned, the new prototype on HTML5Labs also leverages OpenSSL on Apache as a backend. We are making the associated patch available as open source to allow a hands-on side by side comparison of TLS with ALPN builds with the alternative based on NPN. This should allow interested developers to verify the benefits of ALPN and its compliance with established TLS design principles that we called out in our earlier prototype.

    As always, we encourage you to try to the code out, and let us know your feedback. Go ahead and download the MS Open Tech HTTP/2.0 prototype using ALPN from HTML5 Labs!


  • Interoperability @ Microsoft

    Microsoft Open Technologies releases Windows Azure support for Solr 4.0


    Microsoft Open Technologies is pleased to share the latest update to the Windows Azure self-deployment option for Apache Solr 4.0.

    Solr 4.0 is the first release to use the shared 4.x branch for Lucene & Solr and includes support for SolrCloud functionality. SolrCloud allows you to scale a single index via replication over multiple Solr instances running multiple SolrCores for massive scaling and redundancy.

    To learn more about Solr 4.0, have a look at this 40 minute video covering Solr 4 Highlights, by Mark Miller of LucidWorks from Apache Lucene Eurocon 2011.

    To download and install Solr on Windows Azure visit our GitHub page to learn more and download the SDK.

    Another alternative for implementing the best of Lucene/Solr on Windows Azure is provided by our partner LucidWorks. LucidWorks Search on Windows Azure delivers a high-performance search solution that enables quick and easy provisioning of Lucene/Solr search functionality without any need to install, manage or operate Lucene/Solr servers, and it supports pre-built connectors for various types of enterprise data, structured data, unstructured data and web sites.

  • Interoperability @ Microsoft

    Ready, set, go download the latest release of the Windows Azure Plugin for Eclipse with Java



    It’s ready…the February 2013 Preview release of the Windows Azure Plugin for Eclipse with Java from our team at Microsoft Open Technologies, Inc.

    You’ve been asking for the ability to deploy JDKs, servers, and user-defined components from external sources instead of including them in the deployment package when deploying to the cloud, and that’s available in this release. There are also a few other minor updates for components, cloud publishing and Windows Azure properties. Have a look at the latest plugin documentation for a complete list of updates.

    Deploy JDKs, Servers and user-defined components from Blob Storage

    You can now deploy JDKs, application servers, and other components from public or private Windows Azure blob storage downloads instead of including them in the deployment package used to deploy to the cloud.

    Having the option of referring to an external object instead including an object in the deployment package gives you flexibility when building your deployment packages. It also means faster deployment times and smaller deployment packages.

    Here’s an example showing inclusion of a JDK. Note the new Deploy from download option:



    Note the other tabs for server and applications – those options let you select a server (Tomcat, for example), or any component that you want to include in the install and setup but that you don’t want to include in the deployment package.

    Getting the Plugin

    Here are complete instructions for downloading and installing the Windows Azure Plugin for Eclipse with Java for the first time, which also works for updates.

    Let us know how the process goes and how you like the new features!

  • Interoperability @ Microsoft

    Windows Azure Plugin for Eclipse with Java – September 2012 Preview


    The Windows Azure Plugin for Eclipse with Java (by Microsoft Open Technologies) – September 2012 Preview has been released. This service update includes a number of additional bug fixes since the August 2012 Preview, as well as some feedback-driven usability enhancements in existing features:

    • Support for Windows 8 and Windows 2012 Server as the development OS, resolving issues previously preventing the plugin from working properly on those operating systems
    • Improved support for specifying endpoint port ranges
    • Bug fixes related to file paths containing spaces
    • Role context menu improvements for faster access to role-specific configuration settings
    • Minor refinements in the “Publish to cloud” wizard and a number of additional bug fixes

    You can learn more about the plugin on the Windows Azure Dev Center.

    To learn how to install the plugin, go here.

    Martin Sawicki
    Principal Program Manager
    Microsoft Open Technologies, Inc.
    A subsidiary of Microsoft Corporation

  • Interoperability @ Microsoft

    Windows Azure Storage plugin for WordPress


    The Windows Azure Storage Plugin for WordPress was updated today to use the new Windows Azure SDK for PHP. The plugin comes with a comprehensive user guide, but for a quick overview of what it does and how to get started, see Brian Swan’s blog post. Cory Fowler also has some good information on how to contribute to the plugin, which is an MS Open Tech open-source project hosted on the SVN repo of the WordPress Plugin Directory.

    This plugin allows you to use Windows Azure Storage Service to host the media files for a WordPress blog. I use WordPress on my personal blog where I write mostly about photography and sled dogs, so I installed the plugin today to check it out. The installation is quick and simple (like all WordPress plugins, you just need to copy the files into a folder under your wp-content/plugins folder), and the only setup required is to point it at a storage account in your Windows Azure subscription. Brian’s post has all the details.

    The plugin uses the BlobRestProxy class exposed by the PHP SDK to store your media files in Windows Azure blob storage:

    Once the plugin is installed, you don’t need to think about it – it does everything behind the scenes, while you stay focused on the content you’re creating. If you’re writing a blog post in the WordPress web interface, you’ll see a new button for Windows Azure Storage, which you can use to upload and insert images into your post:

    Brian’s post covers the details of how to upload media files through the plugin’s UI under the new button.

    If you click on the Add Media icon (clip_image001) instead, you can add images from the Media Library, which is also stored in your Windows Azure storage account under the default container (which you can select when configuring the plugin).

    If you use Windows Live Writer (as I do), you don’t need to do anything special at all to take advantage of the plugin. When you publish from Live Writer the media files will automatically be uploaded to the default container of your storage account, and the links within your post will point to the blobs in that container as appropriate.

    To the right is a blog post I created that takes advantage of the plugin. I just posted it from Live Writer as I usually do, and the images are stored in the wordpressmedia container of my dmahughwordpress storage account, with URLs like this one:


    Check it out, and let us know if you have any questions. If you don’t have an Azure subscription, you can sign up for a free trial here.

  • Interoperability @ Microsoft

    OData submitted to OASIS for standardization


    Citrix, IBM, Microsoft, Progress Software, SAP AG, and WSO2 have submitted a proposal to OASIS to begin the formal standardization process for OData. You can find all the details here, and OData architect Pablo Castro also provides some context for this announcement over on the OData.org blog. It’s an exciting time for the OData community!

    OData is a REST-based web protocol for querying and updating data, and it’s built on standardized technologies such as HTTP, Atom/XML, and JSON. If you’re not already familiar with OData, the OData.org web site is the best place to learn more.

    Many organizations are already working with OData, and it has proven to be a useful and flexible technology for enabling interoperability between disparate data sources, applications, services, and clients. Chris Woodruff has a blog post this week that lists many OData implementations, and as he explained in a post last week, “By having data that is easy to consume and understand organizations can allow their customers and partners (via the developers that build the solutions using one or more of the available OData libraries) to leverage the value of curated data that the organization owns.” Many organizations are already pursuing that vision – as Ralf Handl of SAP AG told us at a recent OData meetup, “my job is relatively simple: I want to put OData into all of our products.”

    We support OData in many Microsoft products and services, and the list is growing longer all the time. This includes OData consumers such as Microsoft Excel (via the free PowerPivot add-in) as well as OData producers such as Microsoft SharePoint, Microsoft SQL Server Reporting Services, and Microsoft Dynamics CRM. Windows Server supports OData, and Windows Azure provides OData support in many areas, including Windows Azure Storage Table Service, Windows Azure Marketplace, and ACS Management Service. We’re also making many Microsoft data sources available in OData format. For example:

    • The OData feed from Microsoft Research can be used to query against publications, projects, events, and other entities.
    • The Windows Azure Marketplace DataMarket offers OData feeds for Business, Government, Health Science, Retail, and many other categories.

     A variety of OSS technologies can benefit from OData support, and our team has delivered tools to make it easy for OSS developers to expose data as OData from a variety of platforms. Earlier this year we announced Open Source OData Tools for MySQL and PHP Developers, including the OData Producer Library for PHP and the OData Connector for MySQL. We’re continuing to work closely with various OSS communities on OData support, and we’ll be releasing information soon on new ways to provide OData feeds from popular OSS frameworks and applications.

    OData’s query syntax is straightforward from a developer’s perspective. For example, here’s a query that you can use in any browser to return the count of the number of products in the sample Northwind database OData feed on OData.org:


    In a typical application, that query would be generated behind the scenes, and the returned result would be rendered in a nicely formatted manner as appropriate for the particular application.

    To enable those sorts of scenarios, developers need OData support for the languages, framework, and tools that they’re already using. Many developer tools already offer OData support. Here are a few examples:

    • Microsoft Visual Studio offers comprehensive OData support through WCF Data Services.
    • OData support is provided by OSS SDKs for iPhone, Android, and other frameworks.
    • Telerik has developed a variety of developer tools and services for creating OData consumers and producers.
    • ComponentOne offers OData support in their BarChart and LineChart controls.
    • Validation is a critical step in creating robust OData services, and the Outercurve Foundation provides an OData Service Validation Tool that can be used to test implementations against the OData spec.
    • The OData4j project is an open-source toolkit to help Java developers add OData support to their applications and services.

    As you can see, the OData ecosystem is growing, and awareness of OData is growing with it. At the OData meetup earlier this year, we heard from many people who are finding innovative ways to use OData in their organizations to improve customer service, enable new scenarios, and increase efficiency. Anant Jhingran of APIgee stated in his presentation at the meetup that “if data isn’t your core business, then you should give it away.” It was a provocative statement, and for those who share that philosophy, OData is a great tool for making it easier to share data.

    If you’re interested in implementing OData or contributing to the OData standard, now’s the time to get involved. You can work with the odata.org community to help drive awareness and share implementation experiences, or join the OASIS OData technical committee (OData TC) to contribute to the standard.  The OData TC will be a vibrant and diverse group of people – just like the community who got us here today – working together to open up data sources in a standardized way. As Pablo stated in his blog post, the main value of OData is not any particular design choice, but the fact that enough people agree to the same pattern, thus removing friction from sharing data across independent producers and consumers. The first TC call will be in late July, so there’s still plenty of time to get involved if you’d like to be part of the team that will be helping OData evolve.

    Congratulations to everyone who has worked so hard to get OData to this important step on the journey to standardization! We’re looking forward to working with the community to develop OData into a formal standard through OASIS.

    Doug Mahugh
    Senior Technical Evangelist
    Microsoft Open Technologies, Inc.
    A subsidiary of Microsoft Corporation

  • Interoperability @ Microsoft

    Microsoft at Node Summit


    We are excited to be attending and participating at Node Summit in San Francisco this week.

    Among those Microsoft staffers on site are Server & Tools Corporate Vice President Scott Guthrie - who participated on a panel about Platform as a Service this morning and also gave a keynote address - and Gianugo Rabellino, the Senior Director for Open Source Communities, who was on a panel discussing the importance of cross-platform.

    You can read more about Scott's keynote on the Windows Azure blog here.

    As you may know, in December Microsoft announced that it was adding support for Node.js to the Windows Azure platform, which allows developers to easily take advantage of the powerful capabilities of Windows Azure with simple tools and a new open source SDK.

    As this work continues inside of Microsoft as well as with the Node.js community and our partner ecosystem, new and exciting capabilities are coming available allowing Node.js developers to have great experiences on the Windows platform.

    Today, during his keynote, Scott Guthrie demonstrated how easy it is to get up and running with Node.js on Windows and Windows Azure, while our partners at Cloud9 showcased new tooling experiences that provide even greater flexibility to Node.js for developers who want to build for Windows Azure.

    Microsoft has been closely partnering with Joyent for some time now to port Node.js to Windows. We have built an IO abstraction library with them that can be used to make the code run on both Linux and Windows.

    We also recently released the Windows Azure SDK for Node.js as open source, available on Github. These libraries are the perfect complement to our recently announced contributions to Node.js and provide a better Node.js experience on Windows Azure. The Windows Azure Developer Center provides documentation, tutorial, samples and how-to guides to get started with Node.js on Windows Azure.

    The Joyent team also recently updated the Node Package Manager for Windows (NPM) code to allow use of NPM on Windows. NPM is an essential tool for Node.js developers so now having support for it on Windows we have a better development experience on Windows.

    We are also working with the Joyent team on improving the development experience by leveraging the power of Microsoft Development tools and documentation that will make easier for developers to use Node.js APIs.

    And, relatedly, we have also been working closely with 10Gen and the MongoDB community in the past few months, and MongoDB already runs on Windows Azure. If you’re using the popular combination of Node.js and MongoDB, a simple straightforward install process will get you started on Windows Azure. You can learn more here.

    Our interest in, and support for Node.js is just one of the ways in which Windows Azure is continuing on its roadmap of embracing Open Source Software tools developers know and love, by working collaboratively with the open source community to build together a better cloud that supports all developers and their need for interoperable solutions based on developer choice.

    As Microsoft continues to provide incremental improvements to Windows Azure, we remain committed to working with developer communities.

    We also clearly understand that there are many different technologies that developers may want to use to build applications in the cloud: they want to use the tools that best fit their experience, skills, and application requirements, and our goal is to enable that choice.

    All of this delivers on our ongoing commitment to provide an experience where developers can build applications on Windows Azure using the languages and frameworks they already know, enable greater customer flexibility for managing and scaling databases, and making it easier for customers to get started and use cloud computing on their terms with Windows Azure.

  • Interoperability @ Microsoft

    Solr and LucidWorks: enterprise search for Windows Azure


    Last week’s Windows Azure release delivered a host of new services for developers, ranging from hybrid cloud capabilities and Linux virtual machine support to OSS technologies delivered as a service from many vendors. Gianugo Rabellino covered the high-level view of all the exciting new offerings, and in this post I’d like to take a closer look at a service that’s likely to become very popular: LucidWorks Cloud for Windows Azure.

    Lucid Imagination, the leading experts in Lucene/Solr technology, has packaged their LucidWorks Enterprise search service in a cloud-friendly way that requires only four quick and simple steps: select a plan, sign up, log in, and start using it. LucidWorks Enterprise is based on Apache Solr, the open-source search platform from the Apache Lucene project, and it includes a variety of enhancements from the search experts at Lucid that make it easy to use Lucene/Solr functionality while preserving the purity of the open source code base and open APIs. There’s a comprehensive REST API for integrating it into your applications and services, and you get all of the functionality that has made Solr and LucidWorks Enterprise so popular: high-performance indexing for a wide range of data sources, flexible searching and faceting, and user-oriented features like auto-complete, spell-checking, and click scoring.

    As covered on the Lucid Imagination web site, there are four levels of service available for LucidWorks Cloud: Micro, Small, Medium and Large. Pick the level that meets your needs, sign up for the service, and you’re ready to start creating collections and searching your content. You can currently search content in web sites, Windows shares, Microsoft SharePoint sites, FTP, and other sources, with Windows Azure blob storage support coming soon. You can even index and search your data from Hadoop if desired. All index data is stored on Windows Azure drives, which offer high availability and reliability, and the Lucid dev operations engineering team can provide expert support for your LucidWorks Cloud environment.

     If you’re new to Solr, check out the free white paper available for download from the Lucid web site, which covers the basics of LucidWorks Enterprise and shows how to use the indexing and searching functionality through the LucidWorks dashboard. Most developers will want to study the API and integrate search tightly into their own software, but you can learn all of the key concepts through the dashboard UI without writing a single line of code.

    One concept worth pointing out here is that Solr isn’t just about searching web sites and HTTP documents. Sure, it does a great job of that, but it can also index content stored in database tables, local file systems, and other sources. There is also an XML-based Solr document format that you can use for importing data directly into the Solr engine, giving developers flexibility for indexing any type of content from any source.

    This new service from Lucid Imagination is great for those who want to get up and running quickly, but there are also developers who will want to take responsibility for all of the details and host Solr or LucidWorks Enterprise themselves. You can download LucidWorks Enterprise and install it, or you can take advantage of the simple Solr installer for Windows Azure that helps you deploy your own Solr instances as Windows Azure cloud services.

    As you can see, there are many options for getting up and running with Solr and LucidWorks. For a simple overview of how easy it is to start using the new LucidWorks Cloud service, check out this Getting Started video that covers how to create a collection, index a web site, and then search that website using the Lucidworks Cloud dashboard. Lucid continues to evolve and invest in supporting the most popular Solr clients, so there will surely be more good news for Lucene/Solr users going forward.

    In a future blog post, we’ll be covering how to use LucidWorks Cloud with popular content management systems such as WordPress and Drupal.

  • Interoperability @ Microsoft

    MS Open Tech is hiring!


    Do you have a passion for interoperability, open source, and open standards? If you’re an experienced developer, program manager, technical diplomat, or evangelist who can help our team build technical bridges between Microsoft and
    non-Microsoft technologies, check out the blog post by Gianugo Rabellino over on the Port 25 blog today. We’re hiring, with open positions you can apply to right now. We’d love to hear from you!

    Doug Mahugh
    Senior Technical Evangelist
    Microsoft Open Technologies, Inc.

  • Interoperability @ Microsoft

    Node.js script for releasing a Windows Azure blob lease


    This post covers a workaround for an issue that may affect you if you’re deploying Windows Azure virtual machines from VHDs stored in Windows Azure blob storage. The issue doesn’t always occur (in fact, our team hasn’t been able to repro it), and it will be fixed soon. If you run into the issue, you can use any one of several workarounds covered below.

    Blob leases are a mechanism provided by Windows Azure for ensuring that only one process has write access to a blob. As Steve Marx notes in his blog post on the topic, “A lease is the distributed equivalent of a lock. Locks are rarely, if ever, used in distributed systems, because when components or networks fail in a distributed system, it’s easy to leave the entire system in a deadlock situation. Leases alleviate that problem, since there’s a built-in timeout, after which resources will be accessible again.”

    In the case of VHD images stored as blobs, Windows Azure uses a lease to ensure that only one virtual machine at a time has the VHD mounted in a read/write configuration. In certain cases, however, we’ve found that the lease may not expire correctly after deleting the virtual machine and deleting the disk or OS image associated with the VHD. This can cause a lease conflict error message to occur when you try to delete the VHD or re-use it later in a different virtual machine.

    If you’re affected by this issue, you can explicitly break the lease that has not expired, or you can make a copy of the VHD and use that copy for provisioning a new virtual machine. Craig Landis has posted instructions on the Windows Azure community forum for how to do this from Windows machines; he also covers the same techniques in a separate post addressing a variation on the issue.

    For those who are managing Windows Azure virtual machines from Linux or Mac desktops, our team has developed a Node.js script that can be used to break a lease if needed. Here are the steps to follow for installing and running the script:

    1. Verify through the Windows Azure management portal that the VHD is not actually in use. Craig’s forum post provides guidance on how to do this.

    2. If you don’t have the Windows Azure command line tool for Mac and Linux installed, you can get it by installing the Windows Azure SDK for Node.js. SDK installation instructions for Windows, Mac, and Linux can be found on the Windows Azure Node.js Developer Center.

    3. Download and import your Windows Azure publish settings file, as covered under “Manage your account information and publish settings” in the command line tool documentation.

    4. Copy the the breakLease.js file (available here) to the node_modules/azure-cli subfolder under your Node.js global modules folder. You can find your global modules folder with the npm ls –g command. For example, on my Windows machine that command returns c:\Users\dmahugh\AppData\Roaming\npm, so I need to copy the script to c:\Users\dmahugh\AppData\Roaming\npm\node_modules\azure-cli.

    After you’ve completed those setup steps, you can break a blob lease by running the script with a single parameter, the URL of the blob:

    > node breakLease.js <absolute-url-to-blob>

    The script prints out information about the steps it takes to break the lease:


    That’s all there is to it. As I mentioned earlier, this workaround is only needed in certain cases until the underlying cause has been fixed. Please let us know if you run into any issues using this script.

  • Interoperability @ Microsoft

    MongoDB Seattle recap


    DSC_4062Last Friday I had the opportunity to attend and participate in the MongoDB Seattle conference down along the Seattle waterfront at Bell Harbor Conference Center. It was a great way to end a week of MongoDB-related activities around Seattle and Redmond! I met many people who are working with MongoDB and considering their options for cloud deployment, and I co-presented with 10gen software engineer Sridhar Nanjundeswaran on “MongoDB and Windows Azure.”

    On the day before the conference, I caught up with Aaron Heckman, Node.js engineer at 10gen, and we recorded a video of a cool demo app he had built and deployed on Windows Azure that uses Node.js and MongoDB. Aaron knows Node.js and MongoDB very well but had never worked with Windows Azure before, so his experience is a great example of how quickly and easily Node+Mongo developers can deploy apps on Azure.

    Thanks to the team at 10gen for putting on a great event, and thanks to everyone who participated and helped make it so useful and fun! You can find links to additional information about deploying MongoDB on Windows Azure over on the 10gen blog, and also be sure to check out the Windows Azure section on MongoDB.org.

    For those on the US east coast, MongoDB Boston is coming up on October 24, and my colleague Jim O’Neil will be presenting on the details of running MongoDB on Windows Azure. To find other MongoDB events check out the events page on 10gen’s site, and for information on upcoming Windows Azure events see the Windows Azure Events page on WindowsAzure.com.

    Doug Mahugh
    Senior Technical Evangelist
    Microsoft Open Technologies, Inc.

  • Interoperability @ Microsoft

    Symfony on Windows Azure, a powerful combination for PHP developers


    Symfony, the popular open source web application framework for PHP developers, is now even easier to use on Windows Azure thanks to Benjamin Eberlei’s Azure Distribution Bundle project. You can find the source code and documentation on the project’s GitHub repo.

    Symfony is a model-view-controller (MVC) framework that takes advantage of other open-source projects including Doctrine (ORM and database abstraction layer), PHP Data Objects (PDO), the PHPUnit unit testing framework, Twig template engine, and others. It eliminates common repetitive coding tasks so that PHP developers can build robust web apps quickly.

    Azure Distribution BundleSymfony and Windows Azure are a powerful combination for building highly scalable PHP applications and services, and the Azure Distribution Bundle is a free set of tools, code, and documentation that makes it very easy to work with Symfony on Windows Azure. It includes functionality for streamlining the development experience, as well as tools to simplify deployment to Windows Azure.

    Features that help streamline the Symfony development experience for Windows Azure include changes to allow use of the Symfony Sandbox on Windows Azure, functionality for distributed session management, and a REST API that gives Symfony developers access to Windows Azure services using the tools they already know best. On the deployment side, the Azure Distribution Bundle adds some new commands that are specific to Windows Azure to Symfony’s PHP app/console that make it easier to deploy Symfony applications to Windows Azure:

    • windowsazure:init – initializes scaffolding for a Symfony application to be deployed on Windows Azure
    • windowsazure:package – packages the Symfony application for deployment on Windows Azure

    Benjamin Eberlei, lead developer on the project, has posted a quick-start video that shows how to install and work with the Azure Distribution Bundle. His video takes you through prerequisites, installation, and deployment of a simple sample application that takes advantage of the SQL Database Federations sharding capability built into the SQL Database feature of Windows Azure:

    Whether you’re a Symfony developer already, or a PHP developer looking to get started on Windows Azure, you’ll find the Azure Distribution Bundle to be easy to use and flexible enough for a wide variety of applications and architectures. Download the package today – it includes all of the documentation and scaffolding you’ll need to get started. If you have ideas for making Symfony development on Windows Azure even easier, you can join the project and make contributions to the source code, or you can provide feedback through the project site or right here.

    Symfony and Doctrine are often used in combination, as shown in the sample application mentioned above. For more information about working with Doctrine on Windows Azure, see the blog post Doctrine supports SQL Database Federations for massive scalability on Windows Azure.

    Symfony and Doctrine have a rich history in the open source and PHP communities, and we’re looking forward to continuing our work with these communities to make Windows Azure a big part of the Symfony/Doctrine story going forward!

    Doug Mahugh
    Senior Technical Evangelist
    Microsoft Open Technologies, Inc.

  • Interoperability @ Microsoft

    Eclipse Plugin for Java Developers on Windows Azure


    I’m pleased to announce the availability of the Windows Azure Plugin for Eclipse with Java (by Microsoft Open Technologies), June 2012 CTP.

    This has been the most ambitious and technically complex update we’ve had, focusing on improving the ease of creating projects, deploying apps to the cloud, and simplifying developers’ programmatic access to various services provided by Windows Azure. This update also includes a set of other enhancements driven by user feedback.

    These are the main additions:

    - New Windows Azure Deployment Project wizard – enables you to select your JDK, Java server, and Java apps right in the improved wizard UI. The list of out-of-the-box server configurations to choose from now includes Tomcat 6, Tomcat 7, GlassFish OSE 3, Jetty 7, Jetty 8, JBoss 6, and JBoss 7 (stand-alone), and it is user-customizable. (This UI improvement is an alternative to dragging and dropping compressed files and copying over startup scripts, which was previously the main approach. That method still works fine but will likely be preferred only for more advanced scenarios now.)

    - Server Configuration role property page – enables you to easily switch the servers and applications associated with your deployment after you create the project, as part of the Role Propertiesdialog box.

    - “Publish to cloud” wizard – an easy way to deploy your project to the Windows Azure cloud directly from Eclipse, automating all the heavy lifting of fetching credentials, signing in, uploading, and so on. (This is a contribution from our Java partner GigaSpaces Technologies Ltd.)

    - Widows Azure Toolbar – provides easy access to several commonly used actions: Run in emulator, Reset emulator, Create cloud package, New Windows Azure Project, Publish to Windows Azure cloud, Unpublish.

    - Componentsproperty page makes it easier for advanced users to set up project dependencies between individual Windows Azure roles in the project and other external resources such as Java application projects, as well as to describe their deployment logic.

    - Package for Windows Azure Libraries for Java (by Microsoft Open Technologies, Inc) consists of all the JAR files needed for programming the Windows Azure APIs, including the Windows Azure Libraries fo Java. It is installed by default when you install the main plugin. You add a reference to just this one Eclipse library from your Java project. You can now also easily embed the entire library in your WAR file at the same time with just a single check box (no need to configure the deployment assembly separately). This package is for users who do not use Maven and would rather not have to download all the JAR files on their own.

    - Instance input endpoint configuration UI– helps enable remote debugging and JMX diagnostics for specific compute instances running in the cloud in scenarios with multi-instance deployments. Users can do this by configuring this new type of Windows Azure endpoint. (Previously, remote debugging could be made to work reliably only for single-instance deployments.)

    - Windows Azure Access Control Services Filter (by Microsoft Open Technologies, Inc) – enables your Java application to seamlessly take advantage of Windows Azure Active Directory Access Control (ACS) authentication using various identity providers (such as Google, Live.com, and Yahoo). You don’t have to write authentication logic yourself, just configure a few options and let the filter do the heavy lifting of enabling users to sign in using ACS. Then just write the code that gives users access to resources based on their identity, as returned to your app by the filter inside the Request object.

    Martin Sawicki

    Principal Program Manager

    Microsoft Open Technologies, Inc.

    A subsidiary of Microsoft Corporation

  • Interoperability @ Microsoft

    More of Microsoft’s App Development Tools Goes Open Source


    Today marks a milestone since we launched Microsoft Open Technologies, Inc. (MS Open Tech) as we undertake some important open source projects. We’re excited to share the news that MS Open Tech will be open sourcing the Entity Framework (EF), a database mapping tool useful for application development in the .NET Framework. EF will join the other open source components of Microsoft’s dev tools – MVC, Web API, and Web Pages with Razor Syntax – on CodePlex to help increase the development transparency of this project.

    MS Open Tech will serve as an accelerator for these projects by working with the open source communities through our new MS Open Tech CodePlex landing page. Together, we will help build out its source code until shipment of the next product version.

    This will enable everyone in the community to monitor and provide feedback on code check-ins, bug-fixes, new feature development, and build and test the products on a daily basis using the most up-to-date version of the source code.

    The newly opened EF will, for the first time, allow developers outside Microsoft to submit patches and code contributions that the MS Open Tech development team will review for potential inclusion in the products.

    We were happy to see the welcoming response when Scott Guthrie announced a similar open development approach with ASP.NET MVC4 and Web API in March. He said they have found it to be a great way to build an even tighter feedback loop with developers – and ultimately deliver even better products as a result. Check out what Scott has to say about this new EF news on his blog today.

    Together, this news further demonstrates how we want to enable our growing community of developers to build great applications. Take a look at the projects you’ll find on CodePlex:

    • Entity Framework – The ADO.NET Entity Framework is a widely adopted Object/Relational Mapping (ORM) framework that enables developers to work with relational data as domain-specific objects, eliminating the need for most of the data access plumbing code that developers usually need to write
    • ASP.net MVC 4 – this is the newest release of the ASP.net MVC (Model-View-Controller) framework. It is a web framework applying the MVC pattern to build web sites that separate data, presentation and actions.
    • Web API – this is a framework that augments ASP.net MVC to expose easily XML and JSON APIs consumable by websites or mobile devices. You can view it as a special model that instead of returning HTML (views) returns JSON or XML (data)
    • Web Pages/ Razor version 2, i.e. a view engine for MVC. It is a way to mix HTML and server code so that you can bind HTML pages to code and data.

    We are proud to have created an engineering culture for open development through the people that work at MS Open Tech. We’ve grown into an innovative hub where engineers assemble to build, accept and contribute to open source projects. Today we profiled our new MS Open Tech Hub where engineering teams across Microsoft may be temporarily assigned to MS Open Tech to participate in the Hub, where they will collaborate with the community, work with the MS Open Tech full time employees contribute to MS Open Tech projects, and create open source engineering best practices. Read more about our Hub on our Port 25 blog and meet the team working on the Entity Framework, MVC, Web API, and Web Pages with Razor Syntax projects at MS Open Tech. We’re nimble and we have a lot of fun in the process.

    Gianugo Rabellino
    Senior Director Open Source Communities
    Microsoft Open Technologies, Inc.
    A subsidiary of Microsoft Corporation

  • Interoperability @ Microsoft

    New open source options for Windows Azure web sites: MediaWiki and phpBB


     Need to set up a powerful wiki quickly? Looking for an open source bulletin board solution for your Windows Azure Web Site? Today, we are announcing the availability of MediaWiki and phpBB in the Windows Azure Web Applications gallery. MediaWiki is the open source software that powers WikiPedia and other large-scale wiki projects, and phpBB is the most widely used open source bulletin board system in the world.

    You can deploy a free Windows Azure Web Site running MediaWiki or phpBB with just a few mouse clicks. Sign up for the free trial if you don’t already have a Windows Azure subscription, and then select the option to create a new web site from the gallery.

    This will take you to a screen where you can select from a list of applications to be automatically installed by Windows Azure on the new web site you’re creating. You’ll see many popular open source packages there, including MediaWiki and phpBB. Select the option you’d like, and then you’ll be prompted for a few configuration details such as the URL for your web site and database settings for the application:

    Fill in the required fields, click the Next button, and you’ll soon have a running ready-to-use web site that is hosting your selected application.

    The Windows Web App Gallery also includes MediaWiki and phpBB, so you can deploy either of them on-premises as well. See the MediaWiki and phpBB entries in the gallery.

    The MediaWiki project now includes the Windows Azure Storage extensions that allow you to story media files on Windows Azure. You can use this functionality for MediaWiki sites deploy to Windows Azure Web Sites, or for other deployments as well. More information can be found on the MediaWiki wiki.

    A big thanks to everyone who helped to make MediaWiki and phpBB work so well on Windows Azure! Markus Glazer, volunteer developer at Wikimedia Foundation, submitted the MediaWiki package to the Windows Azure Web Sites Gallery and integrated MediaWiki with Windows Azure Storage. Nils Adermann from the phpBB community submitted the updated phpBB 3.0.11 package to the Windows Azure Web Sites Gallery with the necessary changes for integration with Windows Azure.

    The addition of phpBB and MediaWiki is a great example of Windows Azure’s support for open source software applications, frameworks, and tools. We’re continuing to work with these and other communities to make Windows Azure a great place to host open source applications. What other open source technologies would you like to be able to use on Windows Azure?

    Doug Mahugh
    Senior Technical Evangelist
    Microsoft Open Technologies, Inc.

  • Interoperability @ Microsoft

    Need to discover, access, analyze and visualize big and broad data? Try F#.


    Microsoft Research just released a new iteration of Try F#, a set of tools designed to make it easy for anyone – not just developers – to learn F# and take advantage of its big data, cross-platform capabilities.

    F# is the open-source, cross-platform programming language invented by Don Syme and his team at Microsoft Research to help reduce the time-to-deployment for analytical software components in the modern enterprise.

    Big data definitively is big these days and we are excited about this new iteration of Try F#. Regardless of your favorite language, or if you’re on a Mac, a Windows PC, Linux or Android, if you need to deal with complex problems, you will want to take a look at F#!

    Kerry Godes from Microsoft’s Openness Initiative connected with Evelyne Viegas, Director of Semantic Computing at Microsoft Research, to find out more about how you can use “Try F# to seamlessly discover, access, analyze and visualize big and broad data.” For the complete interview, go to the Openness blog or check out www.tryfsharp.org to get started “writing simple code for complex problems”.


  • Interoperability @ Microsoft

    WS-Management adopted as ISO/IEC international standard


    DMTF (Distributed Management Task Force) announced today that the DMTF Web Services Management standard (WS-Man) version 1.1 has now been adopted by ISO (International Organization for Standardization) and IEC (International Electrotechnical Commission) as an international standard, ISO/IEC 17963:2013. This is a great milestone on the industry’s journey toward broad adoption of interoperable, royalty-free, standards-based solutions for management of systems, applications, and devices.

    WS-Man is designed to address the cost and complexity of IT management by providing a common way for systems to access and exchange management information across the entire IT infrastructure. It is used as a network access protocol by many CIM (Common Information Model) based management solutions, including the DMTF’s CIM based DASH (Desktop and Mobile Architecture for Server Hardware) and SMASH(Systems Management Architecture for Server Hardware) solutions, as well as the DMTF’s Virtualization Management (VMAN) standards which we use to manage Windows Hyper-V. WS-Man is also the primary protocol for management of Windows Server 2012, and has been supported by all versions of Windows since XP (both client and server) through Windows Remote Management (WinRM). For more information about WS-Man and how it is supported in Windows Server, System Center, and PowerShell, see Jeffrey Snover’s blog post on the Windows Server blog.

    Microsoft has a longstanding commitment to interoperability and standards in the management arena. In the early 1990s, Microsoft was one of the founding members of DMTF, and worked closely with industry partners on the development of CIM, a flexible standard that has been adopted for a wide variety of uses across computer systems, operating systems, networks, and storage devices. WS-Man and CIM are a powerful combination, with a rapidly growing ecosystem, and ISO/IEC adoption of WS-Man as an international standard will enable further adoption. Microsoft worked with the industry to standardize WS-Man CIM mappings for common management scenarios.

    Microsoft also developed OMI (Open Management Infrastructure), a high-performance small-footprint implementation of a CIM+WS-Man server, released last year by The Open Group as an open-source project under the Apache 2 License. Written in portable C, OMI provides an enterprise-grade CIM and WS-Man implementation so that hardware and software vendors can focus their investments on providers and schemas within their domain expertise. OMI opens up management of hardware devices from any vendor in a datacenter using a “Datacenter Abstraction Layer” or DAL – enabling management of devices and servers that implement standard protocols and schemas from standards compliant tools like PowerShell.

    Through those and related initiatives, we are continuing to help the industry deliver on the promise of standards-based solutions that address the cost and complexity of systems management. For example, DMTF also announced today that the DMTF Platform Management standard, which provides a common architecture for communication between management subsystem components, was adopted by ANSI (American National Standards Institute) and INCITS (International Committee for Information Technology Standards) as a US national standard, INCITS 495-2012 Platform Management. As DMTF VP of Technology Hemal Shah noted in today's announcement, “Adoption and recognition of the Platform Management and Web Services Management standards by these organizations provide additional credibility, while increasing the accessibility of these solutions to IT managers.”

    These developments are further evidence of the global interest in interoperable, royalty-free, standards-based solutions to management of systems, applications, and devices. Congratulations to everyone who has worked to help achieve these important milestones!

    Colleen Evans
    Principal Program Manager
    Microsoft Open Technologies, Inc.

    Doug Mahugh
    Lead Technical Evangelist
    Microsoft Open Technologies, Inc.

  • Interoperability @ Microsoft

    Breaking news: HTML 5.0 and Canvas 2D specification’s definition is complete!


    imageToday marks an important milestone for Web development, as the W3C announced the publication of the Candidate Recommendation (CR) version of the HTML 5.0 and Canvas 2D specifications.

    This means that the specifications are feature complete: no new features will be added to the final HTML 5.0 or the Canvas2D Recommendations. A small number of features are marked “at risk,” but developers and businesses can now rely on all others being in the final HTML 5.0 and Canvas 2D Recommendations for implementation and planning purposes. Any new features will be rolled into HTML 5.1 or the next version of Canvas 2D.

    It feels like yesterday when I was publishing a previous post on HTML5 progress toward a standard, as HTML5 reached "Last Call" status in May 2011. The W3C set an ambitious timeline to finish HTML 5.0, and this transition shows that it is on track. That makes me highly confident that HTML 5.0 can reach Recommendation status in 2014.

    The real-world interoperability of many HTML 5.0 features today means that further testing can be much more focused and efficient. As a matter of fact, the Working Group will use the “public permissive” criteria to determine whether a feature that is implemented by multiple browsers in an interoperable way can be accepted as part of the standard without expensive testing to verify.

    Work in this “Candidate Recommendation” phase will focus on analyzing current HTML 5.0 implementations, establishing priorities for test development, and working with the community to develop those tests. The WG will also look into the features tagged as “at risk” that might be moved to HTML 5.1 or the next version of Canvas2D if they don’t exhibit a satisfactory level of interoperability by the end of the CR period.

    At the same time, work on HTML 5.1 and the next version of Canvas2D are underway and the W3C announced first working drafts that include features such as media and graphics. This work is on a much faster track than HTML5 has been, and 5.1 Recommendations are expected in 2016. The HTML Working Group will consider several sources of suggested new features for HTML 5.1. Furthermore, HTML 5.1 could incorporate the results of various W3C Community Groups such as the Responsive Images Community Group or the WHATCG. HTML 5.1 will use the successful approach that the CSS 3.0 family of specs has used to define modular specifications that extend HTML’s capabilities without requiring changes to the underlying standard. For example, the HTML WG already has work underway to standardize APIs for Encrypted Media Extensions, which would allow services such as Netflix to stream content to browsers without plugins, and Media Source Extensions to facilitate streaming content in a way that adapts to the characteristics of the network and device.

    Reaching Candidate Recommendation further indicates the high level of collaboration that exists in the HTML WG. I would especially like to thank the W3C Team and my co-chairs, Sam Ruby (IBM) and Maciej Stachowiak (Apple), for all their hard work in helping to get to CR. In addition, the HTML WG editorial team lead by Robin Berjon deserves a lot of credit for finalizing the CR drafts and for their work on the HTML 5.1 drafts.


    Paul Cotton, Microsoft Canada
    W3C HTML Working Group co-chair

  • Interoperability @ Microsoft

    Getting Started with VM Depot


    Do you need to deploy a popular OSS package on a Windows Azure virtual machine, but don’t know where to start? Or do you have a favorite OSS configuration that you’d like to make available for others to deploy easily? If so, the new VM Depot community portal from Microsoft Open Technologies is just what you need. VM Depot is a community-driven catalog of preconfigured operating systems, applications, and development stacks that can easily be deployed on Windows Azure.

    You can learn more about VM Depot in the announcement from Gianugo Rabellino over on Port 25 today. In this post, we’re going to cover the basics of how to use VM Depot, so that you can get started right away.

    Deploying an Image from VM Depot

    Deploying an image from VM Depot is quick and simple. As covered in the online documentation, VM Depot will auto-generate a deployment script for use with the Windows Azure command-line tool for Mac and Linux that you can use to deploy virtual machine instances from a selected image. You can use the command line tool on any system that supports Node.js – just install the latest version of Node and then download the tool from this page on WindowsAzure.com. For more information about how to use the command line tool, see the documentation page.

    Publishing an Image on VM Depot

    To publish an image on VM Depot, you’ll need to follow these steps:

    Step 1: create a custom virtual machine. There are two approaches you can take for creating your custom virtual machine. The quickest and simplest approach is to create a Linux virtual machine from the image gallery in Windows Azure and then customize your VM by installing or configuring open source software on it. And for those who’d like to build an image from scratch, you can create and upload a virtual hard disk that contains the Linux operating system and then customize your image as desired.

    Regardless of which approach you used to create your image, you’ll then need to save it to a public storage container in Windows Azure as a .VHD file. The easiest way to do this is to deploy your image to Azure as a virtual machine and then capture it to a .VHD file. Note that you’ll need to make the storage container for your .VHD file public (they’re private by default) in order to publish your image – you can do this through the Windows Azure management portal or by using a tool such as CloudXplorer.

    Step 2: publish your image on VM Depot. Once your image is stored in a public storage container, the final step is to use the Publish option on the VM Depot portal to publish your image. If it’s your first time using VM Depot, you’ll need to use your Windows Live™ ID, Yahoo! ID, or Google ID to sign in and create a profile.

    See the Learn More section for more detailed information about the steps involved in publishing and deploying images with VM Depot.

    As you can see, VM Depot is a simple and powerful tool for efficiently deploying OSS-based virtual machines from images created by others, or for sharing your own creations with the developer community. Try it out, and let us know your thoughts on how we can make VM Depot even more useful!

    Doug Mahugh
    Lead Technical Evangelist
    Microsoft Open Technologies, Inc.

    Eduard Koller
    Senior Program Manager
    Microsoft Open Technologies, Inc.

  • Interoperability @ Microsoft

    Using Drupal on Windows Azure to create an OData repository


    OData is an easy to use protocol that provides access to any data defined as an OData service provider.  Microsoft Open Technologies, Inc., is collaborating with several other organizations and individuals in development of the OData standard in the OASIS OData Technical Committee, and the growing OData ecosystem is enabling a variety of new scenarios to deliver open data for the open web via standardized URI query syntax and semantics. To learn more about OData, including the ecosystem, developer tools, and how you can get involved, see this blog post.

    In this post I’ll take you through the steps to set up Drupal on Windows Azure as an OData provider.  As you’ll see, this is a great way to get started using both Drupal and OData, as there is no coding required to set this up. 

    It also won’t cost you any money – currently you can sign up for a 90 day free trial of Windows Azure and install a free Web development tool (Web Matrix) and a free source control tool (Git) on your local machine to make this happen, but that’s all that’s required from a client point of view.  We’ll also be using a free tier for the Drupal instance, so you may not need to pay even after the 90 day trial, depending on your needs for bandwidth or storage.

    So let’s get started!

    Set up a Drupal instance on Windows Azure using the Web Gallery. 

    The Windows Azure team has made setting up a Drupal instance incredibly easy and quick – in a few clicks and a few minutes your site will be up and running.  Once you’ve signed up for Windows Azure and have your account set up, click on New > Quick Create > from Gallery, as shown here:




    Then click on the Drupal 7 instance, as shown here.  The Web Gallery is where you’ll find images of the latest Web applications, preconfigured and ready to set up.  Currently we’re using the Acquia version of Drupal 7 for Drupal:


    Enter some basic information about your site, including the URL (.azurewebsites.net will be added on t what you choose), the type of database you want to work with (currently SQL Server and MySQL are supported for Drupal), the region you want your app instance deployed :



    Next, add a database name, username and password for the database, and a region that the database should be deployed :


    That’s it!  In a few minutes your Windows Azure Web Site dashboard will appear with options for monitoring and working with your new Drupal instance:



    Setting up the OData provider

    So far we have a Drupal instance but it’s not an OData provider yet.  To get Drupal set up as an OData provider, we’re going to have to add a few folders and files, and configure some Drupal modules. 

    Because good cloud systems protect your data by backing it up and providing seamless, invisible redundancy, working with files in the cloud can be tricky.  But the Windows Azure team provide a free, easy to use tool to work with files on Windows azure, called Web Matrix.  Web Matrix lets you easily download your files, work with them locally, test your work and publish changes back up to your site when you’re ready.  It’s also a great development tool that supports most modern Web application development languages.

    Once you’ve downloaded and installed Web Matrix on your local machine, you simply click on the Web Matrix icon on the bottom right under the dashboard, as show in the image above.  Web Matrix will confirm that you want to make a local copy of your Windows Azure Web site and download the site:


    Web Matrix will detect the type of Web site you’re working with, set up a local instance Database and start downloading the Web site to the instance:





    When Web Matrix is done downloading your site you’ll see a dashboard showing you options for working with your local site.  For this example, we’re only going to be working with files locally, so click the files icon shown here:


    We need to add some libraries and modules to our Drupal Instance to make the Windows Azure standard configuration of Drupal 7 become an OData provider.  There are three sets of files we need to download and place in specific places in our instance.  You’ll need Git, or your favorite Git-compatible tool installed on your local machine to retrieve some of these files:

    1) Download the OData Producer Library for PHP V1.2 to your local machine from https://github.com/MSOpenTech/odataphpprod/
    Under the sites > all folder,  create a folder called libraries> odata (create the libraries folder if it doesn’t exist ) and copy in the downloaded files.

    2) Download version 2 of the Drupal Libraries API from your local machine from http://drupal.org/project/libraries
    the sites > all folder, create a folder called modules > libraries (yes, there are two libraries directories in different places) and copy in the downloaded files.

    3) Download r2integrated's OData Server files  to your local machine from //git.drupal.org/sandbox/r2integrated/1561302.git
    Under the sites > all folder, create a folder called modules > odata_server and copy in the downloaded files.


    Here’s what the directories should look like when you’re done:



    Next, click on the Publish button, to upload the new files to your Windows Azure Web site via WebMatrix. After a few minutes your files should be loaded up and ready to use.

    OData Configuration in Drupal on Windows Azure

    Next, we will configure the files we just uploaded to provide data to OData clients. 

    From the top Menu, Go to the Drupal modules, and navigate down to the “other”section.

    Enable Libraries and OData Server, then save configuration.  The modules should look like this when you’re done:


    Next, go to Site Configuration from the top menu, and navigate down to the Development section. Under development, click on OData Settings

    Under Node, enable page and or article, (click on expose then to OData clients), the select the fields from each Node you want to return in an OData search.  You can also return Comments, Files, Taxonomy Terms, Taxonomy Vocabularies, and Users.  All are off by default and have to be enabled to expose properties, fields, and references through the OData server:


    Click Save Configuration and you’re ready to start using your Windows Azure Drupal Web site as an OData provider! 

    One last thing - unfortunately, the default data in Drupal consists of exactly one page, so search results are not too impressive.  You’ll probably want to add some data to make the site useful as an OData provider. The best way to do that is via the Drupal feeds module. 


    As promised at the beginning of this post, we’ve now created an OData provider based on Drupal to deliver open data for the open Web.  From here any OData consumer can consume the OData feed and doesn’t have to know anything about the underlying data source, or even that it’s Drupal on the back end.  The consumers simply see it as an OData service provider.  Of course there’s more effort involved in getting your data imported, organizing it and building OData clients to consume the data, but this is a great start with minimal effort using existing, free tools.
  • Interoperability @ Microsoft

    Entity Framework V6 (EF6) Beta 1 from Microsoft Includes Latest & Greatest Open Source Contributions


    Microsoft Corp. has just announced the Beta 1 release of Entity Framework 6 (EF6).  EF6 combines the latest and greatest open source community contributions with key features and tooling that you were asking for.  Here’s the official announcement with a full list of new features.  

    As you might recall, last summer Microsoft Open Technologies, Inc. (MS Open Tech) announced that the Entity Framework (EF) was now open source.  Since then several iterations have been released, and many new features and capabilities have been added from the development team at the Microsoft Open Tech Hub as well as some great contributions from the software developer community.  Here are some highlights from the 21 community pull requests that we accepted:

    · Custom Migrations Operations were enabled by a contribution from iceclow and this blog post provides an example of using this new feature.

    · Pluggable Pluralization & Singularization Service was contributed by UnaiZorrilla.

    · Significantly improved warm up time (view generation) – especially for large models – via a contribution from AlirezaHaghshenas.

    This Get It page has all the information on installing the prerelease and current runtime packages in Visual Studio 2012.

    Don’t know your Model First from your Code First or Database First?  Here’s a great intro to EF and EF concepts.

    The team is now putting the finishing touches on the EF6 release.  Early adopters can test drive the latest Beta features in the signed nightly build. And don’t forget to have a look at the latest Feature Specifications and Design Meeting Notes.  And follow the MS Open Tech  development team on Twitter and like them on Facebook to keep in the loop on the latest developments from the team and the community. 

    Let the MS Open Tech hub team know your experiences with EF6 by start up a discussion on CodePlex for feedback.   You can also post questions and find answers on StackOverflow by using the entity-framework tag.

Page 1 of 4 (341 items) 1234