Channels ▼


Social Software Development Environments

The authors are members of the IBM Research Collaborative User Experience Group. They can be contacted at

Software development is a social activity. Projects involve a team or multiple teams coordinating to produce a finished product. Whether open source or proprietary, a software development project requires people to collaborate. Team members, who may be collocated or distributed around the globe, meet and communicate face-to-face, over the phone, or online. Programmers ask their peers to consult with them, in-person or via screen sharing, to help review code and solve problems.

Now is an important time for developers to consider tools that support the social activities of software development, thanks to three trends:

  • The increasing distribution of development teams.
  • The extensibility of integrated development environments.
  • The emergence of social software in the Web 2.0 era.

Development teams are continuing to become more and more distributed. At a local level, with the increasing availability of broadband connections, developers can opt to work at home on occasion, reserving office visits for face-to-face meetings. At a global level, different teams coordinating on the same project are being established in different geographies and time zones. Open-source projects, by their very nature, are distributed globally.

At the same time, the environment where programmers develop their software has evolved from command-line tools, to powerful graphical editors, to integrated development environments (IDEs). The modern IDE is similar to a desktop office suite, but instead of a collection of tools for developing documents (text, presentations, spreadsheets), the IDE has tools for editing, compiling, building, versioning, and testing software. Modern IDEs (Eclipse, Netbeans, IntelliJ, Visual Studio, and the like) are also highly extensible, with mechanisms that let anyone contribute plug-ins. As a result, communities of programmers have developed that offer a multitude of IDE add-ons.

In the past few years, there have also been advances in the development and adoption of "social software," which lets people rendezvous, connect, or collaborate through software tools and form online communities ( Examples of social software include traditional communication tools such as e-mail, newsgroups, and instant messaging, as well as emergent tools associated with the Web 2.0 wave of Internet services, such as blogs, wikis, and social bookmarking (see and "Web 2.0: Stuck on a Name or Hooked on a Value?", by Tim O'Reilly, Regardless of whether Web 2.0 is an over-hyped trend, a clear byproduct is the increasing adoption of social software (for example, new community sites such as MySpace are turning in record subscriber numbers). Software developers are among the adopters of social software. For example, various open-source projects use wikis (for example, see Eclipse's, Apache's, and Mozilla's and some set up chat rooms to support developers (Mozilla IRC channels at, Linux IRC channels at, and even commercial software companies increasingly showcase public blogs (Microsoft at and IBM's

These trends toward distributed development, extensible IDEs, and social software will influence makers of development tools to consider how to better assist the social aspects of development: awareness of team members' work, communication, and coordination around shared resources. Given that most development tools reside in the IDE, we believe that the IDE can become a collaborative development environment by embedding a variety of social software features that help support distributed development teams. In this article, we reflect on our research into collaborative development environments, explaining how they help support the communication and coordination needs of development teams. We conclude by describing some emerging collaborative development environments and speculating about the future.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.