I created my first account on CodePlex back in January 2006, over 4 years ago, when the site was still in an alpha internal-only preview. Shortly after playing with the initial UI, I sent the CodePlex team a 15 page document on all the UI suggestions I had. Little did I know that just a couple years later I would be reviewing the CodePlex UI as my day job. Needless to say, I’ve felt like a member of the team for a very long time.
This Friday, February 5, will be my last day as the Program Manager for CodePlex. I’ve accepted a position as Developer Evangelist at Microsoft’s Silicon Valley campus in California. You can follow my adventures on my MSDN blog at http://blogs.msdn.com/saraford.
It’s been a tremendous experience being the PM for Microsoft’s Open Source project hosting site, watching almost 11,000 new open source projects get created since I officially joined the team in October 2007. I want to thank everyone in the CodePlex community for such a fascinating 4 years.
And since it is Carnival back home in New Orleans, I’ll leave you all with “Laissez-les bons temps rouler! Geaux Saints!”
There’s ton of documentation out there on how to use Mercurial and its various clients. For this blog post, you’ll see me use a popular client called TortoiseHg. (Hg is the chemical element symbol for Mercury, hence Tortoise ”Hg” in case you’re wondering.) If you’re already familiar with TortoiseSVN, this will be very straight forward.
Step 1: Install TortoiseHg
You can install TortoiseHg from http://tortoisehg.bitbucket.org. Note: TortoiseHg is an extension of the Windows Explorer shell, so there is no application to launch.
When prompted for your personal information, the username you specify will not be associated with your CodePlex account. This username is only used for your local commits. We advise you to put in the same username as your Codeplex username.
Step 2: Create a new CodePlex project
In the Create a Project wizard, select Mercurial for Source Control.
Step 3: Clone the repository
Now you’ll want to create a local clone of the repository. You must do this step; otherwise, you cannot push code (i.e. check-in) to CodePlex.
First, create a new folder on your local machine where you want to download (or clone) the repository.
Next, use TortoiseHg to clone the repository in the newly created folder, as shown in the illustration.

You’ll be prompted by TortoiseHg for the Source path. You’ll need to get this URL from CodePlex. Go to the project, click on the Source Code tab, and under Source Control Setup, click Mercurial. You’ll see a window appear with the Clone URL.

This is the URL to insert into TortoiseHg Source path, as shown in the below.

Press Clone.
Once the clone is completed, the dialog will close and you’ll see a green checkmark indicating this is sync’ed with the Mercurial project on CodePlex.
Now let’s look inside the folder containing the cloned repository. Since the repository is empty, there is only the .hg folder, which stores the Mercurial repository. DO NOT MODIFY THIS FOLDER unless you know exactly what you are doing.
Step 4: Add your files to your local repository
Now you can simply add your files to this folder. In this example, I only have one file that I’m going to add.
Now right-click to bring up the Windows Explorer context menu, and select HG Commit. The HG Commit command will commit to local repository.

In the HG Commit dialog, fill out the description of the commit. (again this is just for local repository).
Make sure to check to commit all files (or whatever files you want to commit), as illustrated in red below.
Press the Commit button, accept any warnings, and you’ll be prompted with a status/success window.
Step 5: Push to CodePlex
To push the code to CodePlex, you’ll need to open the HG Repository Explorer as seen on the Windows Explorer context menu.
On the menu, you’ll see the Push icon. Press this to start the push to CodePlex.

You will be prompted for your CodePlex credentials at this point. Once you have typed in your CodePlex username and password, you’ll see a success dialog.
Now you can go to your CodePlex project and view the source code tab.

What is Mercurial?
Mercurial is a distributed source control management system. For new projects created on CodePlex.com, you will be able to choose from either Team Foundation Server or Mercurial as your source control repository.
To illustrate, in the Create a Project wizard you’ll see the following:

