<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>when setup isn't just xcopy : context</title><link>http://blogs.msdn.com/robmen/archive/tags/context/default.aspx</link><description>Tags: context</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Conflicts of Interest?</title><link>http://blogs.msdn.com/robmen/archive/2006/10/10/Conflicts-of-Interest_3F00_.aspx</link><pubDate>Tue, 10 Oct 2006 18:55:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:813337</guid><dc:creator>robmen</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/robmen/comments/813337.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robmen/commentrss.aspx?PostID=813337</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://roughtype.com"&gt;Nicholas Carr&lt;/a&gt; has a great &lt;a href="http://www.roughtype.com/archives/2006/10/a_glass_house.php"&gt;blog entry about conflicts of interest in blogging&lt;/a&gt;.&amp;nbsp; It got me thinking about&amp;nbsp;a silent policy I've always had for myself when blogging here.&amp;nbsp; I don't blog about the many vendors in the MSI creation space except the ones that I am affiliated with.&amp;nbsp; Namely I write about the &lt;a href="http://wix.sourceforge.net/"&gt;WiX toolset&lt;/a&gt;&amp;nbsp;(because I lead that effort)&amp;nbsp;and&amp;nbsp;sometimes VisualStudio's Setup Projects (because I work for Microsoft and I'm often asked to relate it to WiX ).&amp;nbsp; I don't write about &lt;a href="http://www.macrovision.com/products/flexnet_installshield/index.shtml"&gt;InstallShield&lt;/a&gt; or &lt;a href="http://www.wise.com/Products/Installations/WiseforWindowsInstaller.aspx"&gt;Wise&lt;/a&gt; or the many, many others.&lt;/p&gt; &lt;p&gt;My question to those of you who read my blog regularly is, "Do you think this policy is a good one and should I keep following it?"&amp;nbsp; Please, leave a comment below or send me a comment through the &lt;a href="http://blogs.msdn.com/robmen/contact.aspx"&gt;contact link&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=813337" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robmen/archive/tags/context/default.aspx">context</category><category domain="http://blogs.msdn.com/robmen/archive/tags/personal/default.aspx">personal</category></item><item><title>The Windows Live Writer team rocks.</title><link>http://blogs.msdn.com/robmen/archive/2006/10/05/780445.aspx</link><pubDate>Thu, 05 Oct 2006 18:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:780445</guid><dc:creator>robmen</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/robmen/comments/780445.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robmen/commentrss.aspx?PostID=780445</wfw:commentRss><description>&lt;p&gt;I installed &lt;a href="http://windowslivewriter.spaces.live.com/"&gt;Windows Live Writer 1.0 Beta&lt;/a&gt; a while ago to test a project I was working on.&amp;nbsp; I didn't actually boot the application or anything, just installed it.&amp;nbsp; I think this proves how much of a setup geek I am.&amp;nbsp; &amp;lt;smile/&amp;gt;&lt;/p&gt; &lt;p&gt;Well, as you can see in my &lt;a href="http://blogs.msdn.com/robmen/archive/2006/09/30/778315.aspx"&gt;previous blog entry&lt;/a&gt;, I actually tried using Windows Live Writer.&amp;nbsp; I must say, in the short time I've used it, I'm impressed.&amp;nbsp; The UI is very intuitive.&amp;nbsp; The HTML generated is very clean.&amp;nbsp; The ability to preview the post using the styles from my blog is sweet.&amp;nbsp; I love the way that "Recent Posts" and "Drafts" are tracked seamlessly.&lt;/p&gt; &lt;p&gt;That said, I have had some small issues with cut and paste not doing exactly what I expected (whitespace just disappeared).&amp;nbsp; Window Live Writer also doesn't provide an easy way for me to add code snippets to blog entries (awesome if it was supported just like blockquote).&amp;nbsp; But I can edit the HTML directly to add PRE elements and Writer seems to handle that pretty well.&lt;/p&gt; &lt;p&gt;But this blog entry isn't supposed to be about Windows Live Writer &lt;em&gt;application&lt;/em&gt;.&amp;nbsp; Instead, I wanted to talk about the Windows Live Writer &lt;em&gt;team&lt;/em&gt;.&amp;nbsp; &lt;/p&gt; &lt;p&gt;I met three of the developers on the Writer team a month or so ago: Bonnie, Joe and Spike.&amp;nbsp; We had a great discussion for almost two hours after work one Thursday.&amp;nbsp; One of the things I remember most is when we were discussing Beta feedback Joe commented sheepishly, "Probably the biggest mistake we made was not including the word 'blogging' in our dictionary.&amp;nbsp; Lots of people complained about that."&amp;nbsp; I chuckled when I posted my last blog entry because I did have to add "blogging" to the dictionary when the spell checker complained.&lt;/p&gt; &lt;p&gt;&amp;nbsp;But even more important than the interesting conversation I had with Bonnie, Joe, and Spike, I saw something I hadn't seen inside Microsoft for so long I had almost forgotten to look for it.&amp;nbsp; This team is &lt;em&gt;hungry&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;They aren't just building a simple blogging tool.&amp;nbsp; They are building a blogging tool that beginners can be comfortable with while meeting advanced users basic needs.&amp;nbsp; Then they released an &lt;a href="http://windowslivewriter.spaces.live.com/blog/cns!D85741BB5E0BE8AA!702.entry"&gt;update to their Beta&lt;/a&gt; based on user feedback.&amp;nbsp; Next they made their &lt;a href="http://dev.live.com/writer"&gt;application a platform&lt;/a&gt; and opened up an untold number of new uses.&amp;nbsp; And most importantly they didn't blink when it was suggested Windows Live Writer wasn't necessary because Word 2007 would support blogging too&amp;nbsp;(as &lt;a href="http://blogs.msdn.com/uac/archive/2005/12/20/Chris_Corio.aspx"&gt;Chris Corio&lt;/a&gt; might say, "The two apps are in completely different markets, yo!").&lt;/p&gt; &lt;p&gt;It wasn't until I was driving away that evening that the last piece of the puzzle clicked in my head.&amp;nbsp; Windows Live Writer was created by the same team that brought us &lt;a href="http://www.onfolio.com/"&gt;Onfolio&lt;/a&gt;.&amp;nbsp; This team of hungry developers was acquired from the "outside".&lt;/p&gt; &lt;p&gt;That realization eventually crystallized into something that I have been feeling for a year or more.&amp;nbsp; It feels like many developers at Microsoft are "playing to not lose".&amp;nbsp; What I saw in the Windows Live Writer team was a small group of developers "&lt;a href="http://www.amazon.com/Play-Win-Choosing-Growth-Over/dp/1885167318"&gt;playing to win&lt;/a&gt;".&amp;nbsp; I loved that.&amp;nbsp; It's past time for me to do the same.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=780445" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robmen/archive/tags/context/default.aspx">context</category><category domain="http://blogs.msdn.com/robmen/archive/tags/personal/default.aspx">personal</category></item><item><title>Restarts Revisited: Windows isn't that different than UNIX</title><link>http://blogs.msdn.com/robmen/archive/2006/01/17/513683.aspx</link><pubDate>Tue, 17 Jan 2006 11:20:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:513683</guid><dc:creator>robmen</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/robmen/comments/513683.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robmen/commentrss.aspx?PostID=513683</wfw:commentRss><description>&lt;p&gt;I've been meaning to follow up on my &lt;a href="http://blogs.msdn.com/robmen/archive/2005/12/10/502351.aspx"&gt;blog entry about the Restart Manager&lt;/a&gt; and reboots on the Windows platform in general.  I saw a lot of incorrect conclusions being drawn from my blog entry.  So, I want to quickly revisit the issue and hopefully clear up the confusion.  Hopefully, this time I'll communicate more clearly.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://x2a.org/2005/12/12/a-look-into-why-windows-needs-to-reboot-after-installing-an-application/"&gt;Jonathan Bastien-Filiatrault's blog post&lt;/a&gt; goes right to the heart of the incorrect conclusion drawn by many.  He states the following:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;One thing that makes Unix in general not need this is that if a file is unlinked, as long as there are open file descriptors to this file, that file is not removed from disk (even if it cannot be referenced from the directory hierarchy) and the memory maps from an executable or library can be maintained.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I didn't clearly note in my last blog entry that my experiments with Reid's PowerBook proved to me that this is true.  You can delete files even if they are in use on UNIX.  That's nice but it still doesn't solve either of the two issues that are the real reason a reboot is required:&lt;/p&gt;
&lt;p&gt;1. The old file is still running (i.e. you are still vulnerable to any security exploits)&lt;/p&gt;
&lt;p&gt;2. New executions of the file get the updated version while the old executions of the file keep using the old file (i.e. you may have inter-/intra-process communication problems).&lt;/p&gt;
&lt;p&gt;On Windows, replacing a file that is in use takes more steps (rename, replace, delete) than UNIX (delete, replace) but on either operating systems you need to stop the updated process for the update to truly take effect.&lt;/p&gt;
&lt;p&gt;Jonathan also states:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When that file is unlinked, one can sneak a new library into place atomically.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I'm not sure what he means by &amp;quot;atomically&amp;quot; but unless the file system supports true ACID-like transactions then an &amp;quot;rm oldfile&amp;quot; &amp;quot;cp newfile oldfile&amp;quot; is not an atomic operation.  The next version of the NT file system (shipping for the first time with Windows Vista, I believe) supports transactions such that &amp;quot;ren oldfile tempfile&amp;quot; &amp;quot;copy newfile oldfile&amp;quot; can actually be done atomically.  But that is a conversation for a different day.&lt;/p&gt;
&lt;p&gt;Anyway, I just wanted to be a bit more clear on the topic and note that fundamentally, file-in-use handling on the two operating systems aren't really different and that the &lt;a href="http://msdn.microsoft.com/windowsvista/reliability/#drar"&gt;Restart Manager&lt;/a&gt; functionality would be useful on any operating system.&lt;/p&gt;
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=513683" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robmen/archive/tags/context/default.aspx">context</category></item><item><title>Blogging comments the "Scoble Way".</title><link>http://blogs.msdn.com/robmen/archive/2006/01/07/510425.aspx</link><pubDate>Sat, 07 Jan 2006 20:00:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:510425</guid><dc:creator>robmen</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/robmen/comments/510425.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robmen/commentrss.aspx?PostID=510425</wfw:commentRss><description>&lt;p&gt;Usually, when I find comments about the &lt;a href="http://wix.sourceforge.net/"&gt;WiX toolset&lt;/a&gt; on other people's blogs I would put comments there.  However, after watching &lt;a href="http://scobleizer.wordpress.com/"&gt;Robert Scoble&lt;/a&gt; for a while, it seems like there is more utility in writing up your comments as a blog entry on your blog and linking over to their blog.  I also found that sometimes my comments were as long as some of my blog entries.  So, I'm going to try linking and trackbacking for a while (hopefully Community Server's trackback functionality will actually work.  The software has not been behaving well lately, IMHO).&lt;/p&gt;
&lt;p&gt;Anyway, expect to see more entries that are comments, questions, or rebuttals to stuff I've seen on other blogs and web sites. Some of the blog entries or sites I point at may be very old for a while since I have a back log of collected data that I haven't posted.&lt;/p&gt;
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=510425" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robmen/archive/tags/context/default.aspx">context</category></item><item><title>PDC '05, I'll be there.  Will you?</title><link>http://blogs.msdn.com/robmen/archive/2005/09/01/459153.aspx</link><pubDate>Thu, 01 Sep 2005 20:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:459153</guid><dc:creator>robmen</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/robmen/comments/459153.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robmen/commentrss.aspx?PostID=459153</wfw:commentRss><description>&lt;P&gt;Well, it looks official. My features are in and my bugs are under control. I'm going to &lt;A href="http://msdn.microsoft.com/events/pdc/agenda/default.aspx"&gt;PDC '05&lt;/A&gt;!&lt;/P&gt;
&lt;P&gt;No, I'm not a part of the &lt;A href="http://commnet.microsoftpdc.com/content/sessionview.aspx?TopicID=e81ddc8b-8e8b-4cfa-86da-5da06ff54d6b"&gt;Windows Installer presentation&lt;/A&gt; on the last day at the last hour of the PDC. No, there isn't a &lt;A href="http://msdn.microsoft.com/events/pdc/community/programs/default.aspx#bof"&gt;Birds of a Feather&lt;/A&gt; (BOF) session on the &lt;A href="http://wix.sourceforge.net/"&gt;WiX toolset&lt;/A&gt;. No, I'm not dressing up like an &lt;A href="http://marc.merlins.org/linux/photos/index.php?album=20050810_LWCE_PenguinBowl&amp;amp;img=103_PenguinBowl.jpg"&gt;Imperial Stormtrooper&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;So what am I doing at PDC'05? Well, I am slated to be part of the &lt;A href="http://msdn.microsoft.com/events/pdc/inside/highlights/default.aspx#experts"&gt;Ask the Experts&lt;/A&gt; session on &lt;A href="http://msdn.microsoft.com/events/pdc/agenda/agenda/"&gt;Thursday evening&lt;/A&gt;. I will also be hanging around, attending shows, and writing WiX code (probably in the "Bean Bag" or "Fundamentals" Lounge... whichever has the best atmosphere).&lt;/P&gt;
&lt;P&gt;But the real reason I'm writing this blog entry is that I'm thinking about putting together some ad hoc meetings to talk about the WiX toolset or setup in general. If you're going to PDC and think that would be interesting then drop a comment below. For example, I was thinking it might be easy very easy to create an unscheduled WiX BOF session on Thursday evening after the Ask the Experts session.&lt;/P&gt;
&lt;P&gt;I'll post more blog entries (even during the conference) if there are particular gatherings times/points that look fruitful.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=459153" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robmen/archive/tags/context/default.aspx">context</category><category domain="http://blogs.msdn.com/robmen/archive/tags/personal/default.aspx">personal</category><category domain="http://blogs.msdn.com/robmen/archive/tags/setup/default.aspx">setup</category><category domain="http://blogs.msdn.com/robmen/archive/tags/wix/default.aspx">wix</category><category domain="http://blogs.msdn.com/robmen/archive/tags/pdc/default.aspx">pdc</category></item><item><title>Personal musings on shipping the first version of software.</title><link>http://blogs.msdn.com/robmen/archive/2004/08/29/222258.aspx</link><pubDate>Sun, 29 Aug 2004 07:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:222258</guid><dc:creator>robmen</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/robmen/comments/222258.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robmen/commentrss.aspx?PostID=222258</wfw:commentRss><description>&lt;p&gt;I find it amusing that even though &lt;A href="http://blogs.msdn.com/ptorr"&gt;Peter&lt;/a&gt; and I have been on very different schedules as of late (and thus haven't run into each other around the house much) his latest &lt;A href="http://blogs.msdn.com/ptorr/archive/2004/08/28/222109.aspx"&gt;blog entry&lt;/a&gt; captured very much what I've been focused on as of late.&lt;/p&gt; &lt;p&gt;I have been neglecting regular updates to my blog for the last month or so because I've been coming home completely mentally fried.&amp;nbsp; At work, I have been struggling with many of the questions that Peter described in his blog for a particularly difficult feature in the product I'm currently working on.&amp;nbsp; I seriously spent a few days just trying to figure out what a user would expect to see and be able to do with this one particular facet of our product.&amp;nbsp; I then spent two weeks brainstorming solutions with everyone else on the team to come up with a list of six or seven options.&amp;nbsp; Next, the dev team went through and &amp;quot;costed&amp;quot; (calculated how long a feature would take to get working) each option.&amp;nbsp; Finally, we went through and listed all of the side-effects each option had.&amp;nbsp; After about a month total of data collection and analysis, it became fairly clear which options were feasible (note, we didn't have all the data like test costs, or localization hit. those costs weren't necessary to see which options were expensive and which weren't).&lt;/p&gt; &lt;p&gt;Late last week, we met with the other teams that would be affected by the option picked and made a decision.&amp;nbsp; We picked &amp;quot;Option 1&amp;quot;.&amp;nbsp; Option 1 was &amp;quot;Cut the Feature&amp;quot;.&amp;nbsp; You see, we're closing in on Beta2 and many of best options just couldn't be considered because there isn't enough time to get all of the existing work done and add this new work on top.&amp;nbsp; Sometimes it can be very frustrating to watch a feature fall on the floor because we miscalculated something(s) in the beginning and don't have time to go back to fix it correctly.&amp;nbsp; Other times it's just frustrating trying to figure out what to do with such problematic features and cutting them is something of a relief even if you now have to worry that you've cut too deep.&amp;nbsp; Ultimately, I think cutting this particular feature was the right thing to do but I do wonder how users will interact differently with the product without this feature.&lt;/p&gt; &lt;p&gt;I obviously can't go into details about the exact feature here (otherwise I would have already) but I wish I could.&amp;nbsp; I often wish that my &lt;a href="http://www.microsoft.com/windowsserversystem/dsi/sdm.mspx"&gt;day job project&lt;/a&gt; could operate like my &lt;a href="http://wix.sourceforge.net/"&gt;Open Source project&lt;/a&gt;. &amp;nbsp;The feedback loop is so much tighter when the community is built into the project.&amp;nbsp; Maybe after we ship I'll discuss it, but I doubt it.&lt;/p&gt; &lt;p&gt;Finally, first version projects (like what I'm working on) are notoriously difficult to wander through because quite often you're building something for an audience (community?) that doesn't exist yet.&amp;nbsp; Each feature is vetted against what you &lt;i&gt;imagine&lt;/i&gt; your customers are going to need because your customers don't exist yet.&amp;nbsp; In my humble opinion, that is why everyone says you should wait for the third version of a product.&amp;nbsp; It usually takes a couple versions of customer feedback to be incorporated into the product before users find the products truly usable.&amp;nbsp; This is yet another example of why I enjoy working on my Open Source project; the feedback loop is much tighter.&lt;/p&gt; &lt;p&gt;On a brighter note, it looks like all of this struggling will be behind me in the next week or two.&amp;nbsp; Then I'll be off to Italy for a week.&amp;nbsp; When I get back from holiday, I'll actually get back to write code again.&amp;nbsp; Yes, for the last few months I've been of working on a non-coding feature.&amp;nbsp; I can't tell you how much I am looking forward to writing code again.&amp;nbsp; I always thought I could be a &lt;a href="http://www.microsoft.com/college/fulltime/pm.asp"&gt;PM&lt;/a&gt; (I know I'd be a lousy &lt;a href="http://www.microsoft.com/college/fulltime/ste.asp"&gt;Tester&lt;/a&gt;) but now I know better.&amp;nbsp; I'm a &lt;a href="http://www.microsoft.com/college/fulltime/sde.asp"&gt;Developer&lt;/a&gt;.&amp;nbsp; I write code.&lt;/p&gt; &lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=222258" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robmen/archive/tags/context/default.aspx">context</category><category domain="http://blogs.msdn.com/robmen/archive/tags/collider/default.aspx">collider</category><category domain="http://blogs.msdn.com/robmen/archive/tags/oss_4000_msft/default.aspx">oss@msft</category></item><item><title>Creating a Microsoft Open Source project on SourceForge.</title><link>http://blogs.msdn.com/robmen/archive/2004/08/09/211126.aspx</link><pubDate>Mon, 09 Aug 2004 11:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:211126</guid><dc:creator>robmen</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/robmen/comments/211126.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robmen/commentrss.aspx?PostID=211126</wfw:commentRss><description>&lt;P&gt;Ever have one of those days where you find yourself staring down all the little tasks that you really should get done but have absolutely no desire to start?&amp;nbsp; Instead, you spend most of the day lying around resting and maybe reading some inconsequential fiction.&amp;nbsp; Today was one of those days for me.&amp;nbsp; Fortunately, I usually "go nocturnal" after such a day and can still get most of the software projects complete.&amp;nbsp; Tonight I'm working on a blog entry I promised a week ago then I'm going to drop into some late night &lt;A href="http://www.microsoft.com/windowsserversystem/dsi/sdm.mspx"&gt;SDM&lt;/A&gt; modeling.&lt;/P&gt;
&lt;P&gt;A number of people at &lt;A href="http://www.microsoft.com/"&gt;Microsoft&lt;/A&gt; have asked that I'd write a step-by-step guide for creating a project on &lt;A href="http://www.sourceforge.net/"&gt;SourceForge&lt;/A&gt; based on my experiences with the &lt;A href="http://wix.sourceforge.net/"&gt;Windows Installer XML toolset&lt;/A&gt;.&amp;nbsp; So, let's jump right in:&lt;/P&gt;
&lt;P&gt;0.&amp;nbsp; &lt;B&gt;Get your Open Source project approved&lt;/B&gt;.&amp;nbsp; Work with your business development team and the &lt;A href="http://www.microsoft.com/resources/sharedsource/default.mspx"&gt;Shared Source Initiative&lt;/A&gt; team to have your project approved to be released as &lt;A href="http://opensource.org/"&gt;Open Source&lt;/A&gt;.&amp;nbsp; It is important to work with your business team because there are many business angles that the typical geek doesn't necessarily think about.&amp;nbsp; Don't just post your code to SourceForge because you think it is a cool idea, that's a great way to end up in some seriously hot water.&lt;/P&gt;
&lt;P&gt;1.&amp;nbsp; &lt;B&gt;&lt;A href="http://sourceforge.net/account/register.php"&gt;Create a SourceForge account&lt;/A&gt;&lt;/B&gt;.&amp;nbsp; This process is very simple and usually takes less than an hour to be good to go.&lt;/P&gt;
&lt;P&gt;2.&amp;nbsp; &lt;B&gt;&lt;A href="https://sourceforge.net/register/"&gt;Register your project with SourceForge&lt;/A&gt;&lt;/B&gt;.&amp;nbsp; This is a multi-step process that can take about twenty minutes to read all of the licensing information and answer all the questions.&amp;nbsp; It will also take a couple days for the project to be approved and created so be sure to leave extra time if you have a deadline for project creation.&amp;nbsp; Finally, be sure to have the following pieces of information ready before going through the registration process.&amp;nbsp; You should have all of these answers from Step 0.&lt;/P&gt;
&lt;P&gt;a.&amp;nbsp; &lt;I&gt;Project name&lt;/I&gt;.&amp;nbsp; 3 - 15 lowercase alphanumeric characters that are used to uniquely identify your project everywhere.&amp;nbsp; Choose carefully because you'll never be able to change this name once you create your project.&lt;/P&gt;
&lt;P&gt;b.&amp;nbsp; &lt;I&gt;Project title&lt;/I&gt;.&amp;nbsp; This is a bit more descriptive than the name.&amp;nbsp; For example, "Windows Installer XML (WiX) toolset" is my personal favorite.&lt;/P&gt;
&lt;P&gt;c.&amp;nbsp; &lt;I&gt;Short description&lt;/I&gt;.&amp;nbsp; 10 - 255 characters of marketing goo that makes your project sound cool.&lt;/P&gt;
&lt;P&gt;d.&amp;nbsp; &lt;I&gt;Business justification&lt;/I&gt;.&amp;nbsp; 200 characters - 10 KB that explains why your project should exist.&lt;/P&gt;
&lt;P&gt;e.&amp;nbsp; &lt;I&gt;&lt;A href="http://www.opensource.org/licenses/index.php"&gt;OpenSource License&lt;/A&gt;&lt;/I&gt;. &amp;nbsp;For example, the WiX toolset uses the &lt;A href="http://www.opensource.org/licenses/cpl.php"&gt;Common Public License&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;3.&amp;nbsp; &lt;B&gt;Configure Trove categorization&lt;/B&gt;.&amp;nbsp; This categorization shows up just under your project's short description and provides a lot of useful metadata about your project.&amp;nbsp; If you don't post this quickly, you'll get a lot of requests to have it filled in when your project gets more popular.&lt;/P&gt;
&lt;P&gt;4.&amp;nbsp; &lt;B&gt;Configure the rest of your project&lt;/B&gt;.&amp;nbsp; There are many little things you can tweak in your project.&amp;nbsp; Read about each feature (trackers, file releases, forums, mailing lists, etc.) and decide how you want your project run.&amp;nbsp; Personally, I highly suggest creating three mailing lists: "project-users", "project-devs", and "project-commits".&amp;nbsp; The "users" list is where general questions can be sent and answered.&amp;nbsp; The "devs" list is where bug reports, fixes, and new features can be discussed.&amp;nbsp; The "commits" list is where all CVS information is sent for those that want to monitor the continual status of the project.&amp;nbsp; I also turned off the forums for my project because it was time consuming to track the mailing lists and the forums where the essentially the same questions were being asked.&amp;nbsp; I chose to consolidate everything in the mailing lists.&lt;/P&gt;
&lt;P&gt;5.&amp;nbsp; &lt;B&gt;&lt;A href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html"&gt;Download PuTTY&lt;/A&gt;&lt;/B&gt;.&amp;nbsp; Since almost all raw project communication with SourceForge is via SSH we need a Windows client that handles that.&amp;nbsp; PuTTY is &lt;A href="https://sourceforge.net/docman/display_doc.php?docid=761&amp;amp;group_id=1#sshtools"&gt;recommended&lt;/A&gt; by SourceForge and has been pretty friendly once I quit trying to be smarter than it was.&amp;nbsp; My suggestion is to just download the &lt;A href="http://the.earth.li/~sgtatham/putty/latest/x86/putty.zip"&gt;.zip file&lt;/A&gt; and extract it into a C:\Program Files\PuTTY directory.&lt;/P&gt;
&lt;P&gt;6.&amp;nbsp; &lt;B&gt;&lt;A href="https://sourceforge.net/docman/display_doc.php?docid=761&amp;amp;group_id=1#keygenputty"&gt;Generate a SSH key&lt;/A&gt;&lt;/B&gt;.&amp;nbsp; Those SourceForge steps are pretty good if you just follow them step by step.&amp;nbsp; One of the important pieces to get right is in "step 6" there is a &lt;A href="https://sourceforge.net/dbimage.php?id=3852"&gt;picture&lt;/A&gt; that shows the "Public key for pasting.".&amp;nbsp; Be sure to copy the entire block of text in there.&amp;nbsp; Some of the earlier (or later) SourceForge instructions weren't clear that everything (including the funky little "ssh-dss" text and all of the new lines) was important.&amp;nbsp; Oh, and put the SSH keys somewhere you won't lose them.&amp;nbsp; You can re-create keys but life is just easier if you don't have to.&lt;/P&gt;
&lt;P&gt;7.&amp;nbsp; &lt;B&gt;Wait&lt;/B&gt;.&amp;nbsp; The SourceForge site &lt;A href="https://sourceforge.net/docman/display_doc.php?docid=761&amp;amp;group_id=1#syncdelay"&gt;says that it only takes 10 - 30 minutes&lt;/A&gt; for the SSH keys to be updated, but I had a terrifying early late night experience with this when trying to post WiX for the first time.&amp;nbsp; I started late the Saturday night before WiX was to go public and was up until 4:30 AM Sunday morning trying to get SourceForge to recognize my SSH key.&amp;nbsp; I finally went to sleep exhausted, hoping that I would wake up in the morning and everything would just be okay.&amp;nbsp; I was up at 6:30 AM (not a great night of sleep) and magically all my SSH commands were working.&amp;nbsp; I was so relieved.&lt;/P&gt;
&lt;P&gt;8.&amp;nbsp; &lt;B&gt;&lt;A href="https://sourceforge.net/docman/display_doc.php?docid=761&amp;amp;group_id=1#authagentpageant"&gt;Play with PAGEANT&lt;/A&gt;&lt;/B&gt;.&amp;nbsp; PAGENT is a cute little tool that simplifies using SSH tools, but isn't terribly discoverable.&amp;nbsp; The SourceForge &lt;A href="https://sourceforge.net/docman/display_doc.php?docid=761&amp;amp;group_id=1#authagentoverviewhttps://sourceforge.net/docman/display_doc.php?docid=761&amp;amp;group_id=1"&gt;documentation about this fact&lt;/A&gt; is easy to skip over but once you read the docs (hopefully my link helps find them) all should be clear.&amp;nbsp; Before you try to do any SSH communication with SourceForge, be sure PAGEANT is running (you'll see a little computer con with a black hat in your system tray) or SSH commands will fail.&lt;/P&gt;
&lt;P&gt;9.&amp;nbsp; &lt;B&gt;Punching through the firewall with PuTTY&lt;/B&gt;.&amp;nbsp; One of the trickiest things to get right was how to talk to SourceForge through Microsoft's firewall.&amp;nbsp; There is a short blurb about &lt;A href="https://sourceforge.net/docman/display_doc.php?docid=14033&amp;amp;group_id=1#firewall"&gt;that topic in the SourceForge documentation&lt;/A&gt;, but here's a step by step.&lt;/P&gt;
&lt;P&gt;a.&amp;nbsp; Start putty.exe from the location you downloaded it (in my case, C:\Program Files\PuTTY)&lt;/P&gt;
&lt;P&gt;b.&amp;nbsp; In the "Session" node of the navigation tree&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Host &lt;U&gt;N&lt;/U&gt;ame: "PROJECTNAME.cvs.sourceforge.net"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;U&gt;P&lt;/U&gt;ort: "443"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Protocol: "&lt;U&gt;S&lt;/U&gt;SH"&lt;/P&gt;
&lt;P&gt;c. In the "Connection" node of the navigation tree:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&lt;U&gt;u&lt;/U&gt;to-login username: &amp;lt;your SourceForge account&amp;gt;&lt;/P&gt;
&lt;P&gt;d. In the "Connection-&amp;gt;Proxy" node of the navigation tree:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Prox&lt;U&gt;y&lt;/U&gt; hostname: proxy&amp;nbsp;&amp;nbsp; (or any other Microsoft proxy server)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Port: 80&lt;/P&gt;
&lt;P&gt;e. Back to the "Session" node of the navigation tree:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sav&lt;U&gt;e&lt;/U&gt;d Sessions: "cvs-ssh"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Click "Sa&lt;U&gt;v&lt;/U&gt;e" button&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Click "Open" button.&lt;/P&gt;
&lt;P&gt;&lt;I&gt;Note:&amp;nbsp; You should see an SSH session start up with SourceForge.&amp;nbsp; If you see something that says, "Welcome to cvs1.sourceforge.net" then get disconnected (because SourceForge does not allow direct access to CVS) then you're good to go.&amp;nbsp; If not, go back and make sure you've configured everything above correctly.&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;10.&amp;nbsp; &lt;B&gt;&lt;A href="https://sourceforge.net/docman/display_doc.php?docid=14033&amp;amp;group_id=1#howtoaccess"&gt;Download a CVS-client&lt;/A&gt;&lt;/B&gt;.&amp;nbsp; The first time through this process, I &lt;A href="http://cvsgui.sourceforge.net/download.html"&gt;downloaded WinCvs&lt;/A&gt; and just used "cvs.exe" from the command-line because the UI is so atrocious (don't even bother booting the UI).&amp;nbsp; I just added the "C:\Program Files\WinCvs 1.3\CVSNT" directory to my PATH and forgot that there was ever a UI for the cvs.exe.&amp;nbsp; Also, &lt;A href="http://tortoisecvs.sourceforge.net/"&gt;TortoiseCVS&lt;/A&gt; looked cute but I don't use Explorer for anything.&amp;nbsp; The command-line is where it's at for me.&amp;nbsp; I recently realized it was possible to get &lt;A href="http://www.cvsnt.com/cvspro/"&gt;CVSNT&lt;/A&gt; without WinCvs and that works just as well.&lt;/P&gt;
&lt;P&gt;11.&amp;nbsp; &lt;B&gt;Configure CVS-client to talk SSH via PuTTY&lt;/B&gt;.&amp;nbsp; It took a little while to finally get cvs.exe talking to SourceForge.&amp;nbsp; Turns out all you need are two simple environment variables.&amp;nbsp; I added these two variables to my user environment (Start -&amp;gt; right click "My Computer" -&amp;gt; Advanced Tab -&amp;gt; Environment Variables button -&amp;gt; top "New" button) so I wouldn't have to remember them all the time:&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;CVSROOT=:ext:cvs-ssh:/cvsroot/PROJECTNAME&lt;BR&gt;CVS_RSH=C:\Progra~1\putty\plink.exe&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;I&gt;Note: that you need to replace "PROJECTNAME" above with your project name from Step 2 above.&amp;nbsp; Of course, you'll also want CVS_RSH to point at your copy of plink.exe that should be found wherever you extracted PuTTY in Step 5 above.&amp;nbsp; Finally, the string "cvs-ssh" is tied back to the "Sav&lt;U&gt;e&lt;/U&gt;d Sessions" entry in Step 9 above.&amp;nbsp; Those strings must match for PuTTY to connect all the dots.&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;12.&amp;nbsp; &lt;B&gt;&lt;A href="https://sourceforge.net/docman/display_doc.php?docid=14033&amp;amp;group_id=1#commandimport"&gt;Import your license into CVS&lt;/A&gt;&lt;/B&gt;.&amp;nbsp; My suggestion is that your first check-in to CVS be a copy of the license you're using for your project.&amp;nbsp; This is a really safe way to get started with CVS.&amp;nbsp; So create a directory where you want your project to be stored and put the license text file and only the license text file in that directory.&amp;nbsp; In my case, I created a new directory for my project called "wix_public" and copied the CPL license into a CPL.TXT file there.&amp;nbsp; Then you should be ready to do your first submission to SourceForge:&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;cd projectdirectory&lt;BR&gt;cvs import -m "Initial license import." projectname Microsoft start&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;I&gt;Note: that you should be in the directory that contains only the license text file when you execute this command, so you'll need to replace "projectdirectory" with the correct directory (in my case, "wix_public").&amp;nbsp; You'll also want to change "projectname" to the name of your project.&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;13.&amp;nbsp; &lt;B&gt;(optional) &lt;A href="https://sourceforge.net/docman/display_doc.php?docid=772&amp;amp;group_id=1#cvsrootcheckout"&gt;Checkout a copy of your CVS configuration (CVSROOT)&lt;/A&gt;&lt;/B&gt;.&amp;nbsp; This step is optional but will enable you to do the advanced configuration of your CVS repository in the following steps.&amp;nbsp; I highly suggest reading all of the &lt;A href="https://sourceforge.net/docman/display_doc.php?docid=772&amp;amp;group_id=1#top"&gt;SourceForge documentation&lt;/A&gt; about these advanced topics before continuing.&amp;nbsp; I personally like to check out CVSROOT to a directory named "projectname_cvsroot" right next to your project.&amp;nbsp; To do so, just enter the following command from the directory that contains your project directory:&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;cvs co -d projectname_cvsroot CVSROOT&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;14.&amp;nbsp; &lt;B&gt;(optional) &lt;A href="https://sourceforge.net/docman/display_doc.php?docid=772&amp;amp;group_id=1#mailsend"&gt;Send mail on all commits&lt;/A&gt;&lt;/B&gt;.&amp;nbsp; This is an optional configuration step, but I highly recommend it.&amp;nbsp; The SourceForge documentation is pretty good, so I'd suggest just following it step by step.&lt;/P&gt;
&lt;P&gt;15.&amp;nbsp; &lt;B&gt;(optional) &lt;A href="https://sourceforge.net/docman/display_doc.php?docid=772&amp;amp;group_id=1#scriptcvsacls"&gt;Configuring granular ACLs on your project&lt;/A&gt;&lt;/B&gt;.&amp;nbsp; I highly suggest reading this topic and decide if this applies to your project.&amp;nbsp; I decided to enable the cvs_acls script because I wanted to have developers that could do documentation and project maintenance and still be able to review all changes before modifying the source code.&amp;nbsp; It's up to you.&lt;/P&gt;
&lt;P&gt;16.&amp;nbsp; &lt;B&gt;&lt;A href="https://sourceforge.net/docman/display_doc.php?docid=14033&amp;amp;group_id=1#commandadd"&gt;Add your files to CVS&lt;/A&gt;&lt;/B&gt;.&amp;nbsp; While you can have all of your files added during the import in Step 12, I highly suggest adding them by hand (after loading the license text) the first time you go through the process.&amp;nbsp; Also, if you have any binary files be sure to read the &lt;A href="https://sourceforge.net/docman/display_doc.php?docid=768&amp;amp;group_id=1#binaryfiles"&gt;SourceForge documentation about the "cvs -kb" switch&lt;/A&gt;.&amp;nbsp; Oh and for those of you who are used to Source Depot, CVS requires you to add directories before you can add files to the directories.&lt;/P&gt;
&lt;P&gt;17.&amp;nbsp; &lt;B&gt;Wait&lt;/B&gt;.&amp;nbsp; Somewhere SourceForge mentions that it can take a couple hours for your changes to CVS to propagate to the anonymous CVS servers that the &lt;A href="https://sourceforge.net/docman/display_doc.php?docid=14033&amp;amp;group_id=1#webcvs"&gt;Web based UI&lt;/A&gt; reads from.&amp;nbsp; So, don't worry if your changes aren't showing up through the Web UI for a while.&amp;nbsp; When I was posting the WiX toolset the Monday morning it was to go live, I was sitting around from 4:30 AM to about 6:30 AM waiting for all the CVS servers to catch up.&amp;nbsp; Fortunately, I had already had my scare with the SSH keys in Step 7 and was pretty sure SourceForge would just "Do The Right Thing" (tm).&amp;nbsp; So, over those two hours waiting, I drafted the &lt;A HREF="/robmen/archive/2004/04/05/107709.aspx"&gt;blog entry&lt;/A&gt; that announced the WiX project.&lt;/P&gt;
&lt;P&gt;That's it.&amp;nbsp; Hopefully, this blog entry will help those of you taking care of projects that will follow WiX and &lt;A href="http://wtl.sourceforge.net/"&gt;WTL&lt;/A&gt; onto SourceForge.&amp;nbsp; Have fun with it!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=211126" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robmen/archive/tags/context/default.aspx">context</category><category domain="http://blogs.msdn.com/robmen/archive/tags/wix/default.aspx">wix</category><category domain="http://blogs.msdn.com/robmen/archive/tags/oss_4000_msft/default.aspx">oss@msft</category></item><item><title>Balloons, fishing poles, and personal empowerment.</title><link>http://blogs.msdn.com/robmen/archive/2004/06/18/159494.aspx</link><pubDate>Fri, 18 Jun 2004 18:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:159494</guid><dc:creator>robmen</dc:creator><slash:comments>11</slash:comments><comments>http://blogs.msdn.com/robmen/comments/159494.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robmen/commentrss.aspx?PostID=159494</wfw:commentRss><description>&lt;p&gt;I'm hanging out in &lt;a href="http://www.ci.long-beach.ca.us/"&gt;Long Beach&lt;/a&gt; with a bit of Jenny's family for a short holiday (Thursday through Sunday) to celebrate her &lt;a href="http://depts.washington.edu/commence/"&gt;graduation&lt;/a&gt;.&amp;nbsp; We're staying with her brother who has two little guys, one 3 years old and the other 1.5 years old.&amp;nbsp; Last night the kids came home from their grandparent's (who were acting as babysitters for the evening) house with a couple helium-filled balloons.&amp;nbsp; Of course, in the morning the balloons were no longer flying high (I can't tell you how much that used to frustrate me as a little kid).&amp;nbsp; So, instead of tying things to the balloons to see how much weight could be added before the balloons would no longer stay afloat, the oldest boy began batting one of the balloons around in a sort of one-man &lt;a href="http://www.volleyball.org/"&gt;volleyball game&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After an hour or so, the balloon floated a bit more out of control than previous hits and it got stuck on top of the TV.&amp;nbsp; The 3 year old couldn't quite reach it and started pleading for support.&amp;nbsp; Now, I believe strongly in personal empowerment so rather than free the balloon for him, I suggested he use a nearby toy fishing pole to help himself.&amp;nbsp; After a few more denied requests for &lt;i style='mso-bidi-font-style:normal'&gt;me&lt;/i&gt; to use the fishing pole to free the balloon for him, he started poking at the balloon with the toy fishing pole.&amp;nbsp; After three or four swipes the balloon was free again.&amp;nbsp; Cheers went up around the house and he seemed quite happy with himself.&lt;/p&gt;
&lt;p&gt;What does this story have to do with anything?&lt;/p&gt;
&lt;p&gt;Well, at the same time the 3 year old was learning how to use tools in his surroundings to solve his problems; I was answering a couple emails from people trying to use the &lt;a href="http://wix.sourceforge.net/"&gt;WiX toolset&lt;/a&gt;.&amp;nbsp; More accurately the authors of the email were pleading for someone to provide step-by-step instructions how to solve their individual setup authoring issues.&amp;nbsp; The emails sounded amazingly similar to the little boy trying to get his balloon back.&lt;/p&gt;
&lt;p&gt;So, I responded to the emails in much the same manner I did the three year old.&amp;nbsp; &amp;quot;With every drop of the Windows Installer XML toolset, there is a documentation file called WiX.chm.&amp;nbsp; You should read through that to get started.&amp;nbsp; You should also read through the &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/windows_installer_start_page.asp"&gt;Windows Installer documentation&lt;/a&gt; to get a solid understanding of the platform you're building on.&amp;quot;&amp;nbsp; Consider that documentation to be the toy fishing pole near you to free your balloon of WiX toolset questions.&lt;/p&gt;
&lt;p&gt;Somewhere in all of the above the old saying, &amp;quot;&lt;a href="http://www.amatecon.com/fish.html"&gt;You can free a boy's balloon and he can play for another hour, or you can teach him how to use a toy fishing pole to free it himself and he will play all day&lt;/a&gt;&amp;quot; seems appropriate.&amp;nbsp; But I'm bad with fables, parables, and catchy sayings in general.&amp;nbsp; So instead all I really hope is that next time you have a question about the WiX toolset (or any other technology, really) you'll think of the 3 year old boy who made the effort to free his balloon all by himself and do a little more reading.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=159494" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robmen/archive/tags/context/default.aspx">context</category><category domain="http://blogs.msdn.com/robmen/archive/tags/personal/default.aspx">personal</category><category domain="http://blogs.msdn.com/robmen/archive/tags/wix/default.aspx">wix</category></item><item><title>The questions Microsoft employees keep asking about Open Source.</title><link>http://blogs.msdn.com/robmen/archive/2004/06/10/152438.aspx</link><pubDate>Thu, 10 Jun 2004 09:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:152438</guid><dc:creator>robmen</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/robmen/comments/152438.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robmen/commentrss.aspx?PostID=152438</wfw:commentRss><description>&lt;P&gt;Almost two months ago OSDir.com &lt;A href="http://osdir.com/Article380.phtml"&gt;interviewed me&lt;/A&gt; about the &lt;A href="http://wix.sourceforge.net/"&gt;Windows Installer XML (WiX) toolset&lt;/A&gt;.&amp;nbsp; It was my first interview ever and I learned something interesting.&amp;nbsp; As the interviewee there is a very good chance you will not get to talk about the things you think are interesting.&amp;nbsp; That is, of course, unless you ignore the questions being asked and that's not generally considered polite.&lt;/P&gt;
&lt;P&gt;In my case, the interviewer was obviously looking for a story where I was some radical agent that snuck the source code out the firewall in the depth of the night without anyone noticing... or something like that.&amp;nbsp; More than once, I answered a question with "See my above answer" because I had already said, "Yes, my managers knew what was going on."&amp;nbsp; Seriously, I had no intentions of getting fired over some tool that I work on in my free time.&lt;/P&gt;
&lt;P&gt;Anyway, as I mentioned in the interview other Microsoft employees have asked questions about releasing code as Open Source projects.&amp;nbsp; Recently, an employee sent me several questions in an email (just like my interview for OSDir.com) that I thought made great interview questions.&amp;nbsp; So, rather than answer his email privately, I decided to post the questions and my answers here so other Microsoft employees can read them.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Q:&amp;nbsp; Why did the WiX project choose &lt;A href="http://sourceforge.net/"&gt;SourceForge&lt;/A&gt; (over something like &lt;A href="http://www.gotdotnet.com/"&gt;GotDotNet.com&lt;/A&gt;)?&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;I answered this question in the previous interview so I'll repeat myself here and add a bit of detail I didn't have originally.&amp;nbsp; SourceForge has many tools and applications for developers building other tools and applications for the Windows platform. The Windows Installer XML toolset is another one of those tools for Windows developers. When the CPL was chosen as the license for toolset, it became possible for us to post WiX on SourceForge where the toolset would be visible to a large number of developers.&amp;nbsp; Essentially, I believed that those developers checking out GotDotNet.com were likely to also be checking out SourceForge so the WiX toolset would be found either way.&lt;/P&gt;
&lt;P&gt;A second benefit of SourceForge that wasn't immediately apparent but saved me a lot of attempts at explanations later was that SourceForge only accepts projects that use an approved OSS license.&amp;nbsp; The fact that WiX toolset was being hosted on SourceForge meant that the project must be using an approved OSS license.&amp;nbsp; I remember seeing comments somewhere (probably Slashdot) where someone questioned whether the WiX toolset code was really truly released under an OSS license.&amp;nbsp; Several people silenced such questions by correctly noting that SourceForge only hosts projects under a true OSS license.&amp;nbsp; That helped reduce some of the "Fear, Uncertainty, and Doubt" being spread about Microsoft's first official foray into Open Source.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Q:&amp;nbsp; You have mentioned that Microsoft employees should access the internal drops of the toolset instead of downloading the bits from SourceForge.&amp;nbsp; Why?&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Participating in any Open Source project as a Microsoft employee is still in its infancy.&amp;nbsp; Even Open Source projects that originated in Microsoft have interesting legal complications that have not been well tested, yet.&amp;nbsp; My intention is to reduce the chances that a Microsoft employee inadvertently makes a mistake with severe legal repercussions.&amp;nbsp; The last thing I want to have happen is an employee lose his or her job because I wasn't clear how to interact with the WiX toolset in his or her day to day job.&lt;/P&gt;
&lt;P&gt;In particular, I am the gatekeeper that carefully reviews all changes accepted into Microsoft from SourceForge.&amp;nbsp; If there is anything questionable in a change then I am responsible for ensuring the change does not get into Microsoft without appropriate review from legal.&amp;nbsp; For example, no change can be accepted into the WiX toolset until the developer of the change signs the assignment agreement (see my &lt;A href="http://blogs.msdn.com/robmen/archive/2004/04/14/112970.aspx"&gt;previous blog entry&lt;/A&gt; for more information).&amp;nbsp; If a Microsoft employee goes straight to SourceForge then he or she is bypassing the "safety check" I am charged with providing.&amp;nbsp; I take my responsibilities very seriously.&lt;/P&gt;
&lt;P&gt;Now, to head off any conspiracy theories, I want to be very clear that all changes made to the Windows Installer XML toolset inside Microsoft do flow out to SourceForge.&amp;nbsp; If you watch the project closely, you'll notice that I push any changes made inside Microsoft to the toolset up to SourceForge on Thursdays.&amp;nbsp; For "outgoing changes" (Microsoft to SourceForge) I try to ensure that the WiX toolset operates correctly before committing.&amp;nbsp; For "incoming changes" (SourceForge to Microsoft) I review all submissions and ensure they appear "good".&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Q:&amp;nbsp; How did you find the internal process for creating a SourceForge project (i.e. did you get approval from legal)?&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;I definitely did get approval from legal before releasing the WiX toolset to SourceForge.&amp;nbsp; As I mentioned in my &lt;A href="http://blogs.msdn.com/robmen/archive/2004/04/05/107709.aspx"&gt;blog entry about the release of the WiX toolset&lt;/A&gt; I actually started with legal and they pointed me over to Stephen Walli.&amp;nbsp; Stephen had been looking for a project to release as Open Source from Microsoft and knew exactly what had to be done to get the project released.&amp;nbsp; Overall, the process was extremely simple but did take longer than I anticipated because there were quite a few people that had to sign off that this was a "good thing" to do.&lt;/P&gt;
&lt;P&gt;My understanding is that the process is now faster.&amp;nbsp; For example, the &lt;A href="http://sourceforge.net/projects/wtl"&gt;WTL project&lt;/A&gt; was &lt;A href="http://blogs.msdn.com/robmen/archive/2004/05/12/130577.aspx"&gt;released to SourceForge&lt;/A&gt; only a month or so after the WiX toolset.&amp;nbsp; However, even if it takes four or five months (like WiX did after I was in contact with Stephen) the process is really quite simple.&lt;/P&gt;
&lt;P&gt;The hard part is building the community once you release.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Q:&amp;nbsp; What has been the internal and external reaction for your project's appearance on SourceForge?&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;From Microsoft employees I have received nothing but positive comments and a desire to understand more.&amp;nbsp; I received quite a bit of email from people that basically said, "I read on Slashdot about what you did.&amp;nbsp; That's cool.&amp;nbsp; Good job."&amp;nbsp; Throughout the day of the release people would send email to me pointing out all the articles talking about the WiX toolset release.&amp;nbsp; That was incredibly encouraging because the initial external response was this amazing onslaught of "You are a @#$@% horrible person!&amp;nbsp; Microsoft is @#$@% evil!&amp;nbsp; I $@#%@ hate you!"&amp;nbsp; I am not exaggerating.&amp;nbsp; Lots of messages filled with foul language were sent to me via my blog early in the morning on Monday, April 5th.&lt;/P&gt;
&lt;P&gt;As the day progressed, more rational comments started showing up and some people I've never interacted with even started to defend the release of the WiX toolset.&amp;nbsp; I was seriously overwhelmed for the first couple days since there was so much attention to the project and a lot of the attention was trying to spin what I was doing as "evil".&amp;nbsp; That was very disenchanting since I was really just trying to make life better for setup developers.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Q: &amp;nbsp;Would you do it again?&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Absolutely, for two reasons.&amp;nbsp; First, I have believed for years that Microsoft needed to be mature in its dealings with the Open Source community.&amp;nbsp; I ran the Windows Installer XML project as an internal Open Source project to provide an internal demonstration how Open Source can work.&amp;nbsp; I never would have passed up an opportunity to improve Microsoft's dealing with Open Source.&amp;nbsp; Second, I wanted the WiX toolset out there to make developers' lives better.&amp;nbsp; Just the other day, I found this quote in a &lt;A href="http://www.jezuk.co.uk/cgi-bin/view/jez?id=2009"&gt;blog entry&lt;/A&gt; "Amazingly, for an installer builder, WiX is turning out to be almost entirely pleasant."&amp;nbsp; Statements like that make the release completely worth it for me.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Q:&amp;nbsp; If someone else internally wanted to create something as a SourceForge project, would you recommend it?&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;If the project was appropriate to be Open Source then I would definitely recommend releasing as Open Source on SourceForge.&amp;nbsp; Note I am not someone who believes all software should be free and that all source code should be open (I don't understand the economics of it).&amp;nbsp; However I do believe there are many opportunities for projects to be released as Open Source like WiX and WTL.&lt;/P&gt;
&lt;P&gt;If you are a Microsoft employee and have any questions, feel free to contact me.&amp;nbsp; If I can't answer the question, I can point you to someone who can.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=152438" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robmen/archive/tags/context/default.aspx">context</category></item><item><title>Local Installation Source Tool (listool.exe) released to web.</title><link>http://blogs.msdn.com/robmen/archive/2004/05/28/144005.aspx</link><pubDate>Fri, 28 May 2004 19:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:144005</guid><dc:creator>robmen</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/robmen/comments/144005.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robmen/commentrss.aspx?PostID=144005</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://www.kurtzeborn.com/wluserlist.cfm"&gt;K&lt;/a&gt; informed me yesterday that the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=10fa7aa3-695b-42c3-9045-b812ba0fed3e&amp;amp;DisplayLang=en"&gt;Local Installation Source Tool (listool.exe)&lt;/a&gt; has been RTW (Released to Web).&amp;nbsp; Terri (my &lt;a href="http://www.microsoft.com/college/fulltime/pm.asp"&gt;PM&lt;/a&gt; on LocalCache) always called this thing the &amp;quot;Cache Movin' Tool&amp;quot; in her specs.&amp;nbsp; Anyway, listool.exe was an intern project last summer that Terri and K pushed out the door.&amp;nbsp; Finally.&lt;/p&gt;
&lt;p&gt;So what does it do?&amp;nbsp; The listool.exe does three very useful things that I wish we would have been able to ship on the &lt;a href="http://www.microsoft.com/office/editions/prodinfo/default.mspx"&gt;Microsoft Office System 2003&lt;/a&gt; CD from day one:&lt;/p&gt;
&lt;p&gt;1.&amp;nbsp; &lt;b&gt;Enable the LocalCache&lt;/b&gt; - this feature will direct the &lt;a href="http://www.microsoft.com/office/ork/2003/two/ch3/DepC06.htm"&gt;Office Source Engine&lt;/a&gt; (codenamed &amp;quot;injector&amp;quot;) to ensure the products you choose are cached.&amp;nbsp; My suggestion is that if you are having any problems patching that you run this option for all your products.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;i style='mso-bidi-font-style:normal'&gt;Note: listool does seem to require your original source media even if you already have everything cached.&amp;nbsp; K, why doesn't listool direct injector to only cache files that are missing or corrupt?&amp;nbsp; That seems unfortunate.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;2.&amp;nbsp; &lt;b&gt;Move the LocalCache&lt;/b&gt; - this feature will move all the cached files from one volume to another.&amp;nbsp; There was a lot of debate early in the LocalCache feature design whether the user should be prompted to pick the volume where files should be cached or not.&amp;nbsp; I'm not one for hiding behavior from users and suggested the user should be presented a combo box (or something, I don't do UI) that displayed the available volumes for caching.&amp;nbsp; However, Terri had a very good point that it is difficult to explain to novice users what to do when presented with such a combo box.&amp;nbsp; In the end, I was overruled but Terri added a section to one of the LocalCache specs (there were 8 or so, I had &lt;i&gt;all kinds&lt;/i&gt; of crazy ideas) about the &amp;quot;Cache Movin' Tool&amp;quot;.&amp;nbsp; So here we are. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Note: you don't get the option of caching individual products to different volumes because the test team ran out of time to verify that LocalCache worked properly in those cases.&amp;nbsp; I can't tell you how frustrating it is to have a feature coded to completion and then have it get cut because testing can't get to it in time.&amp;nbsp; Anyway, injector supports caching to separate volumes but all of the tools (Office's setup.exe and now listool.exe) ensure all products are cached to the same volume.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;3.&amp;nbsp; &lt;b&gt;Disable the LocalCache&lt;/b&gt; - this feature obviously directs injector to uncache all of the files that were LocalCached and ensures they are never cached again.&amp;nbsp; If you turn off this feature then if the Windows Installer ever requires the original source media you will be prompted for your CD (for example, during patching).&amp;nbsp; I am admittedly biased, but I highly suggest you not disable the LocalCache.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Note:&amp;nbsp; Throughout this blog entry, I've referred to what the &lt;a href="http://www.microsoft.com/office/ork/xp/default.htm"&gt;Office Resource Kit&lt;/a&gt; calls the &lt;a href="http://www.microsoft.com/office/ork/2003/two/ch3/DepC06.htm"&gt;Local Installation Source&lt;/a&gt; or LIS as LocalCache.&lt;/i&gt;&lt;/p&gt;
 &lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=144005" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robmen/archive/tags/context/default.aspx">context</category><category domain="http://blogs.msdn.com/robmen/archive/tags/setup/default.aspx">setup</category></item><item><title>My philsophical musings about building setup for software.</title><link>http://blogs.msdn.com/robmen/archive/2004/05/16/132928.aspx</link><pubDate>Mon, 17 May 2004 00:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:132928</guid><dc:creator>robmen</dc:creator><slash:comments>27</slash:comments><comments>http://blogs.msdn.com/robmen/comments/132928.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robmen/commentrss.aspx?PostID=132928</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://www.larkware.com/"&gt;Mike Gunderloy&lt;/A&gt;, who has written a &lt;A href="http://www.adtmag.com/article.asp?id=9359"&gt;couple&lt;/A&gt; &lt;A href="http://www.ondotnet.com/pub/a/dotnet/2004/04/19/wix.html"&gt;articles&lt;/A&gt; about the &lt;A href="http://wix.sourceforge.net/"&gt;WiX toolset&lt;/A&gt;, posted &lt;A href="http://blogs.msdn.com/robmen/archive/2004/05/13/131692.aspx#131892"&gt;a comment&lt;/A&gt; on a previous &lt;A href="http://blogs.msdn.com/robmen/archive/2004/05/13/131692.aspx"&gt;blog entry&lt;/A&gt;.&amp;nbsp; In the comment, he suggests that splitting a setup project into fragments only moves the problem but doesn't solve it.&amp;nbsp; Thus, he argued that adding a tool to generate the fragments has value.&amp;nbsp; I still didn't agree.&amp;nbsp; Then I realized that I disagreed because I have some philosophies about how to build software and setup for software that I've never posted here.&amp;nbsp; So, I thought I'd share those philosophies today.&amp;nbsp; Please note that these are guidelines that I use when discussing setup build processes with other people not hard rules.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;B&gt;The developer that wrote the feature knows best what needs to be authored into setup.&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;This part of my philosophy is based on the fact that the person that knows the most about a particular resource is the developer that wrote the resource.&amp;nbsp; Seriously, if the developer who wrote the code doesn't know where his or her files need to be installed or doesn't know what registry keys are necessary to make the feature work (or whatever other resources are necessary) who does?&lt;/P&gt;
