I *Feel* Dumber

You ever work someplace that blocks access to Yahoo! or Google? Please, allow me to repeat this. It’s important. This is an IT blog. You, as an IT professional, have you ever had to do your job in an environment that blocks access to Yahoo! or Google. Uh…yeah. It’s happened to me. It’s happened to a lot of us. I generally see this happening to consultants because of the security risk. Okay, good argument, “I’ll hire you, Mr. Consultant, and I’ll give you access to the tools you need to do your job so that you can rob us blind, ruin your own reputation, and never find work in this town again.” Besides, consultants are the experts and they shouldn’t need “tools.” Never mind that [F1] takes you to a website anymore.

I’ll stop. And restart. Tuesday’s CINNUG (.NET User Group) took information exchange to a new level. We’ll get into that in a minute. But first, I wanted to tell you about Susan Papert, a local KForce senior developer. What a great person! This was her first meeting, and she walked away with a really nice VisualStudio-branded laptop backpack during the swag give-aways. No, I’m not bitter that I’ve been attending for months and have only ever received a t-shirt. Okay, that and a Microsoft FLASK, yep, a Microsoft-branded alcohol flask, but that’s another story. Susan was quick to chime in and made herself right at home. In fact, she described the meeting as a much more positive experience than she expected. The evening’s subject matter had three experts comparing and contrasting, say, seven-ish version control platforms, and the discussion could have easily degenerated into a bash-fest with 43 people in the room. It didn’t. Anyway, Susan reminded me of my experiences not having internet access at a client site [shudder…]. As Susan’s co-workers stood around discussing “the situation,” the conversation went something like this:

“Hey, why do you think they’re blocking internet access?”

“To keep us dumb.”

“Is it working?” [pregnant, ponderous pause]

“I FEEL dumber.”

After I wiped the Pepsi off my nose and sleeve, I thanked Susan for a great conversation and adding some life to the party. Susan, it was a pleasure meeting you.

Hmmm…I have a feeling this one’s going to be a long one, so you may want to go get yourself a cup of coffee before continuing. I’m sure you’re not reading this at work, right?

So, I also ran into one of LÛCRUM’s software architects, Rich Rayburn, and Clarence Klopfstein (Clarence’s blog), a web developer at Quality Gold. Rich was in my wedding almost 15 years ago, and Clarence and I attended the same church for a while. We still keep in touch off and on to this day. I run the children’s ministry at our church and got to know Clarence’s bazillion children pretty well. I also said hello to Tim Apke, who runs S.S.T. Solutions. Tim and I got to know each other some time ago through Aaron Aude, a mutual friend and senior manager at Centric Consulting. Aaron is a friend and colleague who will soon be leaving the Cincinnati market for the warmer fields of Florida. Good luck, Aaron.

I don’t know how he does it, but Mike Wood continues to one-up himself in terms of the quality of content each month in the .NET User Group. This month he tried something new and put together a panel discussion that reviewed a number of version control products. Justin Kohnen (Justin’s blog), senior software engineer at Triune Software and MCTS in .NET 2.0 Web Applications; Mike Sheilds, Resurgent Capital’s TFS administrator and software developer; and Microsoft MVP and Avanade principle software developer, Nino Benvenuti, composed the panel with Mike moderating. The platforms discussed were CVS, TFS, Vault, Subversion, ClearCase, and VSS. This list was not a formal list. The participants discussed the platforms based on their experience with their use. And that is where Mike has been most valuable in his leadership of CINNUG – he puts experienced people in front of the group that can talk about real-world situations.

We dove right into a Q&A session with the panel with the first question addressing file locking and checkout processes, i.e. optimistic vs. exclusive. In the context of checkout, VSS employed a lock-the-file model where most other products give the developer a copy of the file. So semantics becomes an issue because “checkout” means different things to different products. One note, especially for new TFS users, is that get-latest in TFS is not the expected get-latest behavior. Apparently in TFS when you do a get-latest you check out the file you were using and not the latest versions that others developers may have since modified. You’ll need to ensure you ask for the copy of the file you intend to use.

