The bits are baked for the preview of Language Integrated Query, according to Matt Warren. I almost feel guilty for taking a vacation (with hardly any Internet connectivity) immediately after the PDC. Installing the bits will have to wait until I return to the Netherlands.
Here's my first look on Beta 1 of WinFS. In this post I will focus on some parts of the infrastructure. I don't want to start with regurgitating the WinFS documentation, which seems to be in good shape for a beta.
Installing WinFS is a breeze. The MSI file is 40.5 MB in size. It's a no questions asked install that takes only a couple of minutes. The setup installs both the WinFS runtime, the SDK and the Visual Studio 2005 integration. A reboot is required after installation.
WinFS nestles itself in %WINDIR%System32WinFS. The SDK lives in %ProgramFiles%Microsoft SDKsWinFS. WinFS datastores reside in %SystemDrive%System Volume InformationWinFS.
The WinFS runtime consists of three services running in three separate processes:
- WinFS.exe. The WinFS data store. Runs a Yukon derived database engine. 86 MB peak working set after reboot. After some fooling aroung this goes up to 120 MB. Just after the reboot this process has 4034 CLR classes from 79 assemblies loaded in 3 appdomains. This goes up to 6.985 classes from 123 assemblies.
- WinFSSearch.exe. Runs the WinFS Search Engine. I guess a derivative of Index Server. 11 MB peak working set after reboot. Runs no managed code.
- WinFPM.exe. The WinFS File Promotion Manager. 14 MB peak working set after reboot. Goes up to 35 MB. Has 13 CLR classes from 3 assemblies loaded in 1 appdomain after reboot. This goes up to 1.048 from 19 assemblies.
So WinFS still heavily depends on the .NET Framework. From a programmer's perspective this is good thing. I am still worried about the memory usage though. I've created just a couple of files and folders.
WinFS stores can be accessed using a new type of shares. A WinFS looks just like a regular share:
You can also see the stores appearing through a new shell extension for WinFS Stores under My Computer:
WinFS stores filestreams as ordinary NTFS files with a GUID as filename under the System Volume Information folder. Metadata is stored in a SQL Server database. Here is a screenshot of the NTFS backing store for the same folder you saw above. Note how the filesize and date modified are equal.
Some random observations:
- I could only create a new store on my system partition C: and not on one of my other partitions.
- WinFS does not support encryption and compression (yet?).
- No support for Windows XP document metadata in NTFS alternate data streams (yet?). You can enter this data through the Summary tab on the Properties dialog box for a file. This is a shame. Old style metadata like this should be promoted and demoted to WinFS transparantly, because that's what WinFS is for.
- WinFS does not support the Transacted File System (TxF) of Windows Vista (yet?).
- The query language OPath is mentioned in the WinFS documentation. There is a relation with the Integrated Query Framework according to this blog post on the new WinFS Team Blog:
On query, many of you have heard about Anders Hejlsberg’s work on Language Integrated Query – and the new ADO.NET functionality will plug directly underneath so that you can use the new query patterns on any entity data, including of course now WinFS Items.
I wonder if OPath is here to stay or just a left over from the PDC 2003 version that will go away once Language Integrated Query takes over.
According this blog post by Tom Rizzo, Microsoft has released Beta 1 this early to give people time to evaluate WinFS before the PDC. I am very curious how WinFS has progressed since October 2003. At that time it was a big memory hog.
This are the system requirements according to the release notes:
- Microsoft® Windows® XP Professional with Service Pack 2 (SP2) or Microsoft Windows XP Home Edition with SP2.
- A 2.0 gigahertz (GHz) Intel Pentium 4, or AMD Athlon, or compatible processor is required. 3.2 GHz or higher is recommended.
- 512 megabytes (MB) of RAM or higher is recommended.
- An NTFS file system partition with 700 MB of free space is required to install and run "WinFS" Beta 1.
WinFS Beta 1 requires Beta 2 of the .NET Framework to be installed. The SDK can cooperate with Beta 2 of Visual Studio 2005.
I seem to qualify and I like living on the edge with alphas and betas so I am going to install it on my main Windows XP partition. This installation has survived several alpha and beta installs, so if WinFS drives it over the edge, so be it.
Tell tale signs that a reinstall is due:
- A couple of months ago my Windows logo + E key combination inexplicably stopped working. It should fire up a new Explorer window but is now a no-op. All the other Windows logo key combinations work fine and Google hasn't helped me.
- The programs menu starts to fill up the entire screen and it takes about 10 seconds before it appears the first time I click Start | Programs.
Confusing isn't it: BizTalk Server 2006 will be launced on the same date as Visual Studio 2005 and SQL Server 2005.
At first I thought this was just because the release of Visual Studio and SQL Server 2005 was delayed after the naming had been finalized. The new version of BizTalk Server was announced later and so it could have 2006 in the name without looking a year old just two months after the release.
Well according to this interview with Scott Woodgate at TheServerSide.NET it seems the product is launched only for marketing reasons on the same date as Visual Studio and SQL Server. Apparently it doesn't mean anything for the release date. BizTalk Server will not be released on November 8, 2005 but somewhere in the first half of 2006. Here is a part of the transcript of the interview:
Q: You mentioned BizTalk Server 2006. It was just announced that BizTalk Server 2006 would be launched with Visual Studio 2005 and SQL Server 2005 with a release to be sometime in the first part of 2006. Can you explain the difference between launched and released and when are we actually going to be able to buy BizTalk Server 2006 and deploy?
A: Well, you have to put with some Microsoft jargon here while I address that question Paul, So BizTalk Server 2006, I would love to talk to you about the features later in a minute, and SQL Server 2005 and Visual Studio.NET 2005 are incredibly related products. With those three products, you can do a whole ton of things in the integration space. They are all built on the .NET framework 2.0. We support BizTalk supports SQL Server 2005, Visual Studio.NET 2005. So, these products, they are just meant to be together and this is really the first time in the history of the development cycle that all three products are lining up for a release in a similar timeframe. One of the challenges, however, as the BizTalk guy that builds on top of Visual Studio and SQL Server is for me to release I have to be waiting like everybody else, I am sure is on TheServerSide for SQL and Visual Studio to release. So once those products have RTMed, it will take me some time in terms of the development cycles to make sure that our product is on top of the RTM versions and released BizTalk Server. So, we want to be able to release the RTM on the same time. On the other hand, the SQL guys and the Visual Studio guys are doing some massive launch events around the world and it just makes so much sense for BizTalk Server to be in then. Just from a marketing perspective, lots of noise on BizTalk Server, you probably have been hearing more and more about BizTalk Server well you're going to hear it louder and louder through those. So, actually what Paul Flessner announced in his Tech-Ed keynote was that Visual Studio, SQL and BizTalk Server would launch on November 8, if I remember rightly and what launch means is a set of events where everybody has a party and I am sure that Visual Studio and SQL will be done by that point. On the other hand, BizTalk Server will not be done. We expect that BizTalk Server will ship in the first half of calendar year 2006, right now having just released the community technical preview, I would say I would be feeling pretty good about early in calendar year 2006. But I am going to leave it a little open to first half given that we haven't yet made it to a Beta one. The idea here is launching these products together from a marketing perspective builds to really work with each other and we will be delivering it shortly after them.
Note that the interview was just released on TheServerSide.NET, but seems to be recorded shortly after TechEd USA. So before Beta 1 of BizTalk Server 2006 was released.
Another thing that still confuses me is the dependency of BizTalk Server 2006 on SQL Server 2005 and. Scott calls them "incredibly related products". I installed Beta 1 and noticed that the documentation recommends installing on top of SQL Server 2000 instead of SQL Server 2005. Some parts of Beta 1 of BizTalk 2006 even require some SQL Server 2000 components to be installed even if you are running on SQL Server 2005.
On his blog Scott calls Beta 1 "functionality complete". Considering the dependencies on SQL Server 2000, I fail to see how BizTalk Server 2006 takes advantage of new features of SQL Server 2005. I would be really disappointed if by RTM BizTalk Server 2006 will only run on SQL Server 2005 and no longer on SQL Server 2000. Microsoft wouldn't be pushing the sales of SQL Server 2005 without technical merit or would they? 😉
Via Chris Anderson's blog I found this video done by a couple of interns at Microsoft. Its description is:
Five Microsoft interns decided to "celebrate" the end of their time at the software giant by making a wonderfully dorky music video.
It's dorky indeed. I haven't seen anyone running around in and on top of our company building shooting a music video. So I wonder if it's just our company policy or our European culture that prevents this 😉
(BTW: This reminded me of one of my youth sins. Guess which one. No, it's not making a music video 😉
Time for another Visual Basic 9.0 posting. Paul Vick is giving us another teaser in a very short post titled What if everything could be queried with SQL?. Paul doesn't mention VB 9.0 in this post, but I'm pretty that's what he is talking about (and the Integrated Query Framework of course).
Also related to this is the Channel 9 video CLR Team Tour, Part II - The Future of Languages (PDC panel preview). In my opinion this is one of the best Channel 9 videos because you will see and hear a lot of interesting people from the CLR team, like Brad Abrams, Rico Mariani, Jason Zander and Jim Miller. It is nice to see how these people interact.
Eric: One of the things I want to stress is that there is a big spectrum from a completely dynamic language like IronPython to a completely static language like C# or C++. There is also an interesting kind of middle ground. The funny thing is that Visual Basic is right there in the middle, because it allows you to do static typing but it also allows you to do dynamic typing.
Robert: Isn't that where the marketing problem of VB is right now, because it doesn't stand for anything? There is not a religious thing that you can put a stake in the ground for. So you gotta use VB for this or that.
Eric: That will change, I will bet you.
Robert: (big laugh)
Eric: In a year's time people will point at VB as an example of modern language design. Especially because it allows you to span these two worlds between static and dynamic typing.
As you may know I am a fan of more relaxed typing but I hope I will not have to suffer the VB syntax to get these benefits. Anders Hejlsberg is always very concerned about putting things in a language, like C#, that will age it quickly. In my opinion one of the problems with VB is that it is already an aged language and as a result it struggles a bit with ambigous syntax. I admit a lot of that was cleaned up with the move from VB 6.0 to VB 7.0 (aka VB.NET 1.0) but not enough to win me over.
Also I love my angle brackets and case-sensitivity. If C# 3.0 will not get the cool new dynamic features of VB 9.0, I hope a language will arise which has both these features and the C-language family syntax.
It was an interesting read to learn how the ATLAS project, that the ASP.NET team is working on, originates in part at MSN. As you can read on Scott Guthrie's blog ATLAS is a new framework for developing AJAX style web applications using ASP.NET.
Trying to build a complex AJAX website with traditional Visual Studio.NET development tools is quite painful which is why the various teams at MSN have collaborated and built a unified framework. As Omar points out, one of the good things that has come out of this is that the various MSN folks went to the Microsoft developer division and pointed out they are missing the boat key infrastructure needed for AJAX development. This feedback was one of the factors that resulted in the recently announced Atlas project.
If you're going to be at the Microsoft Professional Developer's Conference (PDC) and are interested in professional AJAX development you should definitely make your way to the various presentations by the MSN folks.
My PDC schedule is already heavily overbooked due to the incredible abundance of interesting sessions. I'll try to stick in one or two of these sessions since I have a love for AJAX since long before it was called that way. Let me copy in a comment I made in Dennis' blog back in the days when I did not have my own blog yet:
AJAX = Old technology 😉 At the bank I work for we have used a similar approach since 2000. We call our framework R***SCO. SCO stands for Server Communication Objects and R*** stands for part of the name of the Dutch bank that is to remain anonymous. Hard guess, hey?
Tonight I went to the monthly dotNed user group meeting. Dennis Mulder and Pieter de Bruin of Avanade gave a presentation and a demonstration of Visual Studio 2005 Team System Client + Team Foundation Server.
Not a lot of people in the audience had experimented with Team System. Maybe this is due to the hefty system requirements. At my department of LogicaCMG we have installed and used several versions of Team System up till Beta 2. That last version was stable enough to use as source control system for a small project and looked very promising.
During the meeting there was a discussion on checkin policies and whether or not a policy existed to check for build errors before allowing checkins. Dennis and Pieter had not seen it. I remembered using it together with Lennard Bakker (a colleague from LogicaCMG) in the project mentioned above.
Unfortunately I cannot connect to our Team Foundation Server from home to check it, but I found a blog entry about it on the Team Foundation's WebLog. In Beta 2 it is called the Clean Build checkin policy. The post indicates that it is integrated in the Code Analysis checkin policy after Beta 2 and no longer a separate policy. I haven't checked out the July CTP so I am not sure if the change is there. The Team Foundation's WebLog has gone silent after May 2005, so I guess everybody on the team is hard at work on Beta 3 of TFS.
Maybe Dennis will give me a warning for polluting the photo galleries, but I couldn't resist sharing this photograph. I shot this photo this morning at 6:30 AM from my appartment with my Canon camera.
And to make this blog post about .NET so it can be syndicated on the main feed. Today I gave a presentation about blogging and BloggingAbout.NET at a LogicaCMG course on presentation techniques. Unfortunately I couldn't convince the audience (that included some non-techies) to start their own blog. But my goal was creating awareness, not conversion. Now they know what RSS is!
Blogging about the YouBastardException reminded of another funny thing that was added to that Intranet application. After a code review I had a discussion with one of the developers on his "dark side coding practices". To annoy me, after this discussion he put in the following line of code:
bool theDarkSideRules = true;
Notice how it conforms nicely to the MSDN capitalization guidelines. But, this was the only line in which this local variable was used. So it gave a nice The variable 'theDarkSideRules' is assigned but its value is never used compiler warning every time the assembly was compiled.
This line is still present in the code to this day 😉
Please post a comment or a trackback if you have any nice examples of inside coding jokes.