If you are a current project owner and wish to switch to Mercurial, please contact us at CodePlex Support with your project name, and we’ll be glad to help you out.
Why DVCS?
Adding distributed version control support to CodePlex has become a top feature request from users, as the popularity of DVCS for open source development has grown significantly. Mercurial is one of the most popular distributed version control systems and offers great support for Windows based tools as well as works very well as a hosted service.
If you are new to Distributed Source Control Systems, please read this section!
Mercurial is a Distributed Version Control System (DVCS). Unlike Team Foundation Server, DVCS has a very different model for collaborating on an open source project.
- In DVCS, you do not check in and out changes. You check in and out the entire set of changes (aka the repository).
To get started, you first make a local copy of the repository, or clone the repository. In TFS speak, this is the equivalent of getting the entire history (source code + metadata) of each and every change set in source control. It is literally making a copy of everything you see in the CodePlex source control. Since you are copying the entire repository, there isn’t a notion of “checking out”.
- In DVCS, you commit to the local repository, and push your changes back to CodePlex.
Since you have your own repository, you “check in” by committing to your local repository. Once you’ve committed locally, you can “check in” those changes back to CodePlex by pushing those changes. Hence the term “check in” doesn’t apply because it is overloaded in the DVCS context.
A quick recap:
- Anyone can clone. (Create local repository, Get all change sets from repository)
- Anyone can commit. (Check-in to their local repository)
- Anyone can pull. (Get all change sets from repository)
- Only team can push. (check-in of local repository to CodePlex)
See our post Using Mercurial on CodePlex for a step-by-step walkthrough.
Last Friday, we deployed the latest version of the CodePlex software.
Project Job Openings
Project owners can now post “job openings” for what sort of help they are looking for.
This feature allows people who are interested in joining a project a way to contact the team directly.
The Project Owner can now better manage the team and any project openings from the People tab.
As always, if you have any feedback here, please let us know.
It was 4½ years ago that Sandy Khaund and I founded the group that was chartered to build an open source project hosting site for Microsoft. The site, which eventually became known as CodePlex (it had many internal names) launched a little more than a year later. The site has grown dramatically over the past 3 years and today is one of the largest open source project hosting sites. It also hosts 400+ of Microsoft’s own open source projects. In addition CodePlex serves as an example of how to run an agile project at Microsoft. The team that was formed to build and support the site has been one of the best teams that I have worked with over the years.
I say all this because today is my last day as the Product Unit Manager of the CodePlex team. I decided a month ago to move to a new opportunity in Microsoft Services organization. I will be leading a development team that is responsible for building solutions which assist customers in deploying, maintaining, operating, and developing applications for Microsoft’s products. However, this does not end my efforts with regard to Microsoft and open source. I am an advisor to the CodePlex Foundation, a coordinator on the xUnit.net project, and a very interested observer of CodePlex (hint: cool and interesting things are coming). I know they will keep up the great work.
Last week, Scott Hanselman stopped by the CodePlex team room to film a behind the scenes look at how we build the CodePlex.com software.
http://channel9.msdn.com/posts/Glucose/Hanselminutes-on-9-Inside-CodePlexcom/
Enjoy!
Yesterday, we deployed the latest version of the CodePlex software.
We’re excited to introduce our latest feature, the Documentation tab. CodePlex users now have a consistent place across projects to find documentation, while project owners are encouraged to write documentation, either by themselves or with the help of an Editor.

Why a Documentation Tab?
We introduced the documentation tab for the following reasons:
- Consistency across Projects – The #1 feature request from the most dissatisfied users is the need for a consistent place to find documentation across projects.
- Encourage writing of documentation - I believe that providing a documentation tab will encourage project owners to write documentation, especially with the help of the Editor role.
What if I already have documentation on my wiki?
If you already had a wiki page titled “Documentation”, we’ve migrated this for you under the Documentation tab.
You can migrate other wiki pages to the Documentation tab by editing the page and clicking on the “move to documentation” link, once you have made your Documentation tab publicly visible (see more on that below). We will move any child pages and any attachments.

How to show System Requirements?
The documentation page now has a section to display System Requirements on the right-hand side.

Why do only some of the projects show a Documentation tab?
We felt it was important to clearly indicate whether a project is providing documentation under this tab. In the event that the project owner isn’t using this tab, we decided to hide the tab from the public. We want to avoid users visiting the documentation tab only to find no content.
What does the Documentation tab look like by default to project owners?
To encourage documentation writing, we indicate to the project owner that the Documentation tab is current hidden and provide suggestions on what should be included in this section.

What happened to the Stats tab?
Our most popular monitor size is 1024x768. At this resolution, we’ve run out of space for tabs. After spending lots of time on future designs and doing lots of analysis on clickthroughs on many of our projects, we decided to associated the stats page with the stats we report on the homepage.

Where can I see an example?
You can visit my pet project Stick Figure Karate Fighter, where I created the documentation tab on stage during last night’s Southwest Fox keynote.
Last month, I had the opportunity to fulfill my childhood dream of going to Australia to speak at Microsoft TechEd. However, little did I know this trip to the Southern Hemisphere would take me to new heights at TechEd New Zealand.
The link to the full version is on YouTube at http://www.youtube.com/watch?v=jcc4KRrZpI0
Special thanks to Sky Jump! for lettings us film and TechEd Online New Zealand for making the jump happen and for putting the full edited video together.
Photos from the Southern Hemisphere
Above: CodePlex overlooking the Gold Coast and the Convention Center in Queensland, Australia
Above: “A Tour of CodePlex” TechEd Australia attendee after the breakout session
Above: TechEd Australia attendee proudly displays his support of CodePlex on his HP Mini notebook. TechEd Australia attendees received a HP Mini notebook running Windows 7.
Above: CodePlex at the Australia Zoo, home of the Crocodile Hunter.
Above: Me just a few seconds before I screamed “Go CodePlex” louder than I ever thought humanly possible
We will be conducting in-person usability studies for CodePlex.com in Seattle, Washington on October 13 and 14, 2009. We are looking for project owners on CodePlex to participate in the one hour usability study. Whether you own one project or multiple projects, your feedback will help us create a better CodePlex site.
Interested in participating? Contact us and include your:
- Current level of involvement in CodePlex
- CodePlex username (if you have one)
- Phone number where we can contact you to schedule a time
You will be reimbursed $100 for your time.
Cheers!
- The CodePlex Team
The Channel 9 team met with Sara Ford to go over the state of CodePlex, where the site has been and where it is heading to.
Link to video: http://channel9.msdn.com/posts/NicFill/A-chat-with-Sara-Ford-CodePlex-turns-3-reaches-10000-projects/
Yesterday, we deployed the latest version of the CodePlex software.
Work Item Notifications
As of today, our #2 most requested feature asked for the ability to receive email notifications for work items. Back in April, we introduced the ability to receive email notifications per individual work items. Now, users can subscribe to receive email at the project level.
On the Issue Tracker, you’ll notice the Issue Notification feature in the right nav bar.
You can opt in to receive email as issues come in or in a daily digest form.
You can also configure your email notifications across all projects when you edit your profile.
Recommended Default Download
All projects now feature a Download Now button on their homepage. This is to help users download software as easily and quickly as possible.
Every release now features a Recommended Download. Pressing the Download Now button will download the Recommended Download for the Default Release.
To introduce the feature, we selected the most downloaded file per release and marked that as the recommended download. If we got it wrong and you as a project owner want people to download a different file as the recommended download, just edit the Release and choose the right download.
Special thanks to Ross Turk over at SourceForge for all the advice in how to implement the recommended download concept!
Yesterday, we deployed the latest version of the CodePlex software.
Donate your advertisement revenue to charity
By clicking just 2 check boxes, any project owner can donate their ad revenues to Habitat for Humanity Int’l. My thinking is even if an individual project only receives a dollar in ad revenue each month, if thousands of projects opt in to donate their ad revenue, that’s a pretty decent size donation.
We’ll report donations on a monthly basis in our documentation.
Editor Role
We introduced a new CodePlex Editor role where this team member can only modify the wiki, for example, no write access to source code repository, no access to edit work item details, etc.
My hope is this will give the CodePlex community more ways to contribute to open source projects, especially in writing documentation for projects.
Editing your own work items
We’ve added the ability for you to edit your own work item content, in case you’ve made a typo or need to update steps to reproduce an issue.
On Thursday last week, we deployed the latest version of the CodePlex software.
Introducing the release of WikiPlex
WikiPlex, our wiki engine, is now available as an open source project on CodePlex under the Microsoft Public License at http://wikiplex.codeplex.com/. You can read more about WikiPlex on our developer Matt Hawley’s blog at WikiPlex – An Embedded Wiki Engine
Reply with Quotes
In the discussion boards, we’ve added the ability to reply with quoted text.
This will put the post you are replying to in quotes for you.
New Wiki Macros
Alongside the release of WikiPlex, we added a couple of new macros that allows you to right align and left align text and images.
>{This content will be right aligned}>
<{This content will be left aligned}<
<[image:codeplex_logo_green_small.jpg] The image will be right aligned
>[image:codeplex_logo_green_small.jpg] The image will be right aligned
For example,

On Saturday, July 4, 2009 at 2pm, CodePlex surpassed the 10,000 project mark just shortly after our 3 year anniversary. Congrats to SharpFitter, a Visual Studio 2008 C# Add-in that dynamically loads plug-ins, for being our 10,000th project.
We hope to see this incredible rate of growth continue to bring more open source development to the Windows platform.
Check out the Port 25 post for more coverage on what’s been happening on CodePlex.
CodePlex Statistics
Below, you can see the upward trend of new projects each month over the past few years.
When people ask me why CodePlex has such great traffic growth, I say it is because of the quality of our projects. Happy project owners = Happy users and site visitors. Our overall site traffic stats reflect this upward growth trend as well. In fact, this will be our 7th consecutive month of record breaking traffic.
It was recently in the news that the MS-PL is now in the top ten of OSI license usage. Here’s a breakdown of which licenses we’re hosting.
Along with 10,000 projects comes a lot of source code, approximately 160 million lines hosted across 10 Team Foundation Servers.
Here’s a breakdown of the top 7 file types we’re hosting.

Special thanks to all our project owners and our users for making CodePlex a success!
Today we deployed the latest version of the CodePlex software. We’re excited to bring you several new features in this deployment.
My Favorite Projects
Our #2 most requested feature is Favorite Projects, where users can mark a project as a favorite
and have it appear on their profile page.
The comments in the Favorites Project feature request suggest adding a RSS feed for the favorite projects list. Let me know what sort of activity you are interested in receiving via RSS regarding your favorite projects.
New Profile Pages
You may have noticed from the above picture that the profile pages look a little different. In order to add the My Favorite Projects feature and to finish up the Work Item Email Notifications feature, we needed to redesign the profile pages. The most notable design change to the profile pages is separating the “public view” from the “edit your info” page.
Let us know what you think of the new profile pages.
Source Code Diff Tools (Beta)
Finally, in this deployment, we’re introducing new feature that’s in “Beta” right now.
It’s your standard file diff’ing tool that’s available at the file level of each changeset.
I know it is much more interesting to see at the changeset level which files have been changed, and then drill down into how those files have been changed. However, living the agile life, I wanted to first get the basic ability to diff files out there to collect feedback on it.