Today I presented a session at the Web 2.0 Expo in New York called Cloud Computing with Windows Azure Using Your Preferred Technology. During my talk, I stepped the audience through a series of demonstrations in which non-Microsoft tools and programming technologies, such as PHP or Java, were used natively to create cloud computing solutions with the Windows Azure platform. I also had the exciting opportunity to debut new open source projects:

If you want more detail about these projects, just click the links above. There you’ll find additional information, including videos.

I was very fortunate to have Tim Wise from Dominos Pizza as a guest speaker in my session; he showed how Dominos dealt with the problem of handling peak website loads (like on SuperBowl Sunday) by using Windows Azure for scale-out. What makes the Dominos demo very interesting is that the Dominos web-application is a Java Application running on TomCat. A true testament to the interoperability of the Windows Azure Platform! Read this blog post for more details: “Domino’s Demonstrates Tomcat Site on Windows Azure”

I received some very interesting questions and feedback about these projects from those who attended my talk, so I want to extend a big thanks to everyone for their input. It’s been really nice to be at Web 2.0 and connect with real-world developers building next generation websites and applications.

As many of you know, most large web sites that feature lots of content often experience traffic that is looking for pages that either don’t exist or have been moved. But did you know that the percent of traffic that causes web servers to return a generic 404 error page or sitemap is as much as 2 to 10 percent? That’s an awful lot of viewers experiencing a dead end as a result of nonexistent or relocated pages.

However, the Bing 404 Web Page Error Toolkit for PHP, which was debuted at the Web 2.0 Expo in New York today, helps developers better manage 404 errors by dynamically creating a customizable page that contains error messages and search results that are seeded with relevant keywords from Microsoft’s Bing search engine. This page ultimately helps web site visitors move past the missing page and find the information they need.

The Bing 404 Web Page Error Toolkit for PHP is a customizable PHP application that replaces the default error page on Microsoft IIS or Apache web servers with Bing search results that are based on keywords that have been derived from the URL requested by the user. The toolkit is available on Codeplex as an open source project, and is released under the Microsoft Public License.

Say, for example, a user requests a page with the URL “someURLontheweb.com/interoperability/bridges,” and the URL doesn’t exist. The toolkit dynamically creates a page like this one:

The process works in this way:

The web server identifies a 404 “page not found” error and executes the toolkit.

The toolkit extracts keywords from the URL (“interoperability” & “bridges” in this case) and returns them, along with the error page, to the viewer's browser.

The browser sends a search request to the Bing API via a JavaScript call that includes the extracted keywords.

The Bing API returns the appropriate results to the browser.

The browser renders the results via JavaScript in the context of the page that the developer has customized.

You can see an overview of the architecture, the configuration steps, and a quick demo of the toolkit in the following Channel9 video:

The toolkit is very easy to install and use, with very little customization necessary. Feel free to check the project site on Codeplex http://bing404php.codeplex.com. As always your feedback is welcome!

.NET developers—note that a similar kit for ASP.NET is available for ASP.NET here.

The SQL CRUD Wizard for PHP is a wizard type application that can be used to generate a simple "Create, Read, Update, Delete" PHP application from a Microsoft SQL Server, Windows Azure Storage and SQL Azure database table. The generated PHP application supports paging, sorting and simple CSS customization. The generated PHP Application Code, generated by the PHP to SQL CRUD Wizard, includes logic for CRUD functionality between the PHP application and a SQL Server database instance on the web server. This project initiated last spring was developed by Accenture, with Microsoft providing funding.

You can see an overview of the architecture, the configuration steps, and a quick demo of the wizard in the following Channel9 screencast:

I’m pleased to announce a new software development kit (SDK) that helps PHP developers easily leverage the Windows Azure platform AppFabric (formerly called .NET Services). This SDK is the third in a series, the first of which was released a year ago. Equivalent SDKs for Java and Ruby are also available and they have been updated to reflect the latest version of the AppFabric.

As part of the Windows Azure platform, the AppFabric includes the Service Bus and Access Control services. They are both web-based services that provide infrastructure in the cloud to connect applications. The Service Bus acts as an intermediary between applications and services. For example, developers can use it to bridge on-premise and off-premise applications or create composite applications. The Access Control service enables external users to connect to cloud resources using their external identities. It also enables developers to create user accounts that federate a customer's existing identity management system that uses the Active Directory service, other directory systems, or any standards-based infrastructure. You can learn more on the http://www.microsoft.com/windowsazure/dotnetservices/ pages. I suggest that you start with the video:

“What are the Access Control Service and the Service Bus?”

Understanding the function of the SDK

Before I delve any deeper into the technology behind the SDK, I want to address a question that we on the Interoperability Team are often asked:

Let me be clear: the Windows Azure platform natively supports multiple Internet protocols and standards (such as HTTP, XML, SOAP, REST, and ATOM, to name a few). So it does not require an SDK to build applications. However, the SDKs can boost developers’ productivity and provide guidance on how to use the platform. Think of SDKs as speed-dials to the Windows Azure platform!

Watch the video

To find out more about this project, watch the video with Sumit Chawla, Technical Product Manager/Architect from the Microsoft Interoperability Team. Sumit explains the SDK architecture, provides sample scenarios, and demonstrates the SDK in action with a sample PHP application.

Let me try to summarize in a diagram a typical scenario using the AppFabric SDK for PHP.

Imagine you want to provide access to an application or service living within the boundary of your enterprise, but you cannot (or don’t want to) open a direct communication to your application. You can use the Service Bus to act as the intermediary and communicate with third parties via buffers of messages. The Access Control service makes it easier to deal with the identities of your users and the associated level of authorization.

In the scenario represented by the diagram below, the PHP application that lives behind an enterprise firewall can share specific services with other applications—whether they run on Windows Azure or on other cloud infrastructures, and using a mix of technologies.

For more details on the SDK, feel free to visit the project site at http://www.dotnetservicesphp.com/, which includes tutorials, sample code, and a demo application that can help you better understand how to use the services in your own application.

We’ve worked very hard to release version 1.0 of three different projects today, all timed to coincide with the availability of the Windows Azure platform, which was also announced today at the Professional Developer Conference in Los Angeles.

This release is the culmination our team’s year-long work with our partners for bringing core PDC09 scenarios to life and a release that many of our customers & open source developers have eagerly been waiting for since our last CTP release at Eclipse Summit Europe. I want to thank our engineering partners Real Dolmen & Soyatec who have done a great job in such a short period of time to complete SDKs & tooling.

The version 1.0 of the tools & SDKs can be downloaded from the below location.

The Eclipse tooling & SDKs are fully compatible with Windows Azure that has just been released, so you can build services & web applications using PHP & Java in Eclipse and deploy them to the cloud today.