The conversation meandered a bit as we learned that check-in in TFS will display a conflict resolution window if you had, indeed, made modifications to an unintended target file and try to check them in. And the merge function in TFS works pretty well. The merge process happens locally, and you’ll merge and build before committing back to the repository.

Mike got us back on track and a question was asked about the benefits of merging and how the different platforms handle merging. The panel explained that the benefits of merging, an option that some teams never need to exercise, allows multiple developers to modify the same file and then synchronize their changes in a merge process. For example, in larger classes with many methods, multiple developers could be modifying different methods at the same time. Things get interesting when multiple developers simultaneously work on the same method 😉

The obvious next topic became best practices around branching and merging. The Branching and Merging Primer was cited as an excellent resource. Also CodePlex’s TFS Server Branching Guidance documentation. From the experts’ perspective, configuring source control and development team processes to take advantage of branch and merge functionality requires a tremendous planning effort. Without planning, a development team can easily get burned by the process.

What is a branch was a question from someone new to the concept. A branch is a copy of X number of items from the repository, or trunk, at a point in time. A snapshot. Subversion and Vault handle branches at the folder level. TFS at the file level. Don’t try this with VSS. Most of the platforms required manual processes when branching a code-base. Changes in a branch, say, for critical bug fixes, get difficult to merge back into the trunk if any sizable refactoring effort has been applied to the trunk.

From an experienced VSS user, why is it bashed so often? What’s wrong with it? Most issues experienced with VSS surface with large repositories that don’t get regular maintenance. If you’re using VSS, make sure your administration processes include regular maintenance. 4GB repositories are said to be unstable. That said, experience with 3GB VSS repositories show that weekly maintenance keeps the repository functioning fine. Other comments include the branch process is not pure, the raw functionality is not as robust as other platforms, the platform does not scale well when the number of users approach 100, VSS will move items around after check-in. One major issue that really affects a development team is the network and bandwith issues, especially over VPN, that VSS users experience. You’ll waste a lot of time dealing with VSS in a remote environment. Apparently the latency and timezone issues are fixed in VS’08. Finally, VSS does not implement a transactional commit, so if your check-in fails at the half-way point you’ll have to manually bring your repository to a previous state. TFS, Vault, and Subversion use a transactional commit.

Next, data stores were addressed. Subversion can use the file system or Berkley db. TFS uses SQL Server. VSS, a proprietary file system. ClearCase a database. And CVS a file system.

Cost? CVS and Subversion are free. VSS is free with VS’08. TFS retails for $3,000, but no one pays that price. TFS comes with a 5-user license with an MSDN subscription. You can leave the rest up to MS licensing details that, I believe, take up a wing in the Library of Congress. Vault is free for 1 user and then something like $300 after that.

How much time does setup take? Vault, 30 minutes. TFS single server takes the better part of a day. Subversion could take 5 minutes to 3 hours. Include Apache integration and you may be looking at a day. Although there is a one-click Windows installer for Subversion that does all of the above in just minutes.

What are the pros and cons of File System vs. Database Storage? File system formats don’t require database licensing costs but are also not transactional. Database storage allows transactional commits and provides flexibility in backup and restore options.

What are the client-side features? Tortoise is available for CVS and Subversion, but you’ll need to be aware that you don’t want to use the OS rename feature. Make sure you use the Tortoise rename function. Team Explorer integrates as a window in VisualStudio and is an easy install. Vault integrates with VisualStudio.

So which products integrate with VisualStudio? VSS, TFS, Vault all work nearly identically and fairly seamlessly. ClearCase integration is a nightmare and is also an expensive option.

Can these products automate builds? Essentially all the products implement command-line interfaces and allow scripting automated builds.

What’s in your repository? The short answer – Everything. That way any developer can do a get-latest and be ready to go. Even include tools, like the build of NUnit you were using, so that you can recreate the environment to replicate any build at any point in time. This includes your database objects. If you have a production level bug you’ll be glad you included everything as you won’t need to hunt any items down. Output of the build process is not included in the repository because that’s what the code-base is for. Documentation *could* be included, but that is what platforms like MOSS are for.

