Getting Started in the RTC Sandbox

I have been pretty busy over the past few weeks, trying to help our customers, and getting some materials prepared for the annual Rational conference, Innovate 2010.  In the midst of all of the excitement, I almost missed something that is pretty interesting.  About two weeks ago, Jean-Michel Lemieux posted an article out on announcing our Rational Team Concert Sandbox.  This is primarily for people who are unfamiliar with Jazz, or Rational Team Concert. and don’t want to get “sold” by some IBM guy, or sit through yet another boring demo.

This sandbox environment allows people to provision an RTC instance on our hardware, and then allows them to play with that instance.  Creating the project takes less than a minute, and you can then go in and begin to try out the features of RTC that you are interested in.  You have the ability to add other registered users on to your project, and give them roles.  You can fool around with some Agile planning, create some work items, and get a feel for how YOU would manage an Agile project in RTC.  This is a great way to be able to do these things on your own time, without having to use your hardware.  If you are already using RTC, stop reading right now.  I don’t want to bore you with details that you already know.  If you are new to RTC, and want some guidance on navigating your way through your sandbox instance, then please keep reading.

So how do you get started?  Go out to and register.  Then go to the Rational Team Concert sandbox, and create yourself an instance of RTC.  Once you have created the instance, go in and check it out!  You will begin on an initial dashboard.  If you want to add friends to the project, you will need to click on the Project Areas label.  It is in the upper right, right next to the highlighted Dashboards label.   Now you will be brought to a screen showing all of the project areas.  You might even see mine out there (dtoczala’s Project).  If you click on your project, you will return to your dashboard.  Instead, you should click on the Manage Project Areas label in the upper right hand side of your display.  This will show you a list of the current project areas out in the sandbox.  Click on your project.

Now you see a dialog that capture all of the administrative details about your project.  Go in and add a description, you will see it displayed the next time that you see that list of active projects.  You can see the process that your project is using.  The sandbox forces you to use our Scrum process, but keep in mind that when you use RTC you will be able to customize a process to meet the needs of your development team (even if the team isn’t an Agile team).  You will also notice that you are the Administrator, as well as the only person on the project.  Don’t be lonely, invite someone else into your project!  I invited Ben Chodroff into my project, because I have worked with him before, and because he can’t get too mad at me because I recently helped him out.  Once you add some team members, you will need to give them roles.  This part is interesting.  Let your mouse hover over the name of the new team member that you want to add.  Notice that some icons magically appear on the right hand side of the user entry.  Clicking on the first icon will invite a team member to your team.  Clicking on the second icon will allow you to assign particular roles to that person.  This is an example of the rich user interface that RTC provides to it’s web users.  Now go assign your new team members roles.

At this point you will want to explore the other tabs of the project record.  Near the top of the screen, directly below your project name, you will see a series of labels.

  • Timelines – This is where you define your sprints, how long they last, and a backlog.  Go ahead and add an iteration to the plan.  Give it a unique name, so you can see what it might look like for your teams.
  • Roles – In this tab you define the various roles that you want to have on your team.  Roles will often have an impact on the access to information, and to the ability to perform certain actions.  Add a role called, “Master of the Universe”, and then you can go back to the overview tab and give yourself that role too.
  • Permissions – This is where the capabilities and restrictions for each role in the project are defined.  Take a look at how easy it is to guide your team into doing the right things at the right times.  Look at the lefthand column and highlight Team Configuration.  In the upper righthand panel, select one of your roles.  Now below that you can navigate all of the possible ways that you can enforce good Agile development process.  For example, expand Work Items, then expand Save Work Item,  then expand Modify the Work Item.  Take a look at the control that you have over the ability of a user in a role to modify fields, and perform certain actions.
  • Access Control – This last tab controls the visibility of your project artifacts to other users.

Now that you are done exploring some of the ways that you can define a project, you should make sure to press the Save button in the upper right to save your changes.  At this point, click on the Project Areas label in the upper left hand corner of the display.  You should see your project there, along with your description of your project.  Click on your project name, and you will be back at your project dashboard.

At this point I urge you to read the viewlets and explore the various capabilities that RTC has.  Don’t forget to comment back here and let me know what you think.

Jazz in the Real World – .NET usage

I recently spent a day on site with a customer and one of the smart people that I work with, Jean-Michel Lemieux.  Jean-Michel is one of our development managers, he knows what he is doing, and he knows RTC and Jazz better than most of the people that I know.  We went to visit a customer that was having issues in using Rational Team Concert in their .NET environment.  This customer was not able to put their code under Jazz SCM control in a way that was convenient for the development team to work with.