I am excited to share some of the new features that we have included in this version of the Windows Azure Tools for Eclipse:

Improved PHP Project Migration & Portability: We have introduced a new wizard that enables PHP developers to convert their existing web applications to Windows Azure. Further, the wizard supports developers targeting Windows Azure or SQL Azure for their storage needs.

Development Fabric & Storage Support: Eclipse tooling is now deeply integrated with development fabric & storage that offers a high-fidelity simulation of the Windows Azure hosting & storage services on the developer’s desktop or laptop to test their cloud applications.

SQL Azure Support: A new Management tool that allows PHP developers to setup their SQL Azure accounts and test connectivity against local (development fabric) & Cloud database. Based on the developer’s choice, the project system automatically bundles appropriate SQL Server driver and extensions.

Service Model UI: A redesigned and significantly more complete interface for manipulating Role configuration information. To access, right mouse click on the WebRole project and click properties.

Improvements to Storage Explorer: The Storage Explorer now supports shared & signed access signatures. The idea behind this to allow developers create signatures that are more granular than the shared key for the whole storage account and then embed these signatures directly in a blob URL instead of an authorization header.

Certificate Management: We have laid a solid foundation to support SSL certificates in Eclipse tooling to allow secure automated deployment of certificates to services hosted on Windows Azure. This feature will be fully completed in the upcoming milestone.

Finally, the many new features of the Windows Azure SDK for Java are showcased in a new tutorial that illustrates how Java developers can take advantage of Window Azure in heterogeneous scenarios, with both on-premise and cloud Java applications. The tutorial is available at: http://www.windowsazure4j.org/learn/setup/

You may also have heard that Microsoft today announced new third-party technologies that can be run inside Windows Azure, including MySQL and Java (we’ll come back to this later!). All of these technologies take advantage of the automated service management capabilities in Windows Azure. These developments further deliver on Microsoft’s strategy to make the Windows Azure platform open and interoperable.

More interoperability treats are going to be announced at PDC, so stay tuned!

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

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

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

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

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

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

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

The Lightning Talks was held during a reception with plenty of popcorn, beer and wine on Thursday evening, November 5. The talks are a lively, spontaneous ApacheCon tradition with speakers getting about 5 minutes to poke at each other, the projects, technology, community etc … and have a bit of fun!

Team Microsoft was led by Kent Brown, Product Manager for Windows Communication Foundation, was our singer, songwriter and guitar player, wrote ‘Incubator Blues’ inspired by his experience participating in the Stonehenge Project and working with the community. He was joined by his backup singers; Peter Galli, our open source community manager; Tanya Young, our chief cat herder at the conference; and me. It was great fun and we hope you enjoy it!

Incubator BluesLyrics by Kent Brown to the music of ‘Walkin’ Blues” by Robert Johnson

Woke up one mornin', said I want a project at Apache If you build it they’ll come, a great community! Woke up one mornin', said I want a project at Apache If you build it they’ll come, just how hard can it be?

People tell me, Incubator blues ain't bad It's the worst old feeling, I most ever had People tell me, Incubator blues ain't bad It's the worst old feeling, Lordie most ever had

They said we need a name, one that no one has used Cause if you’re not careful, then you’ll get us all sued! They said we need a name, one that no one has used Cause if you’re not careful, then you’ll get us all sued!

Hoped for volunteers; thought they'd code it for fun But soon found out, nothing’s done without funds! Hoped for volunteers; thought they'd code it for fun But soon found out, nothing’s done without funds!

I posted my spec, said jump on the boat But they said dude here you gotta take a vote. I posted my spec, said jump on the boat But they said dude here you gotta take a vote.

I asked for a server, place to hold all my stuff They said “You want Windows?” well that's gonna be tough I asked for a server, a place to host all my stuff They said “You want Windows?” well that's gonna be tough

Woke up this morning, to release version 22 That's when I knew I had them Incubator blues Woke up this morning, to release version 22 That's when I knew I had them Incubator blues

Old Seb found a problem; somethings wrong with the build Nothing gets by him, that guy is skilled! Old Seb found a problem; somethings wrong with the build Gotta do it again, oh man am I thrilled!

People tell me, Incubator blues ain't bad It's the worst old feeling, I most ever had People tell me, Incubator blues ain't bad It's the worst old feeling, Lordie most ever had

