TechEd 2010 North America

I had the pleasure of travelling to New Orleans for the first time to speak at TechEd 2010 North America.  New Orleans is now my favourite city to go to for a big conference like this.  While there were plenty of hotels that you could walk to (if you can stand the humidity), there was also plenty of things to see and do.

For my session I got to talk about Team Explorer Everywhere which was a lot of fun.  For the first time, TechEd sessions are now available to everyone even if you didn’t attend the conference so you can find my session below.  You can even download the slide deck or a version to watch on your iPhone /iPod (it was a cross-platform talk after all :-) )

Get Microsoft Silverlight

In addition to my own talk, I picked out the following sessions are available that might be of interest in the TFS / VS Ultimate space.  All of these are available to watch online or download and watch while on the move.  Let me know if I missed one of your favorites:

On Thursday 20th May, I have the privilege of speaking at the Test Manager Forum in Dublin.  I’ll update this post after the event with links to the slides, other resources and any other links that might come up that I end up promising to share to the audience.

Also, I just wanted to say a big Thanks to Brian Keller who’s content I’m stealing for my session.  If you haven’t already – be sure to check out the free sample chapter on Manual Testing from the Professional Application Lifecycle Management with Visual Studio 2010 book that Brian and I helped co-author.  Brian’s manual testing chapter was essential reading for me when I was learning the tools.

Anyway, wish me luck!

CodePlex People using CodePlex can download Visual Studio Team Explorer to access a CodePlex hosted TFS instance free of charge, but what if you want to be a project team member and access the code from Eclipse or a non-windows machine?

Well, I’m proud to say that we’ve continued the tradition and you can now use Team Explorer Everywhere with CodePlex.  Simply download the trial edition of Team Explorer Everywhere and then enter the license key given on the CodePlex wiki.  Note that if you already have a full license to Team Explorer Everywhere (either through retail, volume licensing or MSDN) then you can obviously use this to access CodePlex as well.

Just a quick tip.  When adding the connection, be sure to hop over to the Advanced tab to ensure that you do not have “tfs” in your path.  CodePlex has it’s TFS servers at the root of the server location (as required by older TFS clients and older versions of TFS) – but the Team Explorer Everywhere client will default to the TFS 2010 convention of looking at https://servername/tfs unless you tell it differently.  Also some of SSL certificates on some of the CodePlex servers are signed by a root certification authority that is not in the Java Certificate Store in all Java Runtime Environments running today.  If you run into this problem and you are having SSL issues then you can add the root CA to your Java certificate store.  An easier way is to un-check the “Accept only trusted SSL certificates” which will disable the root certification authority check for the SSL connection to the CodePlex server – but bear in mind that reduces the security of the communication between your machine and the CodePlex server.

 

Advanced settings for a codeplex connection

Let me know how you get on.  I’m excited to see who takes us up on this offer.  As an encouragement, I’ll send a free copy of my book to the first person who emails me a screenshot of them contributing to a project on CodePlex using Team Explorer Everywhere.

Team Explorer Everywhere In case you missed it, as part of Bob Muglia’s keynote announcing the launch of Visual Studio 2010 last week he also announced the launch of Microsoft® Visual Studio® Team Explorer Everywhere 2010.  This is the initial release of the bits that Microsoft acquired from Teamprise back in November and this release is the result of what my team has been working very hard on since that acquisition.

Team Explorer Everywhere contains the following components:

I’ll post more about what functionality is included in this release, but first I wanted to talk about what this means to existing Teamprise customers.