&lt;P&gt;Yes, there have been (too many) cases in my career where the developer who wrote the code said, "Uhh, I don't know what my code depends on." &amp;nbsp;However, in those cases it was pretty easy to look at him or her (or his or her manager) and ask, "Well, uhh, shouldn't you?"&amp;nbsp; In every case, they went off and figured out what was necessary to get their software "in the box".&lt;/P&gt;
&lt;P&gt;Fundamentally, if developers don't know what their dependencies are there is very little chance their project will have a solid &lt;A href="http://blogs.msdn.com/michael_Howard"&gt;security&lt;/A&gt;, &lt;A href="http://blogs.msdn.com/ricom"&gt;performance&lt;/A&gt;, or &lt;A href="http://blogs.msdn.com/robmen"&gt;deployment&lt;/A&gt; story.&amp;nbsp; Area experts may be necessary to help developers work through complicated issues but, in general, developers must be aware of what their software is doing. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Setup authoring is a part of the development process.&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Every team I have interacted with (the grand majority of Microsoft and some smaller companies), the developers on the team are expected to add their source files to the makefile before checking in new files to the project.&amp;nbsp; Yet, many of those teams have people who are solely responsible for adding new files to the setup project.&amp;nbsp; In many cases, one set of developers write registry keys into the code for &lt;A href="http://msdn.microsoft.com/library/en-us/msi/setup/selfreg_table.asp"&gt;SelfReg&lt;/A&gt; (this is evil, and I'll explain why one day) and the setup developers have to reverse engineer the registry keys out of the built executables to author setup.&amp;nbsp; Why didn't the original developer just author the registry key into setup in the first place?&lt;/P&gt;
&lt;P&gt;There was a point in time where it was arguably difficult to distribute the authoring to all developers when you had to buy custom tools that didn't fit well into the development process.&amp;nbsp; However, today there are a few alternatives out there (like the &lt;A href="http://wix.sourceforge.net/"&gt;WiX toolset&lt;/A&gt;) that allow setup to be treated like source code.&amp;nbsp; Now there are no excuses I've heard that hold water why setup authoring for the majority of the resources in setup cannot be distributed across the developers in the organization.&amp;nbsp; Doing that distribution leaves only the "look and feel" and integration between the individual pieces of setup to the core setup developers.&amp;nbsp; All other excuses have always been just &lt;A href="http://infosecuritymag.techtarget.com/2003/jan/curmudgeon.shtml"&gt;whinging&lt;/A&gt; (as &lt;A href="http://blogs.msdn.com/ptorr"&gt;Peter&lt;/A&gt; might say).&lt;/P&gt;
&lt;P&gt;This part of my philosophy and the one above are the reasons I disagree when Mike says that "breaking up the package into multiple source fragments pushes the problem back one level, but doesn't necessarily solve it."&amp;nbsp; Breaking up your setup in to multiple text files enables developers to maintain setup authoring the same way they maintain all the other code that is part of a project.&amp;nbsp; And that brings me to my final point.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Text files should be the only inputs into the build process.&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Over the years, developers have created fairly significant processes for tracking, merging, and reverting changes to text files.&amp;nbsp; For example, &lt;A href="http://www.cvshome.org/"&gt;Concurrent Version System&lt;/A&gt; (better known as CVS) is used heavily by &lt;A href="http://sourceforge.net/"&gt;SourceForge.net&lt;/A&gt; can show you the individual lines changed in a text file over time.&amp;nbsp; For a demonstration, take a look at &lt;A href="http://cvs.sourceforge.net/viewcvs.py/wix/wix/src/wix/Compiler.cs?r1=1.6&amp;amp;r2=1.7"&gt;Compiler.cs from v1.6 to v1.7 in CVS at SourceForge.net for WiX&lt;/A&gt;.&amp;nbsp; It is not generally possible to visualize the differences between two revisions of a binary file.&lt;/P&gt;
&lt;P&gt;Every input into the build process that is manipulated by a human will eventually hose the process at least once.&amp;nbsp; Being able to text search (using even the simplest tools like &lt;A href="http://www.gnu.org/software/grep/grep.html"&gt;grep&lt;/A&gt;) for the exact change that caused the problem significantly improves build throughput.&amp;nbsp; Binary files usually hide the information by requiring custom tools to be opened and queried to find the break.&lt;/P&gt;
&lt;P&gt;Of course, once you find the break it is really nice to be able to fix the problem by launching your favorite text editor and tweaking the line(s) of code with the fault.&amp;nbsp; Requiring a tool to be installed on the build machines increases your impedance to fixing the issue.&lt;/P&gt;
&lt;P&gt;Ultimately, keeping binary files out of your build process simplifies your life.&amp;nbsp; That fact is why I disagree with Mike when he suggests it makes sense to "put one more tool into the chain, something with a friendly interface that could spit out the source fragments as needed? I could see doing that with Access/Excel, among other things."&lt;/P&gt;
&lt;P&gt;Note I do think it is reasonable for developers to use tools that help generate text files.&amp;nbsp; Those text files then can get checked into source control and built as part of the standard process.&amp;nbsp; However, the tools need to generate human friendly text files.&amp;nbsp; Text files that can only be modified with a custom tool are only half a step better than raw binary files.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This is the philosophy that I developed during my tenure in &lt;A href="http://office.microsoft.com/"&gt;Office&lt;/A&gt; and have promoted across the company for a couple years now.&amp;nbsp; Many teams have had an incredible amount of success with their setup processes when following these guidelines.&amp;nbsp; There have been many cases where I was asked by other teams to talk about the philosophy.&amp;nbsp; At the end of my talk I always left them with, "If you have someone resisting change, have them contact me.&amp;nbsp; I'll be happy to talk to him or her to discuss how successful other teams have been with this process&amp;nbsp;and see if there isn't some way to address their concerns."&amp;nbsp; I'd be happy to do the same for you.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;I&gt;PS:&amp;nbsp; This philosophy has worked out extremely well for me, but if you have a unique situation that you think wouldn't work using these guidelines, I'd be very interested to hear about them.&amp;nbsp; I'm always looking for alternative views (as long as people aren't just whinging &amp;lt;smile/&amp;gt;).&lt;/I&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=132928" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robmen/archive/tags/context/default.aspx">context</category><category domain="http://blogs.msdn.com/robmen/archive/tags/setup/default.aspx">setup</category><category domain="http://blogs.msdn.com/robmen/archive/tags/wix/default.aspx">wix</category></item><item><title>Checking in on the Windows Installer XML (WiX) toolset development environments.</title><link>http://blogs.msdn.com/robmen/archive/2004/05/14/132138.aspx</link><pubDate>Fri, 14 May 2004 18:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:132138</guid><dc:creator>robmen</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/robmen/comments/132138.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robmen/commentrss.aspx?PostID=132138</wfw:commentRss><description>&lt;P&gt;After getting the latest round of bug fixes posted in the &lt;A href="http://sourceforge.net/project/showfiles.php?group_id=105970&amp;amp;package_id=114109&amp;amp;release_id=238055"&gt;WiX 2.0.1713.0 release&lt;/A&gt; yesterday morning, I decided to check in on the other projects on &lt;A href="http://sourceforge.net/"&gt;SourceForge&lt;/A&gt; to create development environments for the &lt;A href="http://wix.sourceforge.net/"&gt;WiX toolset&lt;/A&gt;.&amp;nbsp; When the WiX toolset was first released, I used to check in on these projects all the time.&amp;nbsp; However, after a couple weeks of absolu tely no activity I feared they were all &lt;A href="http://www.nbc.com/nbc/ER/medical_terms.shtml"&gt;DOA&lt;/A&gt; (&lt;A href="http://www.usdoj.gov/marshals/"&gt;Jenny&lt;/A&gt; real ly enjoys that show, by the way).&lt;/P&gt;
&lt;P&gt;I started with &lt;A href="http://sourceforge.net/projects/wixstudio"&gt;WiXStudio&lt;/A&gt; because the project admin, &lt;A href="http://sourceforge.net/users/terrydenham/"&gt;Terry&lt;/A&gt;, was very gung-ho about the project.&amp;nbsp; We even exchanged a numb er of email messages right after the WiX toolset was released.&amp;nbsp; Terry dug i nto the object model pretty quickly and determined that the XmlSerializer classe s provided by the core wix.dll weren't going to provide a friendly enough progra mming model.&amp;nbsp; So, I suggested considering creating a &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemcodedom.asp"&gt;CodeDom&lt;/A&gt; of sorts for WiX source files.&amp;nbsp; Terry jumped on the idea and promptly disappeared.&amp;nbsp; Well, it turns out Terry has a &lt;A href="http://codeblooded.com/blog"&gt;blog&lt;/A&gt; and has posted an &lt;A href="http://codeblooded.com/blog/archive/2004/04/24/145.aspx"&gt;entry about the current progress of WiXStudio &lt;/A&gt;.&amp;nbsp; I've subscribed to the &lt;A href="http://codeblooded.com/blog/Rss.aspx"&gt;RSS feed&lt;/A&gt; in hopes more progress appears soon.&lt;/P&gt;
&lt;P&gt;Since I felt caught up on the status of WiXStudio, I went back to SourceForge 's search and found the other three WiX development environment projects.&amp;nbsp; Terry's blog mentioned talking to the &lt;A href="http://sourceforge.net/projects/wixgui"&gt;WiXGUI&lt;/A&gt; project members so I clicked on that one first.&amp;nbsp; While it appears the project has had more page hits that the WiXStudio project, there is absolutely no other progress displayed on SourceForge.&amp;nbsp; It appears the onl ine forums have even been disabled.&lt;/P&gt;
&lt;P&gt;I then checked out the &lt;A href="https://sourceforge.net/projects/ninstall/"&gt;. NET Installation Generator&lt;/A&gt; project.&amp;nbsp; This project had even fewer hits t han the WiXGUI project and the same amount of progress (i.e. none).&amp;nbsp; If any one has any news on either of these projects, please feel free to leave a commen t below.&amp;nbsp; I'm curious if things are progressing silently behind closed door s or something.&lt;/P&gt;
&lt;P&gt;Anyway, I was a little disappointed no one had anything working yet so I had low expectations when I went to check the last tool on the list, &lt;A href="http://sourceforge.net/projects/wixtool"&gt;WiXTool&lt;/A&gt;.&amp;nbsp; Needless to say, I was qui te pleased to see that it actually had files to download.&amp;nbsp; I downloaded the MSI file (the source code is unfortunately under GPL so I'll be staying away fr om that) and tried to install it.&amp;nbsp; The package wouldn't install so I pulled it up in &lt;A href="http://blogs.msdn.com/robmen/archive/2003/10/11/56487.aspx"&gt;Orca&lt;/A&gt; and ran basic validation.&amp;nbsp; There are several serious authoring errors in there (which is unfortunate since it seems the MSI was created by the WiX toolset, guess there are places to tweak down) including missing platform inform ation in the &lt;A href="http://msdn.microsoft.com/library/en-us/msi/setup/_summaryinformation.asp"&gt;_SummaryInformation stream&lt;/A&gt;.&amp;nbsp; I tweaked the _SummaryInformation stream, tried installing again, and got the executable installed on my machine (but no shortcut since that contained one of the more serious validation errors).&amp;nbsp; The UI looks pretty basic and straight-forward.&amp;nbsp; None of the graphical editing seemed to work but the XML editor looked pretty decent.&amp;nbsp;I didn't play with it much after that (just uninstalled the tool), but it was nice to see one of the WiX development environment tools on SourceForge making progress.&lt;/P&gt;
&lt;P&gt;Anyway, I will continue to keep an eye on things to see if anything develops. &amp;nbsp; Hopefully one of these projects will take off.&amp;nbsp; Lots of people have asked for a decent development environment for the Windows Installer XML toolset and I personally have very little interest in doing any UI-related work.&amp;nbsp; The WiX toolset keeps me busy enough as it is.&lt;/P&gt;
&lt;P&gt;&lt;I&gt;Updated: Fixed a typo in URL and removed a couple invalid spaces&lt;/I&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=132138" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robmen/archive/tags/context/default.aspx">context</category><category domain="http://blogs.msdn.com/robmen/archive/tags/wix/default.aspx">wix</category></item><item><title>Windows Template Library (WTL) has released as Open Source on SourceForge.net</title><link>http://blogs.msdn.com/robmen/archive/2004/05/12/130577.aspx</link><pubDate>Wed, 12 May 2004 17:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:130577</guid><dc:creator>robmen</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/robmen/comments/130577.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robmen/commentrss.aspx?PostID=130577</wfw:commentRss><description>&lt;P&gt;The &lt;A href="http://sourceforge.net/projects/wtl"&gt;Windows Template Library&lt;/A&gt; (WTL) appears to have finished propagating around the &lt;A href="http://sourceforge.net/"&gt;SourceForge.net&lt;/A&gt; CVS servers, so I can finally post this blog entry.&amp;nbsp; Many people have pointed at &lt;A href="http://osdir.com/Article380.phtml"&gt;my interview with O&amp;#8217;Reilly&amp;#8217;s OSDir.com&lt;/A&gt; where I noted that other employees in Microsoft have come to me looking for advice to releasing code.&amp;nbsp; &lt;A href="http://sourceforge.net/users/nenadstefanovic/"&gt;Nenad&lt;/A&gt; was one of those employees and it looks like everything has finally worked out.&lt;/P&gt;
&lt;P&gt;From what I understand &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=128e26ee-2112-4cf7-b28e-7727d9a1f288&amp;amp;DisplayLang=en"&gt;WTL picks up where ATL&lt;/A&gt; leaves off and adds a bunch of useful things for doing GUI stuff on Windows in C++.&amp;nbsp; I don&amp;#8217;t do GUI so I can&amp;#8217;t talk much more about WTL but a &lt;A href="http://www.google.com/search?sourceid=navclient&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8&amp;amp;q=windows+template+library"&gt;search&lt;/A&gt; shows plenty of resources to get you started if you&amp;#8217;re interested.&lt;/P&gt;
&lt;P&gt;Anyway, now that WTL has been released under an Open Source license the &lt;A href="http://groups.yahoo.com/group/wtl"&gt;community&lt;/A&gt; that has built up around the code will finally be able to contribute back (should they desire).&amp;nbsp; Is there more to come?&amp;nbsp; I don&amp;#8217;t know (I hope so) but I can tell you people around here are definitely still watching &lt;A href="http://wix.sourceforge.net/"&gt;WiX&lt;/A&gt; and &lt;A href="http://wtl.sourceforge.net/"&gt;WTL&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=130577" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robmen/archive/tags/context/default.aspx">context</category><category domain="http://blogs.msdn.com/robmen/archive/tags/oss_4000_msft/default.aspx">oss@msft</category></item><item><title>So you want to be a Windows Installer XML developer?</title><link>http://blogs.msdn.com/robmen/archive/2004/04/14/112970.aspx</link><pubDate>Wed, 14 Apr 2004 11:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:112970</guid><dc:creator>robmen</dc:creator><slash:comments>16</slash:comments><comments>http://blogs.msdn.com/robmen/comments/112970.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robmen/commentrss.aspx?PostID=112970</wfw:commentRss><description>&lt;P&gt;People have started expressing interest in joining the &lt;A href="http://sourceforge.net/projects/wix"&gt;Windows Installer XML toolset&lt;/A&gt; development community so I figured I should get some administrative details out of the way.&amp;nbsp; If you are interested in contributing code to the Windows Installer XML toolset, it is very important to read through all four of these topics.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;1)&amp;nbsp; The Windows Installer XML toolset copyright is held by &lt;A href="http://www.microsoft.com/"&gt;Microsoft&lt;/A&gt;.&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;I want to be very up front about the copyright of the Windows Installer XML toolset and how it affects us as developers.&amp;nbsp; Microsoft is the sponsor of the Windows Installer XML project.&amp;nbsp; Before a contribution can be accepted into the WiX project, the lawyers have asked that we assign our rights to those contributions to Microsoft.&amp;nbsp; By having developers sign a copyright assignment agreement, Microsoft can maintain single legal control of the project.&amp;nbsp; That single legal control enables Microsoft to best defend the project in the future if there was ever any sort of legal challenge.&lt;/P&gt;
&lt;P&gt;Before jumping to any conspiracy theories, please note that this copyright assignment is exactly the same process the &lt;A href="http://www.gnu.org/fsf/fsf.html"&gt;Free Software Foundation&lt;/A&gt; has you go through if you work on a project they sponsor.&amp;nbsp; Also, in Clause 5 of the Windows Installer XML assignment agreement your rights to your contribution are explicitly granted back to you.&amp;nbsp; If you would like a copy of the assignment agreement, please contact &lt;A href="mailto:wixadmin@microsoft.com"&gt;wixadmin@microsoft.com&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;2)&amp;nbsp; The Windows Installer XML project is a &lt;A href="http://www.usemod.com/cgi-bin/mb.pl?BenevolentDictator"&gt;benevolent dictatorship&lt;/A&gt;.&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;In order to ensure consistency in the schema and maintain the quality of the tools, the Windows Installer XML project&amp;#8217;s CVS tree is locked down.&amp;nbsp; In other words, commits to the code-base by the general populace are prevented.&amp;nbsp; If you attempt commit changes, CVS will inform you that you have "Insufficient Karma to complete the task."&lt;/P&gt;
&lt;P&gt;To have your contribution submitted to the project, please submit an assignment agreement as described above (you only need to do so once) then send your code diff to &lt;A href="mailto:WiX-devs@lists.sourceforge.net"&gt;WiX-devs@lists.sourceforge.net&lt;/A&gt;.&amp;nbsp; The developers there will review the changes and someone will apply them to CVS as quickly as possible.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;3)&amp;nbsp; The Windows Installer XML community is a &lt;A href="http://encarta.msn.com/dictionary_/meritocracy.html"&gt;meritocracy&lt;/A&gt;.&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Those individuals in the community who demonstrate an understanding of the code base by actively participating on the &lt;A href="mailto:WiX_users@lists.sourceforge.net"&gt;Windows Installer XML mailing lists&lt;/A&gt; and consistently submitting high quality diffs will be given a &amp;#8220;Karma boost&amp;#8221;.&amp;nbsp; With enough Karma you will earn the ability to commit changes directly to the Windows Installer XML project&amp;#8217;s CVS tree.&lt;/P&gt;
&lt;P&gt;Commit privileges should not be taken lightly.&amp;nbsp; It is very important that the WiX toolset maintain a high quality bar because many people depend on the tools working properly.&amp;nbsp; Very few developers earn these privileges.&amp;nbsp; In fact, in over four years of development, only five developers have earned commit privileges to the internal Windows Installer XML project.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;4)&amp;nbsp; The Windows Installer XML developers are all &lt;A href="http://everything2.com/index.pl?node_id=15112&amp;amp;lastnode_id=357933"&gt;volunteers&lt;/A&gt;.&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Everyone (to the best of my knowledge) that works on the Windows Installer XML toolset does so in his or her free time.&amp;nbsp; Please keep that fact in mind when asking for help, submitting code diffs, or interacting with any members of the project.&amp;nbsp; We all want to help to make the Windows Installer XML toolset as solid a tool as possible, but sometimes &amp;#8220;real jobs&amp;#8221; and &amp;#8220;significant others&amp;#8221; have to take a higher precedence.&lt;/P&gt;
&lt;P&gt;If worse comes to worse, you have access to the source code.&amp;nbsp; Try reading for a while. :)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=112970" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robmen/archive/tags/context/default.aspx">context</category><category domain="http://blogs.msdn.com/robmen/archive/tags/wix/default.aspx">wix</category></item><item><title>Open Source Business Conference and green light means go.</title><link>http://blogs.msdn.com/robmen/archive/2004/03/16/open-source-business-conference-and-green-light-means-go.aspx</link><pubDate>Tue, 16 Mar 2004 10:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:90307</guid><dc:creator>robmen</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/robmen/comments/90307.aspx</comments><wfw:commentRss>http://blogs.msdn.com/robmen/commentrss.aspx?PostID=90307</wfw:commentRss><description>&lt;P&gt;I just got back from a &lt;A href="http://blogs.msdn.com/robmen/archive/2004/03/06/85275.aspx" mce_href="http://blogs.msdn.com/robmen/archive/2004/03/06/85275.aspx"&gt;successful trip to San Francisco&lt;/A&gt; and I'm very glad to be home again.&amp;nbsp; However, I really wish I could attend the &lt;A href="http://www.osbc2004.com/" mce_href="http://www.osbc2004.com/"&gt;Open Source Business Conference 2004&lt;/A&gt; in downtown San Francisco.&amp;nbsp; It'd be really interesting to listen to speakers address the issue I've highlighted from their introduction:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://robmensching.com/blog/posts/2004/3/16/Open-Source-Business-Conference-and-green-light-means-go" mce_href="http://robmensching.com/blog/posts/2004/3/16/Open-Source-Business-Conference-and-green-light-means-go"&gt;[read more]&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=90307" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/robmen/archive/tags/context/default.aspx">context</category><category domain="http://blogs.msdn.com/robmen/archive/tags/personal/default.aspx">personal</category><category domain="http://blogs.msdn.com/robmen/archive/tags/oss_4000_msft/default.aspx">oss@msft</category></item></channel></rss>