February, 2011

  • Interoperability @ Microsoft

    The WebSockets Prototype Gets Another Update

    • 1 Comments

    As we continue to move forward with updating the prototypes on our HTML5 Labs site as quickly as possible, I am happy to tell you that we have once again updated the WebSockets prototype, a move that brings the implementation in line with the recently released WebSockets 05 Protocol Specification.

    The 05 spec introduces some changes to the masking algorithm.  Specifically, the masking key is no longer derived from the information that client and server exchange during the handshake, but is now fully contained within each frame.

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

    Also, as we strongly believe that interoperability is very important, we have tested our implementation with another 05 WebSockets implementation that uses C++ and runs on Linux: libwebsockets

    In order to verify this, we setup a Fedora Linux machine with libwebsockets in our Interoperability lab.  We also set up another Windows 2008 R2 machine in the lab, and installed our WebSockets 05 prototype bits on it. Libwebsockets already comes with client and server samples, so we decided to use those for testing.

    The configurations we tested are:

    Server: libwebsockets

    Client: html5labs prototype

    In this configuration we ran the test libwebsockets server on Fedora Linux, which accepts a client connection and sends incrementing integer values to the client every 50ms.  The server resets the counter to 0 whenever it receives “reset” from the client. 

    This screenshot shows the libwebsockets test server starting and then confirming the handshake

     This screenshot shows the HTML5 Labs test client starting and then confirming the handshake

    For the client we created a .NET console application, which uses Microsoft.ServiceModel.WebSockets.DesktopClient.dll (the library that we have been releasing with the WebSockets prototypes).  The application creates a WebSocket connection to the Fedora machine, and receives incrementing integers from the server.  When it reaches the count of 200, it sends “reset” to the server.

    Server: html5labs prototype

    Client: libwebsockets

    In this configuration we created an equivalent .NET application, which acts as a server and sends incrementing integers to the client every 50ms.  This application uses Microsoft.ServiceModel.WebSockets.dll (the library that we have been releasing with the WebSockets prototypes).  We ran the client sample on the Fedora machine, which creates a WebSocket connection to the Win2008 server machine, and receives incrementing integers.

     This screenshot shows the HTML5 Labs test server starting and then confirming the handshake

     

     This screenshot shows the libwebsockets test client starting and then confirming the handshake

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

    We believe that the HTML5 Labs approach has advantages over placing unstable specifications directly in the browser. First, developers can build on Internet Explorer 9 without worrying that their site will break as the underlying specs change. Second, we will iterate very quickly in HTML5 Labs and expect the standalone approach with prototypes to be closer to the latest specs. As an example with WebSockets, most browsers are still on the outdated versions of WebSockets-00 or older.

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

    Claudio Caldato,

    Principal Program Manager, Interoperability Strategy Team

  • Interoperability @ Microsoft

    W3C Accepts Microsoft’s Tracking Protection Standard Submission

    • 0 Comments

    The W3C announced today that they have formally accepted Microsoft's proposal on a common W3C standard for Web Tracking Protection, which means that the standardization process can now begin. 

    An important part of our work with W3C is being an active part of existing working groups as well as identifying important new areas where users and the industry can benefit from a common approach. 

    Clearly, privacy is a great candidate for standardization, given the concern that consumers, academics and governments worldwide have expressed, as highlighted in today's blog by Dean Hachamovitch, the Corporate Vice President for Internet Explorer.  

    A common question has been what exactly has been submitted for standardization and how does that process work. Essentially, the Web Tracking Protection specification is designed to help users block content associated with online tracking.  

     The proposal has two parts:

    • Filter lists, which can enforce user privacy preferences by preventing the user agent from making unwanted requests to Web servers that track users.
    • A user preference, which is conveyed by a DOM property and an HTTP header, to be used by Websites and pages to respect the user's privacy.

    Together these technologies can be used to enhance privacy protection for users, and provide access to content and services that respect user privacy preferences.  

     As to how the standardization process works, this is pretty much the flow:

    • The W3C receives many proposals for new standards, and it filters these proposals based on whether the standard will have broad interest across its members before accepting. This is where this proposal is now.
    • The W3C may hold a workshop to build consensus across stakeholders about how to build a standard technology. In this case the workshop is to seek consensus on the scope of the work to be done on the Recommendation Track.  
    • W3C and wider community members then express their interest in W3C taking up work on a standard. Assuming there is enough interest and enough resources, a Working Group is approved and work starts.

    Working group participants come from three places: W3C member companies, outside experts, and W3C employees.  

    A specification can go through many revisions, is open to broad feedback, and there is also a requirement that the actual implementations are interoperable before the specification finally becomes a W3C Recommendation or standard.

     We are currently implementing Tracking Protection Lists in IE9 RC, which expresses both user intent as well as a way to enforce this by the user. 

    We look forward to working with the other members of the W3C on a common standard for tracking protection and improving privacy for users on the web.

     Jean Paoli

    GM: Interoperability Strategy

  • Interoperability @ Microsoft

    Improving experience for Java developers with Windows Azure

    • 1 Comments

    From the early days, Windows Azure has offered choices to developers. It allows use of multiple languages (like .NET, PHP, Ruby or Java) and development tools (like Visual Studio, Eclipse) to build applications that run on Windows Azure or consume any of the Windows Azure platform services from any other cloud or on-premises platform. Java developers have had a few options to leverage Windows Azure, like the Windows Azure SDK for Java or the Tomcat Solution Accelerator.

    At PDC10, we introduced our plan to improve the experience for Java developers with Windows Azure. Today, we’re excited to release a Community Technology Preview (CTP) of the Windows Azure Starter Kit for Java, which enables Java developers to simply configure, package and deploy their web applications to Windows Azure. The goal for this CTP is to get feedback from Java developers, and to nail down the correct experience for Java developers, particularly to make sure that configuring, packaging and deploying to Windows Azure integrates well with common practices.

    What’s the Windows Azure Starter Kit for Java?

    This Starter Kit was designed to work as a simple command line build tool or in the Eclipse integrated development environment (IDE). It uses Apache Ant as part of the build process, and includes an Ant extension that’s capable of understanding Window Azure configuration options.

    The Windows Azure Starter Kit for Java is an open source project released under the Apache 2.0 license, and it is available for download at: http://wastarterkit4java.codeplex.com/

    What’s inside the Windows Azure Starter Kit for Java?

    The Windows Azure Starter Kit for Java is a Zip file that contains a template project and the Ant extension. If you look inside this archive you will find the typical files that constitute a Java project, as well as several files we built that will help you test, package and deploy your application to Windows Azure.

    clip_image002[4]

    The main elements of the template are:

    • .cspack.jar: This contains that java implementation of windowsazurepackage ant task.
    • ServiceConfiguration.cscfg: This is the Windows Azure service configuration file.
    • ServiceDefinition.csdef: This is the Windows Azure service definition file.
    • Helloworld.zip: This Zip is a placeholder for your Java application.
    • startup.cmd: This script is run each time your Windows Azure Worker Role starts.

    Check the tutorial listed below for more details.

    Using the Windows Azure Starter Kit for Java

    As mentioned above, you can use the Starter Kit from a simple command line or within Eclipse. In both case the steps are similar:

    1. Download and unzip the Starter Kit
    2. Copy your Java application into the approot folder
    3. Copy the Java Runtime Environment and server distribution (like Tomcat or Jetty) ZIPs into the approot folder
    4. Configure the Startup commands in startup.cmd (specific to the server distribution)
    5. Configure the Windows Azure configuration in ServiceDefinition.cscfg
    6. Run the build and deploy commands

    For detailed instructions, refer to the following tutorials, which show how to deploy a Java web application running with Tomcat and Jetty:

    What’s next?

    Yesterday, Microsoft announced an Introductory Special offer that includes 750 hours per month (which is one server 24x7) of the Windows Azure extra-small instance, plus one small SQL Azure database and other platform capabilities - all free until June 30, 2011.  This is a great opportunity for all developers to see what the cloud can do - without any up-front investment!

     You can also expect continued updates to the development tools and SDK, but the experience of Java developers is critical. Now is the perfect time to provide your feedback, so join us on the forum at: http://wastarterkit4java.codeplex.com/

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

  • Interoperability @ Microsoft

    HTML5 Moves Forward

    • 0 Comments

    In case you missed it earlier this week, the W3C announced that it had extended the charter of the HTML Working Group, including clear milestones for HTML5, the next version of the platform-neutral HyperText Markup Language standard used worldwide for rendering Web pages, and the cornerstone of W3C's Open Web Platform for application development.

    There has been a lot of online discussion about all this, positive and negative, as well as a number of media reports on the move, which is great as we at Microsoft strongly believe in an open discussion. I have referenced some of those reports in this blog, which is my synopsis of some of the issues.

    Under the milestone timetable announced this week, the W3C said the Working Group will advance HTML5 to "Last Call," the point at which the W3C thinks the standard's features are set. Last Call is also essentially a call for all communities to confirm the technical soundness of the specification, after which the group will then shift focus to gathering implementation experience and building a comprehensive test suite.

    As Joab Jackson reported in ComputerWorld and other online publications, the W3C expects no new features to be added after the Last Call. After Last Call is completed the group will take feedback only from implementers and through trials of the test suite, Philippe Le Hégaret, lead for the W3C Interaction Domain, which oversees the development of HTML, CSS (Cascading Style Sheets), SVG (Scalable Vector Graphics) and other Web standards, told Jackson.

    Microsoft is pleased with this time table, especially with Last Call in just three months. The HTML Working Group chairs set the Last Call schedule last year, and it's encouraging to see that the Working Group has stepped up to meet that schedule. This is a great step forward and we look forward to continuing to work with the hundreds of other members of the HTML Working Group to advance the specification.

    And, as Jeff Jaffe, the W3C CEO, said in a statement earlier this week, even as innovation continues, advancing HTML5 to Recommendation provides the entire Web ecosystem with a stable, tested, interoperable standard. "The decision to schedule the HTML5 Last Call for May 2011 was an important step in setting industry expectations. Today we take the next step, announcing 2014 as the target for Recommendation," he said.

    As CNet's Stephen Shankland correctly points out in his report on the news, the latest timetable doesn't mean interested parties won't be able to employ the new technology until 2014. "On the contrary, key phases of the coming years' development involve getting feedback from real-world use that's already well under way and ironing out wrinkles that may arise implementing the standard in Web browsers," he says.

    To quote Ian Jacobs, the head of W3C marketing as told to Scott Gilbertson at Webmonkey, "developers can use HTML5 now and we encourage them to do so."

    Because HTML5 anchors the Open Web Platform, the W3C has also started work on a comprehensive test suite to ensure the high levels of interoperability that diverse industries demand. Microsoft has already donated test cases to the current test suite. While it's the most comprehensive test suite of HTML5 so far, it is far from complete. But the test suite is an important step as it identifies differences in implementation and encourages implementers to fix deviations from the specification.

    The W3C has invited test suite contributions from the community and, starting in March, will also dedicate new staff to drive development of an HTML5 test suite. Its first task is to expand the existing test framework by the mid-2011, which will encourage browser vendors and the community to create test cases.

    CNet's Shankland also points out that HTML5 will become the first new revision since HTML 4.01 was released in 1999, noting the features in this next-generation Web page description language include built-in video and audio, a "canvas" element for two-dimensional graphics, new structural labels such as "article" to smooth programming, and a codified process to consistently interpret the hodgepodge styles of real-world Web pages, even when improperly coded.

     And, after the W3C releases the first last call working draft in May, it plans to begin tackling the early stages of what it's currently referring to as HTML.next. So stay tuned and follow along as the momentum around HTML5 keeps growing.

    Peter Galli

    Senior Community Manager

  • Interoperability @ Microsoft

    Relationships … It’s Complicated!

    • 0 Comments

    Isn't Valentine's Day a perfect occasion to think about relationships? Other than my family, the relationship I care most about nowadays is the one between Microsoft and the Open Source communities which, to put it mildly, have been interesting in the past. As I'm learning my way through this new adventure, I have been considering our track record from the early stages and, more importantly, thinking about the future.

    Make no mistake. Relationships are hard and high in maintenance – especially when there is some history to them. Entering the state where water is really under the bridge is tough, and the one and only remedy I can think of is to build those bridges one stone at a time, and show that you really care. I firmly believe Microsoft is on the right track here: first as an outsider, then as a partner, and finally as an employee. For the past few years I saw the tide turning, and Microsoft becoming increasingly more open. We are building those bridges, and we are doing it in the one and only way Open Source communities care: by showing commitment, and contributing code.

    We understand that we are far from being done, which is why I have started looking outside of Microsoft and reaching out to communities to continue the ongoing conversation, and to show the world how much we have changed and become more open. But showing the whats and the hows is notenough: we want to get to the next step, and delve into the reasons leading us to steer the ship towards open water. As the story unfolds and I start touring the world to meet as many communities as I can and gather the feedback we need so much to move forward and have a productive relationship.

    Speaking of travel, I just came back from my European tour, where I visited Italy, Germany, the UK and Belgium. This was my first “toe in the water”, and it was a priceless learning experience, where I managed to reconnect with old friends and meet new people from the Open Source world. In Italy I had a chance to see how HTML5 is going to play a huge part in the future of the Web (you don’t want to lose the upcoming “HTML, ci siamo” event). In Germany I walked away with a miniature model of the “we love developers” double decker Microsoft bus that is making the rounds to show all the efforts Microsoft is doing in enrolling developers. In the UK, I was blown away by the amount of information, tutorials, interviews and other good stuff the www.ubelly.com fine folks are doing. And in Belgium I had a great meeting with some of the most well respected PHP developers who are constructively having a discussion on how to improve their experience on Azure, and helping to plug on the community creativity with a very contest (if you live in Europe, and grok PHP, you should definitely sign up!).

    On top of that, I spent my last day in Europe visiting and attending FOSDEM, the largest Free Software event in Europe. There, I had the pleasant surprise of a day packed with casual encounters in the hallways which turned into extremely practical conversations on how Microsoft and the FLOSS communities can move on and work together on real problems, real projects and real code.

    And code does definitely matter, so let me finish by announcing some new released projects, freshly baked and wrapped in a proper Valentine's day chocolate box. Today we announced the availability of four new extensions for Joomla! that allow Joomla! administrators/developers to provide users with the following integrated features: Bing Maps, Windows Live ID, OData and the Silverlight Pivot Viewer. These extensions are developed and contributed by Schakra and MindTree, with funding provided by Microsoft. Here’s a quick overview of the extensions:

    Bing Maps extension (http://joomlacode.org/gf/project/bingmaps/):
    With this extension, Joomla! users can easily include customized Bing Maps into the content they are publishing, and administrator can preconfigure how the map should look, and where it can be added.
    clip_image002 clip_image004

    Silverlight Pivot viewer extension (http://joomlacode.org/gf/project/pivotviewer/):
    With this extension Joomla! users can visually navigate with the Silverlight Pivot viewer through large amount of data. Administrators define what is the data source using a set of preconfigured options like OData, RSS, media files, etc, .

    clip_image006 clip_image008

    Windows Live ID extensions(http://joomlacode.org/gf/project/windowsliveid/):
    With this extension Joomla! users can associate their Joomla! account to their Windows Live ID, and then to login on Joomla! with Windows Live ID.
    clip_image010

    OData extension (http://joomlacode.org/gf/project/odata/):
    With this extension Joomla! administrator can provide users with quick access to any OData source, like the Netflix catalog (check the list of live OData services), and let them include these in any content type (such as articles). The generic extension includes a basic OData query builder and renders data in a simple HTML Table.

    clip_image012 clip_image014

    Code speaks, content matters. To close on Joomla!, we’ve also just published a new tutorial explaining how to get Joomla! up and running on Windows Azure using the Windows Azure Companion. And by the way we will be at J-and-Beyond conference May 6th-8th, to showcase more Joomla! and Microsoft technologies interop.

    As always I look forward to your comments and feedback.

    Gianugo Rabellino, Senior Director of Open Source Communities

  • Interoperability @ Microsoft

    The Updated WebSockets Prototype

    • 1 Comments

    Following hot on the heels of last week’s update to the IndexedDB prototype, I am pleased to announce that we have also updated the WebSockets prototype, a move that brings the implementation in line with the WebSockets 04 Protocol Specification.

    In short, we added a new type of masking in the protocol that is consistent with the 04 protocol specification. We also increased the maximum size for messages from the 125 character limit in the previous implementation.

    However, it’s important to note that the spec is still evolving, with the 03 version released in December, the 04 version last month and the 05 spec which just shipped yesterday. The plan is to continue to rev the code going forward and to bring the implementation in line with the just released WebSockets 05 Protocol Specification.

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

    The WebSocket API is currently being standardized by the W3C and the WebSocket protocol is being standardized by the IETF.

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

    Updating the prototype is a great way to continue to test the spec as well as let users play with new features to make sure they work the way they are supposed to and to provide feedback.

    As part of the update, we are posting new demos, including a casual game that shows users how WebSockets can enable new scenarios.

    This prototype forms part of our HTML5 Labs Web site, a place where we prototype early and not yet fully stable drafts of specifications developed by the W3C and other standard organizations. We believe that the HTML5 Labs approach has advantages over placing unstable specifications directly in browser. First, developers can build on Internet Explorer 9 without worrying that their site will break as the underlying specs change. Second, we will iterate very quickly in HTML5 Labs and expect the standalone approach with prototypes to be closer to the latest specs. As an example with WebSockets, most browsers are still on the outdated versions of WebSockets-00 or older.

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

    Claudio Caldato,

    Principal Program Manager, Interoperability Strategy Team

  • Interoperability @ Microsoft

    Windows Phone Interoperability site

    • 0 Comments

    The announcement of the Windows Phone Developer Tools Update is the opportunity for us to say a few words about the Windows Phone Interoperability site. We opened the site last December with the focus on helping developers who have been creating phone applications on various platforms ramp up quickly on the Windows Phone 7 platform. The site initially includes content designed for iPhone developers and we will add resources for Android developers.

    The site has a wealth of information for the new and experienced developer, with more content arriving in the next weeks.

    Resources are organized into chapters, where developers can find the following detailed guides for Windows Phone development:

    clip_image002

    The first 4 chapters are now available for download (DOCX or PDF).

    The Windows Phone Interoperability site also includes several videos of developers explaining how they transitioned from other platforms to Windows Phone 7, and revealing their secrets for successfully designing and building applications.

    clip_image004Groundspeak testimonial: experience developing the Geocaching phone application for Windows Phone 7

    At Microsoft, we’re committed to ensuring phone developers have the necessary tools for building applications on the Windows Phone platform. The goal of the Windows Phone Interoperability site is to make it easy for developers with experience on other platforms to learn as quickly as possible. The site will also provide tools and guidance to help developers building applications for multiple platforms.

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

  • Interoperability @ Microsoft

    The IndexedDB Prototype Gets an Update

    • 3 Comments

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

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

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

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

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

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

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

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

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

    Claudio Caldato,

    Principal Program Manager, Interoperability Strategy Team

  • Interoperability @ Microsoft

    Greater Interoperability for Windows Customers With HTML5 Video

    • 94 Comments

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

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

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

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

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

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

    Claudio Caldato,

    Principal Program Manager, Interoperability Strategy Team

Page 1 of 1 (9 items)