Three years ago, Microsoft and Novell announced a partnership that was received with surprise and skepticism by the IT industry and customers alike. (Watch the press release at http://www.moreinterop.com/) What could possibly drive these two companies into a partnership considering the long history of competition behind them? The answer to this question is simple – customers and their complex IT environments.

Over the years, in search of efficiency and competitive advantage, customers started to look at the end promise of mixed source environments without always considering the plumbing that needs to be done to get disparate systems to work as one.

This is where the Microsoft and Novell Technical Collaboration comes into play. Engineers from both companies work side-by-side in our joint Cambridge, MA, lab working to test our interop solutions and ensure that they work better together. And both companies agreed to develop their products on open standards so that customers don’t have to worry about the plumbing. What started off as a lofty goal of four collaboration pillars has now grown to seven and continues to develop.

In this post, I’ll provide an update of the initial four areas that include Virtualization, Standards Based Systems Management, Standards Based Identity and Federation, and Document Format Compatibility. I’ll also review the incremental collaborations that include Moonlight, Linux Management for MS System Center, and Windows Accessibility.

Virtualization

Starting with Virtualization, the two companies agreed to optimize their respective Server OS platforms to take advantage of each other’s virtualization Hyper Visor. This was made possible by a set of VM adapters that were designed to broker communications between the XEN Visor and Windows Hyper V. These Hyper-call adapters, along with drivers for synthetic devices and storage were packaged up together and offered to customer as the Linux Integration Components. The Integration Components could be downloaded and copied into the Guest OS which when rebooted would experience the additional performance of being and enlightened or para-virtualized guest. This was a key differentiator for Novell as SUSE Linux is the only enlightened guest supported on Hyper-V. Most recently, Microsoft has contributed the Integration Components to the community thru a GPL V2 License

In the last six months, we’ve crossed the threshold into the Virtualization V2 solution. The key differentiator here is that SUSE Linux is an enlightened guest on Windows Server 2008 R2 with Live Migration. Now administrators can move Windows or Linux Guest across physical hosts without experiencing any downtime. With Live Migration supporting SUSE Linux, Microsoft and Novell have been able to narrow the perception gap in heterogeneous virtualization between Hyper-V and ESX from Virtualization Competitor, VMware.

Management

On the Management front, the initial agreement was for both companies to adhere to WSMan protocol standards for Systems Management. Both Microsoft System Center Operations Manager and Novell’s Zenworks Management Platform leverage WSMan protocols for server monitoring. But the innovation continued in the form of a Linux Management Pack that Novell release last year for Microsoft’s System Center. Novell’s Linux Management Pack extends the cross platform capabilities of System Center by monitoring seven key services within SUSE Linux. They include Samba, Bind/DNS, DHCP, LDAP, CUPS, Firewall, and NFS. Novell’s Linux management pack is currently only supported for SUSE Linux.

Identity and Federation

The next and most recent technical solution involves the Identity and Federation Pillar. The agreement was for both companies to adhere to WS* for directory and Identity Federation. This has been brought to life thru Microsoft’s AD FS (Active Directory Federation Service) and Novell’s Access Manager. Both of these products communicate thru the WS Federation Protocols include WS Trust and WS Security. Thru this federation model, customers can take advantage of AD based applications like Microsoft SharePoint in E-directory or other LDAP directory environments. We are currently developing a packaged solution that will extend SharePoint to non AD environments thru this AD FS – Access Manger federation model expected to ship in Q2 of CY10.

More Technical Interop Projects

I’ll spend this last section discussing the remaining technical projects which are Document Format Compatibility, MS SilverLight and Moonlight, and Windows Accessibility extended to Linux

Microsoft Silverlight extended thru Moonlight –Microsoft worked with Novell to enable them to deliver Silverlight support for Linux called Moonlight. The browser based plug-in allows SilverLight content to be consumed by Linux users running Firefox or other open source browsers. http://www.mono-project.com/Moonlight

Accessibility Collaboration – Novell is building a set of adapters that allows Microsoft’s User Interface Automation (UIA) framework to work within Linux Accessibility Projects. This will allow the common Windows Accessibility capabilities to be leveraged by Linux accessibility projects. http://www.novell.com/linux/microsoft-accessibility.html

As we celebrate the 3rd anniversary, we’re happy to see the technical collaboration between Microsoft and Novell is alive and thriving with most of the key milestones completed, and our teams continuing to collaborate for our customers’ IT future. With over 475 customers who are taking advantage of the benefits, there’s no doubt that these two companies are taking their customers’ needs seriously. The bridge that was built between the two companies, supported by a mutual respect for intellectual property, continues to deliver interoperability solutions that lead the way to the ever-complex, next generation data center.

I, along with other Microsoft colleagues, participated in the ApacheCon 2009 in Oakland, CA this week. This week also marks the 10th Anniversary of the Apache Software Foundation – so congratulations to the ASF and overall Apache community, which has steadily grown and sustained over the past decade!

Microsoft is now actively participating in several Apache projects and becoming part of the core community. ASF President, Justin Erenkrantz, talked about Microsoft’s contributions recently, as well. Peter Galli has also blogged on other activities that we were engaged in at the ApacheCon this year.

I have personally been involved in the Apache Stonehenge incubator project along with my colleague, Kent Brown, and it is good to see all the progress that we have made in the last 1 year. The original goal of Stonehenge was to provide a public forum to test the interoperability of WS-* protocols on different vendor stacks and to build sample applications that could provide best practices and coding guidelines for better interoperability. We are on a good path to achieving many of these goals, with the main sample application, Stock Trader, now having been implemented on .NET (by Microsoft), PHP (by WSO2), WSAS JAVA stack (by WSO2), Metro (by SUN Microsystems), Spring Web Services (by SpringSource).

The Stock Trader application has also been extended to use the WS-Security and WS-Trust protocols now for claims-based authentication scenarios. This allows the end-users’ access to be authenticated through an independent Security Token Service (STS) that is trusted by the bank and to pass that token to the broker to process the transaction.

Moving forward, the Stonehenge dev community wants to focus on building multiple micro-samples each focused on specific set of WS-* protocols. I think this is a great idea because it will allow vendors, developers and customers to quickly test and learn specific protocols of interest to them instead of going thru one big application that covers most of them. It also allows individual developers to work on different samples and turn them around faster. One other idea that is being talked about is having a dashboard available which can show the results of interop tests across different stacks in an easy to understand and consume way. This will be of great interest to our customers who can see the interop testing results across different versions of implementations of WS-* standards by different vendors. Kent Brown, along with Prabath Siriwardena of WSO2, did a technical session on Stonehenge and talked about future plans. There seems to be good consensus building around these future plans for Stonehenge.

In addition to the meetings to discuss the progress of Stonehenge with other contributors to the project, I had the privilege of meeting with the ASF executives and talk about other projects that Microsoft can work on. I look forward to doing more interop work and engagements with the Apache community over the next year. We also showed off several other interop-related projects that Microsoft has been engaged in recently:

The Toolkit for PHP with Virtual Earth aka Bing Maps is one of the useful tools that we announced and on our Interoperability Bridges site. The toolkit provides a set of files that allow you to connect your server running PHP to a set of client web browser files in JQuery, Javascript, JSON that in turn access the Virtual Earth or Bing maps services in the cloud via request/responses. That’s a whole set of technologies working together to ease developing solutions.

The database that connects to PHP can either be either MySQL or Microsoft SQL Server and the kit ships with both of these in two separate downloadable (.zip) hosted on the Codeplex project site. The open source code is also available from this site and contributors welcome to check it out or contribute to it.

This scenario involves PHP using MySQL. In this case I want to be able to create pins on a Bing Map from a simple form on a web page and a database that stores the location. You have the ability of storing it directly into the database via the service with both the latitude and longitude as raw data or you have a provided helper application that will search a common address and store it transparently in the database and render it on a map as well as do some basic input checking.

You will need to have a web server running PHP 5.2 or higher installed, you must have JSON enabled for previous versions. An internet connection and Javascript enabled in your browser will also be necessary. The phpMyAdmin tool will be useful in setting up the initial database schema. The entries would each have a title, description, latitude and longitude and a position ID as a key. This will all be delivered back as JSON through the returnresults.php service included in the solution. Modify the $serverName variable in this file with the database server name. $uid and $pwd will need to be modified appropriately to a valid database user and password. $dbname changed to the correct database where you created the entries earlier. You will now have a service that will retrieve and store the data for your map.

You may want to add some sample values at the beginning so that some new shapes can be rendered by the mapping service. The pushpin shape is handy here and comes as a default in the solution. You can either populate the locations from your database tool or you can use the example below.

It’s a good idea to change the first variables in map.js with the starting location of your map and the zoom value by changing the results below, set for Seattle WA and it’s surroundings. It will give you a nice user experience if you start with a default that shows where there is a good number of pins or your first entry.

Then create a new html file with in the headers

The following statement loads the map from the mapping service, the function is provided in maps.js

Create a placeholder in the body for the rendered map, the following div will do this for you,

Then bring up a form which calls the other functions also located in the file maps.js. The proper way is to use form that calls the FindAndAddPin function by passing a title, description and location. You can also render the map by itself by omitting this form if you don’t want users to be able to modify it. The service will call the mapping service to find the location provided and provide a callback with an array that includes the latitude longitude. This in turn is stored by the SavePushPin function through the returnresults.php service to the local store we created earlier.

For illustration, you can use the alternate form that calls the SavePushPin function directly and it will write the latitude and longitude via service to the database. It will render the location when the map changes in any way and the function MapChangeHandler, receives an event . That handler lives in the GetMap function in reference earlier. Panning and Zooming the mouse will do the trick and update the values.

Save the html file and put it in the same folder or reference it appropriately along with returnresults.php, map.js, map.css and jquery-1.2.6.js included in the solution package you downloaded on your website and view in your browser!

That’s all you will need to display a Bing map on your site with pre-populated locations using a little PHP, JQuery, JSON and HTML!

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

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

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

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

Eclipse “next-generation experience” on Windows 7

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

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

Taskbar Progress integration. Windows 7 provides a new visual representation of the progress bar, which is included in the default behavior of the Windows 7 taskbar. The progress bar is actually part of the application icon, and shows progress horizontally across the icon. Here’s how it might look in the Eclipse IDE: And here is another view of the progress bar from an application built using the Eclipse RCP:

Taskbar Jump Lists. The redesigned Windows 7 taskbar allows applications to expose frequently used features or files that users can select directly. Eclipse-based applications will be able to leverage this feature. For example the next screenshot shows how you could launch Eclipse commonly used features (“New…” or “Synchronize”) directly from the taskbar:

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

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

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

Windows Azure Tools for Eclipse for PHP developers

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

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

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

Windows Azure SDK for Java developers

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

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

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

Eclipse Tools for Silverlight

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

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

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

By Paul Lorimer, Group Manager, Microsoft Office Interoperability

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

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

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

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

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

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

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

ZendCon 2009 just wrapped up on Thursday. It was held at the San Jose McEnery conference center from the 19-22 October 2009. The conference is a great opportunity to catch up on PHP development and deployment. There are intensive tutorials and crash courses where developers can get up to speed quickly and get certified. An Un-Conference runs alongside the main sessions in an informal setting and is mostly presented by the attendees themselves. An exhibit hall has a few partners on display including our Microsoft Website Spark team. There was something for those new to the technology, and plenty to chew on for experts, with plenty of opportunities to network and get to know one another.

ZendCon is put together by Zend Technologies Inc. They are also is known as ‘the PHP Company’ in the industry. The founders, Andi Gutmans (CEO) and Zeev Suraski (CTO) are key contributors to PHP and the creators of the core PHP scripting engine, the Zend Engine as well as the Zend Framework. The company provides important leadership for PHP and other open source communities, and plays a central role in the explosive growth of PHP.The conference also serves as an opportunity for the rest of the contributor community to have a real-world venue to connect, which is an important thing in itself as they usually interact virtually. You get to hear about some of the key developments and trends right from the source and not just as the sessions.

Microsoft has been participating in ZendCon since 2006 and so we weren’t exactly strangers to this community. At this conference however we had some key information that we wanted to share with the community. These projects can be found on our Interoperability Bridges page and are also on this blog. Featuring …

PHP on Windows has come a long way on Windows! At first it was a framework you had to compile from source and run on a web server, it is now installable from many popular ftp/websites like windows.php.net. You can easily get PHP downloaded along with the rest of your favorite apps and tools on your web development stack by using the Microsoft Web Platform Installer. It’s tiny and free! The install for PHP happens in minutes once you pull it down from the web. More and more applications that are frequently being adopted can be found on the Windows Web App Gallery. For example applications such as Drupal, a popular Content Management System and Wordpress, a popular Blog engine are available on there.

Getting PHP on Windows easily installed for development and deployment was one of the most frequently asked question by most PHP developers and administrators I have talked to. Many are shocked when they first download the installer and in a few check boxes have a fully configured PHP environment and application running. You can also modify and create custom deployments of your applications fairly easily and have the same environment running in your staging and production environments in a few mouse clicks too.

The keynotes are a big draw at the event … Andi Gutmans in his kickoff and state of the union keynote, ‘PHP at the Heart of Mainstream IT’, spent some time on the partnership with Microsoft. You can read a little more about what was said on Information Week and Visual Studio Magazine. We were also on a special Keynote Panel, Developing on the Cloud. Vijay Rajagopalan, Principal Architect on the team and a person who is very instrumental in developing some of the technical bridges mentioned in this post participated on behalf of Microsoft. He was joined by a few other cloud players including Wil Sinclair (Zend), Doug Tidwell (IBM), Thorsten von Eicken (RightScale) and Dave Nielsen (CloudCamp). Stephen O'Grady (RedMonk) was the moderator. Most of the panels participants are from the Simple Cloud effort. The questions were mostly taken from the #ZendCon Twitterstream in real-time and that gave a bit of a dynamic feel to the panel and allowed observers to provide live and, most of the time, candid commentary. There was a range of discussion from developer tools and frameworks, to management and security, and to more abstract discussions about the offerings from different vendors in the industry.

Some notable sessions that covered Microsoft and Interoperability topics,

Josh Holmes, a Microsoft Architect Evangelist based in Michigan, presented ‘What’s new in PHP on Windows’. He covered some of improvements on various aspects of running PHP on Windows.

Kevin Leneway, a Microsoft Audience Marketing Manager from Redmond presented an Un-Conference session titled ‘Forget the Hype: Real-World Experiences Running PHP Frameworks in the Cloud’. An informal discussion with developers on what is works and doesn’t and the state of the space.

Will Sinclair, from the panel above, gave a session ‘PHP and Platform Independence’ in which he describes the Simple Cloud API which we contributed to and how it abstracts out and gives a common interface for making applications interoperable across cloud vendors.

Aaron Wormus, had an interesting and well attended session on ‘Mastering Open XML Documents with PHP’ where he talked about PHPExcel and the tricks on how to use it to create, read and manipulate powerful documents programmatically.

Rob Richards, session on ‘Digital Identity: OpenID and Information Cards’ covered authentication benefits and considerations on implementing the two methods.

There was a lot to learn! I had a very pleasant experience at the conference and I’m very glad that I attended. I even bumped into some old friends and made many new ones too. I would like to thank all the folks at Zend Technologies & S+S media for putting the conference together and to the PHP community for the great discussion on technology, the web, PHP and all sorts of geekdom … y’all rulz!

The most interesting way you can do so is by using PHP via our Toolkit for PHP with ADO.NET Data Services. This project makes it easier for PHP developer to take advantage of the ADO.NET Data Services, a set of features now available in the .NET framework. It simply exposes data in a RESTful way via proxy classes that are generated by the toolkit at design time by using the metadata that is exposed. Your code at runtime uses these classes to work with the .NET based service over http. You can easily adapt the example given in the toolkit also described by Claudio here, to use the OGDI service.

You will want to install the toolkit as per instructions (/docs folder has a good Users Guide, it’s also available here) by copying all the files and folders into an accessible folder with the proper include_path reference in your php.ini file, as well creating the proper variables and enabling the proper extensions such as php_curl an php_xsl. This stumped quite a few folks as generating proxy classes using the PHPDataSvcUtil.php client will not work otherwise and neither will the proxy, editor or the entity you generate. With that done, you should be able to point to the uri, you want on the OGDI data service (e.g. http://ogdi.cloudapp.net/v1/dc/ ) and with that you can generate your proxy classes or Entity Container. You can find a working example that has a full browser for the data at http://ogdiphpsample.cloudapp.net/ , with source code available that you can reference. There is also an ADO.NET Data Services Client Library that can be found here in which you can build using Visual Studio 2008, Service Pack 1 or later and create a svc proxy using the above method.

The next option is to use the REST Web Services, that let’s you query using PHP and have a return result in either ATOM Publishing Protocols, Javascript Object Notation (JSON) and JSON with Padding (JSONP) which is used in quite a few Web2.0 frameworks. There is also the ability to call using straight Javascript from within your PHP apps. You would ideally however want to create a REST client service class, with a pointer to the URL, typically one of the data services on http://ogdi.cloudapp.net/v1. You will then create a query, using a format, using the methods defined here. After grabbing executing with the proper exception handling and managing the responses for display or processing. You can see an example of the PHP code by using the data catalog. This query for example, will return the Domestic Per Diem Rates for 2009 from the General Services Administration entity container. You can also apply filters to narrow down your result as in the examples above.

There is also the ability to return your data in Geospatial form by using the Keyhole Markup Language (KML) which is compatible with popular mapping tools including Bing Maps and services from Google and yahoo. All you need to do is to append format=kml to your query just like the filters and you will be able to visualize the data that is returned. You will find some good examples of usage in the data catalog mentined earlier. That should add some interesting color to your application along with the other methods mentioned above if the data lends itself to the solution you create.

Keith Hurwitz, our State and Local Government Evangelism Manager on Dan’s team, also participated in the Demo Jam at the receptionhosted by one of our InteropVendorAlliance.org partners Mark Logic using OGDI. He dived deeper into OGDI in a session the next day titled Microsoft’s eGovernment Solutions: Government Transparency and Cloud Computing: Publishing government data in Windows Azure with Microsoft’s Open Government Data Initiative open source toolkit. Keith shared some of the thinking on how it can be used, it’s architecture and demonstrating some good examples, including the OGDI sample site and a visualization by a partner IDV Solutions called Visual Fusion that utilizes the OGDI data. OGDI is a great cloud solution for Government hosted on Windows Azure. It supports calling from a number of different languages including Flash, Java, Silverlight, Google Maps and Bing Maps. It also utilizes some of the Technical Bridges that have been highlighted on this blog including the Toolkit for PHP with ADO.NET Data Services, Open XML Daisy Translator. OGDI has also been used as a demo in our latest technical bridge published, Restlet Extension for ADO.NET Data Services.

I had a great opportunity to learn a bunch of new stuff and I would like to thank the organizers, IDEAlliance, it’s board, the track leaders and members of the advisory committee, our great speakers and to the attendees for the interaction and stimulating conversation. Special thanks to Joy Donat and Ken Holman for cat herding. I look forward to working with you all again at the next event.

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

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

Much of the work that we have collaborated on in the past several months has been centered around PHP, but rest assured we have been focused on other technologies as well. Take Java, for example. A big congratulations goes out this week to Noelios Technologies, which just released a new bridge for Java and .NET.

Microsoft collaborated with the France-based consulting services firm and provided funding to build this extension to the Restlet Framework. It’s always very exciting for me, as a French citizen living in the United States, to witness French companies like Noelios collaborating with Microsoft to develop new scenarios and bridges between different technologies. Noelios specializes in Web technologies like RESTful Web, Mobile Web, cloud computing, and Semantic Web, and offers commercial licenses and technical support plans for the Restlet Framework to customers around the world.

ADO.NET puts data sources within reach

For those who are relatively new to ADO.NET Data Services, it is a set of recently added .NET Framework features that provides a simple way to expose a wide range of data sources, such as relational databases, XML files, and so on, through a RESTful service interface. Formerly known as “Project Astoria,” ADO.NET Data Services defines a flexible addressing and query interface using a URL convention, and supports the usual resource manipulation methods for data sources, including the full range of Create, Read, Update, and Delete operations.

Microsoft Visual Studio 2008 SP1 and the upcoming Visual Studio 2010 fully support ADO.NET Data Services, including the capability to create and consume data services directly from the development environment. If you want more information about ADO.NET Data Services, look here. I recommend the “How do I…” videos; the links are located on the right side of the page.

A closer look at the Restlet Extension architecture

The Restlet Extension for ADO.NET Data Services provides a high-level client API that extends the Restlet Framework’s core capability by providing access to remote data services that are hosted on ASP.NET servers or the Windows Azure cloud computing platform.

Java developers use the extension’s code generator to create Java classes that correspond to data entities exposed through ADO.NET Data Services. The Java application is then able to access the data via a simple method call. The runtime components in the Restlet engine and the extension take care of the communication between the Java client application and ADO.NET Data Services.

REST makes it all possible

The Restlet Extension project is a great example of the infinite possibilities that REST affords. Java developers using the Restlet Extension for ADO.NET Data Services can now connect their applications to a .NET platform with relative ease, which means more choices for Java developers and new opportunities for Microsoft.

A very big thanks goes out to my French colleague Stève Sfartz in the DPE Division at Microsoft France. Steve was instrumental in initiating and driving the collaboration during the Restlet Extension project. He has been working for quite some time with Noelios Technologies Cofounders Jerome Louvel and Thierry Boileau using the Restlet Framework to illustrate interoperability scenarios between Java and Microsoft technologies using REST.

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

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

What is the Simple API for Cloud Application Services

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

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

File storage services, to enable all kinds of files to be stored

Document Storage services, to enable manipulation of structured data in a tabular form

Simple queue services, to enable storage and delivery of messages.

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

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

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

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

This week Microsoft is participating in the first Gov 2.0 Summit produced by O'Reilly Media, Inc. and TechWeb in Washington D.C., to explore how technology can enable transparency, collaboration and efficiency in government. Today, we're pleased to present a cloud interoperability scenario which takes advantage of the recently announced Toolkit for PHP with ADO.NET Data Services to view public government data with Windows Azure and PHP.

As you may recall, few weeks ago, Microsoft announced the Toolkit for PHP with ADO.NET Data Services, a new bridge enabling PHP developers to connect to .NET using a RESTful architecture. Today, we've published a cloud interoperability scenario where a Windows Azure application exposes data in a standard way (XML / Atom) and how you can simply “consume” this data from a PHP web application. This scenario takes advantage of the Open Government Data Initiative (OGDI), another piece of Microsoft's Open Government effort, built on the foundation of transparency, choice and interoperability.

In a nutshell, Open Government Data Initiative (OGDI) is a cloud-based collection of software assets that enables publicly available government data to be easily accessible. Using open standards and application programming interfaces (API), developers and government agencies can retrieve the data programmatically for use in new and innovative online applications, or mashups.

Data and Platform Interoperability scenario in the cloud

Publicly available government data sets have been loaded into Windows Azure Storage, and the OGDI team built a data service that exposes the data through REST web services, returning data by default in the Atom Publishing Protocol format. The OGDI application uses ADO.NET Data Services to expose the data. On the diagram below you see the list of available data sets: http://ogdi.cloudapp.net/v1/dc.

The PHP Data browser sample application is deployed on Windows Azure. Although it is not required and it could be deployed on any PHP compatible hosting environment, this sample application showcases a PHP application running on Azure. You can view or download the source of this sample from the demo site: http://ogdiphpsample.cloudapp.net/

The OGDI Service demonstrates some of the possibilities of the Azure platform and you can try the OGDI interactive SDK http://ogdisdk.cloudapp.net to understand how it works, as it features a similar data browser developed in .NET.

Moving forward

This sample application illustrates how you can simply create applications leveraging data and platform interoperability (PHP & .NET). The Toolkit for PHP with ADO.NET Data Services makes it easier for PHP developers to interoperate with .NET, including Azure which supports multiple internet protocols, including HTTP, REST, SOAP, and XML. This scenario is just one among many we are working on using RESTful architectures. Stay tuned, more to come soon!

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

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

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

A little bit more about ADO.NET Data Services

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

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

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

You should consider two aspects of the PHP Toolkit:

At design time: the PHP Toolkit generates proxy classes based on the metadata exposed by the ADO.NET Data Services (built with Visual Studio, including Express editions).

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

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

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

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

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

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

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

And here is the result:

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

O’Reilly OSCON (Open Source Convention) has been an opportunity for Microsoft to make significant announcements and unveil new projects. For sure, Microsoft’s participation did not go unnoticed :), in fact it has been a busy week for us.

This webcast is part of CodeWorks 09 summer series organized by PHP|Architect website. The series touch a number of PHP related topics including two additional sessions focused on PHP and Microsoft technologies interoperability. Please mark your calendar:

In addition you might want to check out the free May 2009 issue of php | architect magazine which focuses on running PHP on Windows, and additional technical details on how to use some of the Microsoft products with PHP.

Last week under gaze of the Great Pyramids on the Giza Plateau, the only remaining monument of the Seven Wonders of the Ancient World, I was fortunate to participate in the final ceremony of the Imagine Cup 2009 competition, called the World Festival and the announcement of our Interoperability Award winners. Before I go there I wanted to provide a brief recap of the proceedings of the event.

After a long trip for many of the competitors, judges and the Microsoft staff. My role was captain and finals judge for the Interoperability award and that started with a briefing for all participants, the judges and the competitors plus the ability to tour the competition rooms. After the housekeeping was done with, we all filed for a tour and our opening ceremony at the Citadel in Cairo, a major landmark there housing a beautiful and grand Mosque, a fort and museums. We had a great ceremony in the courtyard with a cool breeze that cut the heat and a beautiful sunset.

We then started the proceedings with a bunch of keynotes and the highlight of the evening was definitely the presentation from Ray Ozzie, our chief software architect at Microsoft who pepped up the students about how they can shape the future through technology, innovation, and creativity with his own personal anecdotes of starting in the world of software. Joe Wilson, senior director of Academic Initiatives at Microsoft, then inspired and gave some advice to our students on the competition, and with all our keynoters joining him onstage started the competition off with a grand laser light display that made our historical venue show off grandly.

I had a spectacular set of judges for our award, the judges pictured here with me, from left Tiago Cardoso from Institute for the Development of New Technologies (UniNova) in Portugal, Rob Miles from University of Hull in the UK and Dennis Anderson from Pace University in New York. They all have great credentials, had an eye for interoperability and were very fair in scoring our teams. We all seemed to be very in sync on how we gave out points. They’re also a fun bunch of guys :) The criteria we used and the points percentages was 10% for Architectural Design, 20% for Innovation, 30% for Interoperability, 20% for Coolness and 20% for Presentation.

