Archive for July, 2013:

Opening Up XenServer – Reworking XenIface.sys

When we first began to discuss the specifics of open sourcing XenServer I had to raise my hand and say “No”.  Not because I didn’t want the software to be opened up, but because I knew that one of the modules I look after (XenIface.sys – the XenServer Windows PV Interface driver) had code in it which we wouldn’t be allowed to ship under an open source licence (we could ship the bainaries – we could even give away the source code, but we couldn’t let other people give that code away).  We had to come up with a new plan.  And the plan that was agreed on was the one I suggested:

The interesting bits of XenIface are in files which we unambiguously own.  But there is no chance we will ever get the right to give the rest away.  Nor is there any chance of us having the time to rewrite that code by the date XenServer goes open source.  So what we can do is just put the files we own out into the world, and rewrite the rest in our own time.

This was a dangerous plan.  Specifically because I know how corporations work, and once the buzz of hitting the ‘We’ve open sourced everything’ has passed, people will want new features, not just rewrites of perfectly functional code.  It would be too easy for things to get missed.

The last couple of weeks have seen a lot of excitement.  We opened up (most of) the code.  The XenServer team all gathered in a kitchen at work to drink Champagne and celebrate.  There was also the release of Citrix XenServer 6.2 accompanying the open sourcing.  And (on the Windows team at least) we started our new development processes with all the code changes happening out in the open, going via GitHub.

But behind the scenes, I’ve been getting some programming done too.  Specifically, I managed to find the time (quite where from I’m not sure) to rework XenIface, strip it of the code we don’t own and get it working again.  The way I did this was quite simple:  I ripped the bottom end of the XenVif driver, pulled out all the networking and providing-PDOs-for-NDIS-drivers-to-attach-to code, and then plumbed in the remaining parts of XenIface.

The code isn’t quite ready for public consumption yet but:

It installs, enables, disables and uninstalls nicely

It passes our dev tests (which we use to ensure the WMI and IOCTL interfaces don’t change)

It has passes the HCK successfully (once I found the filter for something I was pretty sure was an HCK bug and persuaded it to install)


This is all, primarily, testament to the quality of the XenVif code which was so easy to pull apart and put into the XenIface driver.

Before we put it out in the world, I just want to prove that our internal system testing won’t show up any regressions – but I think we’re likely to be safe, as the changes to the code which provide the functionality have been very minor.

I wasn’t really expecting to see this code finished for another month or two (and was quite scared it would never happen at all).  Instead it looks like it’ll be out the door well ahead of schedule.  And once XenIface is in place, thats the complete driver set needed to let you run the Guest Agent and have the full PV tools optimised Windows guest experience.


It would just be nice if it was easy to install.


The good news there is that the installer package – which is the final missing part of the PV tools is also close to being releasable.  We didn’t ship that because we didn’t have confidence that the click through licence it displays was the right thing to display.  Well, I’ve finally had word back from legal about what we should be displaying and so there is only a bit of plumbing to do before that can be put up in all of its glory too.

Replacing RSS

The death of Google Reader has made it clear to me that there is a gap in the market.

No, not a gap for another RSS feed reader, that has been well and truly satisfied by the mass of new contenders for the previously unloved RSS Reader throne.

The gap is a gap for control over your information.

You see, the reason we have to assume Google have dropped Reader is that they think Google+ is where all your reading should happen.  Facebook is much the same.  Like reader it is both a reading and a writing platform.  And when you develop a platform you can read and write to, you have very little incentive to keep it open so that other people can read from it, or write to it elsewhere.

Oddly, we tend to try to resolve this by imagining new read/write platforms that emulate Facebook and Google+, but are more open.  And any such system is destined to fail because of network effects.  Or friends and families are already using Facebook, so if we want to read what they have to say, and be read by them, then we have to go to Facebook.

But what if we decided to break the link between reading and writing?

Most of my Facebook posts are actually just copied from Twitter.  But Twitter is Read/Write,just like Facebook (and becoming more so every day).  Also, I don’t actually care where people read my posts – I just care that it is available to them to read.  But it would be better if it was also available to the world to read in other, better, more open ways.  Ways which are under the control of the author, not the reader provider.

Now, the way we used to do this was via blogs.  And blogs are a good thing – but I suspect blogging is to some extent dying, and the loss of Reader might, potentially hasten this demise.

My suggestion is that someone produce a write only microblogging, blogging, photo and video sharing platform.  The business model is simple – you charge people a recurring subscription for their account, and you ensure they are in control of their data.  But you make it easy for them to share the data they’ve provided.  You make the system automatically be able to post to Facebook, Twitter, Linked In, Pinterest, whatever network you want.  You also make sure it provides RSS feeds so that people who want to aggregate content .  And you make sure it offers an ‘email people’ option, so you can push your content to friends and family who haven’t yet grasped what the internets are for.  You probably also want to allow people to read your content if they come to your site directly.  You could also provide the ability to be better at deciding who gets to see what content – by letting the publishing platform understand how private your various accounts on different social networking sites are.

This would never be popular.  Facebook and its kin are good enough for most people.  But every time they betray their users by tightening their locking, or tilting things further in favour of the advertisers, a social publishing platform would make it easier for people to begin to opt out.  And it would mean more content was available outside the gated walls of the big social networks, which would be good for those of us who prefer more powerful and personalised ways of accessing interesting things to read.