Collaborative development environments for software

A collaborative development environment includes an integrated development environment and a collaboration client integrated into the environment. There also is a Help menu of a software application which includes sections to provide information about the software application and a peer support section to provide access to a collaboration server.

FIELD OF THE INVENTION

The present invention relates to collaboration systems generally and to such systems within software development environments in particular.

BACKGROUND OF THE INVENTION

There are many tools to help a software programmer produce code. One standard tool is the integrated development environment (IDE), which provides the programmer with a programming environment. Typically, the IDE includes an editor, for writing the code, tools for tracing the operation of the code, tools for selecting pre-defined and previously defined programming objects used in the code, tools for selecting files, etc. Like most software packages, the IDE includes a help section which provides the programmer with help on how to utilize the IDE.

Some IDEs provide quick access to advanced help systems, which include API references, technical backgrounds, ‘How-to’ articles and code samples. Assuming that users are mostly online, IDE vendors also provide links to more material on their Web sites (e.g. the Sun Developer Connection, Borland, MSDN Online, etc.). However, all those materials are of a static and general type, and users thus often go to newsgroups and forums, in which they can explicitly describe their specific problems, and get support from peer developers from all over the world. Examples include the IBM PartnerWorld for Developers, the Servlet Developers Forum, the Java Developer Connection, Dave Central, and many more.

DETAILED DESCRIPTION OF THE INVENTION

Reference is now made toFIG. 1, which illustrates a collaborative development environment (CDE)10, constructed and operative in accordance with the present invention. CDE10may comprise a plurality of collaborative development clients12and a collaborative development server14.

CDE10may provide developers16with the ability to collaborate about the software they may be producing while they are programming, rather than at a coffee machine, in a group setting or through a forum, as in the past. In the present application, “collaborate” refers to any electronic communication with another person. Such a communication might be by email, instant messaging or any other appropriate form. In general, such a communication may be relatively quick, such that the developer16asking the question may receive an answer to the question while working.

Each collaborative development client12may comprise an IDE20and a collaboration client22, where each collaboration client22may communicate with collaborative development server14via a network24. Collaborative development server14may be any suitable collaboration server which may provide the ability to post questions to appropriate potential advisors and to provide the resultant discussion to anyone who chooses to view the discussion. Server14may be based on an instant messaging system or a Chat system to which “persistency” is added to generate the resultant discussion.

Collaboration client22may be integrated within IDE20such that a programmer may ask a question or view a discussion while generating or debugging a program. In one embodiment, shown inFIG. 2, collaboration client22may be accessed through the Help Menu, such as is found in most software. In another embodiment, shown inFIG. 3, collaboration client22may be accessed or viewed through an Edit workspace.

FIG. 2, to which reference is now made, shows a screen in the Help Menu of development client12. As can be seen, the Help Menu may have four sections, Content, Index, Find and Peer Support. The first three sections may be standard Help Menu sections. The fourth section, Peer Support, may provide access to collaboration client22. It will be appreciated that the help provided within collaboration client22may be about any issue that the programmer may have and is not restricted to how to use the IDE20as are the other, standard Help sections. Moreover, collaboration client22may provide “peer support” (i.e. help from other programmers).

Peer Support may have two windows, a listing window30and a discussion window32. Listing window30may list the discussion topics and discussion window32may present a selected discussion, where each discussion topic may be titled by the question that initiated it. For example, the selected discussion (marked with a dark background) may be entitled: “What is the default port for FTP service?”

Listing window30may be divided into two sections, a live discussion section34and a recent discussion section36. Live discussion section34may list discussions that currently are “live” while recent discussion section36may list discussions that are not live at the moment, where “live” may mean a discussion that may be available for editing. After a predefined period of time, discussions may become read-only. Recent discussions may be those that are now read-only but the user participated in them. Recent discussion section36may also list when the discussion last had new input into it.

The discussion topics which may be listed may be selected according to any suitable criteria. In one embodiment of the present invention, the topics may be all of the discussions currently registered to the programming group or groups that the current programmer may belong to. In another embodiment, the topics may be those related to the work which the current programmer may be doing. In another embodiment, the current programmer may register his fields of interest and the topics are thus, only in his fields of interest. A further embodiment may incorporate all or some of the previous embodiments.

