July, 2009

All Posts
  • Port25

    More on the Hyper-V Linux Integration Components

    • 2 Comments

    by hjanssen on July 20, 2009 03:24pm

    Well, there is no easy way to say this, so I am simply going to start this blog with the following line.

    Microsoft just submitted source code for the Hyper-V Linux Integration Components  to the Linux Kernel Community  Under GPL v2.

    Well, there's a conversation starter! Are you still all sitting in your chairs???

    Let me summarize:

    • Yes, our device driver code was released directly to the Linux Kernel
    • We released the code under GPL v2
    • We are working with Greg Kroah-Hartman so it is ready for the next release of the Linux Kernel, version 2.6.32
    • We will continue to update the driver code to enhance interoperability on an ongoing basis, but it's our hope that other developers in the community will find the code useful and worthy of collaboration.

    Fallen off your chair yet?

    Microsoft developed the Linux device drivers  to enhance the performance of Linux when virtualized on Windows Server 2008 Hyper-V.  My team and I were responsible for testing and validating the driver components that were contributed for this first release.  

    Now, my team and I will be responsible for further developing this code going forward.  (Yes, that does mean that I have gone back to leverage my very early roots as a Kernel programmer. Let the world be warned!!!!). Haiyang Zhang has been working on this code with me, and he will continue to work with me on this going forward.

    When I joined Microsoft three years ago, the primary reason was to put my money where my mouth was. You see complaining about something is easy, but it becomes a little more complicated when somebody offers you the opportunity to be part of helping change what you have complained about.

    So, three years after taking the job that made me put my money where my mouth was (and still often is!), I for one am EXTREMELY happy to see one of the most significant fruits of our work here in the Microsoft Open Source Technology Center (OSTC). But I have to say, even I would have been hard-pressed to think three years ago that we would consider contributing to the Linux Kernel.

    As you know, two years ago Microsoft announced a partnership with Novell, and Tom Hanrahan ran the lab on a day to day basis till about 9 months ago. Since then I have had the pleasure of running the technical side of the execution of that lab under Tom Hanrahan for the OSTC. One of the primary tasks for that lab is to make sure Windows runs well on top of XEN and Linux runs well on top of Hyper-V, and we do this in very close cooperation with Novell.

    We do most of this work as an extension to Mike Neil's Hyper-V team.

    As part of this, we were asked to help develop and maintain a crucial part of this work called the Linux Integration Components. This code is designed so that Linux can run in an "enlightened mode" on top of Hyper-V (enlightened mode is roughly the Hyper-V equivalent of "paravirtualized mode" for the Xen hypervisor).  Without this driver code, Linux can run on top of Windows, but without the same high performance levels.   It is this device driver code that we are releasing today, directly to the Linux Kernel.

    We're  not talking a few hundred lines of code here; we're  talking about roughly 20,000 lines of code.

    Is this a Dump and Run from Microsoft? Absolutely not!  We plan to enhance the functionality of this code, and we will continue to work with the Linux Community  to support the drivers and to ensure continued interoperability.

    As you can imagine, this was the result of a lot of  hard work: Hiyang Zhang, who has been co-writing this code; Hashir Abdi, who has been testing all this stuff; as well as  Vijay Tewari and Mike Sterling from the Hyper-V team who have been taking care of the Hyper-V side.

    And last, but certainly not least, Greg Kroah-Hartman, who has been helping me to make all this code land in the right area in the kernel. He has patiently worked to help me correct my obvious mistakes and to get the code contributed into the kernel.

    So where are we today? Well, Greg Kroah-Hartman will make the code visible to the outside world today. (For those who want to get a head start, the code will sit under <your kernel tree>/drivers/staging/hv). After it becomes visible, I will write a few more blogs this week that should help you to understand, build and run them.

    The titles I am thinking for these blogs are:                               

    Where do the Linux ICs reside in the kernel tree and how do I build them?

                    And

    How do I  install, configure and run the Linux IC's?

    I had almost forgotten how wrapped up you can be once you start writing code again. So I have not gotten much sleep this past week, but it has been a joy to get back into coding again!

  • Port25

    The Microsoft Live Services Plug-in for Moodle Debuts

    • 1 Comments

    by Peter Galli on July 21, 2009 06:15am

    Today, Microsoft announced the Live Services Plug-in for Moodle, a free download released under the General Public License v2 that integrates Microsoft's Live@edu services such as email, calendar, instant messaging and search directly into the Moodle experience. 

    What's even better is that this new, integrated experience is accessible via a single sign-on, which lets teachers and students access the resources and services they need to efficiently communicate, collaborate and learn.

    Moodle is a free open source course management system that teachers use to create online learning websites for their classes, and has some 30 million users in 207 countries.

    The plug-in and its feature set was designed as a result of extensive feedback from teachers and institutional IT leaders,  and licensed in a way that is consistent with the practices of the open source community - freely under the GPL v2.

    The news of the release of the Live Services Plug-in for Moodle under GPL v2 follows hot on the heels of Microsoft's release yesterday of 20,000 lines of device driver code to the Linux community under GPL v2.

    This means that teachers and institutions can download the plug-in under a widely used open source license agreement and under the same terms that Moodle itself is licensed.

    This approach underscores Microsoft's commitment to interoperability and open standards, as well as to collaboration so as to help customers, partners, educators and students across the world be successful in a heterogeneous technology world.

    With the Live Services Plug-in, educators can email class notes and lecture slides to everyone in the class as well as send alerts regarding homework assignments or quizzes - all from within the same environment.

    Students can also utilize Bing for search, check their calendar, send an email or just an instant message - without having to manage multiple accounts in multiple systems. They can do it all right within Moodle. They can also check unread emails using advanced features like keyboard shortcuts to check email quickly for example between class periods or just before lectures start.

    The Microsoft Live Services Plug-in for Moodle will be part of a growing collection of solutions available from the Microsoft Education Labs.

    For more on this news, you can read the blog from L. Michael Golden, Corporate Vice President of Microsoft's Education Products Group, as well as what Moodle founder Martin Dougiamas has to say about the plug-in.

     

  • Port25

    The ECMA C# and CLI Standards

    • 1 Comments

    by Peter Galli on July 06, 2009 12:27pm

    I have some good news to announce: Microsoft will be applying the Community Promise to the ECMA 334 and ECMA 335 specs.

    ECMA 334 specifies the form and establishes the interpretation of programs written in the C# programming language, while the ECMA 335 standard defines the Common Language Infrastructure (CLI) in which applications written in multiple high-level languages can be executed in different system environments without the need to rewrite those applications to take into consideration the unique characteristics of those environments.

    "The Community Promise is an excellent vehicle and, in this situation, ensures the best balance of interoperability and flexibility for developers," Scott Guthrie,  the Corporate Vice President for the .Net Developer Platform, told me July 6.

    It is important to note that, under the Community Promise, anyone can freely implement these specifications with their technology, code, and solutions.

    You do not need to sign a license agreement, or otherwise communicate to Microsoft how you will implement the specifications.

    The Promise applies to developers, distributors, and users of Covered Implementations without regard to the development model that created the implementations, the type of copyright licenses under which it is distributed, or the associated business model.

    Under the Community Promise, Microsoft provides assurance that it will not assert its Necessary Claims against anyone who makes, uses, sells, offers for sale, imports, or distributes any Covered Implementation under any type of development or distribution model, including open-source licensing models such as the LGPL or GPL.

    You can find the terms of the Microsoft Community Promise here.

    I told you this was good news!

  • Port25

    Releasing the Linux Integration Component Drivers...

    • 1 Comments

    by Sam Ramji on July 23, 2009 08:38pm

    Microsoft on Monday contributed the Linux Integration Component drivers to the Linux community for the reasons stated in our release. Microsoft chose the GPLv2 license for the mutual benefit of our customers, partners, the community, and Microsoft.

    Microsoft's decision was not based on any perceived obligations tied to the GPLv2 license. For business reasons and for customers, we determined it was beneficial to release the drivers to the kernel community under the GPLv2 license through a process that involved working closely with Greg Kroah-Hartman, who helped us understand the community norms and licensing options surrounding the drivers. 

    The primary reason we made this determination in this case is because GPLv2 is the preferred license required by the Linux community for their broad acceptance and engagement. For us to participate in the Linux Driver Project, GPLv2 was the best option that allowed us to enjoy the tremendous offer of community support. The community's response even within a few hours of posting the code was welcoming and we appreciate it greatly.

    We arrived at the decision to release the drivers to the community under the GPLv2 through this process. Both Greg K-H and Jim Zemlin of the Linux Foundation have reiterated that this is the same process that other companies follow when deciding how to release new device drivers to the Linux community.

    We are looking forward to the positive collaboration and acceptance that has marked the vast majority of our interactions with customers and community members regarding this important project.

    Cheers,

    Sam

    Updated 7/25/2009 @ 11:54 AM Pacific: Dave Roberts of Vyatta posted a blog entry rebutting recent cloims that we were accused of a licensing violation with some detail on the technical issues.

  • Port25

    CodePlex: 10,000 Hosted Projects and Counting

    • 0 Comments

    by Peter Galli on July 07, 2009 06:15am

     

    The number of projects hosted on CodePlex, Microsoft's Open Source project hosting site, breached the 10,000 mark on Saturday, July 4, 2009, which represents 160-million lines of code hosted across 10 Team Foundation Servers.

     

    Congratulations go to SharpFitter, a Visual Studio 2008 C# add-in that dynamically loads plug-ins, for being the 10,000th project, and to the entire CodePlex team for this great achievement.

     

    As of close-of-business, Monday July 6, the total number of projects stood at 10,037.

     

     

    This milestone comes shortly after CodePlex celebrated its third anniversary on June 27, and follows the recent agreement under which CodePlex projects are automatically fed into Black Duck's open source KnowledgeBase repository, and searchable through Koders.com, a search engine for open source and other downloadable code.  

     

     

    "We hope to see this incredible rate of growth continue to bring more open source development to the Windows platform," said Sara Ford, the Program Manager for CodePlex, which had just under 3-million visits in June and close to 10-million page views.

    The total number of registered users on CodePlex now stands at around 159,306

    The most popular license used by the projects hosted on CodePlex is the Microsoft Public License, followed by the GPL v2 and with the MIT license rounding out the top three.

    You can read more about all this on the CodePlex blog.

     

     

  • Port25

    Silverlight 3 Hits the Street

    • 0 Comments

    by Peter Galli on July 10, 2009 04:19pm

    Microsoft Silverlight 3 is now available for download, as is the Release Candidate for Expression Blend, while the associated Expression 3 tool suite will be available within 30 days.

    This media and rich Internet application solution, along with Microsoft Visual Studio, provides a highly collaborative development and design environment that simplifies the process of delivering engaging user experiences.

    Silverlight remains a free runtime that almost anyone can use to deliver great Web experiences. You can find more info about this release on Scott Guthrie, the corporate vice president of the .NET Developer Platform at Microsoft's blog, while Program Manager Tim Heuer's blog has a lot of detail on all the new features.

    Microsoft is also working with the open source community to ensure that Silverlight content is available to them. Earlier this year, Moonlight 1.0 was released. Moonlight is an open source project that gives Linux users access to Microsoft Silverlight content, and is available for all major Linux distributions, including openSUSE, SUSE Linux Enterprise, Fedora, Red Hat, and Ubuntu.

  • Port25

    Microsoft Releases Device Driver Code to the Linux Community

    • 0 Comments

    by Peter Galli on July 20, 2009 11:48am

    In what many may see as a surprising move, Microsoft today released 20,000 lines of device driver code to the Linux community under the popular General Public Licence v2.

    The code includes three Linux device drivers, and has been submitted to the Linux kernel community for inclusion in the Linux tree.

    The drivers will be available to both the Linux community and customers, and will enhance the performance of the Linux operating system when virtualized on Windows Server 2008 Hyper-V or Windows Server 2008 R2 Hyper-V.

    In an article posted to Microsoft's PressPass site, Tom Hanrahan, director of Microsoft's Open Source Technology Center, notes that this is a significant milestone because it's the first time the company has released code directly to the Linux community. "Additionally significant is that we are releasing the code under the GPLv2 license, which is the Linux community's preferred license," he said.

    In the same article, Sam Ramji, senior director of Platform Strategy at Microsoft, points out that Microsoft communities and open source communities are growing together, which is ultimately of benefit to customers. An example of this is the Linux community, which has built a platform used by many customers. "So our strategy is to enhance interoperability between the Windows platform and many open source technologies, which includes Linux, to provide the choices our customers are asking for," he said.

    Ramji also alluded to the fact that people are often surprised when they hear how much open source community and development work is happening across Microsoft, which is largely due to the fact that these collaborations focus more on getting the work done and engaging with the various communities on a one-to-one basis and less about promoting them.

    One example of how Microsoft participates with, and contributes to, open source is its relationship with the PHP Community. The company's involvement includes contributing to the PHP Engine, optimizing PHP 5.3 to perform strongly on Windows, and working to improve the performance of numerous PHP applications on Windows. Then there is the ongoing participation in various Apache Software Foundation projects, such as Hadoop, Stonehenge and QPID.

    "In short, we're focused on building sustainable business strategies for open source at Microsoft ... we see open source playing into three key areas, one of which is the use of 'inbound' open source and the open source development model to make our software development processes more efficient."

    "Good examples of this include what we did recently with jQuery in Visual Studio 2008, the implementation of OpenPegasus connectors and adaptors into System Center Operations Manager, and work that the Microsoft High Performance Computing team did with the Argonne National Lab (ANL) to source its MPICH2 implementation, which is a portable implementation of the Message Passing Interface (MPI) used in cluster computing and super computers," Ramji said.

    We'll be posting a number of other articles on the release of the device driver code to the Linux community over the week, several of which will be penned by Hank Janssen from Microsoft's Open Source Technology Center, so look out for those.

  • Port25

    Getting Ready for OSCON 2009

    • 0 Comments

    by Peter Galli on July 21, 2009 06:13pm

     

    I'm back at the San Jose at the McEnery Convention Center after attending the Community Leadership Summit this weekend, where we are setting up the Microsoft booth in preparation for the formal opening of the O'Reilly Open Source Convention (OSCON) tomorrow.

    In addition to our booth presence, where a number of product groups will be represented, including folk from the Education, External Research, Open Source Technology Center, Interoperability and CodePlex parts of the company, all of whom will be giving technical demos and chatting to attendees, including the Hyper-V Linux Integration Components and the Microsoft Live Services Plug-in for Moodle, both of which are licensed under the GPL v2

    The booth will offer a lounge area, where attendees can play any of a number of Xbox games, including Guitar Hero and Halo 3.

    In addition to having a booth on the show floor, Tony Hey, the Corporate Vice President for Microsoft External Research, will deliver a keynote address on Thursday July 23, titled "Open Tools and Services on Microsoft Platforms," while Erik Meijer, one of Microsoft's Principal Architects, will also give a keynote talk on Friday July 24 and titled "Fundamentalist Functional Programming."

    Following his keynote, Erik is also presenting on using the LiveLabs Reactive Framework to democratize the cloud.

    Vijay Rajagopalan, a Principal Architect in Microsoft's Interoperability group, is also giving a talk on Wednesday July 22 in the Product and Services Track, titled "Interoperability - Build Mission Critical Applications in PHP, Ruby, Java and Eclipse Using Microsoft Software & Services."

    We are also hosting a rountable panel that will look at Microsoft and PHP, and include IDC analyst Al Hilwa, Garret Serack from the OSTC, Aaron Fulkerson of MindTouch and John Keagy of GoGrid.

    So, feel free tostop by the booth, We look forward to talking to you!

     

  • Port25

    Introduction to the Linux Integration Components

    • 0 Comments

     

    by hjanssen on July 22, 2009 02:02pm

    Well, here is blog number two. The initial shock has worn off a bit I hope.

    The feedback I have received so far has been pretty positive. This really all started in October of 2008 in a meeting with Mike Neil (GM of Hyper-V) and Tom and myself from the Open Source Technology Center (OSTC) at Microsoft.

    In that meeting I proposed to Open Source the Linux Integration Components and contribute them to the Linux Kernel. And, secondly, to have the OSTC continue contributing to these IC's after they made it to the Linux Kernel. Well after some discussion, we all agreed that this was the right thing to do.

    And so the whole process started inside of Microsoft.  Hey, what can I say, we like to push the envelope a bit here at the OSTC, and we have a reputation to uphold!

    Before I go on, I again wanted to thank the Kernel community (specifically Greg Kroah-Hartman) in helping us with explaining and guiding us through community process. It gave us a very nice jumpstart to get all of this going, and provided the groundwork for a good working relationship with the community. Smile

    I have also seen a few patches already submitted by community members, which is excellent! (Moritz Muehlenhoff gets major kudos for the first community contributed patch Big Smile) I will start submitting patches myself next week once the initial submission has stabilized a bit.

    It is my plan to use the kernel as my primary development area, and of course I will continue to provide Greg with my patches. My first step is to clean up the code to make sure it fulfills all Kernel coding standards and requirements.

    So, here is blog number two: what are the Linux Integration Components?

    1.      Overview of Linux VM with ICs

    Linux Integration Components(IC) take advantages of the VMBUS and synthetic devices provided in Hyper-V to enhance the performance and usability of Linux guests running on Windows servers.

     

    Figure: Conceptual Architecture overview of Linux guest & Hyper-V. Linux IC modules are painted in yellow color.

    Glossary:

    VSP: Virtualization Service Provider.

    VSC: Virtualization Service Client.

    VMBus: Data channel between VSP and VSC.

    2.      Linux IC modules -- VMBus and VSCs

    • Communication with parent partition is done through Linux VMBus
    • VSCs are the Linux drivers for synthetic devices (SCSI, IDE, and Ethernet) provided by Hyper-V.
    • They translate between Linux I/O requests and Hyper-V VSC commands
    • Devices are registered with Linux Driver Model (LDM)
    • Every VSC module contains two portions:
    • o Driver Interface Mapper (DIM): Released as open source

    This portion of the VSC component interacts with the Linux kernel like a regular Linux device driver.

    • o VSC Core: Released as Open Source

    The core portion of the VSC module is implemented based on the protocol of the corresponding VSP at Hyper-V host. The VSC core interacts with VSP via the VMBus interface.

    3.      Descriptions for each Linux IC module

    3.1 VMBus driver (hv_vmbus.c)

    The VMBus driver is a Linux kernel module. It provides both a lightweight bus driver and library functionality. As a bus driver, it registers with Linux Driver Model framework (LDM) to provide simple bus and device integration and device tree integration (sysfs). As a library, it implements the VMBus channel protocol and provide an abstraction of channel to its clients (Disk and Network VSCs).

    3.2 StorVSC driver (hv_storvsc.c)

    The Storage VSC interacts with the Windows Storage VSP. The "wire" protocol defined by the storage VSP determines how a VSC interacts with it. The Linux Storage VSC (LSVSC) basically abstracts the Linux I/O stack from needing to understand the Storage VSP's protocol. At the upper-edge of the LSVSC, it talks to the Linux SCSI subsystem. The Linux SCSI subsystem sees the LSVSC as a SCSI low-level driver (LLD) in Linux parlance. It passes SCSI requests (scsi_cmnd) to LSVSC which in turn converts them into the "wire" format understood by the Windows Storage VSP (VSTOR_PACKET).  The bottom-edge of the LSVSC talks to Linux VMBus (LVMBUS) which in turn talks to the Windows VMBus to route the packets to the Storage VSP.

    3.3 BlkVSC driver (hv_blkvsc.c)

    BlkVSC (BlockVSC) supports "fast boot" and fast access to IDE disks. To enable enlightened IDE support for enhancing the performance of Linux when virtualized on Windows, a separate BlockVSC component is used as a Linux block device driver. Like StorVSC, the BlockVSC component is comprised of an upper edge wrapper that interfaces with the Linux block layer and a lower-edge through the infrastructure modules. The infrastructure modules with Hyper-V through the Linux VMBus.

    3.4 NetVSC driver (hv_netvsc.c)

    The network VSC send and receive network traffic between a Linux guest and Hyper-V host which has direct connection to physical network. The mechanism that this is used to accomplish is the Remote NDIS (RNDIS) protocol. Thus the communication that flows between the VSP and the VSC primarily happens over the RNDIS protocol which then is packaged and forwarded as payload over to the other side over NetVSP / VMBus protocol.

    4.      Linux IC's, Location in the Kernel tree

    Hopefully you now have a better idea what they are. But where in the kernel tree can you find them?

    Well, you can find sources in linux-next tree in /drivers/staging/hv directory.

    And the git repository you can find them in right now is:

    git://git.kernel.org/pub/scm/linux/kernel/git/sfr/linux-next.git

    Or give this command (assuming your system is set up correctly) to download this repository to your machine:

    git clone git://git.kernel.org/pub/scm/linux/kernel/git/sfr/linux-next.git <your local name>

    Since the IC's are part of the kernel now, we follow the normal community process of getting this all migrated into Linus mainline kernel.

     

Page 1 of 1 (9 items)