For those of you looking at deploying Jazz technology, and RTC in particular, try doing a review of our Jumpstart Jazz Deployment Guide.  For those of you looking to deploy Jazz to support .NET development with Visual Studio, start with Jean-Michel’s article, Source Controlling Projects and Solutions in Team Concert, which is referenced in our guide.  Sreerupa Sen has a wiki entry on Mapping VS Projects and Solutions to Jazz, that is also informative.    I wanted to share this blog entry with people because many people are unaware of these resources, and I figure that an overview of the issue and solution might help make these things more clear to our customers.

The biggest complaint of our customer was that they could not find an effective way to put their .NET code under Jazz control.  The developers for this project liked to keep their own versions of the solutions (.sln) files, and did not want to put these under Jazz source control.  They did want to put the code and the various .NET project (.csproj) files under Jazz source control.  They knew how to place things under source control, but were struggling with how to architect the directory structures and organization of the projects to best meet their needs, and their usage patterns.

Our first step was to get the creation of NEW solutions and projects to work properly.  With only the source code and the Visual Studio project (.csproj) files under Jazz source control, whenever we tried to add a new project or solution to the environment, we would get an error.  The reason for this is because when creating a new Visual Studio project, the source control bindings for the project are inherited from the “parent” solution.  So we decided to go out and create a solution at the top of the directory structure. We then put this high level solution under Jazz Source Control.

Once we created this solution, any solutions or projects created underneath this directory level picked up the proper source control bindings, and were visible in the Visual Studio IDE.

Visual Studio Lesson #1 – Place a “default” solution at the top directory level of your file structure.  This will ensure that you pick up the proper source control bindings, and get consistent behavior in the Visual Studio IDE.

Visual Studio Lesson #1A – Make the directory structure within your Jazz components the same as what you see on your local disk.  Your Jazz local sandbox will then have the proper directory structure for use with the Visual Studio IDE.

Sample Directory Structure for .NET Environments

This worked fine for the case where people were sharing solutions, and wanted these solutions to be under Jazz Source Control.  This particular customer had developers that did NOT want their solutions under source control, and instead wanted to have their own solutions.  How do we make sure that they are able to change these solutions, and not have their own private changes overwritten any time a new update for the top level solution file is checked in?

The key here is to use the .jazzignore file properly.  The .jazzignore file has a list of file types that should be ignored for a particular directory.  These files are not considered as candidates for updates to the repository, and so even if you change them, they do not get checked in (or delivered) to the Jazz SCM repository.  They also will not show up in your Pending Changes view.  A typical ,jazzignore file is just a text file, can be edited with a simple text editor, and might have an entry that looks like this:

core.ignore.recursive= \
{*.class) \
{*.user} \
{Debug} \
{TempPE} \
{obj} \

What this tells the Jazz SCM client is that it should not consider any of the files that have these patterns, and that it should do so recursively (core.ignore.recursive) so all subdirectories will follow these visibility rules as well.  Be careful with this, and make sure that you don’t add solutions and project files in to ignore recursively.  You may just want to ignore those file types in PARTICULAR directories.  If you get unexpected behavior, you can always recover from these changes.  Just check out this entry on how to share changes to ignored resources, from the Jazz article on Jazz Source Control FAQs.

One thing that you need to keep in mind is that you will need to update these “default” high level solution files any time you add a new Visual Studio project, or a lower level solution.  Make sure that you share the addition of these new resources by making sure that you DO NOT ignore the high level default solution when initially adding these new resources.  Failure to do this may result in some unexpected behavior.  Once the new project or solution has been added, you can then safely ignore that high level solution file again.

Visual Studio Lesson #2 – Understand how .jazzignore files work, and if you want your own “personal” solutions, you might want to add an entry or two to your .jazzignore file.

In the situation where we wanted to ignore that “default” solution file at the top directory level, and have our own solution file, we would add an entry like this: \
{*.suo) \

Finally a word of caution for users out there.  It is always best to model your proposed environment in Jazz before making the leap.  Create a small component and then bring in some files and put the high level solution in place.  Run through some basic developer use cases to make sure that things build properly, that you are able to properly add solutions and projects, and that you are able to deliver changes to a shared stream of development.  Once you are satisfied that you can do all of these things, then proceed ahead with your move to using Jazz technology to help bring some order and transparency to your Visual Studio development activities.

And ALWAYS look out on for new information and best practices.  That is one resource that has the answers to 95% of my questions, and it will for your questions as well.  Don’t forget to check the forums, because they will often have valuable information as well.  You can even post your questions out to the forums, and often get answers to your questions on how to best use Jazz in the real world.