JIMBO
Synchronous and Asynchronous Collaboration.

Communications
- Audio chat: This provides virtual presence and makes it easier to coordinate and collaborate. This type of communication allows for quicker resolution.
- Text chat: A text-based chat or instant messaging is a complimentary system for audio chat and is a must, as coders share code snippets and links to resources.
- Inline discussions: Inline discussions are text-based semi-synchronous way of communication, in which users can associate a short discussion with an artifact such as a portion of code or a design document.
Live Preview
Live programming is a technique where programmers re-execute a program continuously while editing [4]. Live preview is a variation of this technique that refreshes the output immediately upon a change to the code, and it best fits UI-heavy application development such as websites. This technique provides an immediate connection between the code and the output for developers so they can see the effects of changes to their code. This feature leads to fewer iteration of the code, which means faster coding.
User Awareness
Another fundamental requirement to supporting collaboration is awareness. The primary responsibility of such a system is to notify developers of events relevant to them, such as code changes, comments to discussion threads, user presence, etc.
Jimbo has a powerful channel based notification system [7] using push notifications. These notifications are persistent and stored on the server for future retrieval. To prevent cognitive overload, developers can request to receive notification about a specific portion of the code, a feature we call “code watch”. Once someone puts a watch on a portion of code, Jimbo pushes notifications regarding any changes to that section of code.
Collaboration Scenarios
The integration of communication features into the IDE could help students discuss without losing focus on the code. Most communication tools (Skype, IRC, email, etc.) are not directly integrated with the IDE, which can lead to a disconnect between code and discussion, or simply wasted effort by frequent context switching.
A text-based chat system is a must, as students share code snippets and links to resources. An audio chat system allows students to talk freely similar to effective face-to-face meetings.
Another popular practice is “live coding,” where an instructor writes code in front of students, exposing their thought process. To better support student-led live coding and engage all students during a class session, having a tight code-artifact feedback loop that allows students to verify that a change had the intended result is important. One advantage of combining a live preview component with pair programming is that live preview supports a distributed and thus scalable way of engaging in live coding. This would allow all students to benefit from this practice during short class periods, whereas before only a handful of them would get the chance to practice this technique.
Professional Settings
Software teams usually have more than one developer and designer collaborating. Instead of isolating designers from the development, we suggest including them in the implementation process, working with the developers while these work with the code.
Having synchronous coding integrated into IDE tools enables designers to make modifications directly, or work with the developers and direct their development efforts without going through a long set of steps to deliver their ideas to the engineering team effectively.
This can facilitate a more design oriented process in which designers create the skeleton of the product and then developers fill in the gaps to bring the design to the life. This way, designers guard their designs themselves and developers are forced into the habit of getting more immediate and meaningful feedback.
The integration of communication features into the IDE could help developers and designers discuss and resolve the issues they may face without losing focus on the code. Audio chat allows for
quicker resolution in case of minor design misunderstanding between developers and designers that if stay unresolved, it sometimes will lead to major defects in the product and delay in the process and in worst case failure of the project. Unlike transitory audio discussions, inline discussions are tied to people and artifacts and tend to be permanent, having their own context that will not be lost over time.
In an environment where designers and developers are collaborating with each other, live preview is a powerful tool. Using live preview, designers can instantly see what changes developers are making and provide feedback and direction, warning the coding team if they are deviating from the design vision. It also streamlines the flow of communication within the team, and makes it easier for developers to ask designers for input or help when changes have to be made.
Awareness is required to coordinate teams, but can be distracting if it interrupts or requires too much attention from members.
It is not an easy issue to address in a collaborative environment, as we juggle the need for asynchronous editing for some developers, and the need for real-time preview of the resulting code for others. good awareness system in such environment will provide useful answers to the questions that a user may have, for example: Who made what change in the code? Who should I contact if I have a question about this part of design/code? Who is currently available? What are they doing now?
Integrating Collaborative and Live Coding for Distance Education
Soroush Ghorashi and Carlos Jensen
PAIR PROGRAMMING IS DIFFICULT IN ONLINE CLASSES BECAUSE DISTANCE OFTEN REQUIRES CONTEXT SWITCHING IN COMMUNICATION BETWEEN PARTNERS.
TO SUPPORT CODING IN COLLABORATIVE EFFORTS, STUDENTS NEED A SIMPLE, WEB-BASED PROGRAMMING ENVIRONMENT THAT REQUIRES NO SETUP WORK
JIMBO’S MOST WELL-RECEIVED FEATURE WAS CODE EDITING IN REAL TIME, AND IT SUPPORTED MULTIPLE PAIR-PROGRAMMING PATTERNS.