Discussion window32may have the elements useful for a discussion. It may take the well-known form of a chat room or an instant messaging system or any other suitable discussion format.

In the example ofFIG. 2, there may be a window38listing the programmers (Person1, Person2, etc.) involved in the discussion, where a bolded name may indicate that the programmer currently has the discussion window open and a non-bolded name may indicate someone who does not have the discussion window open but who has contributed to the discussion. A programmer may enter the chat room when he selects a discussion.

There may also be a window40where the current programmer (Person4) may enter his contributions to the discussion and a window42where the collected contributions of all of the involved programmers may be listed. In the latter, each contribution may be marked with the person who contributed it. There may also be buttons46which may enable the current programmer to send his contribution to the discussion once he has finished entering it or to close collaboration client22.

Reference is now made toFIG. 3, which illustrates an alternative embodiment of the present invention in which collaboration client22may be accessible from an Edit workspace50of IDE20. The exemplary IDE in this embodiment is the VisualCafe by Symantec Corporation of the USA.

Edit workspace50may comprise a plurality of windows, each showing the current programmer different aspects of the program he may be writing. For example, there might be one window52showing the code he is currently editing. There might be another window54showing the files forming part of the program he is creating. There might be other windows (shown by their tabs), showing the objects56or classes58that the current programmer currently has available to him. There might be a window60that may show the results of a build, debugging or find operation.

In the example ofFIG. 3, there are a plurality of toolbars62which provide the current programmer with pushbutton operations. In accordance with a preferred embodiment of the present invention, collaboration client22may provide another toolbar64in the display. This toolbar may comprise items useful for collaboration client22. For example, there might be a “ticker”66listing some new or updated discussions relevant to the current programmer, where “relevant” may be defined in any suitable manner. For example, “relevant” might be defined by the groups that the current programmer is associated with, or it might be a function of the work that the current programmer is currently doing. Alternatively or in addition, the discussion may be directed to the current programmer, as being the person or one of the persons most likely to be able to answer the question. Ticker66may be relatively non-intrusive but it may be placed in a prominent position so as to improve the chances for a question to be seen and answered “live” by the current programmer.

Toolbar64may also comprise awareness gauges68which may indicate the number of people currently actively involved in the discussions relevant to the current programmer and the number of currently active discussions. C licking on a gauge opens the relevant list. For example, the gauge of the n umber of people involved may provide the list of people when clicked and the gauge of the number of discussions may provide a list of the discussion topics when clicked. An exemplary gauge is described in the application having attorney number (IL9-1999-0038 Divisional.)

Toolbar64may include a slider70which the current programmer may move to indicate to other programmers his willingness to answer questions posted directly to him. If the current programmer places the slide on ‘not willing’, then the other programmers will not see him on their list of available advisors.

Another item on toolbar64may be a question button72with which the current programmer may initiate a discussion. Pushing on question button72may bring up a dialog, shown inFIGS. 4A,4B and4C to which reference is now briefly made, in which the current programmer may type his question and may indicate to which programmers or groups of programmers to post the question.

FIG. 4Ashows an exemplary screen which may arise when question button72may be pushed. The screen may include a section72in which the current programmer may type in his question (which may become the discussion topic) and a section73in which he may elaborate.FIG. 4Bshows an exemplary next screen in which the current programmer may select potential advisors from among a set of types of advisors.FIG. 4Bshows these sets to be people from the same project as the current programmer, those who are working on the same open modules or on the same open functions. Other groupings of people may also be possible and are incorporated into the present invention. The question may then be sent to the advisor(s) of the selected group. Alternatively, the current programmer may select an advisor or advisors from a list generated from his choice of selected group.

FIG. 4Cshows a further screen in which the current programmer may choose further groups of people, not necessarily related to his current work, to which to send his question. These groups may be of people in the company and may be organized in any desired manner.

The people who are listed may be those who have agreed to answer questions and they may receive the questions when they have the discussion window open and/or at a later time.

Reference is now made toFIG. 5, which illustrates an exemplary collaborative development environment (CDE)80based on a chat server82, constructed and operative in accordance with the present invention.