The final awards were presented at the World Festival by Jon Perera, General Manager for Education Strategy and Audience Marketing, All of these teams have spent numerous hours perfecting their solutions and highlight a disparate set of technologies and multiple platforms to showcase Interoperability.

… and the winners are …

Third Place, winning US$3,000, went to Team ECRAM from Jordan, with their Elder & Children Remote Mobile Application. Their application allowed for a mobile phone to be remotely control by another client, typically another mobile, especially in the use of elder or child care. It was particularly interesting that it came from a real world problem that one of the team members was facing with his grandmother who wanted to place calls and speak to family members but had difficulties using the phone and required the help of her grandchildren. Being a busy student he was not always available and so thought of solving the problem using technology and software. The system utilized multiple different systems including mobile carriers and web services to solve the problem. Here’s a picture of the team speaking to S. Somasegar, senior vice president of Developer Division at Microsoft

Our Second Place, winning US$4,000 went to Team FteamS from Poland, with their Universal Solution for Remote Education, Eduko. These guys were innovative and cool in the use of disparate technologies on multiple platforms and devices to create a system that enabled teachers and students to interact using a virtual whiteboard system that was enabled on the desktop and even projected on any surface. What was particularly interesting was the use of a WII controller as a camera for their custom IR marker. It served as a very captivating presentation tool. The team also were very smart in the use of mobile devices sending things like text and coursework via SMS and MMS. Very little payload for a lot of information, did you know a single MMS message can send 15 pages of documentation? The guys also put together a very well rehearsed presentation with every team member participating and that impressed our judges too.

