In my last post, I pondered some of the new roles that project managers (PMs) will take on as projects become more distributed, dispersed, and diverse. I’m fascinated by the idea of “social coding,” software development by a distributed, virtual community. I decided to do a little research on the tools and technologies that are enabling this new way of thinking about product development.

I’ve seen development environments that contain most of the components of a social coding platform, such as code repositories, wikis, tracking tools, personal profiles, RSS feeds, project microsites, and discussion threads, but they’re frequently rigged together from disparate, incompatible parts. Application lifecycle management environments, which previously were focused on version control, now offer all of these social elements in a single, integrated hub or platform. These capabilities combine to enable a social community that can self-direct and deliver robust products, as open source environments like GitHub have proven.

GitHub claims to be the largest code host in the world, with two million repositories and one million users. According to GitHub’s mission statement,

Code is about the people writing it. We focus on lowering the barriers of collaboration by building powerful features into our products that make it easier to contribute. The tools we create help individuals and companies, public and private, to write better code, faster.

GitHub’s CEO and founder Tom Preston-Werner, said recently:

We like the ideas of social networking. We think that developers work more effectively when they work together. So let’s take the ideas of a social network and add on top of that code hosting, and let’s create a site that makes it easy to share and collaborate on code. We have a way to follow users, and we have a way to watch repositories. In your dashboard you can then see lists of all the people that you’re watching and the actions that they’re doing. If they make commits, if they edit a wiki, whatever they’re doing you can see that. You can get an RSS feed of that. You can see it in a bunch of different ways. It just allows you to keep tabs on what you find important in that eco-system.

We also have the notion of profiles. So you can go to someone’s profile page and see a list of their repositories, when they’ve been working on them, so you can keep tabs on who’s working on what, and to what degree, and if they’re responsible for a project. It makes it easy to see who’s responsible for code in certain places.

The capabilities that we’re accustomed to from social networks like Facebook, and those we often jury-rig together, like tracking and wikis, are now stacked on top of a robust, replicable code repository, to create an environment focused on development communities. Projects become virtual villages, with self-directed development occurring worldwide, and team structures emerging rather than being planned.

Many enterprises shy away from public access repositories for security and control purposes. Products like CollabNet‘s TeamForge and other Application Lifecycle Management tools target this enterprise space. CollabNet recently released a new version, 6.1, of TeamForge that specifically touts the company’s “Be Social” philosophy. I chatted with Lothar Schubert, CollabNet’s senior director of product marketing for TeamForge, about the social elements of the product. He said:

The idea of communities is based on the strong heritage of CollabNet in the open source community. Software development happens within the context of a team. The team must interact constantly not only with each other but with the code. Social coding requires the ability to provide collaborative authoring, using tools like wikis that are tied to specific artifacts, to the code. You need collaborative networking capabilities, such as discussion forums and RSS feeds. We also provide the capability to create social networks around shared communities, to build project microsites. Of course, last but not least is the repository of code.

The social coding concepts that have been evolving in the open source community, and are now being integrated into the open source hubs like SourceForge and GitHub, are migrating to the enterprise market, as companies recognize that even their internal projects can be managed as self-directed open source efforts.

I also chatted about social coding and the new tools that enable it with Dave West, a Principal Analyst focused on Application Delivery Professionals for Forrester Research. When we discussed social coding, Dave commented:

We’re social animals, and the development of stuff tends to be social in nature. We think a better way of thinking about it is as social development. It’s not just about the coding; it’s about enabling business change and delivering business value in a social way. It will be interesting to see how CollabNet, with tools like TeamForge, broadens the idea from social coding to social development. Social coding is a fundamental change.

I asked Dave about the challenges of adopting these ideas:

We’re seeing huge productivity gains from developers and testers. We’re now building the wrong software really well. How do we get teams to align to the business, how do we enable a culture of business agility across the enterprise? That’s the tricky stuff, as most companies are built around the factory, hierarchical model, not the collaborative model.

Dave picks out the key stumbling block for social development. Every migration, as from ad hoc to PMI and CMM methods, and from PMI to agile and scrum, gets stuck on the human elements of resistance, agenda and, culture. These new social coding tools enable a revolution in product development through communities; the challenge is getting the organization and the project teams to think and act as communities.