In this embodiment, collaborative development server14may be implemented with chat server82overlaid with a discussion builder84. Chat server82may be any suitable chat or instant messaging server, such as Lotus Sametime Connect, commercially available from International Business Machines (IBM) of the USA. Discussion builder84may be any suitable device which may take the unstored conversations of chat server82, may make them “persistent” (i.e. may keep the conversations alive even if no one contributes to them after a period of time) and may combine them into a multi-person discussion forum. Each forum has a discussion topic and a contributor may access the forum by selecting its topic, rather than by selecting a person to talk to as is the case for chat server82. Builder84may provide an entering contributor with the entire discussion up until the present moment and may enable the contributor to contribute to the forum.

Builder84may provide an extension of chat server82for asking questions in virtual, ad-hoc communities. Builder84may provide the ability to post questions synchronously to selected potential advisors via a ticker (such as ticker66) and may have a basic load balancing mechanism to reduce the probability that advisors become swamped with questions. The ticker may form part of IDE20, may be a plug-in, an applet or a portlet (if the IDE is web-based).

Collaboration client22may comprise a context fetcher90and a discussion client92. Discussion client92may provide the current programmer with access to discussion builder84and to chat server82. Thus, discussion client92may provide the chat room elements of window32(FIG. 2) and may provide the communications of the current programmer to discussion builder84and chat server82. Similarly, discussion client92may fetch the selected discussion from discussion builder84and may display it to the current programmer.

Discussion client92may operate together with context fetcher90which may, in turn, determine the context in which the current programmer is operating. Context fetcher90may then provide the context definition to discussion client92who may, in turn, fetch only those discussion topics of discussion builder84which are appropriate to the context definition.

The context may be defined in many ways. As described hereinabove, the context may simply be defined by the groups to which the programmer has registered. In another embodiment, the context may be defined by the work which the current programmer may be doing. For example, context fetcher90may log the activities of the current programmer, such as opening and closing files, how frequently s/he works on each and how recently. Discussion builder84may review this data and may group the currently active programmers by their similar activities. Thus, if two programmers are working on the same file, or the same directory or directories of files, or the same project, then discussion builder84may group these programmers together. Discussion builder84may then provide discussions and questions to the current programmer from those programmers which are part of his current group. When the current programmer changes the code that s/he may be working on, s/he may change groups and thus, discussion builder84may send him a different set of discussions.

In another embodiment, context fetcher90may review the window, menu, etc. of IDE20that the current programmer may currently be working in, may review the kind of work being performed (editing, building, compiling, etc.), the file, project, class, object, etc. that the current programmer may be utilizing, etc. Context fetcher90may ask the current programmer which of a list of projects s/he is working on, interested in, etc. Based on any of these, context fetcher90may select a group and may send the group selection to discussion builder84who, in turn, may send back the discussion topics of the selected group.

Alternatively or in addition, discussion builder84may select the appropriate advisor based on the information provided by context fetcher90. For this, context fetcher90may trace usage history, may find who worked on related projects, may locate users of particular components of the software, etc.

In one embodiment of the present invention, context fetcher90may attempt to determine the context in which a possible problem arose. Context fetcher90may do so by continually or periodically monitoring some or all of the keyboard activity of the programmers using the system, the files which the current programmer has open and the function or module where the current programmer may be working. Context fetcher90may send messages to discussion builder84as to the current context of the current programmer. Discussion builder84may maintain a database of the current context of the programmers associated therewith.

From this information, context fetcher90may determine an active project, a collection of open source files, the source code file currently in focus and, possibly, the current function that the current programmer has open (e.g. one that has a cursor in it). Context fetcher90may then use the following heuristics to propose a set of advisors to the current programmer:a) everyone who ever worked on the current project;b) everyone who ever edited the open source files or the source file currently in focus; and/orc) everyone who ever edited the current function.

Context fetcher90may determine these sets of people while the programmers work on the files. Additionally, predetermined comments, such as those describing authors of modules and functions, may be used. For example a standard, called Javadoc, contains a directive @author to provide the name of the author of a function or module. Finally, programmers may register to receive questions about certain projects, modules and/or functions.