December, 2013

  • Interoperability @ Microsoft

    MS Open Tech working with the ANGLE Project community to increase apps’ portability to Windows Devices


    Microsoft Open Technologies is working with the ANGLE Project community to enable ANGLE in Windows Phone 8 and Windows Store apps. This will allow developers to reuse their existing OpenGL ES 2.0 code, and to apply their current skills to building apps and games for Windows devices.

    ANGLE Project is an open source project which goal is to allow Windows users to run OpenGL ES 2.0 content seamlessly by translating OpenGL ES 2.0 API calls to DirectX 9 or DirectX 11.

    You can read more on our new blog here:

  • Interoperability @ Microsoft

    Windows Azure Provisioning of Linux and Windows via Puppet


    Microsoft Open Technologies, Inc. (MS Open Tech) is pleased to announce that the release of a new Windows Azure Puppet Module that makes it possible to provision both Linux and Windows virtual machines on Windows Azure using the popular open source DevOps tool, Puppet. Support is provided in the form of a Windows Azure module for Puppet published in the Puppet Forge. In addition, management of key services such as network configuration and databases are supported. As a result, Puppet users can now leverage over 1800 community-defined configurations found in the Puppet Forge on Windows Azure.

    MS Open Tech engineers have undertaken this work through our focus on enhancing interoperability across popular DevOps tools. DevOps focuses on the management of the intersection between software development and IT operations. It emphasizes collaboration and integration between the increasingly agile software development team (where rapid change is necessary), and the operations team who are required to provide maximum up time (where change may impact reliability). DevOps seeks to enable these two groups to communicate and collaborate more effectively. The contribution of a Puppet Module for Windows Azure is an important step in ensuring that users of Puppet are able to leverage their skills in a Windows Azure environment.

    The Windows Azure Puppet module provides everything you need to provision the following Windows Azure services:

    • Virtual Machines – both Linux and Windows
    • Virtual Networks – create logically isolated sections of Azure and securely connect them to your on premise clients and servers
    • SQL Server – create and maintain your SQL database

    In addition Windows Azure users will now be able to access more than 1800 existing community-defined modules in the Puppet Forge.

    "The ability to use Puppet to provision virtual machines on Windows Azure and thus to leverage the extensive repository of community provided modules in Puppet Forge should be compelling for many Puppet users” said Mitch Sonies, Vice President of Business and Corporate Development of Puppet Labs, Inc. “We think this contribution is a great step toward driving adoption of Azure within the Puppet community, and we look forward to seeing community uptake and ecosystem contributions grow.”

    Getting Started with Puppet and Azure

    Puppet is open source software that automates the configuration, provisioning and management of IT infrastructure, both in development and production. Machine configurations are described in terms of a “desired state” using an easy-to-read declarative language. Puppet uses this description to bring systems into the desired state and keep them there. For more information about Puppet see the extensive documentation available on the Puppet Labs website.

    There are two parts to this MS Open Tech contribution. The first is the Puppet Manifests that describe the Windows Azure resources that can be managed using Puppet. The second is a cross platform command line interface (CLI). Using the CLI and Manifests it is easy to manage both Linux and Windows Virtual Machines, Virtual Networks and Affinity Groups and SQL servers. The goal is to maximize performance of your development, test and deployment environments.

    Virtual Machine Management

    Virtual machines deliver on demand, scalable compute infrastructure. Windows Azure provides both Windows Servers and Linux Servers in multiple configurations. To launch a new virtual machine and install the Puppet agent (so that it can later be managed by Puppet) you would us a command similar to the following:

    puppet azure_vm create \
    --management-certificate pem-or-pfx-file-path \
    --azure-subscription-id=your-subscription-id \
    --image b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-13_04-amd64-server-20130501-en-us-30GB \
    --location 'west us' \
    --vm-name vmname \
    --vm-user username \
    --password ComplexPassword \
    --puppet-master-ip yourPuppetMasterIPAddress

    The full list of actions is shown in the table below, to see a list of options available for that action execute the command “puppet help node-azure ACTION-NAME”.


    Action Description
    bootstrap Install Puppet node on an existing Windows Azure VM
    create Create Windows Azure VM
    delete Delete Windows Azure node instances
    images List Windows Azure images
    locations List Windows Azure locations
    servers List Windows Azure node instances
    shutdown Shutdown Windows Azure node instances
    start Start Windows Azure node instances

    Manage Virtual Networks

    An Azure virtual network enables you to create a logically isolated section in Azure and securely connect it to your on premise data-center or clients machines using an IPsec connection. This allows you to more easily remote debug your applications through a direct connection between your local development machine and virtual machines hosted in Azure. Using virtual networks you will be able to troubleshoot and debug your applications using the same tools you would for on premise development work.

    In addition this feature enables you to build distributed applications in a hybrid environment. For example, a web application hosted in Windows Azure can securely access an on premise database server or authenticate users against an on premise authentication server.

    To create a virtual network you would execute a command something like this:

    puppet azure_vnet set --management-certificate pem-or-pfx-file-path \
    --azure-subscription-id=your-subscription-id \
    --virtual-network-name vnetname \
    --affinity-group-name ag-name \
    --address-space ',' \
    --dns-servers 'dns1-1:,dns2:' \
    --subnets 'subnet-1:,subnet-2:'

    Other available actions are:

    Action Description
    list List virtual networks
    set Configure the virtual network
    set_xml_schema Configure the virtual network using xml schema

    Manage SQL database server

    Many applications require a database server, we are therefore providing commands to create and configure a SQL database using Puppet. To create a server use a command such as:

    puppet azure_sqldb create --management-certificate pem-or-pfx-file-path \
    --azure-subscription-id=your-subscription-id \
    --management-endpoint= \
    --login loginname \
    --password ComplexPassword \
    --location 'West Us'

    Manifest Files

    Manifest files are collections of definitions, references and commands that enable you to quickly and repeatably deploy virtual machines in a defined “desired state”. In addition to the CLI described above we are contributing manifest files that can be used by Puppet to configure Windows Azure services. These Manifests are available as part of the Windows Azure module in the Puppet Forge and can be further adapted to suit your specific needs. The manifests provided are:

    • bootstrap.pp – allows the creation of a new Puppet node
    • db.pp – create a new instance of SQL server
    • init.pp – defines a Windows Azure class that will allow easy deployment to the associated Windows Azure account
    • vm.pp – create a new virtual machine instance from a virtual machine image
    • vnet.pp – create a new virtual network

    What is next?

    MS Open Tech is pleased to enable Windows Azure provisioning using Puppet. This is an important component of our ongoing commitment to ensure that users of DevOps tools can leverage their skills within a Windows Azure environment.

  • Interoperability @ Microsoft

    New Reactive Extension Support for JavaScript Developers – Compatibility Builds, a lite version, and other improvements in RxJS 2.2


    From the Rx team,

    Claudio Caldato, Principal Program Manager Lead, MS Open Tech
    Snesha Foss, Senior Program Manager, MS Open Tech
    Kirk Shoop, Senior Software Development Engineer, MS Open Tech
    Matthew Podwysocki, Software Engineer, Microsoft

    Today Microsoft Open Technologies, Inc. (MS Open Tech), is happy to share the news of recent improvements we have made to Reactive Extensions.

    We recently highlighted a release of Reactive Extensions Core as well as Rx.cpp. Today we want to let you know that RxJS 2.2 is now available via the Rx.js CodePlex project and includes various bug fixes and contributions from the community.

    Reactive Extensions (Rx) is a programming model that allows developers to use a common interface for writing applications that interact with diverse data sources, like stock quotes, Tweets, UI events, and Web service requests. Since Rx was open-sourced by MS Open Tech in November, 2012, Rx has become an important under-the-hood component of several high-availability multi-platform applications, including NetFlix and GitHub. For a more detailed overview, have a look at the Beginner’s Guide to Reactive Extensions.

    Compatibility Builds

    The core Rx.js now supports browsers that support ES5 only. We have moved all of our previously shipped ES5 polyfills to rx.compat.js. This saves a number of bytes, and allows developers to use any polyfill library of your choosing in order to support older browsers. We also have Compatibility builds for other key libraries, a few of which h are mentioned below.

    Introducing Rx-Lite

    One common question from our customers is, "Could we get a core of RxJS with a set of operators we use most often in a single, smaller library?" We hear you and have now provided rx.lite.js. This library consists of the most commonly used features, including factory methods for creating observable sequences, standard operators such as where, select, and zip, relative-time based operators and the most commonly used features from rs.async.js, including events, callbacks and promises bindings. The file size has is drastically reduced – currently just 7k when zipped. We also provide a compatibility build, rx.lite.compat.js to support older browsers.

    Events, callbacks and promises with rx.async.js updates

    Traditionally RxJS has not included many bridges to such things as events, promises or even callbacks. In version 2.2, we’re introducing the fromEvent to bind to events, fromCallback to support bridging to callbacks, fromNodeCallback to support Node.js style callbacks in which the error is always the first parameter, and Promises library binding in rx.async.js. With this library, you can easily compose events, promises and callbacks within a single library without having to bring in any other bridge library such as jQuery or HTML DOM. For older browsers, the compatibility build is rx.async.compat.js.

    Control Virtual Time with rx.virtualtime.js

    To decrease the size and scope of rx.js, all virtual time mechanisms were moved from the core library and into their own library, rx.virtualtime.js. This includes the VirtualTimeScheduler and the HistoricalScheduler.

    Operator Changes and Additions:
    • The create factory function now takes as its return value a function which encapsulates disposal logic, or nothing if no cleanup is required. This deprecates the need for Observable.createWithDisposable.

    • Fixed the behavior of scan, to produce a sequence with only the seed if a sequence is empty but a seed was provided. If the sequence is empty and without a seed, an empty collection is created.

    • The share method was added to create a shortcut for publish().refCount(), a common function for sharing a single observable sequence.

    • A new shareLast method has been added to create a shortcut for the often used publishLast().refCount() to turn cold observables into hot observables and add reference counting.

    • The shareReplay method was added to create a shortcut for replay().refCount() to turn a hot observable into a cold observable and add reference counting.

    • The shareValue method was added to support a shortcut for publishValue().refCount() to publish a shared single value with reference counting added.

    Other Recent Changes
    • rx.modern.js renamed to rx.js and old rx.js renamed to rx.compat.js for older browser support

    • VirtualTimeScheduler and HistoricalScheduler classes moved to rx.virtualtime.js

    • Rx.Observable.start and Rx.Observable.prototype.toAsync methods moved to rx.async.js

    Deprecation Warnings:

    The following Node,js specific methods in rx.node.js are being removed in favor of those in rx.async.js

    • Rx.Node.fromEvent - Now use Rx.Observable.fromEvent

    • Rx.Node.fromCallback – Now use Rx.Observable.fromCallback

    The Hub engineering program has been a great place to collaborate on these projects, as these assignments give us the agility and resources to work with the community. Stay tuned for more updates soon, and please try out our work and pitch in!

  • Interoperability @ Microsoft

    The MS Open Tech Hub releases Rx 2.2


    From the Rx team:
    Claudio Caldato, Principal Program Manager Lead, MS Open Tech
    Snesha Foss, Senior Program Manager, MS Open Tech
    Kirk Shoop, Senior Software Development Engineer, MS Open Tech
    Matthew Podwysocki, Software Engineer, Microsoft
    Donna Malayeri , Program Manager, Azure Mobile Services, Microsoft

    Today Microsoft Open Technologies, Inc. (MS Open Tech), is happy to share the news of recent improvements we have made to Reactive Extensions.

    Rx 2.2 is now available via the Rx CodePlex project and includes more support for Windows Phone 8, various bug fixes and contributions from the community.

    Reactive Extensions (Rx) is a programming model that allows developers to use a common interface for writing applications that interact with diverse data sources, like stock quotes, Tweets, UI events, and Web service requests. Since Rx was open-sourced by MS Open Tech in November, 2012, Rx has become an important under-the-hood component of several high-availability multi-platform applications, including NetFlix and GitHub. For a more detailed overview, have a look at the Beginner’s Guide to Reactive Extensions. . Back in October, Bart De Smet provided an overview of what to expect on the latest release on Channel9, it’s a good start to get an overview of the updates.

    A lot of work has also gone into Rx.cpp since the last release, listed below. We’ve also added initial support for WinRT in C++/CX. A WinRT sample converted to use Rx.cpp is available on GitGub. It’s also worth noting that Rx.cpp compiles with clang on Mac OS X as well as MSVC on Microsoft Windows.



    Schedulers control when a subscription starts and when notifications are published. The following schedulers have been implemented for this release: Immediate, CurrentThread, EventLoop, NewThread, Window (schedule to HWND message-loop).


    Sources are generally adapters provide a Subscribe method for a data source so that Operators can be applied to the data. The following sources have been implemented for this release: Iterate, Interval, Return, Empty, Throw, Random (using engine and transform from the std namespace)


    Operators are used to work with subscriptions and subjects. Operators are the async equivalent of STL algorithms, instead of iterators they take observables. The following operators have been implemented for this release: OrderBy, ForEach, Using, Scan, Throttle, TakeUntil, Skip, SkipUntil, ToVector, ToList, Zip, Concat, CombineLatest, Merge, ToAsync, Using, ConnectableObservable, Multicast, Publish, PublishLast, RefCount, ConnectForever, SubscribeOn, ObserveOn.


    The following Subjects have been implemented for this release: ConnectableSubject, GroupedSubject, BehaviorSubject, and AsyncSubject,

    Helper Classes

    New helper classes for this release are Producer and Sink.

    WinRT C++/CX

    Support for WinRT has been implemented in this release, and a great example has been provided on GitHub. Supported Classes and Methods are, BindCommand, DeferOperation, CoreDispatcherScheduler, FromEventPattern, FromAsyncPattern and ReactiveCommand.  Special mention goes to Paul Betts, who gave us permission to build a C++ version of the .NET ReactiveCommand class he created in the ReactiveUI library. Thanks for the inspiration!

    The MS Open Tech Hub engineering program has been a great venue for projects like this one, as it provides our team with the resources and agility we need to get these updates out to the community.

    Stay tuned for more updates soon, and please try out our work and pitch in on CodePlex!

  • Interoperability @ Microsoft

    MS Open Tech releases updated Azure Node.JS SDK and Command Line Tools for Mac and Linux


    More news for our Linux friends deploying virtual machines to the cloud. Today at Microsoft Open Technologies, Inc. (MS Open Tech), we’d like to share an update to the Node SDK and Command Line tool for Mac and Linux, offering support for virtual networks, endpoints and more. This tool helps developers and IT admins to deploy and manage Linux (and Windows) virtual machines on Windows Azure.

    We’ve received lots of feedback on the Windows Azure command line tool for Mac and Linux since our team at MS Open Tech released project last year. As a result, we’re now updating the tools by adding several commonly requested features, including:

    • Virtual network configuration
    • Improved billing management for stopped VMs
    • Endpoint management
    • Load Balanced Endpoint update

    Following is a summary of the new features. As usual, send us a pull request if you’d like to contribute to these tools, or leave a comment/email if you have some feedback for us.

    1. Virtual Networks

    Since Virtual Networks have been added to the Windows Azure REST API, we added support for this feature to both the Azure SDK for Node.js and in the Command Line tool for Mac and Linux:

    In order to support virtual networks we’ve contributed a new API to the Windows Azure SDK for Node.JS that enables configuration of Virtual Networks. This API can be used standalone in Node.JS apps for configuring VNETs.

    For example, the following sample node.js code demonstrates how to configure a VNET by using the service management API.

    var service = azure.createServiceManagementService(

          subscriptionId, auth,

          { serializetype: 'XML'});

    var vnetObject = {

      VirtualNetworkConfiguration: {

        VirtualNetworkSites: [


            Name: 'test',

            AffinityGroup: 'test-ag',

            AddressSpace: [''],

            Subnets: [


                Name: 'sub1',

                AddressPrefix: ''







    service.setNetworkConfig(vnetObject, function (err, response) {

    // handle errors / process the result


    Refer to our full documentation on GitHub for complete details of ‘VirtualNetworkConfiguration’ object model.

    This SDK also provides the foundational pieces for the Command Line Tools. This makes it possible for admins to use same functionality via our Command Line Tool. Here is a sample usage showing how to create a Virtual Network in your subscription, with default settings.

    $ azure network vnet create vnet1 --location "West US" -v

    info: Executing command network vnet create

    info: Using default address space start IP:

    info: Using default address space cidr: 8

    info: Using default subnet start IP:

    info: Using default subnet cidr: 11

    verbose: Address Space [Starting IP/CIDR (Max VM Count)]: (16777216)

    verbose: Subnet [Starting IP/CIDR (Max VM Count)]: (2097152)

    verbose: Fetching Network Configuration

    verbose: Fetching or creating affinity group

    verbose: Fetching Affinity Groups

    verbose: Fetching Locations

    verbose: Creating new affinity group AG1

    info: Using affinity group AG1

    verbose: Updating Network Configuration

    info: network vnet create command OK

    For more information please refer to our wiki page for a full list of commands to manage Virtual Networks on Windows Azure.

    2. VM Stop Billing Feature

    In the first release of the Windows Azure infrastructure services, Windows Azure kept a reserved deployment spot for every stopped VM in the compute clusters, and continued to bill the user for VM compute resource unless user explicitly deleted the deployment. This changed, and now Windows Azure no longer charges users compute time for any stopped VMs. However, it still preserves the deployment state and configuration.

    MS Open Tech updated the Windows Azure SDK for Node.js and Windows Azure Command Line tool for Node.js to support this scenario. Consequently, when a VM is stopped using the azure vm shutdown command, the account will no longer be billed. Note that IP address of the VM with state StoppedDeallocated (i.e. stopped and not billed) will be released, and there is not guarantee that restarting the VM will result in the same IP being allocated.

    If you need your VM to stay allocated and preserve the IP address, we offer the --stay-provisioned switch for the azure vm shutdown command. Note, however, that in this case your account will continue to be charged for the compute time.

    3. Endpoint Update

    We have added a new command which allows users to change load balancer port, virtual machine port, end point name and protocol associated with an existing endpoint. The usage and options are listed below. For more information, read the article Load Balancing Virtual Machinesin the Windows Azure Documentation.

    $ azure vm endpoint update --help

    help: Update a VM endpoint


    help: Usage: vm endpoint update [options] <vm-name> <endpoint-name>


    help: Options:

    help: -h, --help output usage information

    help: -v, --verbose use verbose output

    help: --json use json output

    help: -d, --dns-name <name> only consider VM for this DNS name

    help: -n, --endpoint-name <name> the new endpoint name

    help: -t, --lb-port <port> the new load balancer port

    help: -t, --vm-port <port> the new local port port

    help: -o, --endpoint-protocol <protocol> the new transport layer protocol for port (tcp or udp)

    help: -s, --subscription <id> the subscription id

    4. Load Balanced Endpoint Update

    One of the cool new features in Windows Azure is updating load balanced sets:

    Let’s suppose you create two virtual machines ‘vm-1’ and ‘vm-2’ under the same cloud service ‘my service’ and added a load balanced endpoint ‘lbset1’ to both VMs. The new Windows Azure API will allow user to update the load balanced set ‘lbset1’ (for example change the probe protocol) so that it will be applied to all VM roles with this load balanced set endpoint defined.

    To support this new Azure functionality, we have added a new API updateLoadBalancedEndpointSet to the Windows Azure SDK for Node.JS and we will be also adding command line tool support soon (this wiki contains a list of all the proposed LB set commands)

    5. Other Improvements

    Finally, we made a couple more updates to the vm create command such as adding the ability to use any user name when creating Windows VMs (in the past one had to use ‘Administrator’), and displaying the image copy progress while using --community option. In addition there are a number of “under the hood” changes such as early failure in the face of common problems and more informative error reporting. These features make the tool easier to use in a variety of situations.

    Getting the Node.js SDK for Windows Azure

    The Node.js SDK and CLI make it easy to work with Windows Azure from within your own applications or from the command line. If you already have a version of the node.js tools all you need to do it run npm update azure-cli -g. If you are new to the tools then you have a couple of simple setup steps to follow, these are fully documented on the VM Depot help site. Since we mentioned VM Depot it might be worth reminding you that VM Depot has over 700 pre-configured virtual machine images ready for deployment, using the CLI, to Windows Azure.

Page 1 of 1 (5 items)