Our First Place winner, winning the US$8,000 went to Team Proativa from Brazil, with their Virtualized and Social Education system ProLearning which is designed to maximize the experience of distance learning. The use of an immersive virtual reality environment, where students exchange experience and study together the interaction between tutor and pupils dynamic and communal. they utilized social networks to keep students interested in the learning process and engaged continually not just during a lesson. It was a holistic system that facilitated the learning process end to end and that impressed the judges who were all teachers themselves and whom felt they could use it today in their classes. The students had also the capability of using mobile devices to personal and automatically update students on schedules and prompting their network for activities when doing distance learning. It was also novel that they integrated the social networks, mobile devices and voice over IP to get students who were friends or classmates to engage with each other for lessons making the learning experience a team based activity. The main reason that the team won this award however was that they had built a piece of software on the server that brokered different services that didn’t necessarily plug in with each other serving as a technical bridge of sorts. This proved to be the differentiator that help them cinch the award. They had a rousing fanfare by their Brazilian teammates at the finals by being the first prize recipients of the night and helping their country grab the most awards at the competition this year.

Here are the teams videos entries:

First place Proativa Team from Brazil

Second place FteamS from Poland

Third place: ECRAM from Jordan

I would like to thank all the competitors who participated in the awards, their mentors, Academic Developer Evangelists, family and friends. Congratulations to our final three winners on behalf of the judges, the Interoperability Strategy team and all of us at Microsoft. I know a lot of work and sweat went into your entries and I want to share how much we all appreciate your contributions! I hope that you all will join me again next year for the Interoperability Award at Imagine Cup 2010. See you in Poland!

