New way to distribute samples – Crazy idea?
Ok, I am preparing the samples for 3.3 and I have not been happy with the current way the samples are installed or work on Windows Vista. The biggest problem is that if you are a user level account (which you should be) you will get errors due to the fact that all of the data is installed in a directory you do not have read / write access. This is a problem especially for novices who don’t understand the error messages telling them that the database cannot be written. They immediately give up thinking the product doesn’t work. Our current installer has no notion of Windows Vista either. So I can’t tell it to prompt for elevated privileges for these apps. It is further compounded by the fact that these same users click the link to the solution in their start menu and get a non-admin copy of Visual Studio (which cannot compile or run due to security permissions). What to do? There are a few possibilities that I have thought of off the top of my head. One was to force a demo app runner (some companies do this) that shows you the code and launches the apps itself. This app would then take care of the permissions issues for the user. Another way is to launch an app after the installer is complete to copy the data directories to the user folder (where hopefully they have read/write permissions). But then how do you tell the samples where to find their data? Right now all paths are relative in the samples; this would no longer be true. Now the setup app would have to modify all the code (yuck) or an app.config (yuck) or set a registry entry for the path (yuck). The only logical solution is to modify each sample to check more than one path. While doing all this I have also always hated the idea of having static samples with very little help. I always wanted a more robust samples system with some documentation present showing the user what the app does, and explaining briefly where to look in the code to get ideas. Samples are something that should be constantly changing with the product. How many of you have looked at the samples since you first installed? Wouldn’t it be nice to have a place to put requests for information and then get samples demonstrating the idea? FAQ System A ticketing system for the samples would be great as well. The ability to open questions, and build an FAQ from those on the site would be a great addition. We have an FAQ generator, but I don’t like it because it requires each user to create (yet another) user account. And modifying it to use our own credentials appears to be more work than it is worth. Then I thought of another idea. What if the user were to check out a copy of the samples path where they want it? Revision control is designed for this type of solution. You can keep multiple copies in place, and not have to worry about breaking old code because you can always go back and get it. Ok, I don’t know of a solution that fits this yet, but I like the basic idea. Wiki for samples? We had discussed the idea of building a Wiki for samples and other basic documentation a while back. But it always came down to more user logins, and Wiki syntax is just different. If you don’t use Wiki’s on a regular basis you are going to get frustrated. I still like the basic idea, but there needs to be a better implementation than I have currently seen. An HTML basic Wiki would be fine with me, most people use HTML and understand how to link things. Even the basic syntax from PHPBB is easier than the syntax in most Wiki editors. Source Edition – Access through revision control? I have always wanted to provide revision control access to Source Edition subscribers as well. Why should you have to wait to get a source build when we publish? Wouldn’t it be great if you could get cutting edge checked in code as well? Our current revision control system does not allow this though. Each subscriber would have to possess a license to the complete system, and passwords, etc, etc. Yuck. The ability for source subscribers to run an app and get the nightly build, or go back to an older version would be fantastic. Would you like a kitchen sink with that? Yes, I know I want it all. I want to provide users with a unique experience when using our product and website. I want to do all of this without hiring a team of ten people to run the website, and the best part? I think I may have found a way to do it. SharpForge – to the rescue? I recently ran across SharpForge.org – it is an open source project system similar to SourceForge, but entirely written in C#. And it uses SubVersion for the revision control system (including web searching or smart client). Work Items, Wiki, and even a release system round out the system. Wow. Could this be the answer to our samples system? Ok, here is my crazy idea… Put each group of samples into a project in SharpForge. Users could access the repository through SubVersion (client or web access), make requests, edit the docs, download latest stable builds, etc. The only part that is missing is a SubVersion C# interface so we can automatically grab the latest samples for the user and put them into the path of their choosing (and I think I found a solution to that as well). I am testing SharpForge right now. It appears to be pretty good (even though it is still in beta). My plan is to test a C# client with access to the SubVersion repository and check out the security roles system. If we can add anonymous users to things like the samples, and build a remote checkout for updating the samples I think we will have a home run. Links SharpForge website