An interesting discussion took place around the concept of building FOO against a constantly changing BAR where FOO is your code-base and BAR could be something like a dll built by another team. Consensus is that there is no right answer here and it depends on the organization. If FOO and BAR simply *have* to live in separate repositories, then include the binary BAR in each build of FOO. Another option is to wrap the component and write personal test cases to prove the expected functionality for your use.

How do you handle backup and restore? Hmmm…isn’t that what version control is for 😉 In VSS you kick everyone out, make a copy, and then open the repository again. TFS requires administration of 7 databases along with any necessary config files. Vault requires a couple of databases and a web config. If your repository is on a VM, just take a snapshot of the VM. Subversion you dump and load to a text file. VSS has an archive facility, but it is not really meant as an option to restore from.

Some notes on restore: test your restore process. You can backup to your heart’s content and all your effort and resources would be wasted if you can’t actually restore any of your backups.

Practices for dealing with code common across a number of projects. Consensus here is to manage your code-base, as well as the common code-base, in the same repository. If you need multiple repositories then include the binary releases of the common tools in your repository.

That was essentially it for the panel discussion.

Along with high-quality content, Mike Wood also brings a ton of swag to the table each meeting. This month was no different with a number of timely and relevant books, t-shirts, fleece VisualStudio-branded vests, a laptop backpack, button down shirt, one re-sharper license, and a 2GB thumb drive. No, it wasn’t the XBox or the Zune given away at the December meeting, but it does make for a lot of fun watching Mike give all this stuff away. I think 15 or so items in all were given away. I didn’t get a thing. I’m not bitter.

After the meeting we gathered around some pizza for good conversation. Matt Brewer, technical analyst in Western Southern Life’s Enterprise Architecture division, introduced himself. Well, reintroduced himself. We had been in a meeting together probably 15 months ago at WSL and he remembered me. He got me at my own game. I have fun trying to remember people I had only met once a long time ago. Matt beat me to it this time. He then said, “Do you want to know why we didn’t go ahead with your project?” Cringing inside, suspecting a you-guys-really-screwed-up-x kind of response, I put on a smile and enthusiastically said, “YES!” Phewww, I breathed a sigh of relief when the real answer was that Microsoft extended runtime support for VB6. So, if you’re looking for a good job in VB6, try the financial services firms. WSL isn’t the only one looking to extend the platform’s life as the real ROI for migrating simply isn’t there. And if it is, its usually wizard-based migration. Ugh.

I got a minute with Leon Gersing (Leon’s latest SharePoint musings) who recently moved from Cardinal Solutions to Telligent Systems. If you know Leon, the guy’s brilliant, and this seems like a good fit for him. Congratulations Leon.

Next month at CINNUG Ineta speaker Miguel Castro (scroll down the page a bit) will present on Sexy Extensibility Patterns…whatever that is. Note the meeting will NOT be held on it’s regularly scheduled day. Instead, the March CINNUG meeting will take place on Wednesday, March 12th. There will be no meeting on the 18th.

April 15th will be the [VisualStudio|SQL Server|WinServer]’08 Community Launch event featuring Telligent’s Dan Hounshell (Dan’s blog) and Stefen Kyntchev.

Saturday, April 19th is the Central Ohio Day of .NET. The Central Ohio Day of .NET is a joint venture between the Dayton .NET Developers Group, Central Ohio .NET Developers Group and the Cincinnati .NET Users Group. The event originally was called the Cincinnati-Dayton Area Code camp and ran in 2006 and 2007 under that name. With the inclusion of the Columbus group the event has been renamed to the Central Ohio Day of .NET. The event is a FREE day of technology discussions devoted to helping the local development community grow.

I’ll be attending the Columbus regional VS’08, et. al. launch event on March 20th. Apparently, those who attend will get a license of VS08, SQL Server 08, and WinServer08. You can sign up here.

Check out the calendar of other CINNUG related events.



~ by Andy on February 21, 2008.

3 Responses to “I *Feel* Dumber”

  1. Great review of the meeting Andy!

  2. I agree, great review

  3. […] Innaugural CinARC If you’ve paid any attention around here you know that I just don’t get much swag at these user groups. I dunno. It must be a karma thing. And you also know that I generally leave Tuesday meetings […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: