There has been a great deal of hubub about what Jay Greene’s BusinessWeek article means for Longhorn, and WinFS in particular. I’ve been surprised by the general silence on MS blogs on this topic – which is perhaps an indication that I ought to be careful myself ;) But let me throw caution to the wind and get to the punch line: I, from my vantage as a Longhorn Evangelist, haven’t seen any changes that significantly impact anything we’ve said at PDC, or since, about the WinFX platform. You won't see me editing my slides, changing my talking points, or cutting back my demos, because the message about WinFX's capabilities hasn't changed.
The line that got everyone thinking was Jay’s comment that. “The current plan calls for the file system to work on PCs but not extend to files shared over a corporate network.” Note that although he writes this immediately following a quote from an internal mail, this sentence is not in fact a direct quote – it’s Jay’s interpretation. MaryJo Foley picked up the thread, and added her own interpretation that Microsoft is “holding off on allowing WinFS to work over a corporate network”.
Scoble weighed in here and here. But I haven’t seen any other MS comments on this (and Technorati is no help). The article is clearly causing a lot of confusion, as evidenced by the customers who have been writing to me over the past few days asking for an explanation. Part of me wishes we’d just publish the entire text of Joe Peterson’s original email that Jay drew from, as well as the latest data on what’s changed in the platform. But someone above my pay grade will have to make that decision.
Instead, let me tell you about what I learned about changes to the platform recently. My blog has been quiet the past few weeks because I was working on assembling a presentation for Jim Allchin, Senior VP of Windows. As it so happens, the subject of the review was an update on WinFX platform capabilities, with a specific eye towards whether anything we discussed at PDC might have been cut since then.
Understand, of course, that it wouldn’t be a big surprise if things we showed at PDC in October ’03 weren’t in the final product when it eventually ships in…whenever. Anyone who’s worked on a software project knows that the only thing you can say about a pre-Alpha release like the one at PDC is that it’s guaranteed to change before RTM. And it wouldn’t be the worst thing in the world to take a serious step back, realistically evaluate what could be built and shipped in the next two years, and just focus on that. That’s how you ship software.
But the good news is: I found that the vast majority of the WinFX technology we showed at PDC is still on track. I had conversations with product team leaders around the company to try to ferret out any recent cuts. We also just had a week of quarterly Longhorn Reviews, where each team presented their latest plans, including risk items, to the leadership team. And having gone through all that data, my conclusion is that the platform we showed at PDC is intact.
WinFS hasn’t been cut. WinFS hasn’t even really been scoped back. Hillel showed an amazing demo at PDC of using WinFS to build a new document experience in the shell – real time word-wheel filtering, dynamic queries and organization (aka Stacks), the CaseBuilder demo showing off relationships between items, and more. These things are all on track. Take a walk through the WinFS talks from PDC. Are we still building an extensible synch architecture for bringing data from remote servers into WinFS? Yup. Will we have a default synch adapter to help one WinFS machine talk to another? Yup.
Two questions might come to mind.
First is: what were Jay and MaryJo talking about when they said WinFS wouldn’t work over a network? I’m not entirely sure. We’re talking about one sentence from a sidebar, written by the same guy who was no doubt focusing his energy on the cover story he wrote for the same issue of the magazine. Perhaps that line got mangled, or he meant to say something else, or he just misinterpreted some snippet he saw in an email somewhere. I went back and read the Joe Peterson mail of March 19 that Jay quotes right before his WinFS corporate network quote, and the only instance of the string “WinFS” is in the paragraph where Joe talks about the core pillars of the release remaining the same.
It’s possible that Jay had some confusing information about Longhorn Server – a product whose feature set, particularly around WinFS, has not been the subject of any public comments that I know of. We recognize that for WinFS to be really interesting in the enterprise, it needs to be able to scale up to a server environment. And we know that the Longhorn client version of WinFS is not optimized for that kind of scale – it’s tuned for client scenarios instead, which makes sense. At PDC, I think we were consistent in saying that there are set of interesting enterprise scenarios which won’t be enabled until Longhorn Server comes out, and we’ll talk about the specifics of that product when we have a firm plan in place. I suppose you could hear that statement, and end up deciding that WinFS won’t work over a corporate network, but it’s the wrong conclusion to draw.
OK, so the second question that might come to mind is “well, is there anything that you did cut?” The answer is yes – features get cut all the time in a software product. We’ve had two milestones since the PDC build, which means two opportunities to find features that weren’t working as expected, or couldn’t get the right performance level, or otherwise proved to be untenable. But the scope of these cuts is so small that it’s barely worth mentioning. I really wish we’d just publish the whole darn list to stop the speculation, but since I can’t do that, let me be bold and mention at least a few by name. I’ll stick with WinFS, because it’s the area I know best (and the team I know best, which means perhaps they’ll be less likely to tell my boss to fire me ;)
One feature the WinFS team cut was around how granular you can make schema change units. Change units are a nice trick to avoid conflicts during item synchronization -- by default, the entire item is treated atomically and any change to any property on the item marks the whole item as changed. But the schema designer can break the item down into sub-units that are likely to change independently, so that only part of the item gets marked dirty. For example, the designer of the contact schema might make Business Phone and Home Phone distinct change units, since it’s likely that you only edit one number at a time. By marking them as distinct change units, you can change the Business Phone on machine A, and the Home Phone on machine B, and you won’t get a conflict the next time the two synch.
Nice feature – and it’s still shipping. What’s gone is the ability to divide complex properties (aka nested collections) into their own sub-units. By way of (an oversimplified and not accurate with our actual schemas) example, while Age might be a simple Integer property, Name is likely a complex property that actually includes Name.FirstName, Name.LastName, Name.MiddleName, etc. The cut is that you can’t say Person.Name.FirstName is in a separate change unit from Person.Name.LastName. You have to put all of Person.Name in the same change unit.
Raise your hand if you knew this was a potential feature. If your hand is up, put it down unless you planned on using it. Still up? Put it down unless the absence of this feature impacts your ability to use WinFS. If your hand is still up, let me know and explain your scenario.
Another “feature” that’s been cut: it looks like one of the internal schemas, for natural language user interface, has been dropped. I gotta say, I’m not even sure what this thing was used for in the first place, nor how a 3rd party developer might have benefited from it, and it’s something that has come up exactly zero times in my discussions with developers over the past six months. Again, if you were counting on this, let me know why.
I hope that gives you an idea of how things are changing -- and staying the same -- in WinFX. The teams are looking at trimming out the features that might effect performance, or significantly increase the test burden, or other factors that might unreasonably delay the release of the product. But everyone is committed to keeping a viable platform with compelling new functionality for developers, and I’m feeling really confident that they’re making exactly the right choices.