WiX v3.8 acceleration

No plan survives contact with the enemy. —Helmuth von Moltke the Elder

It’s time for a change of plans for WiX v3.8. The plans I previously posted about need some adjusting. The goal of updating the MPF for Votive in Visual Studio 2012 and Visual Studio 2013 is a good one and one we need to do…but maybe not now.

Updating Votive to use the latest MPF causes some bad side effects:

  • Increases the risk of destabilizing Votive in general, and especially for Visual Studio 2008 which will still be deprecated in WiX v3.8.
  • Is turning into more work than I’d been hoping for.
  • Is not easily worked on by multiple people at once.

That increases the risk that it will take longer to ship v3.8 than we’d hoped. Or at least it decreases my confidence in hitting the dates I outlined. So the easiest thing to do is short-circuit the big work item: Rather than refactor Votive for the new MPF, WiX v3.8 will ship Votive as it’s currently built. This is how we currently treat Votive for Visual Studio 2012 too.

All the other work we’ve opened in v3.8 stays in scope. At the online semiweekly triage meetings, we look at untriaged bugs to see if they are high-enough priority to get tagged for the v3.8 release.

I’ve already made the changes necessary to get Votive installed for Visual Studio 2013. You can see them in this pull request. There’s still other Visual Studio 2013-related work but it’s relatively small in scope.

Dates or at least dates for dates

With this reduction in scope, I believe the following dates are achievable with moderate-to-high confidence:

  • End of October: WiX v3.8 Release Candidate with all planned Visual Studio 2013 functionality
  • End of November: WiX v3.8 RTM

These dates also avoid December and its many holidays–for some reason, people prefer parties and cookies over beta testing.

Over the next couple of weeks, we’ll get an idea how likely we are to release a release candidate that’s relatively free of bugs and how that impacts the planned RTM date. But for now, we’ll work against those dates.

So when does the Votive work happen?

If we’re successful in shipping WiX v3.8 RC with few bugs, we can start working on Votive and other v3.x bugs in a new branch right away. Let’s call it WiX v3.9. We have more time to figure out the “theme” for WiX v3.9 and how long that release will take. Maybe it’s just Votive 2013 and some bug fixes. Maybe it’s a bunch of accumulated feature requests. We can decide that next month!

WiX v3.8 todo list: Votive 2013

Update: See the new plan!

As I mentioned in my previous post, I believe that support for Visual Studio 2013 is the big-ticket set of work we need to accomplish to ship the WiX v3.8 release. Here’s a list of open v3.8 issues for Visual Studio 2013 support. Supporting Votive integration in VS2013 is, perhaps, the biggest. Here’s what I think that work entails:

  • Update Votive to use the latest Managed Package Framework.
  • Update Votive installer to install the new Votive assemblies and templates and handle VS2013 detection and integration.

The second bullet is easy. The first might be too.

The Managed Package Framework (MPF to its friends) is a set of classes that simplifies, at least a little bit, the job of creating a project system for Visual Studio. The MPF as a whole used to be part of the Visual Studio SDK, but now ships partly in Visual Studio itself and partly as projects on Codeplex:

Because MPF is code, it has bugs and Microsoft has updated MPF for every release of Visual Studio to fix bugs and adapt the MPF for that version. There isn’t yet an MPF12 specifically for VS2013.

WiX v3.7 has two versions of the MPF and produces two versions of Votive based on them: One for VS2008 and one for VS2010. The VS2010 version is also used for VS2012.

[[Update: Original sentence was “The VS2010 version is also used for VS2013.”]]

That’s very convenient…and that’s a problem.

There are a couple of bugs against Votive in VS2012 that (apparently) are due to its use of the MPF10. The recommended fix was to update the version of MPF that Votive uses to MPF11.

So there are a couple of options:

  1. Continue to use MPF10 to build Votive for VS2010, VS2012, and VS2013. This will probably work for Visual Studio 2013 with the same bugs that exist for VS2012. This is the option with the least amount of work. The downside is that it doesn’t address the bugs that would be fixed if we adopted the newer MPF and it just adds to our technical debt: Undoubtedly some future version of Visual Studio will not work acceptably well with MPF10.
  2. Bring in MPF11 and create a new Votive assembly for both VS2012 and VS2013. That should fix the known bugs at the cost of adapting all the Votive code to work with the changes introduced in MPF11. The biggest is a namespace change that breaks source compatibility with previous releases of MPF. That requires either lots of conditionals in the Votive code or duplicating it. Both options give me hives.
  3. Bring in the MPF11 and use it to build Votive for VS2010, VS2012, and VS2013. This would incur additional testing cost but would let us get rid of the copy of MPF10 in the WiX source tree and eliminate the partial duplication of the Votive code for MPF10. Naturally, this assumes MPF11 can be used at all in a previous release of Visual Studio.