We received good feedback in the past couple of months and have addressed a few defects in the blob storage as well.

Submission of PHP SDK for Windows Azure to Zend Framework

Microsoft & RealDolmen have decided to make PHP SDK for Windows Azure available as part of Zend Framework. By extending support for Windows Azure through Zend Framework, millions of PHP developers that use Zend Framework can build web applications seamlessly targeting Windows Azure. Realdolmen has formally submitted the July CTP repository to Zend Framework’s laboratories to begin the review and approval process. Upon approval, Zend Framework will publish a technology preview package of the SDK on the Zend Framework website. We will continue to work closely with Zend to ensure consistency across the standalone and Zend Framework versions of the PHP SDK for Windows Azure.

I worked with Zend when we demonstrated information card interoperability on PHP based web applications through Zend Information card (read this to see it in action) and continue to enjoy the great working experience. I look forward to the release for PHP Support for Windows Azure in Zend Framework.

Support for Table Storage.

The Windows Azure Table service offers structured storage in the form of tables which contain a set of Entities, which contains a set of named Properties. A Few highlights of Windows Azure Table are

Compile time type checking when using the ADO .NET Data Services client library.

A rich set of data types for property values.

Support for unlimited number of tables and entities, with no limit on the table size.

Strong consistency for single entity transactions.