Teamprise customers should have already got a couple of emails from the company. If you haven’t then head on over to the following site for more information (http://www.microsoft.com/pathways/teamprise).  Basically when Microsoft shipped it’s first release, Teamprise ceased sales of the existing products and will begin the process of wrapping up the company.  Microsoft will be the contact point from now on for all purchases and support enquiries.

Teamprise 3.0 customers are entitled to a free upgrade to the new Team Explorer Everywhere 2010 version.  You can find out the full details of eligibility and how to claim this license at the following page on the pathways site (http://www.microsoft.com/pathways/teamprise/Teamprise%20v3.x.htm).

If you are a new customer, you’ll be please to know that Team Explorer Everywhere is now also included in the Ultimate level MSDN subscription and is also available as a standalone product for folks without the top tier MSDN Subscription (or indeed without any MSDN Subscription).

If you have any questions of feedback about all this then the pathways site has contact details.  You can also discuss things over on our MSDN Forum.

Working on Teamprise has un-doubtably been the highlight of my career prior to joining Microsoft, and I have to confess to at having a tinge of sadness that the brand we created in our little start-up is going away.  That said all the developers who worked on the product came over to Microsoft and were part of the team that got this new release under the Microsoft banner out the door.  We all worked long hours to ensure that the new version was able to take advantage of many of the TFS 2010 features and I’m very proud of what we managed to accomplish since November.  Also, we’re obviously not stopping there.  Since shipping the initial release we’ve continued development and are hoping to keep getting more functionality out the door.  In addition, now that we are part of the core Team Foundation Server team we get to influence the future direction of the product in ways that I cannot even predict at this time.  The TFS team were always very good at listening to our feedback from a cross-platform point of view – but now we’re all part of the same team we’re even harder to forget :-)

But more on all this soon.  I’ve been so busy helping get Team Explorer Everywhere 2010 shipped along-side the rest of the Visual Studio 2010 release that I’ve been neglecting my blogging and podcasting duties.  But it’s great to be back!

Speaking at EclipseCon 2010

EclipseCon 2010 Tomorrow I will be making my making my maiden talk at EclipseCon in Santa Clara.  I’ve been at the conference all week manning the Microsoft booth and sneaking along to sessions when possible.  I have to say that I’ve really enjoyed my week here.  The conference has a very “un-conference” feel and the calibre of attendees is incredibly high.  I’ve learnt a lot just by joining in hallway conversations and it has been a surreal experience at times chatting with some of the folks that contributed parts of the code that I use on a daily basis or folks that have fixed up and committed the patches that I have submitted.  The Birds of a Feather sessions have also been fantastic.

Many people have done a double-take at the company name on my badge this week – especially when I start bemoaning the difficulties of doing a headless PDE build or paging tables of data containing thousands of rows in an efficient manner via SWT virtual tables.  People are generally pleasantly surprised but intrigued and also pleased that Microsoft has developers using and developing for Eclipse.

So, tomorrow afternoon I’ll be giving my personal view on “The Life and Times of an Eclipse Developer at Microsoft Corporation”.  I have to admit that I’m a little nervous about my talk.  Usually when I’m talking I’m discussing the intricacies of Team Foundation Server or best practices in software development – topics that I’m comfortable with.  When it comes to Eclipse I’m clearly just an average developer and not the expert in the room.  Heck, I’m not even an expert with-in my own team.  I guess I have the advantage of being the only Eclipse developer in the room that works for Microsoft so at least the title of the talk helps :-)

Wish me luck.  If you are at EclipseCon then drop by the booth before or after the session to give me abuse and I’ll give you a pack of planning poker cards or some interoperability mints (gotta love conference schwag).

What’s in a Name?

When the Teamprise technology was acquired by Microsoft, one of the first non-TFS 2010 feature things that we knew we needed to do was change the name.  You’d think re-branding would be simple, just do a global search and replace for “Teamprise” and replace with the official Microsoft name – and then reformat everything because the Microsoft name is obviously going to be longer :-)  Obviously nothing is that simple.  It took a while before we decided on a name, at the moment we are Microsoft Team Explorer 2010 codename “Eaglestone” – which in the team we sometimes abbreviate to “TEE” (because it is shorter, but it is also handily a slight homage to the Teamprise logo which is the T power button).

However, in the past we used “Teamprise” to mean different things.  For example we have “Teamprise” views in Eclipse.  When you whent to import a project from Team Foundation Server you selected “Teamprise”.  Sometimes we used Teamprise as a product name, sometimes as a metaphor for accessing TFS. Sometimes we used it under the covers as well – for example as the name of an annotation in version control when storing check-in polices or as the layout type when doing work item forms. 

Montage of Teamprise screens showing branding choices

This was a deliberate decision at Teamprise.  When we started we were just a plucky start-up convinced that we were one of many working to put TFS into Eclipse.  We wanted to make our name synonymous with accessing TFS from Eclipse so that people would think of us instead of a competitor.  But we also wanted to allow competing products to exist in the same Eclipse installation so that users had choice as to which TFS connector they used and it wasn’t too confusing for them.  Largely this was a success.  We got a solution to market at the right time and managed to keep improving the technology and a competing product never really appeared.  To people who know Team Foundation Server, Teamprise == TFS in Eclipse and Teamprise == TFS cross-platform.

But, there was a whole world of people that we didn’t reach.  People would always need to know to ask “How do I connect to TFS from Eclipse, or How do I connect to TFS from the Mac” and be given the answer of Teamprise (either by a person or a search engine).

Now that we are part of the Team Foundation Server team, it doesn’t make sense to be as “visible” anymore as a brand in the UI.  When you are connecting to Team Foundation Server in Eclipse or want to see Team Foundation Server resources – you should look for Team Foundation Server.  When looking for how to connect to TFS from Eclipse, you should look for the product that contains a “Team Foundation Server plug-in for Eclipse”.  It is now Team Foundation Server we want you to connect with (both literally, and from a branding perspective).  All this means that it is more complicated than just doing a search/replace in the UI as now we need to figure out when we were using Teamprise to talk about TFS and when we were using it to talk about the software that you plug-in to Eclipse.

Montage of screens taken from the new Microsoft release

And then there was package renaming.  All of our code used to be in com.teamprise packages.  Some classes were called things like “TeampriseLogConfiguration” etc etc.  In each case decisions had to be made on individual merit rather than being able to come up with a simple automated cookie cutter approach.