There’s another wrinkle: We plan to deprecate support for VS2008. I definitely don’t want to spend a lot of time mucking around in Votive for VS2008, nor do I want to introduce a lot of churn that might destabilize Votive for VS2008 just when we deprecate it. Duplicating the Votive code for VS2010 and VS2012/VS2013 would let us avoid that, as unpleasant as duplication is.

So for WiX v3.8 I’m proposing to implement option #3 by duplicating code as needed to isolate “Votive 2013” and break ties with any shared code. Once that code is working, we can switch VS2012 to use Votive 2013 and try it with VS2010. If MPF11 isn’t compatible with VS2010, we’re no worse off. And worse comes to worst, we can consider option #1.

If you’re interested in contributing to Votive 2013, please reply to the thread I’ll start on wix-devs. It would be a challenge to parallelize the work, but I’m happy to get others involved. Git makes it relatively easy to share work in progress.

Visual Studio 2008 deprecated in WiX v3.8

WiX v3.8 will support the following versions of Visual Studio with Votive and the WiX native-code SDK:

  • Visual Studio 2008 (since v3.0)
  • Visual Studio 2010 (since v3.5)
  • Visual Studio 2012 (since v3.6)
  • Visual Studio 2013 (planned for v3.8)

WiX v3.8 will be the last version of WiX to support Visual Studio 2008. WiX v3.9 will no longer include Votive or native library support for Visual Studio 2008.

You might be asking why we’d drop something rather than just keep it around. The biggest reason is that maintaining Visual Studio 2008 support for Votive complicates the Votive code and build process for every other release.

Note that the WixVSExtension support for detecting and integrating packages and templates into Visual Studio 2008 will continue to be included in WiX v3.9 and later.

Getting from here to there for WiX v3.8

In my last post, I talked about the idea of a WiX v3.x stable series of releases to keep WiX v3.x going until and after WiX v4.x is first released. First up is WiX v3.8.

Remember the kind of work that’s in scope for the WiX v3.x series:

  • Bug fixes (of course)
  • Small features
  • Platform support (Windows/MSI and Visual Studio)

We already have a number of fixes and small features in WiX v3.8 and a few more of each already assigned to v3.8 in the WiX issues database. Biggest, however, is the upcoming platform support work known as Visual Studio 2013: Supporting Visual Studio 2013 with Votive integration and the WiX SDK is really important for the folks who will jump on that bandwagon quickly. It’s already available in a Preview release that’s provided with a go-live license. And on Monday, Microsoft shipped the RC release, also with a go-live license.

They also announced that Visual Studio 2013 RTM will ship on the same day as Windows 8.1 is generally available: 18-October.

And, oh look! It’s already mid-September.

So here are two stakes in the ground:

  1. We should ship WiX v3.8 by the end of the year. That’s within a 60-day window (approximately) after the release of Windows 8.1 and Visual Studio 2013. Due to the year-end holidays (plus Thanksgiving here in the US), the final release candidate should be released no later than Monday, 2-December. (We’ve generally given WiX releases a few weeks of “bake time” where we release a final release candidate, ask everyone to download and test, and wait to see if there’s a bug big and bad enough to fix and slip the release.)
  2. We should ship a reliable WiX v3.8 beta with Visual Studio 2013 support by Halloween. That’s within a couple of weeks of the Visual Studio 2013 RTM release on 18-October. We can start by supporting the Visual Studio 2013 RC release; it’s freely available and hopefully will be the same as RTM as far as WiX is concerned.

There are no code pixies

Currently, the only Visual Studio 2013 support in the WiX v3.8 branch on Codeplex is detection properties in WixVSExtension.

There’s a lot more to do and we need your help to get it done.

Rob and Mike, my fellow carry-overs from the Microsoft WiX Virtual Team days, are both focusing on WiX v4.0. As release manager, I’m committed to getting the WiX v3.8 release out as soon as is feasible. To hit any of the dates I outlined above, we need more than just me working on Visual Studio 2013 support and fixing bugs.

Look at the open issues for WiX v3.8 and join the discussion on the wix-devs mailing list and the weekly bug triage meetings.

Update: wixtoolset.org is back up!