Optimistic concurrency for updates and deletes.

The Table service exposes a REST API. The PHP classes for the Table service provide developers with an abstraction upon the REST APIs for CRUD and Query operations. Some of the features supported in this milestone are:

SharedKey Lite authentication (for local table storage service from SDK)

I’m Claudio Caldato, Senior Program Manager in the Interoperability Technical Strategy team here at Microsoft. I’m going to talk about the work Microsoft did with Xandros in response to feedback from Interoperability Executive Customer Council (IEC) member NATO gave us, asking for heterogeneous system management scenarios.

One of my key activities is to follow up on feedback provided by the Interoperability Executive Customer Council. Recently a few members of the council, and in particular NATO, raised the issue of the complexity in managing multiple heterogeneous systems across a large distributed network environment from a single point of access and the need to aggregate status information and alerts to other management applications. This is quite a broad topic, in retrospect!

To narrow down the scope we worked with NATO to define a specific scenario and this scenario formed the basis of the “Multi-Platform System Management” lab. The lab comprised the following Applications and Services

Use Microsoft System Center Operations Manager to report performance and availability data to the IBM Tivoli and HP OpenView management consoles

Improve the monitoring of SLA’s by providing a single point of access for Hardware, OS, and application level monitoring, System troubleshooting, Failure analysis, Disc, Network, Memory, and CPU Metrics, and Application status and availability

We were able to build the lab and, in so doing, are able to demonstrate to others how to solve the interoperability challenges that this sort of environment creates. One of these challenges was how to enable the System Center Operations Manager to manage applications running on Sun Solaris machines. The solution to this challenge came from Xandros in the form of the Xandros Bridgways Management Packs. This management pack is engineered to extend the capabilities of the System Center Operations Manager to applications of both Windows and non-Microsoft platforms, providing us with an ideal solution to the problem at hand.

From a technical perspective, the lab included several other very interesting aspects that I encourage you to discover for yourself. These have been documented in the white paper that’s available on the IVA website under the Multi-Platform System Management Lab. The good news is that we were able to successfully address the specific needs expressed by the IEC Council’s feedback. I find it personally rewarding that we’re able to meet the expectations of our customers… particularly, IEC Council member NATO who commented on the outcome of this lab (quote extracted from the white paper):

“NATO employs a diverse set of hardware and software and has to work with vendors that are committed to work on interoperability, said Detlef Janezic, NATO CIS Services Agency (NCSA) when participating in the Interoperability Executive Council sessions in 2008. NCSA mentioned on behalf of NATO some of the interoperability challenges experienced between Microsoft System Center and HP OpenView product lines. Based on these concerns, Microsoft engaged in an initiative geared to resolve the stated interoperability challenges. This solution was presented to NATO on 24 Mar 2009. The initial assessment of NCSA and the NATO C3 Agency (NC3A) on the chosen approach and its implementation is that the presented solution shows great potential. The two NATO agencies very much appreciate these Microsoft efforts and intend to implement & test the provided solution in its IT environment as soon as possible.”

The Interoperability discussion related to system management does not end here. We continue to work with partners like Xandros, whom I’d like to thank for their help and contribution on setting this interoperability lab up.

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

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

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

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

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

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

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

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

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

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

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

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

A bit of background…

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

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

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

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

Back to the interoperability plug fest…

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

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

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

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

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

What’s in it for Microsoft and other participants?

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

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

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

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

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

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

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

Next let’s examine the high level architecture:

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

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

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

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

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

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

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

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

Here’s the data flow:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

A User Interface layer delivering the web front end (HTML)

A middle tier layer including a Business Services layer (login, account processing) and an Order Processing layer (buy/sell transactions)

A Data Access layer to provide access to the database for the middle tier layer (Business Services and Order Processing)

And finally the database where the application data lives

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

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

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

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

Stocktrader .NET

Stocktrader PHP

Buying stocks

Transaction confirmation

Portfolio summary information

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

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

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

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

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

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

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

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

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

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

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

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

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

The open source Translator project was started in July 2006, when Microsoft worked with partners (Clever Age, Dialogika & Sonata) to demonstrate pragmatic interoperability between Microsoft Office and Open Office documents. Today, after multiple releases of the project with more than 2.5 millions downloads, the translator is a mature project and version 3.0 was released in March 2009 (read the blog post).

Version 3.0 focuses on improving the overall fidelity of the translation between Open XML and ODF as well as the performance. The previous version (2.5) of the Translator introduced ODF compatible “Templates” intended to provide greater visual fidelity during the translation process:

Here’s a demo of the Translator created by my colleague Jean-Christophe Cimetiere with version 2.5, but from the end-user perspective version 3.0 is identical:

Open XML-ODF Translator Demo

From a technical perspective, the translator consists of a set of XSL transformations between the two XML formats (Open XML and ODF), along with some pre- and post-processing to manage the packaging (zip / unzip), and some advanced processing (complex transformations). The following diagram is a high level architecture of the Translator:

The translation engine at the core of the Translator may be used independently and hosted by a back-office server application or incorporated into hosted services or batch processing. In the latter case, Translator includes a command line interface.

As an open source project, the Translator could be a great foundation for engineering work around document interoperability. ISVs can use the code as the basis for additional translators and programs and create a wide range of interoperability solutions that bridge Open XML and ODF. Novell has incorporated the translator into its implementation of OpenOffice for SUSE Linux, and others have taken the translator and integrated it into the Ubuntu Linux Open Office version.

The Open XML / ODF Translator project is hosted on Sourceforge, where you can get the installers (7 languages are supported) as well the source code: http://odf-converter.sourceforge.net/

Well, it came as no surprise that interoperability was a big part of the discussion at MIX09… at the keynote, in the breakouts, on the blogs, on Twitter, etc. Of course interoperability is a key consideration any time that you talk about cloud computing. Let’s be clear: Interoperability between the services platforms, the identity providers, the mashable services, the social networks and so on is now an integral part of the landscape.

MIX is a very special annual conference where Microsoft attempts to bridge the worlds of technology, design, entrepreneurship and business. Zooming into technology, we could draw much more interrelated circles, but my point is not to give a holistic view. Instead, I’ve highlighted a few sessions for you that are going deep into interoperability scenarios.

Azure Services Platform Interoperability and .NET Services, where Vijay demos the Java SDK for .NET Services (Jdotnetservices) and the Ruby SDK for .NET services (check also John Shewchuk’s session below for more on .NET Services/Interoperability)

Slide 38 at approx 31':

A prototype of PHP Tooling from Eclipse for Windows Azure, enabling developers to browse the Windows Azure Storage, and publish a PHP application that would leverage the FastCGI support in Azure (see Using 3rd Party Programming Languages via FastCGI).

The Azure Storage Explorer in Eclipse at approx 46'

Speaking about Azure, from the moment we kicked off our cloud computing effort, openness and interoperability stood at the forefront, we spelled it out clearly with Azure (see http://www.microsoft.com/azure screenshot below), and we mean it as this post illustrates.

As Michael states in the opening, everybody is aware that PHP runs on Windows, but you don’t necessarily know all the legwork the Microsoft has been doing to enhance PHP on Windows, as well as all the interoperability touch points between PHP and Microsoft’s technologies. So in this session you’ll get the big picture. In particular don’t miss these demos:

Web Platform Installer: getting all you need to build your web applications in one simple and customizable installer, including popular web applications like WordPress.

Live Services + PHP: extend PHP applications (WordPress in the demo) by adding your Live Contacts and syncing blog content with Live Mesh

John demonstrates interoperability scenarios with .NET Services (which is part of the overall Azure Services platform) combined with different languages and platforms. John’s demos show how to leverage the Access Control Service & the Service Bus, with an application built using Python+JQuery running on the GoogleApp engine and using Yahoo as the OpenId provider. These are great scenarios involving notifications and federated identity across firewalls boundaries and heterogeneous systems.

Further down the talk, I also really liked the Facebook (PHP)/CinemaMIX (ASP.NET) application allowing users to invite friends to share (view/edit) your Netflix video queue. That’s cloud interoperability in action

This is only a short selection of the sessions tackling Interoperability. There are many other interesting sessions to discover, so get lost at http://videos.visitmix.com/MIX09 and have fun!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Hi, my name is Jas Sandhu and I am an evangelist on the Microsoft Interoperability Strategy Team. I manage our overall Document Interoperability Initiative community outreach, working with Doug Mahugh and many others in the Office team.

On Friday we published Office 2007 SP2 implementation notes for the ECMA-376 1st Edition (aka Open XML).

This is also an opportunity for me to shed some light on the goals of the Document Interoperability Initiative, which -from the website - are:

We will use this blog to report what's going on regarding these goals and to report more broadly on document format interoperability.

Progress is being made on working together as a community and we are keen to foster such collaborative work. Implementer notes are incredibly useful, but to understand interoperability issues, sometimes it requires stepping back and discussing different approaches with others who save similar goals.

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

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

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

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

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

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

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

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

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

I am the General Manager of Interoperability Strategy at Microsoft, and I have been working across the company on many interoperability initiatives. It makes me happy to see so many interoperability projects coming out of Microsoft and, personally, having many of them based on XML makes me doubly happy. So I thought it was the right time to open this blog with the purpose of sharing with you activities that relate to interoperability at Microsoft and to start generating ongoing discussions. Here we will write about interoperability scenarios, the technologies enabling them, and important issues concerning the industry at large.

We recognize that we need to work more at engaging with the community in an open way on interoperability. This means being certain to listen to the community and to have open discussions with you in this blog about interoperability scenarios and technologies.

Interoperability has been a long-time focus area at Microsoft. Being a platform company, Microsoft has engaged in interoperability at many levels: product features, participation in standardization bodies, publishing technologies under open licenses, and working closely with customers, governments and partners to understand the heterogeneous IT landscape and to discuss practical interoperability solutions. These activities were formalized under the Interoperability Principles earlier this year.

My team has built several technical bridges and solutions for various products to enable interoperability with other platforms and applications. These are being run as open source projects and released under a broad BSD license, or other licenses such as MS-PL or Apache, so that our customers and partners can use them in many open and broad reaching scenarios. We have been working with many other teams at Microsoft and with both our customers and the community to develop these projects. We also run interoperability labs and plug-fests to test how Microsoft and Non-Microsoft products interoperate.

Many members of Microsoft, as well as members of my team, such as Vijay Rajagopalan, Sumit Chawla, Kamaljit Bath, Claudio Caldato, and Jean-Christophe Cimetiere will be posting on this blog, I would like to hear your comments and feedback and also welcome open engagement on what Microsoft should be doing for interoperability. I would also like to take this chance to thank the many third party companies and community members who have collaborated with us in our efforts to improve and expand the interoperability of Microsoft technologies, platforms and applications.