The following is what we ended up with:

  • In the UI, when talking about connecting to Team Foundation Server use that name and the TFS icon.
  • Packages moved from com.teamprise.* to com.microsoft.tfs.*.
  • Class names sometimes went from Teamprise* to TFS* or TEE* depending on use, or got a different name entirely.
  • Eclipse plug-ins moved from com.teamprise.* to com.microsoft.tfs.*.   We also took the chance to do some refactoring here to make the plug-in names more sensible now that the codebase is much more mature and the roles and responsibilities of each plug-in is better defined than it was back at V1.0 of Teamprise when some of them were originally created.
  • Extension points moved from com.teamprise.* to the appropriate plug-in com.microsoft.tfs.* based name.  This is important if you were previously using the Teamprise extension points to add integration into our plug-in from yours.  I’ve spoken to the customers and partners that I knew of that were doing this – however I expect more will want to once we make the initial Microsoft release and so we wanted to get the naming right now.
  • Check-in policies keep their Teamprise based annotation names in version control.  This fact is totally transparent to end users, but means that we retain backwards compatibility with older Teamprise client defined check-in policies.  It also means that partners like JetBrains who have their own check-in policy implementation in the IntelliJ IDE that uses the “Teamprise” scoped mechanism for check-in policy storage need not change their code.
  • The .tpattributes file lives on as the file that is used to store unix execute bit permissions etc, the .tpignore file lives on as the file you can use to specify resources that Eclipse should ignore.  Again this was for backwards compatibility.  We could have gone down a route where we searched for “.tfsignore” first etc but we’re hoping to be able to reduce the need for these files at some point in the future by making use of the new properties capabilities in TFS 2010 so we decided to leave alone.
  • In the work item layout target names, “Teamprise” used to be the name of a layout target that was for the Teamprise client.  “Teamprise” is still accepted (for back-compat) but a layout with the target name “JavaSWT” now takes preference.  Therefore when we are looking for a layout target in Eclipse we look for one called:
    1. “JavaSWT”, followed by
    2. “Teamprise” followed by
    3. “WinForms”, followed by
    4. the last unspecified layout. 

If all this talk of layouts doesn’t mean anything to you then do not worry.  Neno has a good post here where he talks about using separate layouts for Web Access and Visual Studio where you will get the idea.

Hope that makes sense, we will have a beta out soon where you can take a look for yourself.  The moral of this story is that if you have to re-brand your codebase due to acquisition then be prepared that it will take more thought and effort than you might have originally estimated.

This morning I was creating a new build definition for the Beta branch of the initial Microsoft release of the Teamprise acquired bits.  Creating a new build definition in Visual Studio 2010 is remarkably easy, but we have a fairly complex workspace template.  Our files are stored in version control in a way optimised to make it easy to get the source and build/debug in locally in Eclipse rather than for the automated Ant based build.  Because we have a lot of plug-ins, Eclipse features etc that make up our build we actually have over 30 separate entries in the workspace section of the build definition.  Is looks something like the following:

The workspace mapping template for the main branch

When developers want to run a full Ant build locally (as opposed to doing a debug session in Eclipse), we have a script file that creates the workspace for them. We actually have two workspace creation scripts, one that is for Windows machines and another shell script that is for Mac/Linux etc.  Both are just wrappers around the Team Foundation Server command line (tf).

When I originally created the main branch build definition, I did this using the often overlooked “Copy Existing Workspace…” button at the bottom of the Workspace section of the build definition and pointed to the local workspace I was using to test the Ant build once we’d moved over to Microsoft.  This was great as it saved me entering all 30-odd working folder mappings again and it is very clever, calculating a common root folder to use as the $(SourceDir) folder.

However, this morning I wanted to create a new build definition from a branch that I’d created ($/TP/Releases/Dev10-beta).  I didn’t have a local mapping that was pointing to the release branch.  I could easily create one using our workspace creation script – however I wondered if there was an easier way.  And it turns out there is, good old copy/paste!

I simply clicked on a row in the workspace section, did Ctrl-A to select all then Ctrl-C to copy all the rows.  I then went into my favorite text editor (in my case Notepad2) and pasted the results.

Editing the source folder mappings in Notepad2

I then did a simple Find/Replace to convert all $/TP/main/ entries to my release branch $/TP/Releases/Dev10-beta.  Did a Ctrl-A to select all and then a Ctrl-V to paste them back into my build definition for the release branch.

The release build definition

A nice simple way of bulk editing a complex working folder mapping template that Just Worked(tm).  Note that the copy/paste trick also works in Visual Studio 2008 as well as the Teamprise 3.3 release (and of course the beta release that I was setting up the new build definition for).

Archives

Recent Comments

  • Klas: Do you know how to grant access to a single read more
  • Mike Parks: If you have Visual Studio 2010 w/TFS 2010, check out read more
  • Chris: Occasionally, GMail loses its marbles and offers a Basic HTML read more
  • Martin Woodward: Ryan - yes, we still provide a complimentary CodePlex license. read more
  • ryan: will 'codeplex only' licenses still exist for TEE like they read more
  • Sarah: @Ethan & @bString ... and maybe all those asking the read more
  • mohan: I am not able to run build using the read more
  • Frank: Cool! Thanks for this tip! Finally my over 2000 unread read more
  • mahesh: HELLO SIR, I'm new at .net I want to create read more
  • stuart: saved my morning! google notifier was displaying thousands of unread read more
Creative Commons License
This blog is licensed under a Creative Commons License.