• Interoperability @ Microsoft

    MongoLab offers new options for MongoDB Developers on Azure

    • 0 Comments

    As many of you know, MongoLab is an easy to use, rock-solid, free MongoDB-as-a-Service offering backed by a great support team. MongoLab’s latest paid options in the Azure Store, brought to you by Microsoft Open Technologies, Inc., now include larger capacity dedicated clusters of up to 56GB of RAM per node with availability in eight Azure datacenters worldwide.

    Check out the full story on the MS Open Tech Blog

  • Interoperability @ Microsoft

    New Bing Translator Plugin lets users localize your WordPress site into the language of their choice

    • 0 Comments

    Good news for WordPress developers and webmasters!  Microsoft Open Technologies, Inc. has released a new Bing Translator plugin that lets you apply the power of Bing Translator to any WordPress site running version 3.8 or later. Visitors can translate your site into their preferred language in one click without leaving the page once this light-weight, cross-browser plugin is installed. This plugin also provides options for a setting a color scheme, as well as an option to allow visitors to suggest translations.  Check out the Blog post at msopentech.com for more detail. 

  • Interoperability @ Microsoft

    April Updates to the Azure Toolkit for Eclipse– Azure SDK 2.3, Tomcat 8, New Zulu versions, and more!

    • 0 Comments

    Microsoft Open Technologies, Inc., has now published the Azure Toolkit for Eclipse (by Microsoft Open Technologies) - April 2014 release. This update accompanies the release of Azure SDK 2.3, which is a pre-requisite. You will be offered the option to install it automatically when you create the first project after installing the toolkit.

    This release includes multiple enhancements since the February 2014 release, including support for new versions of application servers (Tomcat 8), JDKs (Azul Zulu v1.7 update 51 and v1.6 update 47), support for larger, bigger memory Azure instances (A8 and A9), improved handling of SSL and HTTPS, and in-place upgrading of deployed applications.

    Have a look at the msopentech.com Blog post for more details.

  • Interoperability @ Microsoft

    OData v4.0 and OData JSON Format v4.0 approved as OASIS Standards

    • 0 Comments

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

    Brian Benz, Senior Technical Evangelist, Microsoft Open Technologies, Inc.

    I am excited and proud to share the news that Open Data Protocol (OData) version 4.0 and OData JSON Format version 4.0 have been approved as OASIS Standards by OASIS (an open standards consortium). Congratulations to the OASIS OData Technical Committee for achieving this important milestone. Here’s the official announcement <link> from OASIS.

    This is the result of the collective handiwork of many talented people across many organizations (Axway Software, Blackberry, CA Technologies, Citrix Systems, IBM, Microsoft, Progress Software, Red Hat, SAP AG, SDL, and many others) who cooperated in a truly remarkable fashion to accomplish the common goal of creating a standard open data protocol to create and consume data services on the Web.

    Read the full post at msopentech.com

  • Interoperability @ Microsoft

    VM Depot Crosses Another Milestone

    • 0 Comments

    In January of last year, Microsoft Open Technologies, Inc. (MS Open Tech) launched VM Depot- a community-managed repository of open source virtual machine images for deployment on Microsoft Azure. The vision we articulated for this repository is that it be a place where "the community can build, deploy and share their favorite Linux configuration, create custom open source stacks, work with others and build new architectures for the cloud that leverage the openness and flexibility of the Windows Azure platform."

    Today, I am happy to report that VM Depot crossed the threshold of 1,000 images!

    MS Open Tech's success in attracting image publishers to VM Depot has encouraged us to turn our attention to making the site and its images even easier to use. Whatever it is you are looking for, there is a good change that you will find it on VM Depot and thus can deploy it to Azure. Earlier this week, we announced a new search feature to help you more quickly hone in on the right image for your needs. We will continue to work on improving integration with the Azure Management Portal to make it easier to deploy VM Depot images using a web browser.

    For those who prefer to use the command line for deployment and management, we support that, too. We continue to make improvements to the Microsoft Azure Node.js SDK, as we wish to ensure that developers will continue to have full access to VM Depot and Azure regardless of which operating system they are working on.

    For those just getting started with VM Depot, we have created a Site Walkthrough. Keep an eye out for a set of materials and documentation in the coming weeks which will help you make the most of this repository as it continues to expand.

    And let us know if there are specific areas that need more attention or support.

  • Interoperability @ Microsoft

    Corona SDK coming to Windows devices thanks to open source ANGLE project

    • 0 Comments

    Corona SDK, the popular mobile 2D platform made by Corona Labs, now offers closed beta support for Windows Phone 8. Microsoft Open Technologies helped the Corona Labs team integrate the ANGLE project into Corona SDK to add support for Windows Phone 8. This allows the more than 300,000 developers using Corona SDK today to easily port their apps to Windows Phone 8 with minimum effort, extending their reach to millions of new users.

    Learn more on the MS Open Tech blog.

  • Interoperability @ Microsoft

    Oracle Database, WebLogic Server and JDK are now Generally Available on Windows Azure

    • 0 Comments

    Microsoft Open Technologies, Inc, is pleased to share the news that select Oracle Software is now Generally Available on Windows Azure and Windows Server Hyper-V.

    This means that Microsoft Open Technologies, Inc. and Oracle now provide best in class, end to end support for customers running Oracle software on Windows Azure and Windows Server Hyper-V. You can now use one of Windows Azure’s license-included Oracle images for Windows with full support, and you can still use your existing licenses to run Oracle software on Windows Azure Infrastructure-as-a-Service (IaaS) in either Windows or Linux.

    Microsoft Windows Server has long been an important Oracle supported platform.  Last September at Oracle Open World, Oracle and Microsoft extended that support by providing certification and support for Oracle applications, middleware, Database, Java and Oracle Linux on Windows Server Hyper-V and Windows Azure.  

    For more information, please have a look at the following resources:

    Overview and Licensing Information at windowsazure.com

    Overview and Licensing Information at oracle.com

    A list of Oracle Virtual Machine Images for Windows

    Support Policy for Oracle Images Provided by Microsoft Open Technologies, Inc.

    Oracle Cloud Licensing Policy at oracle.com (PDF)

    Oracle Self Service Kit

    How to use Oracle images on Windows Azure

    Pricing Details

    We’re excited that we’re providing this important service with Oracle’s partnership. We’d like to hear what you have to say! Please share comments here.

  • Interoperability @ Microsoft

    Vagrant Supports Hyper-V "Out-of-the-box"

    • 0 Comments

    Our code providing Hyper-V support to Vagrant has been included in the latest Vagrant 1.5 release, and so users need not install Hyper-V support separately.

    Mitchell Hashimoto, creator of Vagrant and Founder of HashiCorp, said “This is an example of why Vagrant is open source. Our users asked for Hyper-V support and MS Open Tech stepped up to provide it. Including Hyper-V support in the Vagrant 1.5 release was a no-brainer once MS Open Tech had released their code as open source.”

    Full details on the MS Open Tech blog.

  • Interoperability @ Microsoft

    Tutorial: Finding Virtual Machine Images for Windows Azure in VM Depot

    • 0 Comments

    For users of VM Depot, our repository of community managed Virtual Machines for Azure, we have added significant enhancements to the search feature of the website. With this expanded search capability, it is now easier than ever to find an open source, Linux-based, virtual machine for Windows Azure.

    Search and you shall find

    Basic search functionality has not changed. You can still type into the search box on VM Depot and hit return. The results will include all virtual machines that contain your search term in their description, title, tags or other common fields.

    Sorting Results

    Using the sorting options available you can make the most interesting images rise to the top of the list as described in the table below.

    This approach works well if you know precisely what you are looking for. However, with over 900 images to choose from it can be difficult to find what you need. For this reason we have added a new search language to the site. This feature allows you to conduct much more targeted searches.

    Sort Option Description
    Featured Featured images are ones that MS Open Tech have, at some time, flagged as being of special interest. This sort option is perhaps the most useful if you don’t know precisely what you are looking for.
    Date Added This sort order puts the most recently added images at the top of the list. As such is most useful if you know what you are looking for and thus have a fairly narrow search, but need to find the most recent image.
    Name Sorting by name displays the resulting list in alphabetical name order. This is useful if you have a large number of results and want to skip through the pages to a specific image name.
    Platform The platform is the base operating system used in the image. Sorting on platform lists images in alphabetic order of platform and thus can help you find an image based on your preferred operating system. Whilst this sort order can sometimes be useful you might prefer to narrow your results to your chosen platform (see the description of our search language below).
    Rating This option lists images in order of their user rating. That is the most highly rated will appear at the top of the list. This can help ensure that images that have been tested by end users are displayed first, however, don’t be put off by images that have not yet received a rating.

    Power Searching within the VM Depot repository

    The new search features of VM Depot allow you to use a number of qualifiers (see table below) to construct more specific queries. This makes it possible to target specific information stored alongside each VM Depot virtual machine image.

    The available qualifiers include:

    Qualifier (these are case-sensitive) Description
    tag (or keyword) Images can include descriptive tags (keywords), defined by the publisher (e.g. CMS, blog, forum, app server).
    package Search for a VM that contains a specific package (note that this is not a complete list of packages on the image, they are the ones the publisher has chosen to draw attention to)
    region Search for images available in specific regions.
    platform Look for a VM built on a specific operating system.
    name Limit the search term to the virtual machine image name.
    description (or desc) Limit the search term to the description of the image.
    publisher Look for images from a specific publisher.
    rating Only return images with this rating (or higher) – takes a non-integer number from 1 through 5.

    As an example, to search for an image that includes the python language you would use the search term "package:python". To limit results to ones using the CentOS operating system you would use "package:python platform:centos".

    In addition to the various qualifiers available we also provide two different operators. The one used in the example above (':') means “contains”, that is, if the identified qualifier contains the string then it is considered a match. For example, “package:python” means “return all VMs that contain any package with the string ‘python’ within its name”. This search will match “python” as well as “python1.7”. You can also use the operator ':=' which looks for an exact match, rather than a partial match.

    VM Depot has a huge range of images available for easy deployment to Windows Azure. We invite you to use the new search feature the next time to wish to access and deploy an image from the repository.

  • Interoperability @ Microsoft

    Using Chef to Manage Windows Azure Resources

    • 0 Comments

    Chef Logo

    Chef is an open source DevOps tool built to address hard IT infrastructure challenges. The team at Microsoft Open Technologies Inc. (MS Open Tech) has been hard at work collaborating with Chef the company to enhance Windows Azure resource management capabilities. The latest knife-azure release (v1.2.2) brings a number of bug fixes and some important new features to Chef that focus on provisioning and managing optimized clusters of virtual machines and other Windows Azure resources.

    Knife is a Chef command line tool that provides an interface between a local Chef repository (which holds various data objects that describe resources) and a Chef server (which acts as a hub for configuration management). With Knife, you can manage many aspects of your infrastructure. The latest 1.2.2 update of knife-azure adds support for Windows Azure virtual networks and affinity groups to Knife.

    Virtual networks make it possible to create logically isolated sections of Windows Azure which can then be securely connected to on premise clients and servers. A virtual network makes it easy for you to take advantage of Windows Azure’s scalable, on-demand infrastructure while providing connectivity to data and applications on-premises. For example, you could use a virtual network to:

    Extend your datacenter in the same way that you would set up and connect to a remote branch office. You retain control over the network topology and configuration, and manage it in the same way you would your on-premises infrastructure.

    Build distributed applications hosted in a hybrid environment, maintaining secure connections with on-premises infrastructure without the creation of custom codes. For example, a web application hosted in Windows Azure can securely access an on premise database server or authenticate users against an on premise directory service.

    Remotely debug your applications by creating a direct connection between your local development machine and virtual machines hosted in Windows Azure. This allows you to troubleshoot and debug them using the same tools you would use for on-premises applications.

    The second major addition in this knife-azure release is the ability to manage affinity groups. Affinity groups enable you to configure your infrastructure so that there is a higher degree of co-location within a datacenter. This ensures there is minimal latency between servers and thus optimize performance.

    Full details of the supported Azure functionality in knife-azure (along with installation and configuration notes) can be found on the knife-azure GitHub project pages. It can also be retrieved as a Ruby Gem.

    To learn more about Chef and Knife Azure check out this interview and demo on Channel 9 (Chef section starts at 7m 28s).

    Why not take Chef and Windows Azure for a spin? You can sign up for a free trial subscription of Windows Azure, if you don't already have one.

    Let us know what you think!

  • Interoperability @ Microsoft

    Android and Java Developers: MS Open Tech has a SignalR SDK for You!

    • 0 Comments

    Today, Microsoft Open Technologies is releasing a SignalR software development kit for Android/Java developers. This SDK, available to the open source community on GitHub will give Java and Android developers the opportunity to add real-time functionality to their Java and Android client apps.

    To learn more, read MS Open Tech’s post.

  • Interoperability @ Microsoft

    Kinect Common Bridge update

    • 0 Comments

    The newest release of Kinect Common Bridge makes it even easier to track faces and recognize speech in your C++ applications with Kinect for Windows.

    This is the first update to the open source Kinect Common Bridge (KCB) released recently by MS Open Tech to make it simple to integrate Kinect for Windows scenarios and experiences in creative software development. The openFrameworks and Cinder communities have already adopted the Kinect Common Bridge. If you have been using either framework and experimented with KCB, you will find yourself right at home with its added capabilities. In the spirit of “focusing on the cool stuff” that motivates creative developers, starting the sensor and displaying a simple video treatment with face tracking can now be achieved in less than 10 lines of code! Incorporating Kinect for Windows magic in software experiences couldn’t be any easier…

    To learn more about this update of Kinect Common Bridge, read our post on our new blog: http://aka.ms/KCBUpdate

  • Interoperability @ Microsoft

    Vagrant and Hyper-V Provides Managed DevOps Work Environments

    • 0 Comments

    imageMS Open Technologies Inc. (MS Open Tech) has released code for Vagrant that brings initial Hyper-V support to this very popular DevOps tool.

    Vagrant managed work environments can be controlled by a single, consistent workflow, to help you maximize the productivity and flexibility of your team. Alongside industry-standard provisioning tools such as shell scripts, Chef, or Puppet, Vagrant supports a range of end-to-end management and deployment scenarios to create a single, consistent workflow that spans your entire team:

    Developers can define and build virtual machines (VMs) that contain everything required to get work done. These VMs are disposable and consistent and thus ensure that you, and all your colleagues, are developing in the same environment. As the Vagrant documentation points out this means you can say goodbye to "works on my machine" bugs.

    Operations engineers can use these same disposable environments and consistent workflows to develop and test infrastructure management scripts. Vagrant plays well with whatever operations tooling you use. When that tooling is designed for interoperability between platforms, such as Chef and Puppet, Vagrant really sets the operations team free.

    Designers can use Vagrant to ensure that they are working in the exact same environment as the rest of their team, regardless of their chosen host operating system. Designers can run a simple command to bring up the latest configuration and thus will no longer be working in an environment that differs from the development or deployment environments used by the rest of their teams.

    The Vagrant community has been asking for Hyper-V support for some time, in hopes of extending the experience across a heterogeneous platform environment. MS Open Tech are working with the Vagrant project to further enhance this work, specifically we are working on packaging, provisioning shell, and Chef & Puppet bootstrapping.

    We encourage interested parties to get their hands on the Vagrant Hyper-V provider, play with it, examine it and provide us with feedback!

  • Interoperability @ Microsoft

    February 22 is International Open Data Day – Celebrate with our Tutorial or create your own!

    • 0 Comments

    Open Data Day Events around the world!

    Here at Microsoft Open Technologies, Inc. we have a lot of fun working with Open Source Software every day. For those who may be interested in sharing the experience, Microsoft is sponsoring several International Open Data Day events over the next few days, notably CodeAcross 2014 in multiple venues worldwide. Have a look here for details on CodeAcross events sponsored by Code for America. In Canada, Make Web Not War is organizing several events in Toronto, and out West, There is also an Open Data Summit in Vancouver. You can also find Open Data Day Hackathons and other events near you by accessing the Open Data Day events map.

    An Open Tutorial

    To contribute to Open Data Day I’ve put together a tutorial to show you how to enable a solution on Windows Azure that combines three open themes – Open Government, Open Data, and Open Source Software (OSS). The result in this case, is a reference map illustrating the locations of more FAA-licensed aircraft dealers across the United States. For the Open Government piece, I have selected open domain data provided by the US Federal Aviation Administration - the FAA Aircraft Registry. I have chosen to use the open source MongoDB to store data. I use the Open Data Protocol (OData) via Windows Communication Foundation (WCF) in Windows Azure to provide easy connectivity to the MongoDB data, and I use Microsoft PowerBI for Office365 to easily plot and visualize the data on a map.

    Here’s a screen shot of the finished product:

    clip_image002

    Happy Open Data Day! Let us know how you plan to celebrate the occasion in your corner of the world.

  • Interoperability @ Microsoft

    February Updates to the Windows Azure Toolkit for Eclipse – SSL Support, plus new JDKs, Windows Azure configurations and more

    • 0 Comments

    Microsoft Open Technologies, Inc., has released the February preview of the Windows Azure Toolkit for Eclipse. This release includes multiple updates since our October 2013 release, including SSL support, additional support for the latest versions of GlassFish and the Azul Zulu OpenJDK package, a new option to choose the A5 instance on Windows Azure, Windows Server 2012 R2, some tweaks to the menu, and a new “Auto” option for private endpoints. Have a look at the documentation update for full details.

    Support for SSL

    Instead of having the user manually configure every Java-based Web Application Server running on Windows Azure to accept SSL certificates and authentication, which varies from server to server, our Engineering team has developed what we call SSL Offloading. Offloading allows you to easily enable HTTPS support (one of our most requested features) without requiring configuration of SSL on your Java application server. Instead, SSL authentication is handled set up by the Toolkit automatically, using IIS + and Application Request Routing (ARR) under the hood in your VM. So after the decryption, your Java Web application Server receives (and responds with) just standard HTTP. This also works in conjunction with sticky sessions for session persistence and the ACS filter for user authentication.

    To enable SSL offloading, select the Worker Role you want to work with in Role Properties, then click on Enable SSL Offloading (HTTPS), as shown below. You will be asked to confirm an endpoint change to 443 (HTTPS) and provide a certificate. Note that this change will only happen for this role. This allows you to have some roles without SSL, for example for a Website home page, but other roles with SSL enabled for access only by authenticated users or requiring more secure communication.

    clip_image001

    Customizable certificate name (CN) in the self-signed certificate creation UI

    You may already be familiar with the Toolkit’s UI to easily generate self-signed certificates for testing purposes. (It’s recommended that you use a certificate verified by a recognized SSL certificate provider for staging and production to avoid users seeing browser warnings about untrusted connections and unsigned certificates).

    Previously, you could generate certificates with the same hard-coded Common Name (CN) for all new certificates. Specifying your own name helps track and manage multiple certificates in the Windows Azure portal used for different purposes (like SSL vs Remote Desktop). Here’s a sample of the enhanced UI in action:

    clip_image002

    Support for GlassFish OSE 4

    Glassfish OSE 4 joins the multiple versions of Tomcat, Jetty, JBoss and Glassfish OSE 3 as the latest option to include as part of your deployment package. As before, you can test your deployments locally in Eclipse before you deploy with full emulation.

    Here’s the full list of Application Servers recognized by the Toolkit in this release:

    clip_image003

    More Options for Azul’s Zulu Open JDK package

    In July we announced a partnership with Azul Systems, and in September Azul Systems released Zulu, an OpenJDK Build for Windows Azure leveraging the latest advancements from the open source community. Zulu has been an option under the 3rd party JDK Deployment Project options since September’s announcement, and since then Zulu v7 update 40 and now update 45 are available options that the Toolkit knows how to deploy automatically under the hood in Windows Azure, without you having to download them to your local computer first.

    Here’s an example of the new JDK selection, showing a deployment being configured with the latest version of Zulu selected to be part of the deployment package:

    clip_image004

    In other OpenJDK news, Java developers working with the latest Azul Zulu OpenJDK v1.7 package on 64 bit Windows Server machines can now automate the process using the Microsoft Web Platform Installer (WebPI). Full details here.

    New Features when Publishing: Select a Target OS

    In the October release we moved the target OS from the project properties a more prominent place in the publishing process. In this release we’ve added Windows Server 2012 R2 support for the target OS:

    clip_image005

    A5 VM support

    In this release we’ve also added support for the Windows Azure A5 instance configuration. The A5, A6, and A7 instances provide larger amounts of memory more suited for high-throughput applications. Detailed configurations of these instances are available here.

    clip_image006

    A new Toolbar button look, and a new button for creating Self-Signed Certificates

    The engineering team engaged a designer to create new menu icons to match the standard eclipse “flat” look. They’re still all there in the same place, but they look a little different now. We’ve also added a button to the self-signed certificate creation wizard. The graphical face lift of the Toolkit is still a work in process with more coming later, primarily motivated by Windows Azure’s own latest graphical scheme updates.

    clip_image007

    clip_image008

    Set private endpoint ports to Auto

    Now you can set a private port to “auto” for input endpoints and internal endpoints, the equivalent of using “*” as the private port number in CSDEF. Previously, you could only assign a specific port number. The auto setting lets you rely on Windows Azure, when appropriate, to assign a free port number to that endpoint.

    clip_image009

    Getting the Toolkit

    Here are the complete instructions to download and install the Windows Azure Toolkit for Eclipse, as well as updated documentation.

    Ongoing Feedback

    We listen and respond to the community, you are our compass to know we’re going in the right direction! We value your feedback on how we can make it make it easier to test and deploy your Java applications on Windows Azure and we appreciate code contribution proposals. As always, let us know how the latest release works for you and how you like the new features!  To send feedback or questions, just use MSDN Forums or Stack Overflow.

  • Interoperability @ Microsoft

    Now Available through Microsoft’s Web Platform Installer: Azul Zulu OpenJDK Package for Windows

    • 0 Comments

    We have great news for Java developers planning to deploy the latest Azul Zulu OpenJDK v1.7 package on 64 bit Windows Server machines. Now you can automate the process using the Microsoft Web Platform Installer (WebPI).

    This new offering is the result of our partnership with Azul, which has produced Zulu, a version of the Azul OpenJDK built for the Windows Azure Platform. In October we also integrated Zulu into our Windows Azure Plugin for Eclipse with Java. Today’s announcement continues our plan of making Java support on Windows Azure as flexible and simple as possible.

    If you’re not familiar with the Web PI, then your SysAdmin has probably been holding out on you. It’s a free and extremely useful tool that automates the download and installation of products and applications designed for the Microsoft Web Platform as well as most popular free web applications via its built-in Windows Web Application Gallery.

    The Zulu Web PI Application Gallery entry downloads the latest Zulu distribution from Azul Systems, The process is simplified, as WebPI can unzip it, automatically set your JAVA_HOME to reference Zulu, and add Zulu references to your PATH environment variable to set Zulu as the default JVM on that machine. 

    Windows Server installation

    For now, we recommend - for Windows Server only (not Eclipse clients) - using the Web PI installer to install. This is due to an Eclipse bug we’ve discovered during testing, which we are working to resolve.

    Workaround for Eclipse Clients

    If you would like to install Zulu it on your client computer and you use Eclipse as your Java IDE, we have discovered at least one issue in Eclipse that will result in intermittent hangs if Zulu is used as Eclipse’s JVM. If you are keen to try it out with Eclipse anyway, then the known workaround is to start Eclipse with additional command line parameters: -vmargs -XX:MaxPermSize=256m. If you encounter other issues, then let Azul and/or us know. If you have an Eclipse account and this issue is affecting you, please vote up the importance of bug 426422.

    Step-by-Step Installation on Windows Server

    Log on to your 64 Bit Windows Server as a user with administrative privileges, open a browser and navigate to http://www.microsoft.com/web/downloads/platform.aspx

    Next, click on the big green “Free Download” button to install the Web Platform Installer:

    clip_image002

    The Installer will start as soon as it’s downloaded. The first screen you see is the “Spotlight” Screen, listing the most popular and/or newest packages featured in the Web PI Installer:

    clip_image004

    You will need to click to the “Applications” tab to find theZulu Installer in the Web Application Gallery.

    clip_image006

    NOTE: Entries are ordered by number of downloads, not alphabetically. If you do not see it listed at the top, it may be easiest to search for “Azul Zulu, OpenJDK v1.7”.

    clip_image008

    Click on the Add button, then click install:

    clip_image010

    As mentioned earlier, during Installation, the latest Zulu distribution from Azul Systems will automatically download, as well as set your JAVA_HOME to reference Zulu, and then add references to your PATH environment variable to set Zulu as the default JVM on that machine. 

    Once this process is complete, you are ready to deploy Java applications!

    We’re always looking for ways to enhance the developer experience and to make life easier for Java developers on Windows Server and Windows Azure, so please let us know whether you find this to be a useful tool..

    And watch this space for more exciting news coming soon!

  • Interoperability @ Microsoft

    New Open Source Portable Class Library for SQLite

    • 0 Comments

    Microsoft Open Technologies has released an interesting Portable Class Library for SQLite, offering .Net developers a single API for integrating SQLite across Windows Store, Windows Phone and .Net 4.5 apps.

    The library is released as open source and is available as a NuGet Package (and source code).

    To learn more, read the full blog post on msopentech.com/blog

  • Interoperability @ Microsoft

    Pointer Events Progress: Mozilla and Blink Communities Reach a Significant Engineering Milestone

    • 0 Comments

    As stated in the Blink 2014 goals, the Blink team considers Pointer Events as one of their priorities to improve the mobile Web platform experience. And it has recently shown evidence of their commitment to Pointer Events by checking in touch-action functionality into the code base and making it available through an experimental flag.

    Likewise, the Mozilla Firefox team has approved a patch submitted by Nick Lebedev from Akvelon that implements the same functionality. This is the result of months of great work in the OSS community where multiple engineers from different companies contributed their design ideas and engineering insights.

    Learn more on Pointer Events progress reading our latest blog post on our new Web site : http://aka.ms/pointereventsinfirefox

  • Interoperability @ Microsoft

    MS Open Tech is expanding into China!

    • 0 Comments

    Today I’m happy to report that Microsoft Open Technologies is expanding its presence to China with a new subsidiary – Microsoft Open Technologies (Shanghai) Company Limited (MS Open Tech Shanghai), headquartered in the Minhang District of Shanghai. Below are the full details of the new subsidiary and office. We’re thrilled to kick off 2014 with this investment in China and look forward to investing in the local market, partnering with the open source communities, and through the development of programs and software, promoting a vibrant technology ecosystem.

    Check out the news on our new blog: http://aka.ms/openinchina

  • Interoperability @ Microsoft

    Acceptance of Media Source Extensions as W3C Candidate Recommendation will accelerate adoption of dash.js

    • 0 Comments

    Microsoft Open Technologies, Inc. welcomes the news that the Media Source Extensions (MSE) specification has moved to Candidate Recommendation (CR) at the W3C.MSE Overview showing how MSE allows JavaScript to directly manipulate media buffers.

    Media Source Extensions allow JavaScript to manage media buffers directly.

    This is a critical step towards broad adoption of the dash.js project which provides cross-browser support for MPEG-DASH adaptive streaming video using MSE, a W3C specification that extends the HTMLMediaElement (video and audio) to allow JavaScript to generate media streams for playback.  This capability facilitates a variety of use cases, including adaptive streaming and time shifting live streams.

    What is dash.js and why is MSE important to it?

    At MS Open Tech we have been working on a project called dash.js for some time. Dash.js is an open source MPEG-DASH video player written in JavaScript.

    The objective of the dash.js project 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 includes Chrome and Internet Explorer 11, other browsers have indicated their intent to support MSE in the future. Consequently, here at MS Open Tech we are very pleased to see MSE move to Candidate Recommendation status.

    Our primary reason for contributing to dash.js is to make it easier for third parties to build adaptive streaming video players using MPEG-DASH, the latest ISO standard for Internet media streaming. This standard represents the future of online video, more than 75% of surveyed European broadcasters plan to adopt MPEG-DASH by the middle of this year.

     What does it mean to be a Candidate Recommendation?

    Advancement to Candidate Recommendation is an explicit call to those outside of the W3C and its Working Groups for implementation and technical feedback. The latest version of both Chrome and Internet Explorer already provide implementations of MSE but this progression to Candidate Recommendation increases the likelihood that other browsers will support it. In fact, Mozilla has already made great progress in their implementation of MSE. Similarly the WebKit project is working towards MSE support.

    For dash.js this is a very important step forwards. Since dash.js uses MSE to deliver MPEG-DASH content in browser based applications an increased level of browser support for the standard will help to ensure dash.js a truly viable MPEG-DASH player. This was clearly illustrated during a recent dash.js panel at Streaming Media West where representatives of MS Open Tech., Google and Digital Primates all identified increased adoption of MSE in browsers as being at the top of their wish list for the dash.js project.

    Invitation to dash.js

    With MSE moving to Candidate Recommendation, it appears that work is also well underway for standards-compliant streaming to become a reality across browsers who plan to adopt the MPEG-DASH standard. We are excited about these developments, and encourage you to start exploring the possibilities  using dash.js to create an MPEG-DASH player in just a few lines of JavaScript.

  • Interoperability @ Microsoft

    New release - Tx (LINQ to Logs and Traces)

    • 3 Comments

    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

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

    • 12 Comments

    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>
    <html>
      <head><title>Adaptive Streaming in HTML5</title></head>
      <body>
        <h1>Adaptive Streaming with HTML5</h1>
        <video id="videoplayer" controls></video>
      </body>
    </html>

    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:

    <script>
    // 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);
                      player.startup();
                      player.attachView(document.querySelector("#videoplayer"));
                      player.attachSource(url);
    }
    </script>

    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:

    <style>
    video {
      width: 80%;
      height: 80%;
    }
    </style>

    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

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

    • 0 Comments

    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: http://aka.ms/msopentechcontributestoangle

  • Interoperability @ Microsoft

    Windows Azure Provisioning of Linux and Windows via Puppet

    • 0 Comments

    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 '172.16.0.0/12,192.168.0.0/16' \
    --dns-servers 'dns1-1:10.10.8.8,dns2:172.8.4.4' \
    --subnets 'subnet-1:172.16.0.0:12,subnet-2:192.168.0.0:29'

    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=https://management.database.windows.net:8443/ \
    --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

    • 0 Comments

    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.

    Updates:
    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

    • 1 Comments

    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.

    Updates:

    Schedulers

    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

    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

    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.

    Subjects

    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

    • 0 Comments

    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: ['10.0.0.0/20'],

            Subnets: [

              {

                Name: 'sub1',

                AddressPrefix: '10.0.0.0/23'

              }

            ]

          }

        ]

      }

    };

    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: 10.0.0.0

    info: Using default address space cidr: 8

    info: Using default subnet start IP: 10.0.0.0

    info: Using default subnet cidr: 11

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

    verbose: Subnet [Starting IP/CIDR (Max VM Count)]: 10.0.0.0/11 (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:

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

    help:

    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.

  • Interoperability @ Microsoft

    AMQP 1.0 is one step closer to being recognized as an ISO/IEC International Standard

    • 0 Comments

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

    Microsoft Open Technologies is excited to share the news from OASIS that the formal approval process is now underway to transform the AMQP 1.0 OASIS Standard to an ISO/IEC International Standard.

    The Advanced Message Queuing Protocol (AMQP) specification enables interoperability between compliant clients and brokers. With AMQP, applications can achieve full-fidelity message exchange between components built using different languages and frameworks and running on different operating systems. As an inherently efficient application layer binary protocol, AMQP enables new possibilities in messaging that scale from the device to the cloud.

    Submission for approval as an ISO/IEC International Standard builds on AMQP’s successes over the last 12 months, including AMQP 1.0 approval as an OASIS Standard in October 2012 and the ongoing development of extensions that greatly enhance the AMQP ecosystem.

    The ISO/IEC JTC 1 international standardization process is iterative, and consensus-driven. Its goal is to deliver a technically complete standard that can be broadly adopted by nations around the world.

    Throughout the remainder of this process, which may take close to a year, the MS Open Tech standards team will continue to represent Microsoft and work with OASIS to advance the specification.

    You can learn more about AMQP and get an understanding of AMQP’s business value here. You can also find a list of related vendor-supported products, open source projects, and details regarding customer usage and success on the AMQP website: http://www.amqp.org/about/examples.

    If you’re a developer getting started with AMQP, we recommend that you read this overview. For even more detail and guidance here’s a Service Bus AMQP Developer's Guide, which will help you get started with AMQP for the Windows Azure Service Bus using .NET, Java, PHP, or Python. Also, have a look at this recent blog post from Scott Guthrie, called Walkthrough of How to Build a Pub/Sub Solution using AMQP.

    Whether you’re a novice user or an active contributor the community, we’d like to hear from you! Let us know how your experience with AMQP has been so far by leaving comments here. As well, we invite you to connect with the community and join the conversation on LinkedIn, Twitter, and Stack Overflow.

  • Interoperability @ Microsoft

    ActorFx Updates – New features, improved performance and a new plugin to ease deployment to Windows Azure

    • 0 Comments

    From the ActorFx team:

    Claudio Caldato, Principal Program Manager Lead, Microsoft Open Technologies, Inc.
    Brian Grunkemeyer, Senior Software Engineer, Microsoft Open Technologies Hub

    Today Microsoft Open Technologies, Inc, would like to share the news of a new version of ActorFx, V0.7.

    ActorFx provides an open source, non-prescriptive, language-independent model of dynamic distributed objects for building highly available objects, including data structure objects, via a standardized framework and infrastructure. ActorFx is based on the idea of the mathematical Actor Model for cloud computing.

    With this release, developers now have a more stable code base (based on the Windows Azure SDK 2.0, a new prerequisite) onto which we will build new features that will make ActorFX a more solid framework for building highly distributed applications.

    The new release is based on an improved version of the Actor Runtime’s replication support, and contains improvements in several areas:

    • A new AddOnce method for our List actor.
    • Embraced async methods more fully.  Look at GetActorProxyAsync for a good example.
    • Delay-loaded our JavaScript and IronPython language packs.

    We also improved reliability and fixed some issues within the networking layer:

    • Continuations on IActorPromises work better.
    • Significantly better error handling for network problems, including adjusted timeouts & retry logic.
    • Better error handling on the server side for a number of scenarios.

    On the deployment side, we now have a way to deploy an ActorFX app on Windows Azure using a new plug-in to streamline the deployment process. The instructions are here.

    Note that the 0.7 release also requires that the Windows Azure SDK 2.0 be installed before you download the code from the CodePlex site.

    Be sure to subscribe to the CodePlex feed and our Blog to be kept current on the latest developments.

    If you are using ActorFx in implementations, we’d like to hear more about how you’re using it, how it’s useful to you and how it can be improved. We are looking forward to your comments/suggestions, and stay tuned for even more cool stuff coming in our next release!

  • Interoperability @ Microsoft

    Showcasing Open Source Community Contributors to Entity Framework, ASP.NET and Web API for Visual Studio

    • 1 Comments

    Microsoft Open Technologies, Inc.’s Hub engineering program continues to be a great place for community contributors to work and collaborate on key MS OpenTech projects. We’re thrilled to see so many non-Microsoft contributors. Thank you!

    In this post we’re showcasing (and thanking!) some of the open source developers who independently contribute code to improve key MS OpenTech open source projects: ASP.NET MVC, Web API, and Web Pages, SignalR and the Entity Framework.  Microsoft Corp. regularly takes great code contributions from these projects and builds them into the products that our customers know and love: they’re shipped with Visual Studio, in the Visual Studio Gallery and even sometimes in the core product. Working with community authors has earned us some wonderful community relationships in the process

    Entity Framework (EF)

    Entity Framework continues to benefit from input from a strong open source community since MS Open Tech announced it was open source about a year ago.

    Here’s a great intro to EF and EF concepts for newbies.

    Scott Guthrie did a great job of describing the latest and greatest features in this blog post. Back in May we highlighted a few developers and their open source contributions, and today we’d like to introduce you to some of them and dive a little deeper into their contributions.

    Independent Developer Profile – Erik Ejlskov Jensen

    Erik Ejlskov Jensen
    Erik Ejlskov Jensen

    In May we mentioned community contributions by Erik Ejlskov Jensen (ErikEJ), specifically ESqlCeFunctions, that provide a SQL Compact equivalent to SqlFunctions. I caught up with Erik on a quick call from his home in Denmark to share some information and answer a few questions about his contributions and experience so far. Erik has been working with Entity Framework since before it was a CodePlex project, originally working with ADO.

    Erik is coordinator for several projects on CodePlex and follows dozens of projects as well. One of his most notable contributions is the open source SQL Server Compact Toolbox, available as a Visual Studio add-in or a standalone app. Erik describes the toolbox in great detail in this Channel 9 video.

    Erik uses many other CodePlex projects in his own projects, so giving back to the community by providing tools to help others seems like a natural response to all the support and assistance he’s received from community members and tools in his development career.

    On his motivations for sharing enhancements for the Entity Framework, Erik says “The Entity Framework team has been very open towards contributors, you really feel that your contributions are appreciated and they take your contributions seriously”.

    Independent Developer Profile – Unai Zorilla Castro

    Unai Zorrilla Castro
    Unai Zorrilla Castro

    Unai Zorrilla Castro (UnaiZorrilla) also has been an independent open source contributor to EF since before it was EF – he was the author of several popular ADO books. He’s always been interested in the data access layer. Unai had the chance to meet with Daniel Simmons and Diego Vega on the EF team, who helped him understand the full capabilities of EF.

    Unai had several ideas for features that he thought could be interesting for the product. He’s contributed more than 10 open source additions to the product so far, some minor like changes to the code generated by migrations, and some more complex, like the creation of a pluralization service as a public and configurable service from DbConfiguration. He’s also contributed some interesting methods such as AddFromAssembly in ConfigurationRegistrar that enables entity mapping loading without having to specify entities in ModelBuilder, and AddRange and RemoveRange in DbSet that provides an optimized method to include or remove a set of entities.

    Unai believes that contributing has been more beneficial for himself than for the community, team or the product. Being able to work with the core EF team members is one of the best ways he has been able to learn and improve as a professional developer. Contributors must follow the same process as internal Microsoft developers, which provide a great source of important feedback.

    Unai also independently contributes to other Microsoft open source projects for the Microsoft team in Spain. Currently he’s involved in EF6.Contrib, a repository for draft contributions to EF 6 which for various reasons cannot be included in the core product code.

    As far as tips for other community members who want to contribute to the community, Unai says “don’t be afraid of having your code reviewed, feedback is always positive no matter what. We should dare to do these kind of things. Maybe they will work out or not, but if we don’t try we are sure to fail.”

    ASP.NET Web API

    Our ASP.NET and Web API for Visual Studio are also blockbuster Hub projects, with unprecedented interest and downloads of ASP.NET MVC, Web API, and Web Pages source code. Visit http://www.asp.net to find official installers, documentation, tutorials, samples, and videos.

    Independent Developer Profile - Brock Allen - CORS in the ASP.NET Web API

    Brock Allen
    Brock Allen

    The recently introduced CORS runtime configuration inside the ASP.NET Web API could not have been possible without the help of CORS developer Brock Allen (brockallen) . Brock video-conferenced in remotely to help show CORS Support for the ASP.NET Web API in this great video on Channel 9, also featuring Dan Roth and Yao Huang Lin of Microsoft’s ASP.NET Web API team.

     
     
     
     

    Independent Developer Profile - Tim McCall – Attribute Routing in MVC and Web API 2

    Tim McCall (mccalltd – CodePlex, NuGet) was integral in building the original open source project that eventually became the new Attribute Routing feature in ASP Web API 2, which gives you more control over the URIs in your web API. For more information, have a look at the tutorial: Create a REST API with Attribute Routing in Web API 2.

    Tim got involved as a contributor earlier this year when he saw Dan Roth talking about his project, MVC Attribute Routing on Microsoft’s Channel 9, and invited the author to get in touch with him to talk about the project “if he sees this video.” Tim was inspired by the Ruby-based Sinatra Framework, and wanted to make something as easy to use in ASP.NET. He created a NuGet package that really helped the solution take off and generated a lot of positive responses on Twitter as well. The NuGet and Twitter attention also helped his solution climb to the top of results in popular search results, generating even more attention.

    His advice to developers who want to contribute: “If you see code or features that you don’t like, and you have a way to make it better, make the change and contribute the change so others can see it. Get some open source code out there even if it’s not perfect, but works, and appreciate and respond to community members who take the time to provide feedback. Also, make sure to package your projects using a good open source package manager like NuGet, npm, or RubyGems to get extra exposure for your projects.”

    Summary

    We again thank all the contributors who have participated so far in improving MS Open Tech Hub projects via community contributions. If you have a contribution that we should be highlighting, please contact us by leaving a comment below, as you can see from our developer profiles in this post we are glad to help promote your contributions in any way we can!

    And if you’re new to the MS Open Tech Hub projects and want to get started, get the latest instructions on installing the Visual Studio 2013 Preview, release notes, documentation and tutorials here. Also, source code contributions to ASP.NET MVC, Web API, and Web Pages source code can be made by starting here, and Entity Framework contributors can get started here.

  • Interoperability @ Microsoft

    Katana 2 is Available!

    • 0 Comments

    Microsoft Open Technologies, Inc. is pleased to share the news of a new version of KatanaKatana 2.0.0!

    Recent Updates

    We’ve mentioned a few developments over the last couple of months leading up to this release – specifically, as part of updates to the MS Open Tech Hub projects, the new MVC 5 security feature based on OWIN authentication middleware was provided by the Katana team. Also, the new server implementation for IETF HTTP/2.0 Draft announced earlier this month made several new end points available using Katana server components.

    There has also been news coverage of OWIN and Katana on ASP.NET and Michael Desmond at MSDN Magazine provides a good overview as well. You can also see a great video overview of Katana via Web Camps TV on Channel 9.

    Introduction to Katana

    Katana creates a server implementation of the work done in the independent open source project called the Open Web Inter­face for .NET (OWIN). OWIN defines interactions between Web servers and application components. The vision for Katana is a broad and vibrant ecosystem of Microsoft .NET Framework-based Web servers and application components. Katana adds some of these OWIN-based capabilities with built-in bindings to frameworks such as SignalR and the ASP.NET Web API.

    Developers are able to pick and choose features that they want to use in their applications by selecting middleware components and installing them into their project via NuGet. Katana middleware are then added to an application pipeline where they can handle incoming requests. Steps for adding packages and configuring the pipeline are documents are here.

    This model reduces interactions between Web servers and local applications to a very simple, portable interface. A great overview of the features and syntax are in this ASP.NET article - Getting Started with the Katana Project and more details for developers are in this White Paper.

    Features of Katana 2.0

    Katana 2.0.0 has a number of features of note for IT pros and Developers. A fill list is here in the project Roadmap, but here are some of the highlights:

    Build your own OWIN Server: Microsoft.Owin.Hosting provides default services and helper types for building your own OWIN-compatible host and Microsoft.Owin provides a framework-agnostic set of types for working with HTTP and Web socket requests and responses. Also Microsoft.Owin.Host.HttpListener provides a non-IIS HTTP server to OWIN applications, which can be hosted on a Katana or a custom host application (such as a console application or Windows service).

    Basic Diagnostics for OWIN: Microsoft.Owin.Diagnostics - Middleware components that provide some rudimentary tracing and diagnostics capabilities, as well as a default startup page.

    Authentication: Options for Authenticating Cookie-based forms authentication, OAuth2, Facebook, Google, Twitter and Microsoft Live accounts.

    Running and Debugging in Visual Studio: The OwinHost NuGet package gives developers the ability to have a complete F5 experience in Visual Studio 2013 using its new custom server capability.

    Get Involved

    Our community is small, but dedicated and growing! Add your name to our CodePlex project, join in on our discussions, and contribute via our new Contributor GitHub. See you there!

  • Interoperability @ Microsoft

    From HTML5DevConf: Pointer Events interoperability public demo of Firefox build integrating MS Open Tech’s contribution

    • 0 Comments

    Today, at the HTML5 Developers Conference, Microsoft demonstrated a build of Mozilla Firefox supporting Pointer Events. This Nightly build integrates Microsoft Open Technologies’ contribution to the Mozilla open source project to add support for Pointer Events, the new W3C specification to handle multiple input types in Web apps and sites. In his talk, Jacob Rossi, Program Manager in the Internet Explorer team, presented the steady progress toward interoperable support for Pointer Events through standardization at W3C, and highlighted MS Open Tech’s contributions to open source projects WebKit, Blink and Gecko.

    To learn more, read our full blog post here.

  • Interoperability @ Microsoft

    Updated Windows Azure Plugin for Eclipse with Java – New JDK and App Server Options, Simplified Publishing

    • 1 Comments

    Microsoft Open Technologies, Inc., has released the October preview of the Windows Azure Plugin for Eclipse with Java. This release includes multiple updates since our September release, including support for version 2.2 of the Windows Azure SDK, and some changes to eclipse version support and how JDKs and App Servers are deployed. For full details, have a look at the documentation update.

    Today’s release includes an update for the new OpenJDK build for Windows Azure from Azul, new Application Server version (Jetty 9), and a few improvements to increase the speed and convenience of configuring and deploying your Java code to Windows Azure.

    Support for the Azul Zulu OpenJDK package

    In July we announced a partnership with Azul Systems, and in September Azul Systems released Zulu, an OpenJDK Build for Windows Azure leveraging the latest advancements from the open source community. At that time, Zulu became an option under the 3rd party JDK Deployment Project options, so you would not have to find and upload it to make it part of your deployment package. Now, Zulu (OpenJDK v7 based offering) update 40 is the latest available option there.

    Here’s an example of the new JDK selection, showing a deployment being configured with the latest version of Zulu selected to be part of the deployment package:

    clip_image002

    Support for the Jetty Application Server

    In addition to multiple versions of Tomcat, GlassFish, JBoss and Jetty, the latest version of the plugin also knows how to include the Jetty Application Server version 9 as part of your deployment package. As before, you can not only deploy these App Servers to Windows Azure, but also test your deployments locally in Eclipse before you deploy with full emulation. Here’s the full list of Application Servers supported in this release:

    clip_image004

    One-click to your Cloud Service from Eclipse

    In previous versions of the plugin, you would publish, wait for the activity status to change to “Running,” then switch to your browser and navigate to your deployment’s main page in the Windows Azure Portal, and click on a link to view your deployed code in action.

    Although that was not terribly complicated, we’ve made it even simpler – now you can click on the link in the activity log when the green status bar changes to “Published,” and the deployment location will open in a new browser windows automatically. This saves time for those of you looking for quick code iterations!

    clip_image006

    New Features when Publishing: Select a Target OS and Overwrite Deployment

    In past plugin versions, you would set a target OS in the project properties before publishing, which was easy to overlook and challenging to find. Now the Target OS can be specified each time you publish to Windows Azure as part of the publishing process. Also, in the past, if you did not unpublish your deployment from the target site before trying to publish again, Windows Azure would return a “409 conflict” error. The new Overwrite previous deployment check box permits publishing to the same target without first manually stopping and unpublishing the previous deployment.

    Here’s the new Publish to Windows Azure dialog with both new features highlighted:

    clip_image008

    .

    Add a role from the Eclipse Project Context menu

    In previous releases, adding and configuring Windows Azure Roles was a multi-step process, starting with going to the deployment project’s properties. Now, new Roles can be added more directly via the “Add Role…” command on the Project context menu:

    clip_image010

    Latest Windows Azure Libraries for Java (v0.4.6) included

    The Plugin includes the latest distribution of the Windows Azure Libraries for Java (v0.4.6), in its usual location in the Eclipse library list (as “Package for Windows Azure Libraries for Java (by MS Open Tech”).

    Getting the Plugin

    Here are the complete instructions to download and install the Windows Azure Plugin for Eclipse with Java, as well as updated documentation.

    Ongoing Feedback

    Several of these features are a direct result of feedback we’ve received form the community, and we’re listening and taking action. We value your feedback on how we can make it make it easier to test and deploy your Java applications on Windows Azure. As always, let us know how the latest release works for you and how you like the new features!  To send feedback or questions, just use MSDN Forums or Stack Overflow.

  • Interoperability @ Microsoft

    After Pointer Events, here comes Interoperable Panning Experiences through CSS Scrolling Snap Points

    • 0 Comments

    Today, Microsoft submitted a new proposal to the W3C – “CSS Scrolling Snap Points”, designed to enable well-polished panning experiences for touch and other input devices, based on APIs introduced in IE10 and improved in IE11. This submission comes on the heels of Pointer Events, as one of the ways Microsoft is advancing the Web by providing rich immersive experiences across browsers on different platforms.

    Jacob Rossi and Matt Rakow, Program Managers at Microsoft, describe in their blog post how only 2 lines of CSS enable Snap Points in the Internet Explorer to deliver experiences like swiping through a list of photos or pages of an article.

    “CSS Scrolling Snap Points” submission demonstrates Microsoft’s commitment to advance touch on the Web by contributing this innovation. You can follow and contribute to the conversation on the W3C mailing list.

    Asir Vedamuthu Selvasingh, Principal Program Manager - Microsoft Open Technologies, Inc.
    Adalberto Foresti, Principal Program Manager - Microsoft Open Technologies, Inc.

  • Interoperability @ Microsoft

    Free Webinar on October 16 - MongoDB, Jaspersoft and Windows Azure: Building Open Source Reporting and Analytics in the Cloud

    • 0 Comments

     

    Microsoft Open Technologies, Inc., Jaspersoft and MongoDB have teamed up to deliver a webinar on building open source reporting and analytics for your NoSQL solutions in the Cloud. Join our free webinar on October 16 to see how to deliver interactive reporting, analytics, and dashboards for MongoDB on Windows Azure, enabling rapid, meaningful, actionable insights for NoSQL data stores.

    In this webinar we will cover:

    • An overview of Windows Azure
    • An overview of MongoDB
    • The Jaspersoft BI Suite
    • Key considerations in selecting cloud vs. on-premises data systems

    The webinar is 1pm EST, this Wednesday, October 16th, so Sign-up now!

  • Interoperability @ Microsoft

    MS Open Tech releases Kinect Common Bridge, a simple open source way for infusing the magic of Kinect in creative development

    • 2 Comments

    clip_image002

    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

    New contribution from MS Open Tech: full Windows 8 and Windows Phone 8 support in Cocos2D-X

    • 0 Comments

    Using (or planning to use) Cocos2D-X to build mobile cross platform games in C++? You will certainly love the news: Microsoft Open Technologies, Inc. is making it easy to port a Cocos2D-X game to the Windows Store and to Windows Phone. Today, at the event Cocoa China, Zhe Wang, founder of Cocos2D-X praised MS Open Tech’s contribution that opens up a wide range of Windows devices to the popular open source game engine Cocos2D-X, allowing developers to easily reach new customers for their games.

    Check out our full blog post on msopentech.com/blog

  • Interoperability @ Microsoft

    Announcing the first Node hackathon in Redmond, November 7-8

    • 0 Comments

    The MS Open Tech team has been working with the Node.js community for more than two years to deliver a great experience on Windows and Windows Azure for Node developers. It’s been an exciting and rewarding experience, and we’re looking forward to taking it to the next level as we continue the journey together.

    To that end, we’re happy to announce the first Node/Windows Hackathon, sponsored by Microsoft Open Technologies, Inc. This event will take place in Redmond on November 7-8, 2013, at the new “Garage” facility currently under construction in building 27 of the Microsoft campus. The event is open to everyone. We’ll be sharing more details in the next few days, but we’re announcing the dates now so that you can reserve the date and make plans to participate.

    This will be a great opportunity for the Node community to get to know the many Microsoft developers who love to work with Node.js as much as they do, and we’ll work together to test new scenarios, explore new features, and make the Node experience even better for Windows and Windows Azure developers. There will be plenty of pizza and beverages, lots of time for hacking as well as socializing, and we’re planning a surprise announcement at the event that we think will make Node developers on Windows very happy.

    Please sign up at the EventBrite registration page and get involved if you’d like to participate, or have suggestions for projects and scenarios to explore.  We’d love to see you in Redmond for the event, but if you can’t be there in person we’ll also have opportunities for online attendance. (Details for online participation will be posted soon.)

    See you in November!

    Claudio Caldato, Scott Blomquist, Doug Mahugh
    Microsoft Open Technologies, Inc.

  • Interoperability @ Microsoft

    Azul Systems Releases Zulu, an OpenJDK Build for Windows Azure, in Partnership with MS Open Tech

    • 1 Comments

    Today I’m happy to report the news that our Microsoft Open Technologies, Inc., (MS Open Tech) partner Azul Systems has released the technology preview for Zulu, an OpenJDK build for Windows Servers on the Windows Azure platform. Azul’s new OpenJDK-based offering has passed all Java certification tests and is free and open source.

    Azul’s new build of the community-driven open source Java implementation, known as OpenJDK, is available immediately for free download and use under the terms of the GPLv2 open source license.

    Built and distributed by Azul Systems, Zulu is a JDK (Java Development Kit), and a compliant implementation of the Java Standard Edition (SE) 7 specification.  Zulu has been verified by passing all tests in the Java SE 7 version of the OpenJDK Community TCK (Technology Compatibility Kit).

    Azul has a lot of information about this exciting news on their website, including this press release that we would like to share.

    With the support of Azul Systems and MS Open Tech, customers will be assured of a high-quality foundation for their Java implementations while leveraging the latest advancements from the community in OpenJDK. The OpenJDK project is supported by a vibrant open source community, and Azul Systems is committed to updating and maintaining its OpenJDK-based offering for Windows Azure, supporting current and future versions of both Java and Windows Server. Deploying Java applications on Windows Azure will be further simplified through the existing open source MS Open Tech Windows Azure Plugin for Eclipse with Java.

    Key details of Azul Zulu include:

    • Free and open source offering, based on OpenJDK
    • Compatible with Java SE 7, verified using Java SE 7 OpenJDK Community TCK
    • Integrated with MS Open Tech’s Windows Azure Plugin for Eclipse with Java tooling
    • Patches and bug fixes contributed back to the OpenJDK community by Azul
    • ISV-friendly binary licensing for easy embedding with 3rd party applications
    • Availability for download and immediate use

    Executives of both companies highlighted the benefits of this new effort:

    Jean Paoli, president of MS Open Tech said, “Java developers have many development and deployment choices for their applications, and today MS Open Tech and Azul made it easier for Java developers to build and run modern applications in Microsoft’s open cloud platform.” 

    Scott Sellers, president and CEO of Azul Systems said, “Azul is delighted to announce that Zulu is fully tested, free, open source, and ready for the Java community to download and preview – today. We are looking forward to serving the global Java community with this important new offering for the Azure cloud.”

    Zulu is available for download at www.azulsystems.com/products/zulu. Zulu Community Forums are listed on the Stack Overflow website under the tags “azure zulu” and “azul zulu.”

    MS Open Tech and Azul Systems first announced our partnership on July 24, 2013

    Customers and partners of Microsoft and Azul interested in participating in future Zulu tech previews are also invited to contact Azul at AzureInfo@azulsystems.com for additional information. And of course, please send questions and feedback to our MS Open Tech team directly through our blog.

    Gianugo Rabellino, Senior Director of Open Source Communities, MS Open Tech

  • Interoperability @ Microsoft

    A sneak peek at four new Nagios and Zabbix plugins for Windows Azure

    • 0 Comments

    Busy times at MS Open Tech! Today we’d like to share with the Azure community a sneak peek at our work on four new plugins for Nagios and Zabbix. It’s early days, but we care about your feedback and love working in the open, so effective today you can take a look at our github repo and see what we are working on to make monitoring on Azure easy and immediate for users of Nagios and Zabbix.

    What you can play with today is:

    • A plugin for Windows Azure Storage, that will allow you to monitor ingress, egress, requests, success ratio, availability, latency, and more
    • A plugin for Windows Azure SQL Databases, that will allow you to monitor ingress, egress, requests, success ratio, availability, latency, etc
    • A plugin for Windows Azure Active directory, that will allow you to monitor changes in user and group information (userdelta, groupdelta)
    • A plugin for Windows Azure Platform-as-a-Service (PaaS)  Worker Roles, that will allow you to monitor cpu, memory, asp.net stats, web service stats, and other compute stats

    Note that all compute plugins can be also used to monitor Windows Azure Infrastructure-as-a-Service (IaaS) Virtual Machines

    The steps for installing and running the plugins are documented in this ReadMe.

    Nagios and Zabbix have established themselves as popular choices for lightweight enterprise-class IT and infrastructure monitoring and alerting. The vibrant open source community built around Nagios has contributed hundreds of plugins (most of which are also compatible  with Zabbix) to enable  developers, IT professionals and DevOps pros to monitor a variety of entities, from servers to databases to online services. We love to help our customers that know and use those tools, and we are committed to supporting monitoring on Azure using open source technologies.

    This is a work in progress, and we’d love to hear from users to make our implementation of these popular tools the best it can be. The Plugins are available on our github repo, and we welcome your feedback and contributions. Send us a pull request if you’d like to contribute to these projects, or leave a comment/email if you have some feedback for us. See you on github!

  • Interoperability @ Microsoft

    Add a pinch of Pointer Events to your Apache Cordova or PhoneGap app thanks to MS Open Tech

    • 0 Comments

    clip_image0023_thumb1Here is a new open source plugin for Apache Cordova by Microsoft Open Technologies, Inc. The plugin makes it easy to use the Pointer Events model in your Cordova or PhoneGap projects.

    To learn more about Pointer Events and see a cool demo of this plugin in action, check out the full post on our new blog: http://aka.ms/pointereventscordova

  • Interoperability @ Microsoft

    OData v4.0 approved as Committee Specification by the OASIS Open Data Protocol Technical Committee

    • 1 Comments

    Microsoft Open Technologies, Inc is pleased to announce the approval and publication of OData Version 4.0 Committee Specification (CS) by the members of the OASIS Open Data Protocol (OData) Technical Committee. As we reported back in May, this brings OData 4.0 one step closer to becoming an OASIS Standard.

    The Open Data Protocol (OData) uses REST-based data services to access and manipulate resources defined according to an Entity Data Model (EDM).

    The Committee Specification is published in three parts; Part 1: Protocol defines the core semantics and facilities of the protocol. Part 2: URL Conventions defines a set of rules for constructing URLs to identify the data and metadata exposed by an OData service as well as a set of reserved URL query string operators. Part 3: Common Schema Definition Language (CSDL) defines an XML representation of the entity data model exposed by an OData service.

    The CS also includes schemas, ABNF components, Vocabulary Components and the OData Metadata Service Entity Model.

    You can also download a zip file of the complete package of each specification and related files here.

    Join the OData Community

    Here are some resources for those of you interested in using or implementing the OData protocol or contributing to the OData standard:

    · Visit OData.org for information, content, videos, and documentation and to learn more about OData and the ecosystem of open data producer and consumer services.

    · Join the OData.org mailing list.

    · Check out the #OData discussion on twitter.

    · Join the OASIS OData technical committee (OData TC) and contribute to the standard.

    · Send comments on OData version 4.0 to the OASIS OData Technical Committee

    Our congratulations to the OASIS OData Technical Committee on achieving this milestone! As always, we’re looking forward to continued collaboration with the community to develop OData into a formal standard through OASIS.

  • Interoperability @ Microsoft

    Cocos2D-X on the highway to the Windows Store

    • 0 Comments

    from:
    Adalberto Foresti - Principal Program Manager - Microsoft Open Technologies, Inc.
    Olivier Bloch - Senior Technical Evangelist - Microsoft Open Technologies, Inc.

    MS Open Tech has just published a code patch that introduces WinRT support in Cocos2D-X. This update will be welcome by those in the game development community who were looking forward to leveraging the wealth of capabilities offered by Cocos2D-X to write Windows Store games. It will be likewise welcome by publishers of existing Cocos2D-X based games on other platforms, who will find the effort of porting their code to a Windows Store app significantly reduced, thereby opening up new revenue opportunities for their previous work.

    Cocos2D-X is an open source C++ game engine aiming at extending the reach of the popular Cocos2D game engine to other OS platforms beyond iPhone. Cocos2D-X is used by many mobile gaming creators, from hobbyists to major publishers like Zynga, Konami, Glu, Gamevil and KingSoft.

    "Thanks to the big contribution from Microsoft Open Technologies, Inc., Cocos2d-x v2.1.15 is now successfully ported to Windows RT. Developers who want to publish their games on the Windows Store to extend their reach to Windows devices can take action now. I'm so glad to see Microsoft is embracing open source communities in such a way :)" - Zhe Wang, founder of Cocos2d-x.

    Here is a short demo of Cocos2D-X running on Windows 8.1.

    While MS Open Tech is collaborating with the Cocos2D-X community to integrate the changes back into the Cocos2D-X master branch in GitHub, you can already access the WinRT-enabled code on GitHub. So try it out, and get a head start on publishing your next Cocos2D-X game on the Windows Store!

  • Interoperability @ Microsoft

    Great video - MongoDB Data Analysis with Jaspersoft on Windows Azure

    • 0 Comments

    Jaspersoft is an open source Java-based Business Intelligence suite that has experience in the cloud – to date, they have over 500 customers running Cloud solutions. Jaspersoft has put together this great video of the JasperReports server visualizing a million rows of GitHub archive data to show how Windows Azure, NoSQL, and open source Java BI solutions can work together.

    This video shows Jaspersoft accessing MongoDB via their native connector on Windows Azure. The Jaspersoft native connector provides near real-time connectivity, providing great performance for even complex visualizations, as you’ll see in this video:

     

     

    Jaspersoft runs on both Linux and Windows, meaning it can also run on either the Windows or Linux platform on Windows Azure as well. Jaspersoft also has native connectors for several other data sources, including Microsoft SQL Server as well as a variety of other relational data platforms and formats, and Hadoop. Because Jaspersoft is written in Java, it can be a key part of any solution that you create using our other Windows Azure – enabled Java Tools as well.

    Do you use Jaspersoft on Windows Azure, or have a Java solution running on Windows Azure that you’d like to share? Let us know in the comments and maybe we’ll highlight your solution in a future post!

  • Interoperability @ Microsoft

    ActorFx Applied in Dynamically Distributed Social Media Apps

    • 0 Comments

     

    From the ActorFx team:

    Brian Grunkemeyer, Senior Software Engineer, Microsoft Open Technologies Hub

    Joe Hoag, Senior Software Engineer, Microsoft Open Technologies Hub

     

    Today we’d like to talk about yet another ActorFx example that shows the flexibility and tests the scalability of the ActorFx Framework. 

    ActorFx provides an open source, non-prescriptive, language-independent model of dynamic distributed objects for building highly available data structures and other logical entities via a standardized framework and infrastructure. ActorFx is based on the idea of the mathematical Actor Model for cloud computing.

     

    The example is a social media example called Fakebook that demonstrates a simple way to apply actors to large-scale problems by deconstructing them into small units.  This demo highlights ActorFx’s ability to dramatically simplify cloud computing by showing you that surprisingly few concepts are necessary to build a scalable and interesting application with a relatively simple programming model.  The example is part of the latest build on the ActorFx CodePlex site.

     

    ActorFx Framework Background

    The ActorFx Framework lets developers easily build objects for the cloud, called actors.  These actors allow developers to send messages, respond to messages, and create other actors.  Our Actor Framework adds in a publish/subscribe mechanism for events as well.  Using these, we have built the start of a Base Class Library for the Cloud, including CloudList<T> and CloudDictionary<TKey, TValue> modelled after .NET collections.  We’ve harnessed the ActorFx Framework’s pub/sub mechanism to build an ObservableCloudList<T> that is useful for data binding collections to UI controls.  These primitives are sufficient to build a useful system we call Fakebook, a sample social media application. 

     

    Fakebook Design

    Social media apps have many properties that map quite well to actors.  Most data storage is essentially embarrassingly parallel – users have their own profile, their own photos, their own list of friends, etc.  Whenever operations span multiple users, such as making friends or posting news items, this requires calling into other people’s objects or publishing messages to alert them to new information.  All of these map well to the Actor Framework’s concept of actors, including message passing between actors and our publish/subscribe event pattern.

    Let’s decompose a social network into its constituent parts.  At the core, a social network provides a representation of a person’s profile, their friends, their photos, and a newsfeed.  All of this is tied together using a user name as an identifier.  Other features could be added on top of this, such as graph search, a nice timeline view, the ability to play games, or even advertising.  However, those are out of scope for our Fakebook sample, which is demonstrating that the core parts could be built using actors. 

    See Figure 1 for a clear breakdown of the UI into constituent parts.

    clip_image002

    Figure 1 - Fakebook UI Design

     

    The core idea of Fakebook is to model a user as a set of actors.  In our model, a Fakebook user is represented by the following actors:

    ·         A person actor that tracks their name and all basic profile information (like gender, birthday, residence, etc). 

    ·         A friends list, which is a CloudList<String> containing the account name of all friends.

    ·         A photos dictionary, which is a CloudStringDictionary<PictureInfo>, mapping image name to a type representing a picture and its interesting characteristics (such as author, licensing information, etc).

    ·         A set of news posts made by the author, as a CloudList<String>.

    ·         A newsfeed actor that aggregates posts from all of a person’s friend’s news feeds.

    Interaction between actors can be done in one of two ways: actor-to-actor method calls (either via IActorProxy’s Request or Command methods), or via events sent via our publish/subscribe mechanism.  For Fakebook, we use a mix of approaches.  When constructing other actors or adding friends, we use IActorProxy’s Request. 

    The newsfeed actor works entirely based on publish/subscribe events.  The newsfeed actor is subscribed to all of the person’s friends’ news posts.  Similarly, the newsfeed actor is also subscribed to the person’s friends list, so whenever a friend is added or removed (unfriended), the newsfeed actor knows to subscribe or unsubscribe as appropriate.  For interacting with the client, we also use publish/subscribe messages.  The client can data-bind an ObservableCloudList<T> to a UI control like a ListBox.  This allows users to seamlessly push updates from the actor in the cloud to the client-side UI.  See Figure 2 for an example showing how publish/subscribe messages are sent between actors as well as from actors to the client UI.

     

    clip_image004

    Figure 2 - Fakebook Publish/Subscribe messages:  Actor-to-Actor and Actor-to-Client

     

    We’ve extended support for LINQ queries to allow transforming observable collections from one type to another.  This is very useful for bridging from cloud-based data types (such as account names stored as strings) to rich client-side view model types (such as a FakebookPerson object).  LINQ’s Select can be used to change an ObservableCloudList<String> into an IEnumerable<FakebookPerson>, and we’ve done the engineering work to preserve the event stream of updates as well.  Consider the following code:

     

        privateObservableCloudList<String> _friends = …;

     

        // Here, we need an ObservableCloudList<String> converted to an observable sequence

        // that also passes through INotifyCollectionChanged events.  When exploring how to

        // build this, we settled on using a Select LINQ operator for our type.  Due to

        // some problems with C# method binding rules, we had to add an interface

        // to express the right type information.  But, this works.

        var people = _friends.Select(accountName =>

            newFakebookPerson(App.FabricAddress, accountName, App.ConnectThroughGateway));

        Dispatcher.Invoke(() => FriendsListBox.ItemsSource = people);

     

    By using client-side view model types, a client application’s data binding code can easily access properties such as a person’s first & last names as well as profile picture.  This information is not as easily obtainable via just the user’s account name, so a transformation like this helps keep the level of abstraction high when writing client apps while preserving the dynamic nature of the underlying data. 

     

    Deploying Code

    Fakebook’s NewsFeed and Person actors were implemented in a curious way.  For our collection actors, we built the application then used a complex, actor-specific deployment directory structure with many supporting files in place to describe the actor.  This has the advantage that our infrastructure knows what a list actor is, in great detail.  However, for Fakebook a more flexible approach was employed.  The NewsFeed and Person actors both define .NET assemblies with a type each that contains a number of actor methods.  But we use our empty actor implementation to deploy these assemblies to each of them.  This makes it easy to update the implementation, and is a bit easier to manage.

    For the Actor Runtime’s infrastructure, we create a service consisting of the empty actor app, called “fabric:/actor/fakebook”.  We then create instances of that service with names like “fabric:/actor/fakebook/People” and “fabric:/actor/fakebook/Newsfeed”.  Using a partitioning scheme, we then create individual IActorStates for individual accounts.  So an account name like “Bob.Smith” is used as a partition key for the People and Newsfeed actors.  Fakebook makes use of similarly partitioned list and dictionary actors as well.

     

    Reliability

    The Actor Framework provides for high availability by allowing multiple replicas of an actor to run within the cloud.  If a machine holding one replica crashes, then we already have other replicas to choose from to continue running the service.  The number of replicas is configurable, and for Fakebook we are using a total of two replicas per service.  The Actor Runtime will designate one as the primary and a second as the secondary.  Additional replicas all become secondaries. 

    As you may have read in the Actor Framework documentation, actors achieve a limited transaction-like set of semantics via a quorum commit.  Changes are not committed to the primary until they are first written to a quorum of secondaries.  After that, the changes are committed to the primary and acknowledged to the client. 

    Meanwhile, requests from the client to an actor are auto-idempotent.  Consider a client that makes a request and never receives an acknowledgement.  This could happen for multiple reasons.  The server could have crashed before completing the operation, after completing the operation & before acknowledging the operation.  Similarly, network connectivity could have been lost.  The Actor Framework solves this via that a unique sequence number for every request, and storing the result of the last request in the actor’s replicated state.  By doing this, if a client issues request #5 and loses its network connection, it can reconnect then safely re-issue request 5.  If the operation already ran, the client will get the previously cached result from actor state.  If the request didn’t successfully complete the first time, the request will now execute.  Importantly, the complexity of handling this is built into the client-side & server-side logic of the Actor Framework, so users do not need to think about this.  They simply call a method.

    One not-yet-implemented feature is persistence.  All data in actors is made highly available via replication across machines, but all that data is stored in memory.  Actor state is not currently persisted to disk or any other network storage mechanism like an Azure blob or table.  One consequence is that if the power goes out to the entire cluster, you lose everything.  This is an active area for future development.

     

    Scalability & Performance

    A traditional database system might model a user using several tables, with one row for profile information, and multiple rows representing friends & images for each person.  Scalability challenges would be hit once you exceed the number of operations possible on an individual database.  (ie, SQL Server’s new Hekaton engine may max out around 60,000 operations/second.)  While databases can go a long ways, enterprises need systems capable of scaling to a much wider scale.  Fakebook is an attempt at building a competing vision for data storage.  While scale up is important, an actor model with relatively easily separable data like Fakebook should be ideal for scale out.  Each actor can maintain its own state in memory, local to that actor.  The hope is a database acting as a single point of failure is not necessary.

    One common criticism of actor models is that while they are easy to write, they require a significant amount of optimization.  We found the same problem, and needed to invest in multi-tenant actors to improve the scalability.  Performance is still very much a work in progress for the Actor Framework, but we hope to show some of the optimizations we found particularly valuable, as well as some we hope to make in the future.

     

    Partitioning

    One of the challenges is to get the most use out of each machine.  There are a finite number of sockets on each machine.  Similarly, new actors require allocating state and entries in a naming table that can slow things down.  The creation of service instances on the Actor Runtime is unfortunately slow and can gate our performance.  Mapping one actor to one process is a horrible idea, and mapping one actor to shared state within a process can often be insufficient.  To solve this, we looked into partitioned service instances for hosting multi-tenant actors.

    Think of partitioning as creating buckets for actors on various machines.  Those buckets can be empty, or you can fill them with multiple actors.  By doing this, the cost of creating the buckets is amortized over the number of partitions.  Each individual actor is created within its appropriate bucket, and receives its own isolated version of actor state.  See Figure 3.

    clip_image006

    Figure 3 - Partitioned List Actors

    This allows for actor creation times to be vastly faster, by about 3 orders of magnitude. 

    Now let’s draw a more complete picture.  The Actor Runtime will use processes on various machines for each service type (like a list service, a dictionary service, our empty actor service, etc).  Each process hosts zero or more service instances (both primaries and secondaries, though let’s ignore secondaries for now).  Processes take a while to spin up and service instances are expensive to create.  In a naïve hosting scenario without partitioning, consider a list service and a dictionary service with many instances, mapping to one collection each.  Here is what will be running on a cluster.  Service instances are in blue below.

    clip_image008

    Figure 4 - Non-Partitioned Hosting

    In the picture above, creating new individual collections requires creating new service instances, which is an expensive operation.  With partitioning in the picture, we create fewer service instances. 

     

    clip_image010

    Figure 5 - Partitioned Hosting

     

    Replication is done in the Actor Framework at the service instance level.  So in this picture, “List A” and “List B” both share the same IActorState in terms of replication.  However, this could lead to conflicts if both lists used a field of the same name, allowing one list to scribble over values from a separate list.  The Actor Framework provides a further level of state isolation (an IsolatedActorState) that is a sub-space within an IActorState.  So partitioned actors share the same replication mechanism & characteristics, but get their own isolated view of their state.

    The mapping from name of an individual list is affected by partitioning.  Without partitioning, the Actor Runtime will load balance at the service instance level and allocates them to machines in a reasonable way.  However when using partitioning, the mapping from name of a list to a list partition is done by hashing the name then mapping it onto a range.  For example, a name like “List A” may hash to a value between 1 and 100, and all hash values in the range 1-25 are mapped to list partition 1, 26-50 to list partition 2, etc.  

    Fakebook employs partitioning for each of the actors it uses – lists, dictionaries, person actors & news feed actors.  This substantially reduced the cost to create new people.

     

    Proxy Problems

    Another challenge involves actor to actor communication, where we use IActorProxy to represent a communications channel between two actors.  Our initial design required a unique proxy object for every actor-to-actor communication, and cached proxies for quick reuse later.  In a simple example, I envisioned 256 people on Fakebook, and each of those 256 people would be a friend with all 255 other people.  However, this approach was flawed.  Keeping those IActorProxy objects cached required keeping just under 64K sockets open.  We tried developing this on one machine and ran out of sockets! 

    To fix this, we are exploring two approaches – sharing sockets when talking between actor partition buckets, as well as ditching the caching & adding in async support for establishing new actor proxies.  We anticipate this will contribute substantial wins.

     

    Batching Data Transfers

    One of the most significant ways to improve performance is to reduce the chattiness of your protocols over the network.  As a simple example, one of our Actor Framework performance tests adds one million integers to a CloudList<T> and sorts them.  Adding one million elements one at a time was horribly inefficient.  Instead, we needed to change the protocol to support batching to get a higher level of performance.  Additionally, readers must note that method calls that turn into network calls are significantly less reliable than normal method calls.  These considerations led to a new interface, IListAsync<T>:

    namespace System.Cloud.Collections

    {

        publicinterfaceIListAsync<T> : ICollectionAsync<T>

        {

            Task<T> GetItemAsync(int index);

            Task SetItemAsync(int index, T value);

            Task<int> IndexOfAsync(T item);

            Task InsertAsync(int index, T item);

            Task RemoveAtAsync(int index);

     

            // Less chatty versions

            Task AddAsync(IEnumerable<T> items);

            Task RemoveRangeAsync(int index, int count);

        }

    }

     

    The AddAsync and RemoveRangeAsync methods will perform much better.  Additionally, since they are async methods, they allow clients to more easily adopt async method calls as a common design pattern, then use continuations to resume execution when those operations have completed.

    A similar change was made to actor methods.  In the example of setting up friendships between multiple people, changing the ForceMakeFriends method to take an array of friends led to a substantial improvement.

    More details on how to run the Fakebook example can be found in the CodePlex site, and we are continuing work on the v0.60 release.   Subscribe to the CodePlex feed and our Blog to be kept up to date on the latest developments.

     

    For those of you who are using ActorFx in implementations, we’d always like to hear more about how it’s useful to you and how it can be improved. We are looking forward to your comments/suggestions, and stay tuned for more cool stuff coming in our next release!

  • Interoperability @ Microsoft

    Continue Prototyping with the Second Implementable Draft of HTTP/2.0 from IETF Standards Community

    • 0 Comments

    In my previous update, I announced the first HTTP/2.0 implementable draft from the HTTPbis Working Group at the Internet Engineering Task Force (IETF).

    Today, I’m pleased to share that the second HTTP/2.0 implementable draft is now available. This draft is next in a series of experimental implementations of HTTP/2.0 and the basis for a future round of interoperability testing at the fourth interim face-to-face meeting currently planned for October, hosted by Microsoft Open Technologies (MS Open Tech) in Bellevue. We are busy updating our Katana server prototype and HTTP/2.0 endpoints in preparation for this meeting.

    Such rapid progress is possible because the HTTPbis working group has continued to meet frequently to accelerate the development of HTTP/2.0. I recently attended HTTP/2.0 related meetings in Germany with representatives from Microsoft, Gabriel Montenegro and Rob Trace.

    HTTP/2.0 at IETF 87 in Berlin

    Gabriel Montenegro presented an updated proposal for Known Startup State for HTTPS TLS Negotiation intended to reduce the complexity of HTTP/2.0 implementations by ensuring that the protocol starts in a known state on both the client and server. Based on the active discussion, additional approaches are currently being explored.

    The related IETF 87 materials are available here - audio is available here in Part 1 and Part 2.

    Application Layer Protocol Negotiation (ALPN) at IETF 87

    The status of Application Layer Protocol Negotiation (ALPN) was reviewed at the Transport Layer Security (TLS) working group and subsequently entered the IETF Last-Call period. Microsoft is one of the co-authors of the draft which is required to support HTTP/2.0 secure negotiation.

    HTTP/2 Third Interim Meeting

    Following the IETF 87 meetings in Berlin, working group members took the train to Hamburg for our third interim face-to-face meeting from 8/1-8/3 at the Adobe offices. The primary focus was to share implementation experiences and perform interoperability testing for the first HTTP/2.0 implementable draft.

    Prior to the meetings, MS Open Tech published the first “complete” server prototype implementation as well as HTTP/2.0 endpoints as part of its contribution to the group effort. This contribution was well-received and MS Open Tech worked closely with client implementers to successfully demonstrate simple interoperability at the meeting.

    By offering the first HTTP/2.0 public endpoints with support for both Upgrade and ALPN negotiation, our intention was to simplify the development of client prototypes for the implementable draft. MS Open Tech is very appreciative of the feedback from members of the working group and will continue to improve our server prototype and support future implementable drafts.

    The complete set of known HTTP/2.0 implementations is tracked on the HTTP/2.0 wiki.

    The related meeting materials are available here:

    The Future

    The working group is meeting on a frequent basis to make progress on HTTP/2.0:

    • 4th interim HTTP/2.0 meeting, October 9 – October 11 hosted by Microsoft Open Technologies, Inc. (with participation from Microsoft product groups) in Bellevue, WA
    • IETF 88, November 3 – November 8 in Vancouver, BC, Canada
    • Proposed 5th interim, January 2014 in Zurich, Switzerland
    • IETF 89, March 2 – March 7 2014 in London, England

    Representatives from Microsoft Corporation and Microsoft Open Technologies, Inc. plan on participating in these meetings and encourage the community to also attend and become more involved in defining the next generation of HTTP at the IETF. And remember, you can either start or continue prototyping with the second implementable draft of HTTP/2.0 from the IETF standards community today. Bring your HTTP/2.0 prototype to Bellevue in October!

  • Interoperability @ Microsoft

    Updated Windows Azure Plugin for Eclipse with Java – Kepler, new Windows Azure SDK, and less is more for deployment options

    • 1 Comments

    Microsoft Open Technologies, Inc., has released The August preview of the Windows Azure Plugin for Eclipse with Java. This release includes support for the new Windows Azure SDK v2.1  (a prerequisite), and some changes to eclipse version support and how JDKs and servers are deployed. Eclipse users may already be seeing plugin update notifications in Eclipse, so please note the Windows Azure SDK prerequisite. For full details, have a look at the documentation update.

    Highlights:

    • Windows Azure SDK Update - This update is in sync with the new Windows Azure SDK v2.1, which is required for the update.
    • Kepler support – For eclipse users working with Kepler, we now support you! Note that going forward we’re testing new plugin releases with Indigo, Juno and Kepler, so our minimum required version is now Indigo. Helios may also work, but we’re no longer testing our plugins on Helios as of this version.
    • Include-in-package option JDKs and Application Server configuration is removed. Back in May we introduced the much more efficient and team-friendly option of auto-uploading the JDK and server to a blob then deploying from there. To pave the way for future enhancements, we’re replacing the option to include your JDK and app server in the deployment package to this as of this plugin release. Projects that still use the include option will automatically be converted to the deploy-from-blob option. Here’s a sample of what you’ll see in the deployment project UI now for the JDK:

    clip_image001

    And here’s what you’ll see when selecting a Web server for deployment:

    clip_image002

    Getting the Plugin

    Here are the complete instructions to download and install the Windows Azure Plugin for Eclipse with Java, as well as updated documentation.

    Ongoing Feedback

    This update is another in our company’s ongoing work to make it easier to deploy Java applications on Windows Azure. As you might have read, last month we partnered with Azul Systems on an OpenJDK build for Windows Azure. This plugin is an important element for our customers working in heterogeneous development environments.

    As always, let us know how the latest release works for you and how you like the new features!  To send feedback or questions, just use MSDN Forums or Stack Overflow.

  • Interoperability @ Microsoft

    Start Testing With First Implementation of IETF HTTP/2.0 Draft from MS Open Tech

    • 0 Comments

    Further to our recent Blog on the first HTTP/2.0 implementable draft from the IETF, Microsoft Open Technologies, Inc. (MS Open Tech) is releasing an HTTP/2.0 server prototype based on the implementable draft. This is the first in a series of experimental implementations of HTTP/2.0 that will enhance the performance of the web.

    This implementation of HTTP/2.0 is based on the recent version 4 implementable draft and has been created on a new Microsoft open source C#-based web stack - Katana server. The prototype supports header compression (draft-ietf-httpbis-header-compression-01), HTTP/2.0 features such as stream multiplexing, and negotiation mechanisms such as ALPN and HTTP upgrade, as well as the ability to establish direct HTTP/2.0 connections. It does not yet implement server push or flow control. Apart from the server component, this prototype also includes a test command line client that makes HTTP/2.0 protocol requests to the server.

    To enable the community to try out this implementation of HTTP/2.0, we have also published endpoints (note these require HTTP/2.0 client included in source):

    http://http2katanatest.cloudapp.net:8080/ - HTTP endpoint.
    https://http2katanatest.cloudapp.net:8443/ - HTTPS endpoint using ALPN.

    These endpoints will only work with an HTTP/2.0-enabled browser or client, and host static pages that represent common websites, based on examples from the Internet Explorer Test Drive site.

    As communicated in our previous Blog, participants in the IETF HTTP working group have committed to a wide range of implementations. MS Open Tech is actively engaged and prototyping further HTTP/2.0 implementations based on the Katana project. Early interoperability testing is planned for the third interim face-to-face IETF meeting in August. We encourage you to start trying out the first implementation of HTTP/2.0 from MS Open Tech today – feel free to test using the endpoints listed above or download the code and try out your static websites on the Katana server.

    Parashuram Narasimhan

    Senior Program Manager, Microsoft Open Technologies, Inc.

  • Interoperability @ Microsoft

    New CU-RTC-Web Prototype from MS Open Tech Demonstrates WebRTC Video Support Without SDP Offer/Answer

    • 0 Comments

    Supporting ORCA, a new W3C Community Group for WebRTC

    Today, Microsoft Open Technologies, Inc., (MS Open Tech) is publishing a new prototype implementation of CU-RTC-Web on HTML5Labs that continues our exploration of alternatives to the SDP Offer/Answer approach. The CU-RTC-Web approach is based on two basic principles: that JavaScript APIs for realtime communications should not be based on passing under-specified SDP blobs and should not require implementation of the SDP Offer/Answer state machine. These principles, first articulated in the original CU-RTC-Web proposal have continued as basic tenets within our prototyping efforts, which have demonstrated the practicality of the approach with running code.

    This prototype demonstrates how to support H.264/AVC video without SDP, by building the appropriate JavaScript code and without introducing any changes in the specification. Previous prototypes of CU-RTC-Web included demonstrations of cross-platform interoperability (voice interop between Chrome on a Mac and IE10 on Windows) and roaming between cellular and Wi-Fi connections. Because CU-RTC-Web is a contribution to the ongoing standardization process, it does not represent a planned feature of any Microsoft product, and the prototypes should not be used for the development of commercial products.

    As experience with the WebRTC APIs has accumulated, more and more developers posting on the IETF and W3C mailing lists are reporting that their attempts to develop WebRTC applications have been impeded by the underspecified complexities of SDP and the unwieldy Offer/Answer model. As a result, several participants collaborated on an internet draft WebRTC JavaScript Object API Rationale that critiques the SDP Offer/Answer approach to a WebRTC API and outlines the rationale for an alternative API. Erik Lagerway of HookFlash has also provided a well-crafted Blog post on the issues – WebRTC JS Object API Model.

    At MS Open Tech, we are excited to see this work toward an “ObjectRTC” API. ObjectRTC and CU-RTC-Web share the same principles (e.g. no SDP Offer/Answer) and we look forward to a public discussion of how to synthesize the best ideas from both proposals. Pursuing multiple interoperability experiments such as CU-RTC-Web and ObjectRTC is how standardization works at its best. If you wish to participate in the discussion, an ObjectRTC Community Group (CG) has been established at the W3C - ORCA.

    The recent vibrant and open discussion as well as availability of an open source repository for the development of an alternative JavaScript API represents a major step forward for the real-time communications developer community and the principles of the open web. As these developments evolve, MS Open Tech will continue its prototyping efforts, which may in future be based on a constructive synthesis emerging from the Working Group or Community Group activities.

    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 working code, so as to provide details on how the API could be used to solve real-world use cases in an interoperable way.
    • Encourage others to develop comparable interoperable example code for their proposals.
    • 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.

    This is a great time for the community to come together to evaluate the draft specs to make sure they’re understandable, interoperable and implementable, and synthesize ideas to enable them to work together. We encourage you to engage with one or more of the discussions in IETF and W3C, such as ORCA CG, and we offer this new prototype to contribute to that discussion with running code. The latest CU-RTC-Web 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 tried out the prototype, and stay tuned for even more to come.

  • Interoperability @ Microsoft

    Microsoft Open Technologies and Azul Systems® to Partner on an OpenJDK™ Build for Windows Azure

    • 0 Comments

    New OpenJDK-based offering will be free and open source, with contributions back to the community

    O'Reilly OSCON, PORTLAND, Ore. – July 24, 2013 – Microsoft Open Technologies, Inc. (MS Open Tech), a subsidiary of Microsoft Corp. dedicated to bridging Microsoft and non-Microsoft technologies, and Azul Systems®, the award-winning leader in Java runtime scalability, announced today at the O’Reilly Open Source Convention (OSCON) that they are partnering on a Windows distribution build of the community-driven open source Java™ implementation, known as OpenJDK™, for Windows Server on the Windows Azure platform.

    As part of this partnership, Azul Systems will build, certify and distribute a compliant OpenJDK-based distribution meeting the Java SE specification for use with Windows Server environments on Azure. The new OpenJDK-based offering will be freely distributed and licensed under the GNU General Public License version 2 (GPLv2) with the Classpath Exception.

    Open source is now a key building block for enterprise IT strategies. Customers also require choice in where and how they deploy new and existing Java applications. Through this partnership the global community of Java developers gain access to open source Java on the Windows Azure cloud. It will also serve the growing number of Java applications that both small and medium businesses and global enterprises depend on to run their businesses.

    Scott Sellers, Azul Systems president and CEO, said, “This initiative is all about bringing Java to the masses in the cloud. We will be providing a fully open and unconstrained Java environment — with open choice of third-party stacks — for developers and essential applications deployed on Windows Azure.”

    Jean Paoli, president of MS Open Tech said, “Microsoft Open Technologies and our Azul Systems partner are motivated by a common goal to make the world of mixed IT environments work better together for customers. This partnership will enable developers and IT professionals to ensure their mission-critical apps deploy and run smoothly on Windows Azure, using the open source Java environment they prefer. With Azul Systems rich Java heritage and strong customer track record,  partnering was a natural decision.”

    A June 14, 2013, Forrester Research report, titled: “The Forrester Wave™: Enterprise Public Cloud Platforms, Q2 2013,” states “Microsoft’s strategy for Windows Azure is very strong for two reasons … creating a single platform spanning many clouds is achievable, valuable, and a natural act for Microsoft. … Microsoft’s openness to other platforms, languages, databases, development environments, and tools is genuine and virtually assures Windows Azure’s relevance as technology evolves.”

    With the support of Azul Systems and MS Open Tech, customers will be assured of a high-quality foundation for their Java implementations while leveraging the latest advancements in OpenJDK. The OpenJDK project is supported by a vibrant open source community, and Azul Systems is committed to updating and maintaining its OpenJDK-based offering for Windows Azure, supporting current and future versions of both Java and Windows Server. Deploying Java applications on Windows Azure will be further simplified through the existing open source MS Open Tech Windows Azure for Eclipse Plugin with Java.

    The new Azul Systems offering will be available later this year. For more information and updates about the new product or the MS Open Tech and Azul Systems partnership, subscribe to the MS Open Tech Blog. Customers and partners of Microsoft and Azul are also invited to contact Azul at AzureInfo@azulsystems.com for additional information about Azul’s Early Access Program.

    About Azul Systems
    Azul Systems (Azul) is an award-winning provider of Java runtimes for the enterprise. Based in Sunnyvale, California, Azul has been delivering Java solutions for more than 10 years with deep domain knowledge in Java runtimes, elastic memory, Pauseless Garbage Collection, and runtime resource monitoring. Azul is also a member of the Executive Committee of the Java Community ProcessSM (JCP) and has licenses to the OpenJDK Community Technology Compatibility Kit (TCK). Azul's enterprise products enable organizations to simplify their Java-based operations while achieving lower average latencies, improved scalability, greater response time consistency and dramatically improved operating costs. For additional information, visit: http://www.azulsystems.com.

    About Microsoft Open Technologies
    Microsoft Open Technologies, Inc. (MS Open Tech), is a wholly owned subsidiary of Microsoft dedicated to advancing the company’s investment in openness including interoperability, open standards and open source. MS Open Tech is focused on providing our customers with even greater choice and opportunity to bridge Microsoft and non-Microsoft technologies together in heterogeneous environments, because we’re convinced that openness is good for our customers, good for the community and good for our business. For additional information on MS Open Tech, visit www.msopentech.com.

    # # #

    All other product and service names mentioned are the trademarks of their respective companies.

  • Interoperability @ Microsoft

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

    • 5 Comments

    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

    Developers and Citizens Can Now Harness the Power of More Open Data with CKAN and Windows Azure

    • 0 Comments

    Open data is becoming increasingly important for governments and public research. Based on the openness and interoperability of the Windows Azure platform, open data technologies are enabling more open data to be available in the cloud. CKAN (Comprehensive Knowledge Archive Network) is one of the most popular open data platforms in use by Governments, universities and enterprises around the globe. Here at Microsoft Open Technologies, Inc. we are pleased to see open source platforms such as CKAN taking advantage of the scalability, flexibility, openness and interoperability features of Windows Azure.

    Deploy CKAN in the Cloud using VM Depot and Windows Azure

    CKAN is an open source, web-based data management system that makes data accessible by providing tools to streamline publishing, sharing, finding and using data. CKAN is aimed at data publishers (national and regional governments, universities, companies and organizations) wanting to make their data open and available. The CKAN project is maintained by the Open Knowledge Foundation (OKFN) and implementations are commonly used as a public platform for various government data catalogues, such as the UK's http://data.gov.uk and US http://data.gov. Indeed, the UK Meteorological Office (Met Office) is using the capabilities of CKAN and Windows Azure to host their weather data archives and make the data broadly available via http://data.gov.uk/metoffice-data-archive.

    Developers wishing to deploy a CKAN installation in the cloud can now do so using the CKAN images available on VM Depot. Microsoft Public Sector and Microsoft Open Tech has partnered with OKFN who have provided CKAN Version 2 as an Ubuntu VM running on Windows Azure. There are two methods to install CKAN on Azure using the images available on VM Depot: through the management interface and using the command line tool. For a step-by-step guide to deploying CKAN on Windows Azure, see the CKAN Wiki.

    CKAN and Azure in Yokohama City

    Yokohama City, which is the largest city in Japan, recently published its Yokohama Open Data Solution using CKAN running with Windows Azure and supported by the Japan Linked Open Data Initiative. This is the first implementation in Japan of CKAN and Windows Azure for a local open data catalogue. As well as Japanese, the catalogue is available in several languages, including English – see more here http://data.yokohamaopendata.jp/en/.

    Windows Azure and OData

    Data that is hosted on Windows Azure can also be published using the Windows Azure Marketplace which utilizes the OData open data protocol. For example, because the Windows Azure Marketplace provides support for OData, citizens and developers can easily analyze the aforementioned UK National Weather data using an OData feed which allows the use of tools such as PowerPivot within Excel. This provides unprecedented access to powerful meteorological data including hourly, daily, and five-day forecasts - see the Microsoft in Government Blog Big Weather, Big Data, and That Little Device You Carry for further details on how this data is being used. Based on a collaboration between Citrix, IBM, Microsoft, Progress Software, SAP AG, WSO2, and others, we recently announced that the OASIS OData Technical Committee initiated a public review of OData v4.0 which is expected to become an OASIS Standard in 2013.

    These open data initiatives add to the many open data projects based on Windows Azure. Together they facilitate openness and transparency in public data. This work provides an extremely solid foundation upon which open data services can be built. When coupled with our work on cross platform client side tooling, developers are provided with an environment in which new and exciting opportunities are revealed. We look forward to working with you as we strive to open yet more data.

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

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

  • Interoperability @ Microsoft

    The Developer’s Dilemma: How Do You Reach a New Audience without Spending Hours Recoding?

    • 0 Comments

    MSOpenTech_whiteboard_v3PERSP

    One of the greatest challenges of today’s developer is to develop lasting code that works across multiple platforms and devices. Because ultimately as creators, don’t we all want everyone (and anyone) to be able to access and appreciate our hard work? Writers want their books read. Singers want their songs heard. Developers want….well, you get the idea.

    Open source technologies are one of the solutions enabling developers to extend their reach reusing their skills and code as communities contribute adding support for new platforms all the time. Windows has always been a great playground for developer communities and many open source technologies already support Windows devices.

    clip_image002The Enyo team is a great example of how communities are considering all modern platforms to allow developers to concentrate on innovation and broaden their reach to many devices leveraging their existing skills and code. From the get go, they have considered and rapidly supported all the major mobile platforms including Windows Store apps and Windows Phone apps. The Confero app demonstrates how a dev can reach more customers with the same app on iOS, Android, Windows Phone, Blackberry and the Web.

    To further help developers have their code work seamlessly across platforms, Microsoft Open Technologies (MS Open Tech) has been working with many open source communities to add to the list of frameworks and tools developers can use to build Windows Store and Windows Phone apps.

    Whether you are a web developer coding with jQuery or other JavaScript frameworks and tools, or a C++ developer using Cinder, OpenCV, Cocos2DX, Ogre3D, Bullet, Box2D you can now use these frameworks and libraries, and reuse your code to port your existing applications or create new apps for Windows devices.

    Below we’ve broken down by developer the tools and resources MS Open Tech contributed to bring to Windows devices to help you introduce your applications to whole new audiences!

    clip_image004

    For C++ and Gaming Developers

    Do you use C++ for game and graphics development, favoring its native access to hardware acceleration? MS Open Tech has worked closely with various open source communities to contribute code to popular C++ frameworks optimizing them for Windows devices.

    • Cinder, a growing programming library for creative coding in C++ and used for design engineering has just been brought to Windows Store apps by MS Open Tech
    • Cocos2DX and Ogre3D which already supported Windows Phone 8, now fully support Windows Store apps. Porting a Cocos2D or Ogre3D game to Windows devices is now as simple as a copy paste of your code into a Visual Studio project for Windows Store or for Windows Phone.
    • Box2D and Bullet are other great gaming libraries joining the Windows Store apps party!
    • OpenCV, popular computer vision and machine learning framework, can now be used in Windows Store applications as well.

    For Web Developers

    Since Web technologies started to be used to build apps for devices, MS Open Tech has engaged with open source communities such as PhoneGap or jQuery Mobile to make Web developers life easier in their new ventures. From cross platform development tools, to HTML5/JavaScript frameworks, and development tools, we contributed to enable lots of open source technologies on Windows devices that let Web developers build apps for Windows 8 and Windows Phone 8 without wasting hours learning a new platform.

    jQuery now fully supports WinRT (the Windows Runtime, powering Windows Store apps), allowing web developers to build Windows 8 apps reusing their existing code and skills. As a direct result from this work, web developers can also use other frameworks that are based on jQuery, such as Backbone.js, Knockout, CanvasJS, RequireJS to build Windows Store apps. You can learn more about what it took to make jQuery support WinRT on this Nettuts tutorial.

    Developers who use HTML5 to build cross platforms apps for iOS and Android with tools such as Apache Cordova (aka PhoneGap) can easily port their apps to Windows Store and Windows Phone Store as Apache Cordova fully supports both platforms. If you want to learn more about the MS Open Tech’s partnership with Apache Cordova, join us at PhoneGap day in Portland at the end of the week.!

    Many HTML5/JS mobile frameworks come with themes for Windows Phone 8 that were created with MS Open Tech’s technical support. jQuery Mobile, Sencha Touch, Dojo, Enyo fully support Internet Explorer 10 and the WebBrowser control used to encapsulate web code in native apps on Windows Phone, in the exact same way as Android or iOS.

    And don’t forget weinre on Internet Explorer 10 for remote debugging of HTML5 pages and SQLite for data storage – both work seamlessly with Windows Phone 8 and Windows 8.

    Cloud-Based Services for Mobile Developers

    Lucky for us, the Windows Azure team is only a few minutes away by bus or car, and we have worked closely with this team to make robust and flexible mobile services available for developers to build apps that scale on all major platforms so you can focus on innovation, instead of constantly reinventing the wheel.

    Specifically, we built the Android SDK for Windows Azure Mobile Services to complement the support for Windows Store apps, Windows Phone, iOS and HTML5. Giving Android developers access to a range of advanced cloud-based services for storage authentication and notifications.

    We also contributed the Android SDK for the Windows Azure Notifications Hub which lets you broadcast push notifications to millions of devices across platforms from almost any backend hosted in Windows Azure. Last but not least, MS Open Tech created a Backbone adapter for Windows Azure Mobile Data Service, letting you seamlessly sync your data with the cloud using your usual favorite Backbone APIs.

    What’s next?

    All of these projects are ongoing, and we at MS Open Tech are always adding new ones to extend the list of technologies open source communities are bringing to Windows devices. Also, if your favorite open source framework doesn’t work on Windows Store apps or Windows Phone apps, let us know emailing us.

    You will also find that Windows and Visual Studio offer plenty of tools and programs to help you libraries and frameworks support Windows. Jason Olson, Program Manager in the Windows team presented a great session at the last //build/ event about technologies like NuGet, Visual Studio Extensions, and programs such as http://services.windowsstore.com. Check out the webcast on channel 9.

    You can find more detailed resources on developing apps for Windows devices as an open source developer visiting the MS Open Tech’s website. You will learn things such as how to get started with Windows apps development, how to develop for Windows 8 or Windows Phone 8 on a Mac or what were our contributions to these frameworks to make them work seamlessly on Windows devices.

    Now go get your Cocos2D based game or other open source based app run on Windows 8 and/or Windows Phone 8, and let us know how it works!

  • Interoperability @ Microsoft

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

    • 3 Comments

    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

    Start Prototyping With the First Implementable Draft of HTTP/2.0 from the IETF Standards Community

    • 0 Comments

    I am excited to share that the long awaited first HTTP/2.0 implementable draft has been published by the IETF HTTP Working Group at the Internet Engineering Task Force (IETF). This is the first in a series of experimental implementations of HTTP/2.0 that will enhance the performance of the web.

    This draft is a direct outcome from the First Interim Meeting in Tokyo in January - “The most important outcome of the interim meeting in Tokyo was the recommendation to create a HTTP/2.0 ’Implementation Draft Specification’ based on the set of features that have achieved rough consensus in the HTTPBIS working group at this time. The intent is to converge on the details using the IETF HTTPBIS mailing list and then implement and validate the subsequent implementation draft. And then repeat the process based on our experience and new understanding – as Mark Nottingham (IETF HTTPBIS chair) has clarified:

    “Note that we are NOT yet firmly choosing any particular path; rather, we're working on proposals in code as well as text, based upon discussion to date. As such, we're likely to have several such implementation drafts that progressively refine the approach we're taking. I.e., we don't have to agree that the above is what we want HTTP/2.0 to look like -- only that it's interesting to make these changes now, so that we can test them.”

    I am also pleased to announce that Microsoft has made its necessary patents that cover the current draft available under royalty-free terms.

    Participants in the HTTP working group have committed to a wide range of implementations. Microsoft Open Tech is actively engaged and prototyping a HTTP/2 server based on the Katana project. Early interoperability testing is planned for the third interim face-to-face meeting in August.

    I encourage the community to openly and actively review the implementable draft and start implementing today.

    HTTP/2 Second Interim Meeting

    To converge on the remaining issues blocking the first implementable HTTP/2.0 draft, the IETF HTTPBIS working group held its second interim face-to-face meeting on 6/13-6/14 at the Twitter offices in San Francisco. I attended with representatives from Microsoft, Gabriel Montenegro and Rob Trace.

    As captured in the minutes, there was an open and lively discussion of the issues and rough consensus to adopt an updated header compression proposal. Mark Nottingham, the HTTPBIS chair, summarized the meeting outcomes on the mailing list for wider review.

    To accelerate the development of HTTP/2.0 prototypes, I shared the news that Microsoft Open Technologies proposed to contribute our implementation of Application Layer Protocol Negotiation (ALPN) to the OpenSSL community. ALPN is required to support HTTP/2 secure negotiation. More details are available here.

    Looking Ahead for the HTTP/2.0 Standardization Work

    The working group is meeting on a frequent schedule to make progress on HTTP/2.0

    • IETF 87, July 28 – August 2 in Berlin, Germany
    • Third interim HTTP/2.0 meeting, August 5 – August 7 hosted by Adobe in Hamburg, Germany
    • Proposed Fourth interim HTTP/2.0 meeting, October 30 – November 1 hosted by Microsoft Open Technologies, Inc. (with participation from Microsoft product groups) in Bellevue, WA
    • IETF 88, November 3 – November 8 in Vancouver, BC, Canada

    Representatives from Microsoft Corporation and Microsoft Open Technologies, Inc. plan on participating in these meetings and encourage the community to also attend and become more involved in defining the next generation of HTTP at the IETF. And remember, you can start prototyping the first implementable draft of HTTP/2.0 from the IETF standards community today.

  • Interoperability @ Microsoft

    More W3C Pointer Events Implementations with Dojo and IE11

    • 0 Comments

    The W3C Pointer Events emerging standard continues to gain traction, advancing support for interoperable mouse, touch, and pen interactions across the web. Further to our previous Blog where we highlighted the work the Dojo team are doing with Pointer Events, we can now confirm an implementation of Pointer Events has now been added to the patch list for Dojo Toolkit 2.0.

    Pointer Events makes it easier to support a variety of browsers and devices by saving Web developers from writing unique code for each input type. The specification has earned positive feedback from the developer community -- many are already embracing it as a unified model for cross-browser multi-modal input.

    In our previous Blog on W3C Pointer Events, we highlighted feedback shared by members of the jQuery, Cordova, and Dojo communities. The team at Nokia are also excited about progress with the Pointer Events standardization work as Nokia's Art Barstow, Chair of the W3C's Pointer Events Working Group noted:

    Google, Microsoft, Mozilla, jQuery, Opera and Nokia are among the industry members working on the Pointer Events standard in the W3C's Pointer Events Working Group. Pointer Events is designed to handle hardware-agnostic multi user inputs input from devices like a mouse, pen, or touchscreen and we are pleased to see it achieve Candidate Recommendation status in W3C. Pointer Events is a great way for developers to enable better user interaction with the mobile Web and we are excited to see the various implementations around the Web that are already underway. Web developers can start coding with Pointer Events today and we look forward to further progress with the standard and adoption within the Web community.

    Pointer Events at //Build 2013

    During the recent //Build 2013 event, Jacob Rossi of the Internet Explorer (IE) team presented Lighting Your Site Up on Windows 8.1 which included guidance on how Web developers can use the capabilities of Pointer Events to make web sites ‘shine’ across many devices such as touch/mouse/pen, high resolution screens, and screen sizes from phones to desktops, taking advantage of sensors and other hardware innovations. The Internet Explorer 11 Preview implementation has been updated from Internet Explorer 10 to include the latest Candidate Recommendation specification for W3C Pointer Events - see Pointer Events updates in the IE11 Developer Guide for further details.

    As we continue to work with the vibrant Web community, we look forward to seeing even more Pointer Events support across a growing number of JavaScript libraries and frameworks – there’s more to come! To learn more about using and implementing Pointer Events, feel free to check out and contribute to the Pointer Events Wiki on Web Platform Docs which includes community generated polyfills, tests, demos, and tutorials, or join the discussion at #PointerEvents. Point. Click. Touch.

  • Interoperability @ Microsoft

    The Windows Azure Toolkit for Eclipse, July 2013 Preview is ready!

    • 0 Comments

    Microsoft Open Technologies, Inc., has released a new update to the Windows Azure Toolkit for Eclipse. The July 2013 Preview includes a number of enhancements that make it easier for Eclipse developers to work with Windows Azure.

    July 2013 Enhancements

    For the July release, we’ve added an auto option for the Windows Azure Storage account selection in the JDK and server deployment configurations. This enables you to postpone the selection of a specific Windows Azure Storage account until you publish the deployment using the Publish to Windows Azure dialog. The Windows Azure Storage account you select in the Publish Wizard is used when you’re ready to publish. This is an enhancement to the automatic upload of a chosen JDK and App Server to Windows Azure storage that was enabled in the May 2013 release.  See the updated Creating a Hello World Application for Windows Azure in Eclipse tutorial for more details.

    Starting with this release, it’s also possible to deploy a complete cloud application to a new Windows Azure storage account within Eclipse. A key part of this capability is the addition of the New button in the Add Storage Account dialog, which creates a new Windows Azure Storage account without having to leave the Eclipse UI. More information here.

    We’ve also added new features for larger deployments. One often requested feature is the ability to specify a local storage resource as the deployment destination for your JDK and application server, in case your deployment may be too large to be contained in the default approot folder, as is sometimes the case with larger JBoss and JDK v1.7 deployments. More information on large deployments can be found here.  Another handy new feature for large deployments is our support for the new high-memory A6 and A7 Windows Azure Virtual Machines

    We also added new options for Service Endpoints. With the users of Windows Azure by 21Vianet, China in mind in particular, there is also now a way to select the service endpoints of the Windows Azure cloud you target. Service endpoint options for this release are the global Windows Azure platform, the Windows Azure by 21Vianet, China, or a private Windows Azure platform. For more information, see Windows Azure Service Endpoints. Here’s how the Endpoint selection looks in the new release:

    clip_image002

    There is also an update to the Windows Azure Libraries for Java Package, based on version 0.4.4 of the Microsoft Windows Azure Client API. This package contains the latest SDK distribution and their open-source dependencies as an Eclipse library. Add this library to the build path of your project (not the Windows Azure project) and all relevant Windows Azure API libraries will be automatically referenced and included in your WAR file.

    Getting the Plugin

    Here are the complete instructions to download and install the Windows Azure Plugin for Eclipse with Java, as well as updated documentation.

    As always, let us know how the latest release works for you and how you like the new features! To send feedback or questions, just use MSDN Forums or Stack Overflow.

  • Interoperability @ Microsoft

    Extensions and Binding Updates for Business Messaging Open Standard Spec OASIS AMQP

    • 0 Comments

    From:

    David Ingham, Program Manager, Windows Azure Service Bus

    Rob Dolin, Program Manager, Microsoft Open Technologies, Inc.

     

    We’re pleased to share an update on four new extensions, currently in development, that greatly enhance the Advanced Message Queuing Protocol (AMQP) ecosystem.

    First a quick recap - AMQP is an open standard wire-level protocol for business messaging.  It has been developed at OASIS through a collaboration among:

    • Larger product vendors like Red Hat, VMware and Microsoft
    • Smaller product vendors like StormMQ and Kaazing
    • Large user firms like JPMorgan Chase and Deutsche Bourse with requirements for extremely high reliability. 
    • Government institutions
    • Open source software developers including the Apache Qpid project and the Fedora project

    In October of 2012, AMQP 1.0 was approved as an OASIS standard.

     

    EXTENSION SPECS: The AMQP ecosystem continues to expand while the community continues to work collaboratively to ensure interoperability.  There are four additional extension and binding working drafts being developed and co-edited by ourselves, JPMorgan Chase, and Red Hat within the AMQP Technical Committee and the AMQP Bindings and Mappings Technical Committee:

    • Global Addressing – This specification defines a standard syntax for representing AMQP addresses to enable routing of AMQP messages through a variety of network topologies, potentially involving heterogeneous AMQP infrastructure components. This enables more uses for AMQP ranging from business-to-business transactional messaging to low-overhead “Internet of Things” communications.
    • Management – This specification defines how entities such as queues and pub/sub topics can be managed through a layered protocol that uses AMQP 1.0 as the underlying transport. The specification defines a set of standard operations including create, read, update and delete, as well as custom, entity-specific operations. Using this mechanism, any AMQP 1.0 client library will be able to manage any AMQP 1.0 container, e.g., a message broker like Azure Service Bus. For example, an application will be able to create topics and queues, configure them, send messages to them, receive messages from them and delete them, all dynamically at runtime without having to revert to any vendor-specific protocols or tools.
    • WebSocket Binding – This specification defines a binding from AMQP 1.0 to the Internet Engineering Task Force (IETF) WebSocket Protocol (RFC 6455) as an alternative to plain TCP/IP. The WebSocket protocol is the commonly used standard for enabling dynamic Web applications in which content can be pushed to the browser dynamically, without requiring continuous polling. The AMQP WebSocket binding allows AMQP messages to flow directly from backend services to the browser at full fidelity. The WebSocket binding is also useful for non-browser scenarios as it enables AMQP traffic to flow over standard HTTP ports (80 and 443) which is particularly useful in environments where outbound network access is restricted to a limited set of standard ports.
    • Claims-based Security – This specification defines a mechanism for the passing of granular claims-based security tokens via AMQP messages.  This enables interoperability of external security token services with AMQP such as the IETF’s OAuth 2.0 specification (RFC 6749) as well as other identity, authentication, and authorization management and security services. 

    All of these extension and binding specifications are being developed through an open community collaboration among people from vendor organizations, customer organizations, and independent experts. 

    LEARNING ABOUT AMQP: If you’re looking to learn more about AMQP or understand its business value, start at: http://www.amqp.org/about/what.

    CONNECTING WITH THE COMMUNITY: We hope you’ll consider joining some of the AMQP conversations taking place on LinkedIn, Twitter, and Stack Overflow.

    TRY AMQP: You can also find a list of vendor-supported products, open source projects, and customer success stories on the AMQP website: http://www.amqp.org/about/examples. We’re biased, but you can try our favorite hosted implementation of AMQP: the Windows Azure Service Bus. Visit the Developers Guide for links to getting started with AMQP in .NET, Java, PHP, or Python.

    Let us know how your experience with AMQP has been so far, whether you’re a novice user or an active contributor the community.

    Thanks—

    -- Dave and Rob

  • Interoperability @ Microsoft

    Live from //build/: Windows Azure Mobile Services and Web Sites GA, Autoscale Preview and new Virtual Machines Images

    • 1 Comments

    Windows Azure Mobile Services and Windows Azure Web Sites are now generally available, offering a rich set of services for building what we call “Modern Applications.” Modern applications are invariably web based and accessible by a broad spectrum of mobile devices. Microsoft Open Technologies has taken an active part in these releases, contributing its expertise in bridging Microsoft and non-Microsoft technologies and building the Android SDK for Windows Azure Mobile Services and the Android Notification Hubs SDK.

    Windows Azure Mobile Services

    Windows Azure Mobile Services makes it fast and easy to build connected applications that scale and reach every user on every device. The Windows Azure team not only provides SDKs for building native Windows Store, Windows Phone, Android, iOS and HTML5 apps, but also open sources the Windows Azure Mobile Services SDKs on GitHub and offers a REST API developers can use to reach additional client platforms. Server-side extensibility allows apps to consume other Windows Azure services like blob and table storage and third party services like SendGrid and Pusher, as well as connect to on-premises systems.

    Windows Azure Web Sites

    Windows Azure Web Sites is the fastest way to build, scale and manage business- and enterprise-grade Web applications. It is flexible and provides support for multiple languages, frameworks and databases. It has the features needed for business-class web presence like SSL and authentication via Windows Azure Active Directory. Web agencies can create socially connected applications and automatically scale them as their campaigns grow. Visual Studio users will find that Windows Azure Web Sites provides the best-in-class experience for cloud development and deployment.

    Additional Service Updates

    Additional services are also coming to Windows Azure in preview, along with new Windows Azure Virtual Machines images (SQL Server 2014 and Windows Server 2012 R2) and enhancements to Windows Azure Active Directory.

    Auto scale, alerts and monitoring are now available in preview. These services allow you to monitor the health and availability of your applications, receive notifications when your service availability changes, perform action-based events, and automatically scale to match current demands.

    Last but not least, in today’s keynote, Satya Nadella gave a sneak peek into future enhancements to Windows Azure Active Directory. Windows Azure is working with third parties like Box and others so they can take advantage of Windows Azure Active Directory to enable a single sign-on (SSO) experience for their users. If a higher level of security is needed, you can leverage Active Authentication to give you multifactor authentication.

    Learn more

    To learn more on these announcement, visit the Windows Azure blog. You can also stream today’s //build/ keynote on channel 9.

  • Interoperability @ Microsoft

    New resources for Android developers: getting started with Windows 8 development

    • 1 Comments

    As a developer, having your apps and services accessible on more devices is critical. As an experienced Android developer, you can now access lots of resources on how to develop for Windows, allowing you to reach a new range of devices for your apps and services.

    Tons of new articles for Android developers are now live on the Windows Store apps Dev Center to learn more on how to build apps for Windows:

    Your entry point for all this new content is http://aka.ms/androidtowindows

  • Interoperability @ Microsoft

    MS Open Tech contributes to open source adaptive streaming video player DASH.js

    • 0 Comments

    Adaptive streaming is an important part of the future of broadband video, and interoperability matters more than ever. People want to experience Web content swiftly and smoothly across a variety of devices. Microsoft Open Technologies, Inc. (MS Open Tech), is working with others in the industry to define guidelines for the delivery of video online, as well as contributing open source code that demonstrates interoperability of adaptive streaming across a variety of devices. 

    Adaptive streaming allows streamed video content to adjust to the bandwidth available at any given time. The result is a more fluid streaming experience for the viewer. However, today’s proprietary technologies make it difficult for content to be delivered to the many consumer devices available. The MPEG-DASH standard (ISO/IEC 23009-1) seeks to address this problem. In addition it provides many other advantages, such as switching between camera views, low-latency live streaming and improved subtitles and captioning.

     

    Microsoft Corp. is a founding member of the DASH Industry Forum (DASH-IF), an incorporated non-profit organization with over 65 members working to catalyze the adoption of MPEG-DASH. DASH-IF recently surveyed a group of European Broadcasters. They found that the biggest barrier to adoption is the lack of available clients capable of playing MPEG-DASH content. One of the reasons for this is that MPEG-DASH is a large and complex standard with many potential variations in implementation.

    DASH-IF has published a set of guidelines for implementation (called DASH-AVC/264). Using these guidelines, organizations can more easily build MPEG-DASH solutions that are interoperable. MS Open Tech, along with Digital Primates and a number of other DASH-IF partners, are building an open source DASH-AVC/264 reference implementation called DASH.js.

    Dash.js is permissively licensed (under the BSD license) and can therefore be studied and reused by anyone seeking to provide their own DASH-AVC/264 compliant player. The goal is to make it easier for third-parties to build adaptive streaming video players.

    In order to achieve this goal, the DASH.js player needs to be useful in as many environments as possible. Therefore, the DASH.js project seeks to be as open as possible to contributions. MS Open Tech is leading the definition of a fully inclusive project governance model to help ensure the success of the project. A governance model is a small set of rules and guidelines under which the project community operates. It ensures wide participation without a loss of efficiency and agility.

    Of course, governance is secondary to the production of useful software. MS Open Tech developers, along with other contributors to DASH.js, are already hard at work. At the same time other parts of Microsoft are working to support MPEG-DASH, for example Windows Azure Media Services recently announced a preview feature that enables MPEG-DASH live profile streaming.

    MPEG-DASH is important to the future of broadband video. Come and join the MS Open Tech team in making the DASH.js project a success.

  • Interoperability @ Microsoft

    New Hudson plugin using Windows Azure Storage as a repository

    • 0 Comments

     

    Microsoft Open Technologies, Inc. is pleased to share the news that we’re participating in the Hudson Contiguous Integration plugin ecosystem by releasing a Hudson plugin for using Windows Azure Storage service as a repository of build artifacts.   The plugin itself is open source, and available on GitHub.

    Modern software developers are building and delivering releases more frequently using new Continuous Integration (CI) CI tools to support their CI processes.   Managing today’s complex build, test and deployment processes is made easy and effective with CI automation tools, and Open Source solutions such as Jenkins and Hudson offer very affordable options for CI teams.

    Windows Azure Storage provides a safe, reliable and centralized storage and distribution location, with configurable security and authentication built-in.  You can publish a build to Windows Azure storage then have the build reliably distributed from that point instead of burdening on premise network bandwidth and storage. 

    Setting up a Hudson Continuous Integration Server on Windows Azure  

    The plugin works with any Hudson CI installation and any Windows Azure Subscrition.  Here’s a tutorial for getting started with the Plugin.  It’s also easy to set up a cloud-based Hudson CI solution on a Windows Azure Virtual Machine.  Here are some great resources to get started.  

    For source code versioning and repository management, you can add plugins for your favorite SCM software, on setup, or add plugins later.  Here’s what I’ve set up:

     

     

    image

    Next, you will need to create a new or use an existing Windows Azure Storage Account.  This will be used as the destination for build artifacts.

    Once you’ve followed the steps in the tutorial to have an Azure Storage account designated as a code repository and configure Hudson, you’re ready to publish build artifacts to windows Azure Storage.  To enable this, just select the storage account from the drop-down in the Post-Build action of your jobs:

     

     

    image

    Specify a container to use (it will be created if it doesn’t exist).  Remember to specify public if you want to publicly distribute the artifacts, or leave that option unchecked if you want to secure access to artifacts.  Refer to the tutorial for a full description of options.

    Next Steps

    We’re excited to be participating in the Hudson ecosystem, and to enable the option for 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 all Windows Azure services in any way we can, so if you have suggestion on what we can do to improve interoperability between Hudson and Windows Azure, let us know!

  • Interoperability @ Microsoft

    For Backbone.js devs: easily enable new Cloud based experiences in your apps with the Windows Azure Mobile Data Service

    • 0 Comments

    Synchronizing data with the cloud has just become easier for Backbone.js developers thanks to the open source Backbone adapter for Windows Azure Mobile Data Service from Microsoft Open Technologies, Inc. Developers using the popular JavaScript framework Backbone.JS to structure their web apps now only need to add a couple values indicating the table name and location to offer their customers brand new experiences leveraging the cloud.

    About Windows Azure Mobile Services

    With Windows Azure Mobile Services, you can streamline common development tasks like structuring storage, integrating push notifications and configuring user authentication. Mobile Services fully supports Windows Store, Windows Phone 8, iOS, and Android development and are free for your first ten apps. The data service provides a straightforward way to store structured data in the cloud.

    The Backbone adapter for Windows Azure Mobile Data Service

    The Backbone adapter that MS Open Tech open sourced is for HTML apps. It overrides the backbone.sync method to make things work seamlessly with Backbone applications. Using the adapter is as simple as including a JavaScript file (in addition to the JavaScript file from the Windows Azure Mobile Data Service HTML library) in your Backbone application. Since the backbone.sync method is overrode, all restful calls to the server are intercepted and converted to the format that works with the Windows Azure Mobile Data Service.

    How about some code?

    A sample backbone collection would look like the following:

    var People = Backbone.Collection.extend({
        client: client,
        table: 'Table1',
        model: Person
    });

    var people  = new People();
    var employee = people.create(data);
    people.fetch(conditions);

    As shown in the example above, the only additional parameters that need to be added to the collection are:

    • ‘table’: indicating the corresponding table where the collection must be saved on Azure
    • ‘client’: this client object corresponds to the WindowsAzure.MobileServiceClient and typically helps with authentication when writing data to the database.

    All other operations such as create, update and fetch are like the usual Backbone operations.

    The fetch operation can also take additional parameters to filter the required data to bring it to the browser. The options for filter can specify a ‘skip’, a ‘take’, or a ‘where’ clause. For detailed information, check out the README.md file.

    Call to action

    To get started with Windows Azure Mobile Services, check out the Windows Azure portal.

    You can find the Backbone adapter for Windows Azure Mobile Services project on our GitHub page.

    Please let us know what you think commenting on this post or in the project, and do not hesitate to point us to your great web apps using Windows Azure Mobile Services!

  • Interoperability @ Microsoft

    W3C Pointer Events Gains Further Web Momentum with Patch For Mozilla Firefox

    • 0 Comments

    Microsoft Open Technologies, Inc., (MS Open Tech) has made another contribution towards interoperable support for Pointer Events across Web platforms by publishing an early open source prototype of the W3C Pointer Events Candidate Recommendation for Mozilla Firefox. This patch contribution advances the momentum around use of Pointer Events to build interoperable web sites that work with mouse, touch, and pen.

    The W3C Pointer Events emerging standard makes it easier to support many browsers and devices by saving Web developers from writing unique code for each input type. Pointer Events unifies how you code for point, click and touch across multiple devices.

    Previously, MS Open Tech announced further interoperable support for Pointer Events in Blink by submitting a formal Intent to Implement to enable our engineering team to actively collaborate and work toward a positive adoption of Pointer Events by the Blink developer community. Earlier this year, MS Open Tech published Pointer Events prototypes for WebKit on HTML5 Labs and submitted patches to the WebKit developer forum. Our previous Blogs have discussed Pointer Events adoption in Internet Explorer, Chrome/Blink, and in JavaScript libraries such as jQuery, and Dojo. This initial open source patch for Mozilla Firefox adds to the Web community convergence around the Pointer Events specification and we plan to continue our collaboration with the Blink, WebKit and Mozilla communities.

    MS Open Tech and the Microsoft Internet Explorer teams will continue to work with our colleagues across the industry, engaging developers to test and provide feedback on the specification to W3C.

    Contribute to the New Pointer Events Functionality in Firefox

    We encourage interested developers to participate in the community process and provide feedback to ensure that Mozilla Firefox will enable a great Pointer Events implementation. As you start building, migrating, or testing your Web apps using Pointer Events, you should check out the resources available on the Pointer Events Wiki at Web Platform Docs:

    Jump in, have fun with the demos, join the discussion at #PointerEvents and update your site with the cool capabilities of Pointer Events. Point. Click. Touch.

    Asir Vedamuthu Selvasingh, Principal Program Manager
    Microsoft Open Technologies, Inc.

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

    Oleg Romashin, Senior Engineer, Microsoft Open Technologies Hub

  • Interoperability @ Microsoft

    MS Open Tech Releases Open Source Patch for OpenSSL to Enable HTTP/2.0 Secure Negotiation

    • 0 Comments

    As part of our commitment to the progress of HTTP/2.0 in an open and interoperable fashion, Microsoft Open Technologies, Inc., has yesterday reached out to the OpenSSL community with a proposed contribution supporting Application Layer Protocol Negotiation (ALPN) in the OpenSSL encryption libraries. We submitted a patch request to http://www.openssl.org/ that implements the relevant part of the HTTP/2.0 specification available at http://tools.ietf.org/html/draft-ietf-httpbis-http2-03#section-2.3.

    Security and encryption are critical components of the next version of the HTTP protocol. If you have been following the HTTP/2.0 effort, the industry is collaborating in the IETF Transport Layer Security Working Group (TLS WG) and ALPN has been adopted as a WG draft with a broad set of contributors including Microsoft, Cisco, Google, and Orange. The latest working draft at IETF requires the use of ALPN as the mechanism for secure negotiation which means ALPN will now be a key part of HTTP/2.0.

    The availability of an open source implementation of ALPN in the most popular open source encryption library allows interested developers to verify the benefits of ALPN and its compliance with established TLS design principles. This was called out in our earlier prototype that introduced support in the OpenSSL library for ALPN.

    We will continue the technical conversation about this proposed contribution on the OpenSSL mailing lists as well as working closely with the IETF WG to collaborate in designing the next major version of the HTTP protocol. We encourage you to join in the discussion and participate in the HTTP/2.0 standardization effort.

    Adalberto Foresti
    Principal Program Manager
    Microsoft Open Technologies, Inc.

  • Interoperability @ Microsoft

    Windows Azure Mobile Service updates and added support for Android push notifications via Google Cloud Messaging

    • 0 Comments

    Listening to the developers’ feedback, the Windows Azure Mobile Services team is releasing new features and updates to make Mobile Services a more robust and flexible backend for mobile apps that scale. Contributing its expertise in bridging Microsoft and non-Microsoft technologies, MS Open Tech built the new Android Notification Hubs SDK and updated the Android SDK for Windows Azure Mobile Services.

    Updates to Windows Azure Mobile Services

    Mobile Services makes it fast and easy to build dynamic and engaging mobile apps that scale. Windows Azure is expanding the Mobile Services capabilities:

    • Adding support for Custom API allowing developers to write server-side scripts that aren’t associated with a SQL database table and giving them additional control over the HTTP request and response so that they can receive types other than JSON and then detect and append their own HTTP headers.
    • Adding source control via git.

    You can find more details on these updates reading the Windows Azure and ScottGu’s blogs.

    MS Open Tech contributed the Android push notifications support in Notification Hubs

    Notification Hubs lets you broadcast push notifications to millions of devices across platforms from almost any backend hosted in Windows Azure. Notification Hubs are a great way to modernize existing apps hosted in Virtual Machines, Cloud Services or Web Sites by engaging users through push notifications; it’s also a great way to enrich the push notifications support available through Mobile Services by subscribing different subsets of users to different topics.

    Notification Hub enables broadcast push notifications scenario not only for consumer apps but also for enterprise apps that need to update thousands or millions of mobile users simultaneously.

    Building on our learning and experience in previous releases, MS Open Tech contributed the support for Android push notifications via Google Cloud Messaging (GCM) to the suite of supported platforms. With this release, developers can now broadcast push notifications to Windows Store, iOS and Android devices via WNS, APNS, and GCM, respectively.

    To get started broadcasting push notifications to Android devices, you’ll need the Service Bus .NET Preview SDK, the Android SDK, and the new Android Notification Hubs SDK. Learn more on the Windows Azure blog.

    clip_image002_thumb1

    As for previous releases, the Android Notification Hubs SDK is open sourced and you can find the code on GitHub.

    Free 20MB SQL Database

    Last but not least, and still responding to developers’ feedback, Windows Azure now offers a 20MB SQL Database to every Windows Azure subscription that can be used with Windows Azure Mobile Services or Web Sites. This will definitively help developers building mobile and web apps and need to store relational data in the cloud. And this will also be handy to have a free data option during development and test.

    Next steps

    You can start building Mobile Services powered that leverage Custom API and local git for source control today. You can also add Android broadcast push support to any app built on Windows Azure with Notification Hubs.

    Visit the Mobile Developer Center and MSDN for more information regarding Mobile Services and Notification Hubs, respectively. Visit Scott Guthrie’s blog post for additional information regarding this release.

    And as usual, feel free to let us know what you think about our work commenting on this post or sending us an email.

  • Interoperability @ Microsoft

    ActorFx v0.50 – more stability, scalability, extensibility, Inter-Actor programmability and a new MapReduce demo for our cloud based Actor Runtime

    • 0 Comments

    By the ActorFx team:

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

    Joe Hoag, Senior Software Engineer, Microsoft Open Technologies Hub

    Brian Grunkemeyer, Senior Software Engineer, Microsoft Open Technologies Hub

     

    The ActorFx team is happy to announce that the ActorFx v0.50 is available now, with several improvements since our v0.40 release in March. We also have a great new demo available, based on an algorithm employing MapReduce-like functionality.

    ActorFx provides an open source, non-prescriptive, language-independent model of dynamic distributed objects for building highly available data structures and other logical entities via a standardized framework and infrastructure. ActorFx is based on the idea of the mathematical Actor Model for cloud computing. Have a look at the CodePlex site for more information.

    This release contains some significant improvements:

    · Stability: We fixed a few bugs to eliminate deadlocks and race conditions.

    · Diagnostics: we added support for Event Tracing for Windows (ETW) and now ActorFx emits new ETW event types that can be used to diagnose issues at runtime.

    · Scalability: we implemented port sharing and per-node assembly caching

    · Inter-Actor Programmability: we added the ability for actors to create and delete other actors

    · Extensibility: We did some refactoring and added a StatelessActorApp that will enable us to implement alternative persistence mechanisms based on Azure Tables, SQL Azure and others in the future

    With the v0.50 release we also added a new demo: WordCount. WordCount demonstrates ActorFx’s ability to effect dataflow-type computations over dynamic topologies, employing a MapReduce-type algorithm to count the occurrences of all words in a selected set of textual documents.

    WordCount launches three classes of actors: mapper actors, reducer actors, and an aggregation actor.  Each are populated with the necessary logic to perform their respective functions by sending an assembly containing actor methods to each.

    The WordCount sample demonstrates many of the advantages of ActorFx:

    · Actor behavior is assigned via the passing in of an assembly containing actor methods.

    · File names and progress messages are passed from one tier to the next using actor-to-actor method calls.

    · Status information is emitted and collected using ActorFx pub/sub mechanisms.

    Details on how to run the WordCount application can be found in the CodePlex site.

    We are already working on the v0.60 release and on some new demos that show how ActorFx can be used on a wide range of scenarios. As always, we welcome input from the community. For those of you who are using ActorFx in implementations, we’d like to hear more about how it’s useful to you and how it can be improved.

    We are looking forward to your comments/suggestions, and stay tuned for more cool stuff coming in our next release!

  • Interoperability @ Microsoft

    New Tutorial: Using Apache ZooKeeper on Windows Azure to Manage Solr on Linux Virtual Machines

    • 0 Comments

    Here at Microsoft Open Technologies, Inc., we’ve been working with the top open source DevOps, application and data tools to make popular open source packages easy to deploy and manage on Windows Azure. This work gives developers the ability to take combine powerful open source technologies in new and unusual ways in the cloud to build new applications and solve old problems.

    As a showcase of these possibilities, we’ve built a search engine infrastructure using Apache Solr that is managed by an external implementation of Apache ZooKeeper to ensure scalability with reliability, and consistent search results for every search, regardless of which search servers may be accessible at any time. You can find all the details in this tutorial and once you’ve completed the tutorial you will have multiple Solr instances (called SolrCores) synchronized across more than one server, with synchronization managed by ZooKeeper. 

    By default, Solr has an internal, customized version of ZooKeeper running to synchronize SolrCloud shards on the same sever, but for our ZooKeeper example, we’re show you multiple SolrCores distributed across servers.  That means that multiple cores at multiple IP addresses are made to look like one server. 

    Here’s what the Solr dashboard will show when you’ve competed this tutorial:

    image

    The tutorial configures one ZooKeeper instance and two Solr VMs as the minimum to test our configuration, but you could scale up much more than that.  With ZooKeeper managing Solr, as long as at least one SolrCloud instance is accessible anywhere that ZooKeeper is keeping things in Sync, you will still have ability to index documents and run queries.

    Try it out yourself, and let us know what you think!

     

  • Interoperability @ Microsoft

    MS Open Tech, W3C Pointer Events and the JavaScript Community at JSConf 2013

    • 0 Comments

    Adoption of Pointer Events Grows with Upcoming Implementation for Dojo Toolkit

    The W3C Pointer Events emerging standard continues to gain traction, advancing support for interoperable mouse, touch, and pen interactions across the web. Pointer Events makes it easier to support a variety of browsers and devices by saving Web developers from writing unique code for each input type. The specification continues to receive positive feedback from the developer community -- many are already embracing it as a unified model for cross-browser multi-modal input.

    In our previous Blog on W3C Pointer Events, we highlighted feedback shared by members of the jQuery and Cordova teams. The Dojo team are also working on implementing Pointer Events in an upcoming release of the Dojo Toolkit:

    The Dojo team has been watching the progress of Pointer Events in the W3C standardization process as it moves to Candidate Recommendation. We see Pointer Events as a great way to unify the disparate models that exist today for mouse, touch, and other pointer devices. Our team looks forward to implementing Pointer Events in the 2.0 release of the Dojo Toolkit. – Bill Keese, Dijit Project Lead

    Last month, Microsoft Open Technologies, Inc. (MS Open Tech) made the first step towards interoperable support for Pointer Events in Blink by submitting a formal Intent to Implement to enable our engineering team to actively collaborate and work toward a positive adoption of Pointer Events by the Blink developer community. Earlier this year, MS Open Tech published a Pointer Events prototype for WebKit on HTML5 Labs and submitted the patch to the WebKit developer forum - we plan to continue our collaboration with the WebKit community.

    Pointer Events at JSConf 2013

    Last week I was privileged to join around 700 participants at the 5th Annual JSConf (and CSSConf) which took place on Amelia Island, Florida. The sold out event was packed with excellent presentations, demonstrations, and entertaining activities throughout. Congratulations to organizers Chris and Laura Williams and their family for hosting such an outstanding event!

    I attended the event for Microsoft Open Technologies, Inc. (MS Open Tech), alongside representatives from Microsoft’s Internet Explorer (IE) and DPE teams. Internet Explorer and Windows Azure both provided sponsorships for the Conference. In addition to learning about the world of JavaScript and meeting new friends, there were plenty of opportunities to share the latest news about W3C Pointer Events with the JavaScript community. W3C Pointer Events is an emerging standards specification that defines a device-independent approach to handling pointer input from devices like a mouse, pen, or touchscreen.

    On Tuesday night, MS Open Tech and the Internet Explorer team hosted the ‘Reach the Beach’ Welcome Reception that took place right on the beach complete with an evening campfire and roasting of s’mores – you can see some photos below. During the Reception, Pointer Events gift boxes were handed out to celebrate the recent achievement of Pointer Events advancing to Candidate Recommendation (CR) status within W3C. Each gift box included a capacitive pen stylus, an Artist Edition 3500 mouse, and a screen cloth to represent the multi-model input support provided by the W3C Pointer Events specification.

     

    image image image

    image

    On Wed May 29th, Josh Holmes (pictured above) of the IE team presented Pointer Events in his session ‘Touch Me, I Dare You’. Josh provided an overview of Pointer Events, and gave a demonstration using a Bricks paddle game to show how easy it is to code for multi-modal input using the Pointer Events specification. There were several questions after the presentation and it was evident that developers were particularly interested in the cross-browser platform support provided by Pointer Events. Josh referenced the Pointer Events polyfills that can be found on Web Platform Docs at http://docs.webplatform.org/wiki/PointerEvents – here’s a code sample below.

              // these are the polyfill events for hand.js.

               Event(leftOverlay, "pointerup", function() { if(Game.canStart()) { Balls.release(Player.ONE); } }, false);

               Event(rightOverlay, "pointerup", function() { if(Game.canStart()) { Balls.release(Player.TWO); } }, false);

               Event(leftOverlay, "pointermove", Game.movePaddle, false);

               Event(rightOverlay, "pointermove", Game.movePaddle, false);

                    }                             

    To showcase some of the cool innovation that can be done with W3C Pointer Events, last week an article was published describing an immersive website experience that resulted from a collaboration between the IE team and renowned Everest explorer David Breashears - IE piggybacks on Everest celebration to showcase new browser tech. Everest: Rivers of Ice is a new Web site built in HTML5 and CSS3 for touch screens and highlights the kind of modern Web experiences that can be created incorporating Pointer Events.

    We welcome the Dojo team to the growing list of JavaScript libraries and frameworks working with W3C Pointer Events and we look forward to their upcoming implementation in Dojo Toolkit 2.0. As we continue to work with the vibrant JavaScript community, we look forward to seeing even more Pointer Events support across a growing number of JavaScript libraries and frameworks – there’s more to come! To learn more about using and implementing Pointer Events, feel free to check out and contribute to the Pointer Events Wiki on Web Platform Docs which includes community generated polyfills, tests, demos, and tutorials, or join the discussion at #PointerEvents. Point. Click. Touch.

  • Interoperability @ Microsoft

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

    • 4 Comments

    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.

    Demo

    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.

    clip_image002

    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!

    clip_image004

    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

    Entity Framework V6 (EF6) Beta 1 from Microsoft Includes Latest & Greatest Open Source Contributions

    • 1 Comments

    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.

  • Interoperability @ Microsoft

    MS Open Tech Brings the Creative World of Cinder to Windows Store Applications

    • 0 Comments

    Great news for Agencies, Creative Coders and Design Engineers

    The open source programming library Cinder is growing in popularity for creative coding in C++, and now these cool Cinder coders can extend the reach of their apps to a broader audience on the Windows Store.

    Microsoft Open Technologies, Inc. (MS Open Tech), and the Microsoft Platform Evangelism team have been working with the Cinder community to enable Windows Store support for Cinder. This code is now available on a public branch on GitHub and it means that creative developers of all kinds can now build a new generation of Windows 8 apps with Cinder. For those not already familiar with it, Cinder is a cross platform framework designed for professional-quality creative coding in C++ and is typically used for design engineering.

    The Windows 8 operating system introduces a new type of application, called a Windows Store app. The new architecture is called Windows Runtime, or WinRT for short. Windows Store apps are presented and can be accessed through their respective Live Tiles. An application's Live Tile is registered automatically when that app is installed from the Windows Store.

    There is still a bit of work to do, such as adding XAML support, but the broader creative coding community is already embracing it. The screen shots above are all from the DirectX, Windows Store samples that ship with the branch.

    In order to run Cinder on Apple, Android and Windows devices prior to Windows 8, the rendering libraries leveraged OpenGL as the open source, cross platform solution. Even though DirectX has been Microsoft's preferred rendering solution for advanced graphics programming, Windows traditionally provided both DirectX and OpenGL support from the desktop. However, Windows 8 Store applications are now exclusively DirectX based, to maximize reusability across the entire domain of Microsoft experiences including Windows Phone, Windows RT, Windows 8, and gaming.

    To get a Cinder project running as a Windows Store app, the Cinder project needs to leverage a DirectX render instead of the default OpenGL renderer. Both OpenGL and DirectX have undergone significant changes over the years. As hardware and software continue to advance, both libraries continue to progress in their own distinct ways. Windows 8 Store apps leverage the most recent version of DirectX 11.1.

    Because DirectX is now directly supported by Cinder, a developer can now write code such as the sample below. Here is some example code for a Cinder BasicApp “Hello World” drawing app. It draws a line while the user is touching the screen (or dragging the mouse):

    #include "cinder/app/AppBasic.h"
    #include "cinder/dx/dx.h"

    using namespace ci;
    using namespace ci::app;
    using namespace std;

    // We'll create a new Cinder WinRT Application by deriving from the Cinder AppBasic class
    class BasicApp : public AppBasic {
      public:
           void mouseDrag( MouseEvent event );
           void draw();

           // This will maintain a list of points which we will draw line segments between
           list<Vec2f>         mPoints;
    };

    void BasicApp::mouseDrag( MouseEvent event )
    {
           mPoints.push_back( event.getPos() );
    }

    void BasicApp::draw()
    {
           dx::clear( Color( 0.1f, 0.1f, 0.15f ) );
           dx::color( 1.0f, 0.5f, 0.25f ); 
           dx::begin( GL_LINE_STRIP );
           for( auto pointIter = mPoints.begin(); pointIter != mPoints.end(); ++pointIter ) {
                 dx::vertex( *pointIter );
           }
           dx::end();
    }

    // This line tells Cinder to create and run the WinRT application
    CINDER_APP_BASIC( BasicApp, RendererDx )

    As a result, developers who are familiar with either Cinder or DirectX should find themselves right at home with the new capabilities that Windows Store support has just added to the framework. Here’s some early feedback we have received from the Cinder developer community:

    We couldn't be happier about having WinRT support in Cinder. The possibility of distributing apps in the Windows Store, as well as targeting new hardware like the Surface is going to be a big deal for our users. And providing such tangible support for open source through the MS Open Technologies team is really forward-thinking and exciting in its own right. – Andrew Bell, Lead Architect of Cinder

    As a community developed open source project, Cinder separates the stable, official version of its Cinder framework from newer branches that developers setup as they program future functionality. WinRT support for Cinder is currently being developed off of one of these feature branches, with the goal of integrating in to a future iteration of the master project. The DirectX/Windows Store branch of this library can be cloned from Github.

    You can read the Getting Started With Cinder For Windows Store Apps guide here which explains more about Cinder, DirectX and how to setup Visual Studio and Windows 8. We encourage you to share this information with your designer developer colleagues and join the discussion on the official Cinder forums - http://forum.libcinder.org/#Topic/23286000001540037

    We expect this announcement will open up a whole new world of opportunities for creative applications from artists, designers, and developers. We hope you enjoy the Cinder for Windows Store experience and we look forward to seeing your cool new applications.

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

  • Interoperability @ Microsoft

    Discussing Microsoft’s Openness at Linux Tag

    • 0 Comments

    LinuxTag is the leading meeting place for Linux and open source in Europe. Held in Berlin last week it was the place to learn about new innovations and trends, as well as to connect with core expertise for professional users, decision makers, developers, beginners and of course the community. I was lucky enough to attend in support of Microsoft Deutschland.

    I spent the majority of the four days discussing and demonstrating the depth and breadth of Microsoft’s engagement in open source and open standards. As I assist the efforts at Microsoft Open Technologies, Inc. (MS Open Tech) – who are proud to support Microsoft Corporation’s commitment to openness – it’s always a joy because it’s such a positive story. This is particularly true at large events like LinuxTag where it is impossible to predict who we will be talking to next. It is a great feeling to be able to point to concrete contributions that MS Open Tech has made, and continue to make, to projects relevant to almost any individuals interests.

    Even more pleasing is the obvious desire of the key open source community members to work with us. A significant number of visitors to our stand were keen to understand how they can work with Microsoft to ensure interoperability between solutions. That’s an important reason why MS Open Tech exists, and why we were at LinuxTag.

    Many visitors wanted to see how the VM Depot site could help their projects. VM Depot is a site on which the community can publish freely redistributable virtual machine images for Windows Azure. Once I’d explained how it worked, it was common for community leaders and core developers to have clearly identified significant value for their projects. In some cases they saw it as an opportunity to increase the visibility of their open source products, in others as an opportunity to provide evaluation installs, and in others it was an opportunity to empower their development community.

    My thanks go to all the team at Microsoft Deutschland and LinuxTag for making it possible to meet so many great open source leaders in such a short time. We look forward to continuing the conversations.

  • Interoperability @ Microsoft

    Momentum Grows as OData v4 Achieves Standards Milestone

    • 4 Comments

    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

    Windows Azure Service Bus Interoperable Implementation of OASIS AMQP Transitions to General Availability

    • 0 Comments

     GENERAL AVAILABILITY: We are pleased to share the news that AMQP 1.0 support in Windows Azure Service Bus has transitioned from Preview to General Availability (GA).  AMQP 1.0 is a secure, reliable, and open binary protocol for business messaging.  The AMQP 1.0 specification was approved in the fall of 2012 as an OASIS Standard is being considered for forwarding ISO/IEC JTC1 to become an international standard.

    COMMITMENT TO OPEN AMQP ECOSYSTEM: Microsoft Corp. and Microsoft Open Technologies, Inc. (MS Open Tech) were active participants in the development of the core AMQP OASIS Standard and continue to play an active role in the OASIS AMQP and AMQP Bindings and Mappings Technical Committees. We are committed to continuing contributions to the work on global addressing, management, and AMQP over WebSockets, all focused on growing the open, interoperable ecosystem for AMQP.

    TRY AMQP: We encourage you to try AMQP 1.0 with the Windows Azure Service Bus using .NET, Java Message Service (JMS), Python, PHP or C.

    Thanks very much for reading and for more news on Azure, AMQP, and MS Open Tech, visit the Windows Azure Team Blog, AMQP.org Announcements, and the MS Open Tech Team Blog.

    Brian Benz, Senior Technical Evangelist, Microsoft Open Technologies, Inc.
    Rob Dolin, Senior Program Manager, Microsoft Open Technologies, Inc.

  • Interoperability @ Microsoft

    Node.js Library for Authentication with Windows Azure Active Directory

    • 0 Comments

    AzureADNodeNode.js developers: add some Windows Azure authentication and access control to your Node app with the newly MS Open Tech’s released open source library for Windows Azure Active Directory service.

    Windows Azure Active Directory is a REST based service that provides authentication and access control functionality for web applications. Libraries are available that make integrating the service with web applications easier.

    Microsoft Open Technologies, Inc., has developed the Node.js library in the form of Passport strategies and made the code available on github. You can use the Node Package Manager (npm) to use the library and package it into your Node.js. We are also working with the Windows Azure team to integrate this new Node.js library in the Windows Azure SDK.

    As most Node.js applications use Passport as the authentication middleware, we created this new library as a couple of Passport strategies that can be used similarly to other ones. These 2 strategies are SAMLp and WSFed .

    The GitHub repository also contains source code examples and instructions to configure the Windows Azure service.

    Check out the Windows Azure Active Directory site to learn more about the service and get started today typing the following in your command prompt:

    npm install passport-azure-ad

    Let us know what you think in the comments below!

  • Interoperability @ Microsoft

    Hortonworks HDP -- Open Source Apache Hadoop Distribution is Enterprise-ready

    • 2 Comments

    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

    Greetings Symfony Live - New tools for Symfony developers on Windows Azure

    • 0 Comments

    I Hope everyone at Symfony live in Portland this week is having a good time – I wish I could join you in person!

    I wanted to share some exciting news about recently released updates to Windows Azure tools for Symfony that Microsoft Open Technologies, Inc. has been supporting.

    Benjamin Eberlei’s Azure Distribution Bundle project simplifies the deployment of Symfony applications on Windows Azure by managing the packaging for Azure, and handling deployment of assets and distributed session management.

    Since the original project was released in June 2012, the bundle has been integrated with the latest Windows Azure SDK for PHP. Symfony is also now easier to deploy to websites on Windows Azure, facilitated in part by Composer integration during deployment.

    If you’re an experienced Symfony developer, the bundle is a great starting point for Symfony on Azure, as it has detailed instructions and documentation for getting started with Windows Azure and how to interact with Windows Azure instances and service building blocks.

    So have fun at Symfony Live this week, and check out these new tools and demo for Symfony on Azure when you get a chance. Let us know what you think!

    Brian Benz

    Senior Technical Evangelist

    Microsoft Open Technologies, Inc.

  • Interoperability @ Microsoft

    W3C Pointer Events Gains Momentum Within Web Communities

    • 1 Comments

    MS Open Tech Announces Intent to Implement in Blink While Continuing WebKit Implementation

    From:

    Asir Vedamuthu Selvasingh, Principal Program Manager
    Microsoft Open Technologies, Inc.

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

    The W3C Pointer Events emerging standard continues to gain traction, advancing support for interoperable mouse, touch, and pen interactions across the web. Today, Microsoft Open Technologies, Inc. (MS Open Tech) made the first step towards interoperable support for Pointer Events in Blink by submitting a formal Intent to Implement to enable our engineering team to actively collaborate and work toward a positive adoption of Pointer Events by the Blink developer community.

    Earlier this year, MS Open Tech published a Pointer Events prototype for WebKit on HTML5 Labs and submitted the patch to the WebKit developer forum. To help even more developers adopt the Pointer Events technology, we plan to continue our collaboration with the WebKit community.

    Pointer Events makes it easier to support many browsers and devices by saving Web developers from writing unique code for each input type. Today people interact with Web content on a range of devices – phones, tablets, PCs, even the living room TV. Pointer Events unifies how you code for point, click and touch across these devices. The input model is based on the APIs already available in IE10 on Windows 8 and Windows Phone 8 and you can start building websites incorporating point, click, and touch today.

    Pointer Events continues to receive positive feedback from the developer community -- many are already embracing it as a unified model for cross-browser multi-modal input:

    The jQuery team has been watching the progress of Pointer Events and participating in the W3C standardization process as it moves to Candidate Recommendation. Congratulations to the W3C working group for their hard work in getting to the CR stage. We see Pointer Events as a great way to unify the haphazard models that exist today for mouse, touch, and other pointer devices. Our team looks forward to supporting web developer use of Pointer Events as implementations begin to arrive.

    Dave Methvin, President jQuery Foundation

    Pointer Events is a great way to add cross-browser support for multi-modal input from mouse, pointer, and touch.  With Pointer Events reaching Candidate Recommendation stage, it is time all mobile html5 application developers paid attention.  The best part; you can start using it today….

    Jesse MacFadyen, Adobe Developer, Cordova Committer

    Pointer Events Advances to W3C Candidate Recommendation (CR)

    As announced last week by the W3C and shared by our colleagues in IE, the W3C has now published the Pointer Events specification as a Candidate Recommendation, an important step toward a standard. This progression from Last Call Working Draft to Candidate Recommendation is a mark of the effective collaboration among Microsoft Corp., Google, Mozilla, Opera, Nokia, jQuery, and others to help sites take advantage of new interactive devices for the Web.

    ‘Candidate Recommendation’ indicates that the W3C considers the specification widely reviewed and satisfying the Working Group’s technical requirements. It signals a call for additional implementation experience to inform the group.

    MS Open Tech and the Microsoft Internet Explorer teams will continue to work with our colleagues across the industry, engaging developers to test and provide feedback on the specification to W3C.

    Learn more about Pointer Events on Web Platform Docs

    As you start building, migrating, or testing your apps using Pointer Events on various browser platforms, you should check out the resources available on the Pointer Events Wiki at Web Platform Docs:

    • You can Try out the cool multi-model input capabilities with Pointer Events Demos.
    • You can Learn about Pointer Events by reading the specification documentation or watching Jeff Burtoft explaining how to easily upgrade from mouse to Pointer Events. And, you can learn even more by checking out the Pointer Events Primer on WebPlatform.org.
    • You can check out code samples such as the hand.js polyfill and even validate your own code with Pointer Events Test cases.

    clip_image002

    So much progress -- Pointer Events enables you to build for the future of the Web, today. So when someone invents the next big input breakthrough (such as Tom Cruise’s crime lab from Minority Report or Tony Stark’s holographic CAD console from Iron Man), you’re already on your way to supporting new input features.

    Jump in, have fun with the demos, join the discussion at #PointerEvents and update your site with the cool capabilities of Pointer Events. Point. Click. Touch.

  • Interoperability @ Microsoft

    Redis on Windows – new version and NuGet Packages

    • 8 Comments

    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

    Accelerating Start-ups with open source, and Windows Azure Accelerators

    • 0 Comments

    In early 2012 Microsoft chose Tel Aviv,  as the location for its first start-up accelerator. When the team at Microsoft Research and Development, Israel asked if MS Open technologies, Inc. could speak about open source on Windows Azure at their Cloud Day event I immediately jumped at the chance since I’m fascinated by how open source can help accelerate innovation. It seemed to me that this event would attract the kinds of people who could show me a thing or two about innovation on the cloud.

    The Cloud Day event was designed to provide an opportunity for members of the local start-up community to explore the latest & hottest trends in cloud computing and to gain insights on how to get the most value out of the cloud. Speakers included representatives of start-ups at varying stages of development, Venture Capitalists, Cloud Consultants and Microsoft Open Technologies.

    My session focused on using open source software to get the most from the cloud. I discussed how Microsoft Open Technologies, Inc. work with projects and communities in order to ensure Windows Azure is an ideal platform for open source solutions. This was illustrated with a number of examples and case studies, such as how Ascribe Ltd transformed healthcare using open source big data solutions thanks to Microsoft’s contributions to Apache Hadoop and how Teletica.com used Azure and open source to manage a massive surge in web traffic. I also demonstrated how, using VM Depot makes it possible for anyone to build a video sharing site during their coffee break (more on that in a later post).

    For me though what I had to say was not the important part, it was what the attendees had to say that interested me. After my session I was able to talk to quite a few people who were both keen to tell me about their start-up and to learn how they can make the most of open source software. Almost everyone I spoke to demonstrated a hunger, energy and determination that was nothing short of impressive. It's no
    wonder that the Microsoft Accelerator here has such a high success rate.

    By the end of the day it was clear that open source is an important part of the start-up ecosystem in Israel and I, along with the rest of Microsoft Open Technologies, look forward to continuing to support the brilliant team at Microsoft Israel R&D a they continue to provide support for local innovation and business development.

  • Interoperability @ Microsoft

    A new way for iOS and Android users to access corporate resources: The Application Gateway

    • 0 Comments

    clip_image002Every CIO today has mobile VPN access sitting very high on the priority list and knows how mobile connectivity to corporate resources is an important yet complicate matter. In a quest to solve the VPN issue in a simple way, Microsoft Open Technologies, Inc. created AppGateway, an application of VPN access for Android and iOS based on the preview of a Windows Azure Application Gateway service meant to help mobile users be more productive on the go. With this app, developed in collaboration with the Windows Azure Active Directory team, Android and iOS users can experience easy connectivity to web sites behind the corporate firewall, leveraging Windows Azure authentication services.

    For obvious security reasons, connecting to resources that are behind a firewall usually requires a fairly complex infrastructure such as VPN (Virtual Private Network). The AppGateway demo app is designed to make the process simpler yet highly secured. The mobile app connects to a service on Windows Azure that acts as the proxy to an agent that is running inside the network behind the firewall. Using the Windows Azure Authentication service, the proxy can establish a trusted connection to the agent so that the application on the mobile device can browse web sites that would not be normally accessible outside the corporate network.

    clip_image004

    The demo app is available on the Apple App Store, GooglePlay and Amazon marketplaces at the following links:

    For more information on the Windows Azure Application Gateway service preview, visit http://appgportal.cloudapp.net/.

    In our best tradition, we also released the source code of the demo app. You can find the Android application code here.

    For detailed instructions and a quick ‘get started; guide is available here.

    We look forward for your feedback, comments and suggestions.

  • Interoperability @ Microsoft

    If you’re working with Java on Windows Azure, this update is for you!

    • 0 Comments

    From:
    Martin Sawicki – Principal Program Manager – MS Open Tech
    Brian Benz – Sr. Technical Evangelist – MS Open Tech

    Incorporating developer feedback and keeping pace with Windows Azure’s ongoing evolution, Microsoft Open Technologies, Inc., has released a new update to the Windows Azure Toolkit for Eclipse. This latest version – the May 2013 Preview (or v2.0.0) – includes a number of new improvements we hope will further simplify your Java work in the Windows Azure cloud. This major update accompanies the release of the Windows Azure SDK v2.0.

    Key Enhancements:

    Automatic upload of the JDK and Server to Windows Azure storage (and deployment from there)

    This new option automatically uploads the selected JDK and Web Application Server, when needed, to a selected Windows Azure storage account and deploys these components from that account. This commonly requested feature can greatly enhance the ease and efficiency of deploying the JDK and server components, as well as help with team development scenarios, by avoiding the need to embed these components in the deployment package, or the hassle of manual uploads. Our “Hello World” tutorial walks you through these steps in detail. Here is a screenshot from the updated project creation wizard showing this feature in action:

    autoUpload

    Centralized storage account tracking

    You may be wondering how Windows Azure knows which storage accounts to display in the drop-down list. The answer is another new feature – centralized storage account tracking. In order to reference storage accounts more easily across the various features that rely on storage, like caching and, in this case, the JDK or the Web Application server component deployment, you can register existing storage accounts names and endpoints in your current Eclipse workspace under Preferences > Windows Azure > Storage Accounts:

    storageAccounts

    As usual, you can import the information from your subscription’s publish settings file to provide the storage account discovery magic.

    Here’s an example of the centralized storage account tracking for caching as well. The drop down shows you where you would specify which storage account to store credentials for the cache configuration in a Windows Azure role. This way you no longer have to enter the access key manually.

    caching

    Simplified Remote Access setup

    For this release we’ve also streamlined the previous two-step remote access setup into one step. In the “Publish to Cloud” wizard, type in a user name and password to enable remote access, or leave it blank to keep remote access disabled.

    remoteAccess

    By default, Eclipse will use the sample certificate for encrypting your remote access credentials in the Windows Azure configuration file. If you’d rather use your own certificate, choose the Advanced… link.

    The “all-in-one” Eclipse library for easier Windows Azure API access now updated with the latest (v0.4.2)

    The latest SDK distribution of the Windows Azure Libraries for Java are packaged along with their open-source dependencies as an Eclipse library and referred to as the Package for Windows Azure Libraries for Java (by MS Open Tech). If your Java code needs to take advantage of the Windows Azure API, just add this library to the build path of your Java project (not the Windows Azure project) and all the needed libraries will be automatically referenced and included in your WAR file.

    addLibrary

    Additional Enhancements

    We’ve also fixed sticky sessions on Windows Server 2012 (previously limited to Windows 2008). And we’ve made some package publish performance improvements that can make the upload portion of the deployment process up to twice as fast as in previous releases, especially helpful if you’re not using the “deploy from download” options, but still embedding large components in the deployment package itself. We’ve also made a number of bug fixes, including some reported issues related to deploying Tomcat and Jetty on Windows 2012 from a cloud download.

    Getting the Plugin

    Here are the complete instructions to download and install the Windows Azure Plugin for Eclipse with Java, as well as updated documentation.

    As always, let us know how the latest release works for you and how you like the new features! To send feedback or questions, just use MSDN Forums or Stack Overflow.

  • Interoperability @ Microsoft

    MS Open Tech, Linux and Open Source at LinuxFest 2013

    • 0 Comments

    I was fortunate to be invited to speak on behalf of MS Open Tech at last weekend’s LinuxFest Northwest in Bellingham, WA. This was a local event with a wide variety of developers and tech enthusiasts who gathered at Bellingham Technical College to participate in a broad spectrum of presentations, demonstrations, and labs.

    My presentation Microsoft, Linux and the Open Source Community was part of the Developing a Community Track at LinuxFest so, given Microsoft Open Technologies, Inc. had just celebrated our One Year Anniversary, I took this opportunity to demonstrate some of the MS Open Tech projects that are enabling the open source community to benefit from new interoperability technology initiatives:

    Linux on Windows Azure – Just prior to LinuxFest, the Azure team announced general availability of Windows Azure Infrastructure-as-a-Service. Windows Azure Infrastructure Services enable you to deploy and run durable VMs in the cloud. As well as Windows Server options, the built-in image gallery of VM templates includes Linux images for Ubuntu, CentOS, and SUSE Linux distributions. During my presentation session, I used Windows Azure Web Sites to create a new cloud-based WordPress site including a MySQL instance.

    VM Depot – Built on the capabilities of Linux on Windows Azure, VM Depot is a cloud-based catalog of more than 200 open source Linux virtual machine images for Windows Azure contributed by the community. Developed by MS Open Tech, on VM Depot the community can build, deploy and share their favorite Linux configurations and other freely downloadable images, create custom open source stacks, and work with others to build new architectures for the cloud that leverage the openness and flexibility of the Windows Azure platform.

    OData – OData is an open data protocol jointly developed by Microsoft, IBM, SAP, Citrix, and other industry partners and currently undergoing standardization via OASIS. We have recently revamped the http://odata.org website and encourage community contributions to develop consumer and producer services using OData as highlighted in the Ecosystem subsection. My demonstration showed how OData can be used by the community to publish and access open government data using the DataLab open source code on GitHub.

    Pointer Events - Pointer events is an emerging standard developed by the W3C to define a single device input model – mouse, pen and touch – across multiple browsers. Microsoft contributed the initial specification and is working to demonstrate cross browser interoperability for Pointer Events. MS Open Tech developed an open source Pointer Events prototype for WebKit on HTML5 Labs and submitted the patch to the WebKit community. We encourage the developer community to learn more about Pointer Events on Web Platform Docs and join the #PointerEvents discussion.

    I would like to thank the LinuxFest organizers for the opportunity to participate. Events like LinuxFest are an ideal way for us to share the work we do at MS Open Tech with the open source community and seek feedback on our efforts. I look forward to the next opportunity.

  • Interoperability @ Microsoft

    Thanks for a great one year anniversary!

    • 0 Comments

    Thanks to all our friends who sent us anniversary greetings and also those who joined us in the Valley last week to celebrate. It was great to reflect on the many open source and open standards projects with community and industry leaders in the house.

    The future looks bright as we look to collaborate on more openness projects with you!

     

    Anniversary patchwork

  • Interoperability @ Microsoft

    An Update on Professional-Quality Video Captioning

    • 1 Comments

    I am really excited that Microsoft IE has taken another step forward enabling professional-quality closed captions for online video, to address evolving industry requirements for browsers and other software on Internet-connected devices. The IE team have just posted a blog that describes the latest milestone for Web-based accessibility -

    “In February 2013, Microsoft joined industry stakeholders in the W3C Timed Text Working Group (TTWG) to deliver the TTML Simple Delivery Profile for Closed Captions (SDP-US) profile specification.  SDP-US is based on Timed Text Markup Language (TTML) (a caption interchange specification that has been used in the professional video industry for years) and clearly defines key caption format features like layout, style, timing and content requirements. Internet Explorer was one of the first browsers to include early support for HTML5-based video captioning via the <track> element with TTML and WebVTT file formats.

    Professional-quality online video is a forthcoming reality, enabled by emerging Web specifications and powerful content delivery infrastructure. Captioning is an important building block for enabling professional-quality video, and Microsoft is actively working with industry partners to enable rich captioning experiences. If you are working on Internet video, we invite you to review the new SDP-US profile, join the industry discussion, start considering how your caption content can adapt to SDP-US, and let us have your feedback.”

    Now part of the MS Open Tech alumni, I have been proud to work with the IE team and industry experts in driving this important interoperability milestone.

    Monica Martin
    Senior Program Manager
    Microsoft Open Technologies, Inc.

     

     

  • Interoperability @ Microsoft

    Redis on Windows – stable and reliable

    • 30 Comments

    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.

    RedisTesting

    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

    Microsoft Donates JavaScript Materials to Web Platform Docs

    • 1 Comments

    We’d like to highlight a pleasant spring surprise from our Microsoft colleague Eliot Graff who this week has informed the tech community that Microsoft is proving additional content to the Webplatform.org project by donating over 400 pages of JavaScript reference materials.

    Microsoft Open Technologies, Inc., and the Microsoft Internet Explorer team represented by Eliot, have been involved from the very beginning of the W3C’s Web Platform Docs (WPD), a community site designed to be a comprehensive and authoritative resource for developers to help build modern web applications that will work across browsers and devices. We strongly believe this community site is key in the journey to an interoperable web platform and same markup.

    From Eliot’s Blog post:

    “To date, JavaScript remains one of the areas in Web Platform Docs where we are still in need of robust reference documentation. I am pleased to announce that Microsoft is donating over 400 pages worth of additional content to Web Platform Docs, in order to boost our library in this regard.”

    So what does this mean for you, the developer?

    You will save time and resources, knowing you can consult confidently with a community-curated site to learn about standards, innovations and best practices including:

    • What technologies really interoperate across platforms and devices;
    • The standardization status of each technology specification;
    • The stability and implementation status of specific features in actual browsers.

    Microsoft's involvement in the Web Platform Docs project dates back to its inception almost two years ago. Ten supporting steward organizations (the W3C, Adobe, Facebook, Google, HP, Intel, Microsoft, Mozilla, Nokia, and Opera) have pooled their resources in order to create a single, centralized, nonpartisan, accurate, complete, and comprehensive collection of educational and reference materials for web development.

    We trust this additional contribution from Microsoft will strengthen the existing foundation to the JavaScript reference materials.

    WPD is a community effort. Anyone can join or contribute. The infrastructure is set up using an instance of MediaWiki, the same as Wikipedia. You can visit the site at www.webplatform.org and watch an overview video. From there, check out the docs or the community content. You can also join the effort and start editing, writing, and contributing in other ways. You can add a little code sample, write a tutorial, or join in for some of the organized doc sprints or other activities.

    Begin simplifying your web development and check out W3C’s Web Platform Docs today. Better still, sign up for an account, find a topic of interest, and contribute your expertise!

  • Interoperability @ Microsoft

    You’re invited to help us celebrate an unlikely pairing in open source

    • 2 Comments

    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.

    Cheers,

    Gianugo Rabellino
    Senior Director, Open Source Communities
    Microsoft Open Technologies, Inc.

    image

  • Interoperability @ Microsoft

    MS Open Tech releases open source Jenkins plugin for using Windows Azure Blob service as a repository

    • 2 Comments

    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.

    image

    After selecting Install without Restart, you should see a confirmation screen like this one when done:

    image

    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:

    image

    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:

    image

     

    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

    Using LucidWorks on Windows Azure (Part 3 of a multi-part MS Open Tech series)

    • 0 Comments

    LucidWorks Search on Windows Azure delivers a high-performance search service based on Apache Lucene/Solr open source indexing and search technology. This service enables quick and easy provisioning of Lucene/Solr search functionality on Windows Azure without any need to manage and operate Lucene/Solr servers, and it supports pre-built connectors for various types of enterprise data, structured data, unstructured data and web sites.

    In June, we shared an overview of the LucidWorks Search service for Windows Azure, and in our first post in this series we provided more detail on features and benefits. In December we covered the main features of LucidWorks Search, but today Microsoft Open Technologies, Inc, is happy to share with you a few new data sources that are Available in LucidWorks Search on Windows Azure, and a new easier way to sign up for LucidWorks Search Service on Windows Azure.

    A new option for signing up

    LucidWorks Search is still listed under applications in the Windows Azure Marketplace, and from there you can create an account via the LucidWorks Account Signup Page. But getting started is now even easier as we’ve integrated LucidWorks’ service with the Windows Azure Store, so you can now set up an instance on Windows Azure By clicking 0n the Store option in the Windows Azure Dashboard:

    clip_image002

    Next, you’ll be prompted to choose an Add-on from a list. Select LucidWorks Search. The next screen invites you Personalize your new Add-On:

    clip_image004

    At this point, all you have to do is enter a new Name for your LucidWorks Search Add-on and the region you want your instance to be located in.

    Right now the only option for signup via the Windows Azure Store is the Micro level, which is great for getting started. Should you exceed the limits of the Micro level, you can also sign up for other enterprise-level accounts from the LucidWorks Dashboard using the LucidWorks account that is automatically created when you sign up via the Window Azure Store.

    LucidWorks support for Windows Azure SQL Databases, Windows Azure Tables and Windows Azure Blobs

    Along with the Windows Azure Store integration, we also released LucidWorks Search support for Windows Azure SQL Databases, Windows Azure Blobs, and windows Azure Table Storage. All are available via the LucidWorks Search Dashboard under Indexing > Data Sources:

    clip_image006

    Windows Azure Blobs provide a way to store large amounts of unstructured, binary data, such as video, audio, and images, including streaming content such as video or audio. There are two types of blob storage available, block blobs and page blobs. Block blobs are optimized for streaming and referenced by a unique block ID. Page blobs are optimized for random access and composed of pages that are referenced by offsets from the beginning of the blob. More information on Windows Azure blobs can be found here.

    Windows Azure Table storage is a collection of non-relational structured data. Unlike tables in a database, there is no schema that enforces a certain set of values on all the rows within a table. Windows Azure Storage tables are more like rows within a spreadsheet application such as Excel than rows within a database such as SQL Server. Each row can contain a different number of columns, and of different data types, than the other rows in the same table. You can find more information on Windows Azure Table storage here.

    Windows Azure SQL Databases are similar to an on-premise instance of SQL Server, but not the same.  Windows Azure SQL Databases expose a tabular data stream (TDS) interface for Transact-SQL-based database access, so they can be used the same way you use on-premise SQL Server.

    However, there are some very important differences for administration. Windows Azure SQL Database abstracts the logical administration from the physical administration. That means that you continue to administer databases, logins, users, and roles, but Windows Azure manages the physical hardware and networking to ensure enterprise-class availability, scalability, security, and self-healing. More information on Windows Azure SQL Databases is available here.

    To set up a new Azure SQL Database as a Data source, select Database as your data source option under Indexing > Data Sources.

    clip_image008

    There are a few tips for setting up a Windows Azure SQL Database as a data source for LucidWorks that you need to know. First of all, copy the URL for your Database from the JDBC connection strings in your Windows Azure Dashboard, using this format:

    jdbc:sqlserver://<WindowsAzureSQLDBURL>:1433/<databaseName>

    Next, select the SQL Server JDBC driver as the Driver for your Windows Azure SQL Database. You also have to include at least one SQL SELECT statement that includes an id column in the result. The id column is used at the Document identifier in LucidWorks search, and relates each row returned by the SELECT statement as fields in that Document. Have a look at my first post in this series for more information on how LucidWorks works with Documents, Fields, and Collections to return search results.

    When done your Data Source configuration should look something like the sample here:

    clip_image010

    Next there are two additional options for setting up SELECT statements to work with your database. The Delta SQL Query uses the primary key to compare new records in the database with existing Documents in the LucidWorks Search Index, and only indexes the new or updated rows. Nested Queries allow you to set up one-to many relationships in the source Windows Azure SQL Database to include multiple rows of data in a single LucidWorks index Document, based on the primary key. Full instructions on setting up these queries as well as other options can be found in the LucidWorks help documentation here.

    Summary

    These are just the latest new features to help you easily and quickly set up LucidWorks Search service on Windows Azure, and there are more on the way. Get started with your own LucidWorks Search solution by signing up via the Windows Azure Store, and let us know what you think!

  • Interoperability @ Microsoft

    Update on Standardization of Next Version of HTTP/2.0

    • 0 Comments

    From:
    Gabriel Montenegro
    Principal Software Development Engineer, Microsoft Corporation

    Andrei Popov
    Senior Software Development Engineer, Microsoft Corporation

    Brian Raymor
    Senior Program Manager, Microsoft Open Technologies, Inc.

    Rob Trace
    Senior Program Manager Lead, Microsoft Corporation

    We wanted to give our readers an update on the standardization of the next version of the Hypertext Transfer Protocol, HTTP/2.0, based on our recent industry standards meeting.

    Representatives from Microsoft Corporation and Microsoft Open Technologies, Inc., recently attended the Internet Engineering Task Force 86 meetings in Orlando to make progress on the first in a series of experimental implementations of HTTP/2.0 (see our earlier blog for details).

    Much of this HTTPBIS Working Group meeting focused on presentations on header compression, which is one of the big open issues that must be resolved for the first experimental implementation of HTTP/2.0.

    Martin Thomson (HTTP/2.0 co-editor) collected and presented a number of pending specification issues for discussion and rough consensus - little things that I would like to change in HTTP/2.0 that I don’t feel I have the authority to change without working group feedback.

    Gabriel Montenegro shared a presentation on Known startup state for a simpler and more robust HTTP 2.0 that reduces the complexity of HTTP/2.0 implementations by ensuring that the protocol starts in a known state for both the client and server.

    At the Transport Layer Security Working Group (TLS WG) meeting, this group reviewed proposals for application protocol negotiation requested by HTTPBIS for HTTP/2.0 negotiation. Andrei Popov presented the Application Layer Protocol Negotiation Extension (ALPN) – one of the proposals under consideration, co-authored with Stephan Friedl (Cisco). After much discussion and a straw poll, there was rough consensus to adopt ALPN. Eric Rescorla (TLS co-chair) sent a Confirming Consensus for ALPN message to the TLS mailing list to encourage additional discussion from IETF members who had not attended the meeting.

    It was exciting to see the progress and tone of the discussions that you can see reflected in the transcriptions below:

    Mark Nottingham (HTTPBIS chair) also suggested that HTTPBIS continue meeting on a frequent schedule to make progress on the first HTTP/2.0 experimental implementation with future interim meetings proposed before and after IETF 87 in Berlin:

    • June 12 or 13-14 in San Francisco Bay Area
    • IETF 87, July 28 - August 2 in Berlin
    • Early August in Northern Germany

    Representatives from Microsoft Corporation and Microsoft Open Technologies, Inc. plan on participating in these meetings and encourage the community to also attend and become more involved in defining the next generation of HTTP at the IETF.

  • Interoperability @ Microsoft

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

    • 3 Comments

    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

    Another milestone for open source cloud programming model ActorFx, more stability, async actor communication and more

    • 0 Comments

    Our team is making steady progress on building a solid framework for our new open source computing model for the cloud ActorFx, and we’re happy to report that we just released version 0.40 for this ActorFx project on CodePlex.

    ActorFx provides a non-prescriptive, language-independent model of dynamic distributed objects for highly available data structures and other logical entities via a standardized framework and infrastructure.

    Since Microsoft Open Technologies, Inc., announced that ActorFx joined the MS Open Tech Hub in December, we’ve been hard at work at adding new features in regular releases.

    For this release we focused on adding some interesting features that enriches the framework and makes it suitable for a wider range of scenarios.

    • We added a DictionaryActor, accompanied by a C# CloudDictionary<TKey,TValue> client. This is just another example of rich distributed data structures that can leverage the ActorFx infrastructure for high availability.
    • We added support for asynchronous actor-to-actor method calls (details can be found in the documentation included in the "ActorFx Basics" doc on the codeplex project).
    • We added support for actor methods written in languages other than C#. For now, we support actor methods written in JavaScript. Documentation is included in the "ActorFx Basics" doc.
    • We also spent some time to improve stability. We've added sensible handling for "transient" errors from the Actor Runtime (like NoWriteQuorum).

    We are already working on the V0.50 release. Let us know if there is any feature you would like to be added to the ActorFx project and, as always, comments and feedback are welcome.

    The ActorFx team:

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

    Brian Grunkemeyer, Senior Software Engineer, Microsoft Open Technologies Hub

    Joe Hoag, Senior Software Engineer, Microsoft Open Technologies Hub

  • Interoperability @ Microsoft

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

    • 3 Comments

    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

    MS Open Tech develops the open source Android SDK for Windows Azure Mobile Services

    • 0 Comments

    imageFurthering the goal of bridging Microsoft and non-Microsoft technologies, Microsoft Open Technologies, Inc. developed the Android SDK for Windows Azure Mobile Services that is being announced today by Scott Guthrie on his blog.

    Windows Azure Mobile Services was created to make it easier for developers to build engaging and dynamic mobile apps that scale. By using Mobile Services, developers are not only able to connect their applications to a scalable and secure backend hosted in Windows Azure, but also store data in the cloud, authenticate users and send push notifications.

    The Android SDK lets you connect your favorite Android phone or tablet (Android 2.2+) to a cloud backend and deliver push notifications via Google Cloud Messaging. It also allows you to authenticate your users via their Google, Facebook, Twitter, or Microsoft credentials. To enable this, the MS Open Tech engineering team delivered the following key features:

    • Data API: this API simplifies the communication between Android apps and the tables exposed through Windows Azure Mobile Services using a fluent API for queries and automatic JSON serialization/deserialization.
    • Identity API: this API allows leveraging Microsoft Account, Facebook, Twitter or Google authentication in an Android app.
    • Service Filters: these components allow the developer to intercept and customize the requests between the Mobile client and Windows Azure Mobile Services, providing a filter pipeline to handle the generated requests and responses.

    The SDK is available on GitHub under the Apache 2.0 license and community contributions are very welcome.

    You can learn more about the new SDK reading Scott’s blog, and the getting started tutorial and come back soon as we are working on more samples/demos/tutorials.

    clip_image004

  • Interoperability @ Microsoft

    MS Open Tech Updates HTML5Labs HTTP/2.0 Prototype Delivering Internet Security in Open Source Encryption Libraries

    • 2 Comments

    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

    Apache Qpid Proton AMQP libraries now available for Windows.

    • 0 Comments

    Back in November Microsoft Open Technologies, Inc. announced that Advanced Message Queuing Protocol (AMQP) 1.0 was approved as an OASIS Standard.  AMQP 1.0 enables interoperability using wire-level messaging between compliant clients and brokers. Applications can achieve full-fidelity message exchange between components built in multiple languages and frameworks and running on different operating systems.  

    Today we’re happy to share the news that the Apache Qpid Proton C AMQP library has been updated to support Windows. Proton C also includes bindings for several interpreted languages including PHP, Python, Ruby and Perl, all of which can now be used on Windows.

    UPDATE 04/18/2013 - The following paragraph was in error.  The Windows Proton libraries do not work with the latest preview release of service bus due to lack of SSL support. We apologize for the error. 

    These Proton clients can be used in conjunction with Windows Azure Service Bus, which introduced support for AMQP 1.0 as a preview feature last October, with GA planned later this year. Applications can use AMQP to access the queuing and publish/subscribe brokered messaging features.  Service Bus is a multi-protocol service, so in addition to AMQP, applications can also use REST/HTTP to access Service Bus from any platform.

    For more information, check out the official OASIS site, this developer’s guide, and downloads(the 0.4 version supports Windows) for Qpid Proton. MS Open Tech was one of many contributors to this project, and we appreciate all the work that the community is doing to help developers take full advantage of AMQP across many different languages, frameworks, and platforms.

  • Interoperability @ Microsoft

    WS-Management adopted as ISO/IEC international standard

    • 1 Comments

    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

    Come see Microsoft Open Technologies at ApacheCon next week!

    • 0 Comments

     

    Microsoft Open Technologies, Inc will be at ApacheCon in Portland next week and we hope to see you there.  We’re sponsoring the Hackathon on Monday, and come see my session on options for implementing CouchDB on Windows Azure on Thursday.  Other than that we’ll be around all week, so if you see one of us stop and say hi!

    Brian Benz
    Senior Technical Evangelist
    Microsoft Open Technologies, Inc.

Page 1 of 4 (331 items) 1234