Mastering the Eclipse Toolset: Change Sets

by David Shepherd, January 19th, 2010
Summary: Learn how to become a master of the Eclipse Change Set Toolset, increasing your individual effectiveness and improving your team’s communication.
Applies to: Tasktop Pro, Eclipse Mylyn
Supported Connectors: Bugzilla, ClearQuest, CollabNet, JIRA, Mingle, Rally, ScrumWorks Pro, Trac, VersionOne (coming soon)
Supported SCMs: CVS, Subversion (SVN), ClearCase (coming soon)

Software Tools

“An apprentice carpenter may want only a hammer and saw, but a master craftsman employs many precision tools. Computer programming likewise requires sophisticated tools to cope with the complexity of real applications, and only practice with these tools will build skill in their use.

–Robert L. Kruse, Data Structures and Program Design

Eclipse is one of the most sophisticated toolsets ever offered to developers. Its plethora of available tools can eliminate many headaches from a developer’s day. Unfortunately, there are days when headaches still occur, as developers struggle to discover and use all Eclipse has to offer. A great technique for discovering the most useful tools in Eclipse is to watch an experienced developer work. In this post I’ll be sharing my change set toolset knowledge, gained from watching others, in hopes of eliminating unnecessary clicks and frustration from your workday.

The (Small) Cost of Change Set Support

Money for Nothing

Contrary to many spammers’ beliefs, everything in life has some costs, and the advantages offered by Tasktop and Mylyn’s change set tooling are no exception. To enable the benefits of the change set tooling you will need to:

  1. Click the “Activate” button on a task before starting that task
  2. Click the “Deactivate” button when finishing a task

Once you develop the habit of working in this way (see Task-Focused Tutorial for details) then you will be able to:

  1. Navigate from any line of code to the relevant task or bug report
  2. Review your teammates changes and view only the files that changed
  3. Quickly erase changes made for a given task (Undo at the task level)

The following sections will walk you through different aspects of the change set tooling and show you how to maximize your benefits.

Change Set - ..the set of changes made in a single commit.
http://en.wikipedia.org/wiki/Revision_control
In (hopefully) all software development organizations there is repository for storing your code. For Eclipse users this often means using a Software Configuration Management (SCM) system like CVS or Subversion. When working with an SCM developers usually download the entire code base and then submit updates to this code base in the form of change sets, or a set of files that they have changed.

Tip #1: Tracking Current Changes

Tasktop and Mylyn automatically track the changes that you make as you work on a task, thus automatically creating a change set. You can view all of your current changes by opening the Synchronize View. Be sure to toggle the view model (circled below) until you are viewing changes as change sets.

Change Sets in Synchronize View

Viewing changes using the Synchronize View makes it easy to quickly review others’ changes and to manipulate your own. The left pane in this example contains four change sets, one of which is expanded.

Clear Your Changes

As you make changes when working on a task a new change set will be created and shown in the Synchronize View. Thus, when you have completed a task it is easy to commit only the relevant code. Open the Synchronize View, right-click on the change set, and select Commit. Occasionally you will work on a task and then abandon it, either because it seems infeasible or because priorities have shifted. In this case it is easy to remove all the changes you’ve made for that particular task by selecting the change set in the Synchronize View and selecting Override and Update (see screenshot above).

Tip #2: Connecting Commits with Tasks

All source code was written for a reason, but when viewing a particular file the original reasoning is not always clear. Fortunately, when using Tasktop/Mylyn tasks to track your work you can easily connect every line of code with the reason it was changed. This connection makes interpreting individual files easier and reviewing changes after-the-fact possible.

Map from Code to Task

Creating and Configuring Automatic Commit Messages: When using tasks to track your work meaningful commit messages will be attached to every commit that you make. When you attempt to commit a set of files Tasktop/Mylyn will automatically populate the commit dialog with tasks that were active when you changed these files.

Automatic Commit Messages

In the above example you can see that the file AbstractTaskAssociation.java is the only file in this change set and that bug 5256 was active when it was changed. To establish a connection between this change set and your task simply do not erase the commit message. Later, when viewing the changed lines in file AbstractTaskAssociation.java it will be easy to trace back to the relevant task (discussed below).

Advanced Tip: Changing Your Commit Message
If your team decides that these commit messages are not exactly as they would like them to be they can configure the template by selecting Tasks -> Team in Window -> Preferences. They can use the following variables as well as any text to alter the commit message. You must keep the task URL in the commit message to enable easy task lookup, all other variables are optional.
Commit message variables: connector.task.prefix, repository.kind, repository.url, task.assignee, task.cc, task.description, task.id, task.key, task.keywords, task.lastmodified, task.notes, task.priority, task.product, task.reporter, task.resolution, task.status, task.summary, task.type, task.url, task.completiondate, task.creationdate, task.reminderdate

From Code to Task: Enabling the automatic commit messages allows your team to trace from any line of code back to the last task that changed that line of code. Starting from a source file, use the context menu in the editor to select Team -> Show Annotations. This will populate the gutters of the editor with a line to task mapping.

In the example above you can see that method isValidUrl was last changed to ensure that URLs did not contain spaces. To open the relevant task use the context menu in the History View (automatically opened for you) and select Open Corresponding Task.

Map from Code to Task

Viewing the task has several advantages for understanding a particular line of code.

  1. The description and comments of the task often have relevant information, including design decisions or problems that were encountered.
  2. The task context (if available) will allow you to interpret the changes as a whole.
  3. The task contains information about the people involved, including those that did not make the commit, whom you may want to discuss the code with.

Tip #3: Sharing Changes with the Team

In the open source community developers often need to submit a patch, essentially a change set, to address a particular bug. The developer in charge of that component will review the patch and either apply it or ask for improvements. The process of creating, reviewing, applying, and reapplying a patch is painless with Tasktop.
When a developer is creating a patch he (or she) usually begins with an up-to-date workspace. He then changes a few files to implement the fix. Once complete, he can use the Synchronize View to create the patch (left), which he can then attach to the bug using the Task Editor (right).

Share Changes with Team

Sharing Changes with Your Team (click to enlarge)

Once the patch is attached to the bug he can revert to a clean workspace by Overriding and Updating his change set in the Synchronize View. If the patch is not approved he can, directly from the task, reapply the patch (below) and begin working on the necessary changes, again submitting an updated patch to the bug.

Apply the Patch

The developer reviewing the task also has the advantage of reviewing the changes in his workspace instead of reviewing a text file. He can apply the changes to his workspace and download the context (below) so that only the relevant files are shown in his package explorer. Reviewing changes in this way allows the developer to focus on only the changed code while reviewing, testing, and applying the patch.

Retrieve Context

Attach Your Context!

In this post I’ve shared with you the toolset that Eclipse and Mylyn/Tasktop offers for change sets. There are many opportunities to eliminate extra clicks and improve collaboration by taking advantage of this tooling. A great way to start using this tooling is to activate your Mylyn/Tasktop tasks and attach your context when submitting a patch. Attaching your context when submitting a patch makes it easier for other developers to review your patch, actually increasing its odds of being accepted.

Attach Your Context
Next time that you submit a patch… do not forget to check “Attach”!

Mik Kersten on Transparency

by Wesley Coelho, January 14th, 2010

symbian This is a repost of Hayden Shaughnessy’s interview of Mik Kersten originally published on the Symbian Blog.

What are the prerequisites of a vibrant open source community? Mik Kersten’s open source career began with AspectJ, a project that made its mark with a core team of committers rather than community contributions. In contrast, the Eclipse Mylyn project Kersten created has seen over 800 bug and enhancement requests resolved by community patches, which represents 1/7th of the bugs resolved on the project.

Mik, pictured [at right], is CEO at Tasktop Technologies. He attributes much of the success at Mylyn to the project’s transparency.

I asked Mik to share some of the lessons he’s learned from his open source career and began by asking how we should understand transparency when of course there are commercial pressures and ingrained practices that predispose people to a more closed approach somewhere along the line on any project.

How do you manage that conflict and maintain an open management philosophy?

MIK: What’s essential to the transparency that enables community contributions is public and open discussion forums. It is common to have an organizational split between an open source project and one or more companies behind the project. One aspect of that split is the approach to making product plans, design discussions and decision making visible to the open source community.

The level of transparency can determine how permeable a project is to community participation. For example, if Tasktop Technologies were to decide it wanted to introduce a new feature into Mylyn and attempted to do this in a non-transparent way, committing the code for the feature when nearly complete, we would forego the value of community participation and miss the opportunity for the community to harden, improve and extend that feature prior to its release.

How important is an open communications policy to that?

MIK: I believe that it is. It took me a long time to learn what that means, and I still frequently see companies having the goal of community participation, but not getting it right. Open development has to be transparent. Too many phone calls or private email threads on the side, and it becomes too hard for the community to follow what’s going on. Private communications will always have a role, but conversation that involve changing of a feature or API need to happen in the open and be captured for future review. That’s why Bugzilla has become such an effective vehicle and knowledge base for the Eclipse community.

What if that policy leads to conflict? You’re also an advocate of open conflict aren’t you?

MIK: There’s a range of conflicts we see happen. A great thing about open source development is the passions of technologists involved, especially when they are contributing in a volunteer capacity. Heated discussions arise regularly on any popular project, and are usually straightforward to resolve before they degenerate into flame wars. To handle the case when they do, we created guidelines to ensure that communications are respectful and professional.

If there’s a technical conflict, committers can vote. Meritocracy is a key factor even with democratic voting, since participants on the project tend to value the opinion of those contributing most.

More fundamental disagreements can arise, for example those over the trajectory of a project or governance model. In projects controlled by a single vendor, this is less likely since there is a top-down level of control. Vendor neutral projects and foundations are more likely to see this problem occur.

A fundamental level of conflict of this sort has more potential for damaging the community, since a lack of convergence can result in a damaging fork for both the code and the community.

I believe that it is important for the conflict happens in the open, since there can be separate and valid viewpoints within a project. Rather than having the project die the death of a thousand cuts by having people disagree continually due to the fundamental conflict not being identified, an open discussion will more quickly identify a more stable outcome, such as the need to split a growing project into sub-projects with independent leadership.

How do you regard the Symbian open management approach?

MIK: I haven’t yet engaged closely enough to have direct experience. But the approach of deploying and evolving Eclipse best practices and collaboration technologies like Bugzilla is a great step. Symbian faces challenges we at Eclipse do not. The size of the Symbian Foundation means it can handle engineering efforts independently of the community. In Eclipse, the community has to do all of the engineering work.

This is a double-edge sword.

We have experienced the problem of the “common good” of release engineering infrastructure not being provided by the Eclipse Foundation, and no single organization wanting to take on the entire burden. As a result, Eclipse has been slow in getting a satisfactory release engineering solution for projects, at a cost to all, especially smaller newcomers. But more recently we have had some substantial cross-vendor and community participation in making that happen.

In contrast, Symbian Foundation probably has sufficient engineering resources to solve this problem with its own engineering staff, which in the case of release engineering is almost certainly a good idea, but this precedent could discourage participation in other common efforts, putting a disproportionate amount of burden on the foundation. In the end I believe that the best solution is to strike a clear and well communicated balance for the common good efforts that a foundation will support vs. those that will require community participation and coordination.

Is there anything in your experience that proves to be consistently a key turning point in an open ecosystem, a something that you look back on and say, that’s what really made this work?

MIK: Yes, the release of a new platform. Take the November 2001 open source release of Eclipse. We are still riding the wave of excitement and technology potential that generated. Mylyn’s adoption exploded with the 2006 release of its 1.0 APIs. Developers get very excited when they have a new framework to play with, so the platform just needs to make sure that the tools and rules of engagement encourage participation in order to let those first thousand patches bloom.

This entry was written by Haydn Shaughnessy, originally posted on the Symbian Blog January 14, 2010 at 12:01 PM

Tasktop and VersionOne team up on Eclipse Mylyn integration for Agile teams

by Wesley Coelho, December 16th, 2009

Today marks the start of a major extension of Eclipse and Mylyn’s reach into Agile project management. We’re very pleased to announce a partnership with VersionOne to develop an Eclipse Mylyn connector for VersionOne’s Agile planning and project management platform. The Tasktop Certified VersionOne Connector will be included in Tasktop Pro and available as a plugin for any Eclipse-based IDE or as a standalone desktop application for product owners.

VersionOne Connector

One of the features we will be leveraging in VersionOne is their open and extensible platform approach to project management. VersionOne’s Team and Enterprise products provide comprehensive core of agile project planning and management tools. These tools are extended with a REST web service API as well as open source SDKs for both Java and .NET to facilitate integration with the rest of an organization’s unique tool stack. This open approach has led to an impressive ecosystem of integrations with defect trackers, version control system, build systems and more.

With the upcoming Mylyn and Tasktop Pro integration, VersionOne’s interoperability will take another giant leap forward in two key ways. First, VersionOne is joining the ecosystem of 42 interoperable Mylyn connectors. This will allow development teams in complex environments to seamlessly access VersionOne alongside artifacts from other supported systems as well as move and link artifacts across systems, all from within the IDE. Second, integration with Tasktop Pro will enable VersionOne artifacts to be linked with web pages, local documents, and applications such as Microsoft Outlook.

Of course, the Connector will also allow VersionOne teams to take full advantage of Mylyn’s task-focused productivity technology to focus the interface on only the code, documents and web pages that are relevant for a given VersionOne story, defect or task.

Feature Highlights

  greenbullet_icon Access VersionOne from any Eclipse-based IDE
  greenbullet_icon Standalone desktop application with offline access to VersionOne artifacts
  greenbullet_icon Link VersionOne stories with artifacts in other Tasktop Certified repositories
  greenbullet_icon Automatic time tracking and reporting
  greenbullet_icon Task-focused interface productivity technology
  greenbullet_icon Easy installation from the Mylyn Connector Discovery listing in the Eclipse IDE

We’ve received fifty requests for VersionOne integration and look forward to releasing the connector in March, 2010. Sign up on the VersionOne Connector page to be notified of future announcements.

Mingle and Murmur with Tasktop Pro and ThoughtWorks Studios

by Wesley Coelho, December 9th, 2009

Today’s Tasktop Pro 1.6.1 release includes a new Mylyn connector for the Mingle 3.0 project management software from ThoughtWorks Studios, the products division of the global Agile consultancy, ThoughtWorks. The connector takes Mingle’s emphasis on team collaboration to a new level by making it effortless for team members to access and communicate around Mingle cards without leaving the IDE.

Murmurs

What makes our collaboration with ThoughtWorks so exciting is that it has yielded the first social network extension to the task-focused interface. Starting on a cool task? Just murmur it much as you would send a tweet. The integration with the task editor is seamless. Stuck on something? Attach your task context, murmur for help, and colleagues on the project will have instant access to the code you’re squinting at.

videos1
Watch the Mingle Connector Video
 

What’s a murmur?

Mingle’s Murmurs™ support casual conversations much like Twitter or IM chats. But instead of being lost in Twitter or IM, the communication is captured on artifacts in Mingle for easy reference. With the Mingle Connector, Murmurs can be sent directly from the IDE and it’s easy to view all murmurs relevant to a particular development task or card.

murmurs

 
Focus on your cards

The Mingle Mylyn Connector fully supports task-focused programming productivity. Mingle cards in the task list can be activated to automatically track and show only the most relevant source code, web pages and documents for a given card. For example, when working on a million line code base, the task-focused interface might show only the 2 files and 12 lines of code that are relevant for the bug fix in progress. When returning to the same bug after an interruption, or after lunch, a single click instantly restores the workspace to its previous state, including open editors. This means far less time is spent repeatedly searching and scrolling to find the relevant code and other information. For more on task-focused programming, watch the Tasktop for Carbide screencast which demonstrates the concepts using the Eclipse-based Carbide IDE.

 
Automate time tracking

Because Tasktop users activate their tasks or cards to benefit from the task-focused interface, the time spent on each card is already available. Each Mingle card includes a time tracking section that provides a summary of how much time was spent during a given period. Time spent can be adjusted as needed to account for meetings, design time at the whiteboard etc. before uploading the data directly to Mingle.

time-tracking1

 
What about Twist and Cruise?

Mingle is a part of ThoughtWorks Studios’ Adaptive ALM product suite that includes Twist test automation and Cruise release management products. Further Tasktop Pro integration with Twist and Cruise will be available in March 2010. Sign up to be notified about further integration on the ThoughtWorks Studios Connector page.

 
Try it

The Mingle Mylyn Connector is now included in Tasktop Pro. Download a free trial

If using an IDE based on Eclipse 3.5 or later with Mylyn installed, Tasktop Pro can also be installed via the Connector Discovery wizard by clicking “New Task” in the Task List toolbar and then clicking the “More Connectors…” button.

Need Mingle? Download a free Mingle trial

Eclipse ecosystem: Open discourse at the risk of open conflict

by Mik Kersten, December 3rd, 2009

Open discourse brings conflicts out from behind closed doors. A while back I was involved with an open source conflict that degraded technical discussions to power struggles. I looked to Bjorn Freeman-Benson and Mike Milinkovich the help resolve that conflict. This week, countless eyes were peeled on Planet Eclipse as a very public conflict arose between the two of them.

Open source passions often transcend organizational and professional boundaries. That’s what makes someone bored with their day job contribute to Eclipse on evenings and weekends. It’s what makes someone like Bjorn continue to be invested in the success of Eclipse long after he has moved on from his job as the Director of the Committer Community.

mike-mik-bjorn
Mike, Mik and Bjorn at EclipseCon 2008

Open conflict helps avoid the slow death by a thousand cuts that can result when fundamental or structural problems are hidden from a community. This is one reason why open discourse is as important to a healthy ecosystem as an open development practices. It is up to us to process the information underlying the conflict, learn from it, and move on.

My perspective comes from joining the Eclipse community eight years ago, as one of the first non-IBM committers, and watching it grow. Mike’s great leadership as Executive Director has created the successful Eclipse ecosystem and membership that we have today. Mike has been instrumental in laying down both the technical roadmap and community design that makes Eclipse so successful. Bjorn’s five years of contributions have been remarkable as well. He drove the most fundamental changes to the Eclipse development process with a consistent theme of improving the mechanisms that support committer collaboration, release coordination and innovation. Bjorn has that very rare ability to understand the overlap between people and technology, and employ social engineering in order to define the rules of engagement that make a community successful. The technological implementation of social rules is just as important to open source ecosystems as it is to social networks like Facebook and LinkedIn.

Having collaborated with both Bjorn and Mike throughout most of this decade has given me an appreciation of how different their perspectives are. Bjorn’s academic stance will have him happily debate you to death, and can result in some provocative statements. Mike is a business leader, and if those statements cease being constructive, he will call “jerk” on you in order to protect the foundation and ecosystem.

Evolving open source ecosystems requires the voices of both Mikes and Bjorns. One creates business direction and drives change within the ecosystem as a whole, the other focuses on community structure and dynamics. While recent posts went into enough of a downward spiral as to stop being constructive, we should not discount that Bjorn’s critiques of the Eclipse ecosystem struck a nerve, and have stimulated some of the most significant discourse we have seen around Eclipse since the code went live eight years ago. Assuming that the discourse can return to its constructive form, it is in our interest to have it continue as part of Planet Eclipse.

Vancouver Eclipse deMO Camp Wrap Up

by Robert Elves, November 27th, 2009

We had another fun and informative Eclipse Demo Camp this past Wednesday here in Vancouver with over 50 participants braving the elements to attend. A number of attendees were participating in MOvember. These gentlemen could be easily identified by the presence of a moustache adorning their face (myself included). A number of the speakers were fellow “mo bros” and their donation pages are linked below where you can rate their moustache and make a donation.

img_2291

What is Eclipse Demo Camp? The Eclipse Foundation sponsors Demo Camp events world wide. The Eclipse Demo Camp is a gathering of local Eclipse enthusiasts, giving individuals the opportunity to present or hear about Eclipse based technology being developed locally.

Vancouver Demo Camp Format. The Vancouver Eclipse Demo Camp has taken the “learn by fire hose” approach: 7 or 8 fast paced 10 min talks delivered by local industry and academics building on Eclipse. This includes a minute to answer a quick question while in parallel the next speaker is plugging in and lining up to deliver their talk. Its fast, its fun, and translates into rapid exposure to really cool technologies in just over an hour. Attendees have commented that this high energy, to the point format offers a nice alternative to events with longer talks.

The Speakers

We enjoyed talks from the following speakers:

Mik Kersten, lead of the Eclipse Mylyn Project and CEO of Tasktop, gave a quick introduction to the Eclipse Ecosystem and why it excels as a platform for innovation.

 
Andrew Eisenberg from SpringSource/VMWare demonstrated Groovy tooling within Eclipse and how easily Grails controllers and model classes can be generated from within the Spring Source Tool Suite. Slides (pdf)

 
Jim DeLaHunt of Jim DeLaHunt & Associates demonstrated how Eclipse can be used to perform runtime debugging of large php applications, something many of us take for granted. He equated life before discovering Eclipse PHP debugging to working with ‘bear skins and stone knives’ to get the job done. Great analogy Jim, I can’t imagine how I’d survive without Eclipse’s debugger.

 
David Green, a committer on the Eclipse Mylyn project, explained the problem of keeping documentation up to date and showed how Mylyn’s WikiText module can be leveraged to build Eclipse documentation crowdsourced from user contributed wiki content (i.e. from EclipsePedia). See David’s blog.  Slides (pdf) Movember Donations

 
Emerson Murphy-Hill from the Software Practices Lab at the University of British Columbia demonstrated a new way to communicate the presence of code smells through a visualizations called “stench blossoms”. These “blossoms” are drawn within the Eclipse editor along the right hand margin and scale in proportion to the severity of the smell. For more information, read the paper and download the tool.

 
Sam Davis from the Software Practices Lab at the University of British Columbia, demonstrated a prototype within Eclipse that dynamically presents the abstractions in your source code more succinctly (so that it feels like you’re using a dynamic language while in fact you’re still using java). You have to see it to believe it. If you would like to try this technology sign up for his user study.

 
Ian Bull from EclipseSource demonstrated the simplicity of customizing and provisioning Eclipse using Yoxos. In addition to custom Eclipse configurations, Ian also pointed out that Yoxos can help developers that need to manage multiple different instances/profiles of Eclipse. Movember Donations

 
David Shepherd from Tasktop closed the speaking protion of the evening off with a few quick best practices when working with Tasktop Pro. David put the call out to all Mylyn and Tasktop users to ping him on his twitter account and share your workflow practices. Slides (pdf)Movember Donations

 

After the presentations we all enjoyed good food, drinks and conversation. I’m already looking forward to the next Demo Camp! This is the third year Tasktop has organized this Eclipse community event, and each year has been better than the last. Thanks go out to Andrew Eisenberg from the SpringSource crew for helping with this year’s Demo Camp. Also, thanks to whoever provided the runtime debugging of my (paper based) sign up sheet at the event, catching my miss use of the assignment operator:

P.S. My Movember page. Drop me a donation and a comment!

Growing open source ecosystems: the install story

by Mik Kersten, November 18th, 2009

At the Symbian Exchange & Expo conference, I presented a talk called Coordinating contributions: lessons learned growing an OSS community, sharing my lessons learned from the AspectJ and Eclipse Mylyn communities. The Symbian Foundation has adopted the EPL, Bugzilla, and an open development model. What makes the Mylyn project an interesting data point is that with the same infrastructure, it has seen over 800 bug and enhancement reports resolved by patches from a very active contributor community. That’s around 1/7 of our bugs resolved, and falls within the top two Eclipse projects for total contribution count. While Tasktop Technologies has provided the resources for maintaining, supporting and evolving the Mylyn frameworks, we have managed to create a very permeable and successful ecosystem for contributors.

Modular Platform, Incentive Structure, Collaboration Tools

The talk broke the contribution problem up into three pillars: the modular platform that defines the landscape of interesting contributions, the incentive structure needed to drive contributors, and the collaboration tools that support the open development process. While responding questions after the presentation, I was struck by how important the extension install story is to the first two pillars.

Open platforms need easy extension install

If you release a cool tool and nobody can find or install it, does it still make a sound? Not if the sound that you’re after is the roar of broad adoption. One ingredient of an install story is the dependency management technology, which defines the modularity of extensions. In Eclipse, this is a solved problem thanks to OSGi and the Equinox P2 provisioning system.

Another ingredient is incentive structure. The Eclipse Plug-in Central site provided a web portal for listing extensions, but was disconnected from an install story. In contrast, consider the success of the market-driven incentives of Apple’s app store. Or the seamless install process of iPhone apps and Firefox add-ons. Incredible ecosystem growth can result when install technology, modularity mechanisms, and incentive structure line up. While Eclipse provides a great generic install and dependency management mechanism, as the number of Mylyn integrations grew, we realized that a limiting factor of adoption was the discovery of integrations and ease of their installation. In order to continue to support our growth and not overly bias our ecosystem to those extensions that were hosted on Eclipse.org, we needed to streamline Eclipse’s install experience for Mylyn connectors. So we created the Mylyn Connector Discovery tool.

connector-discovery-small

Generalizing Mylyn Connector Discovery

Since the release of Connector Discovery release with Eclipse Galileo, the listing has grown and received consistent praise from users and integrators. We’ve since seen many requests to generalize the mechanism to other install use cases ranging from Eclipse Pulsar SDK installs to the exciting new Eclipse Marketplace effort. The SpringSource Tool Suite is a great example of how the Discovery UI can be leveraged for targeted extension install.

In response to this interest, we have generalized the code and are proposing to move it to the the Equinox P2 project, home of Eclipse install. For details on that proposal see Eclipse bug 295273. What I hope we see in the Eclipse Helios release time frame is the Discovery mechanism as P2 API for special-purpose install workflows, with extensions for Mylyn Connectors, Eclipse Marketplace and more. This Discovery install story is additionally relevant to Eclipse Rich Client Platform (RCP) install scenarios, which often need a simplified and tailored install experience.

While serving on the Eclipse board of directors, a concern I repeatedly raised was the repeated problems that arose from an incomplete install story. The great thing about being part of a meritocratic ecosystem like Eclipse, which rewards participation, is the ability to put code and resources where your mouth is.

The economics of extension listings

A tension that surfaces around shared resources is the Tragedy of the Commons. This gets discussed repeatedly in Eclipse, and can happen in vendor neutral open source ecosystems when organizations attempt to derive value from common frameworks and tools without contributing enough back. As a result, those ecosystems tend to be lead by organizations that understand commercial open source enough to act with enlightened self-interest. But with the continually growing number of Mylyn integrations, we also needed to consider companies with a shorter-term outlook. For example, like other projects, we see the pattern of vendors leveraging our frameworks in ways where they impose a significant support burden on the committers, and not contributing back in terms of patches or resources to help grow those frameworks. While I believe that an open source project like Mylyn should welcome all integrations, an indefinitely increasing support burden is not scalable and can reduce the time available for innovation. We need to avoid the Easter Island effect where everyone builds themselves self-serving heads without prioritizing the long-term health of the ecosystem within which they operate (see Easter Island/Collapse of the Ecosystem).

Discovery style extension listings provide a great opportunity to encourage meritocracy, one of the driving principles of a vendor-neutral development process like Eclipse’s, and help align the interests of a project with those leveraging on it. For good references on meritocracy see Chris Aniszczyk’s recent post. In preparation for last June’s release of the Mylyn Connector Discovery, we worked with our community to create listing criteria that achieve this balance. To paraphrase here, committers can vote you into the listing if you contribute enough to the project to offset the additional burden that you impose on the committers. If you are a vendor and are pulling your weight on the project by growing the frameworks and tools for all integrators to leverage, you can get your own section. If you have a community-oriented open source integration, committers go an extra mile and offer you UI and API reviews in order to help encourage cross-ecosystem collaborations, which can yield a long-term benefit, as evidenced by our collaborations with Mozilla. The listing criteria are open to feedback and input on Eclipse bug 279709.

To date, this meritocratic listing approach has worked extremely well for promoting high-quality extensions and contributions. It has encouraged the growth and adoption of independent efforts such as the Mantis connector, reduced the adoption bias we had of connectors that were hosted on Eclipse.org, and provided a mechanism for promoting the latest round of commercial integrations needed to grow the Mylyn user base.

With a generalized Discovery mechanism in place, I hope that we see a similar trend for other special-purpose Eclipse extensions. For example, the Eclipse Marketplace can use ranking in the Discovery listings for promoting members’ solutions. Projects like Eclipse Pulsar can make their key contributors’ mobile SDKs trivial to install. And the next round of innovative Eclipse projects can use this mechanism to help grow their ecosystem of extensions by promoting meritocracy.

Tasktop working with Microsoft to improve Eclipse on Windows 7

by Mik Kersten, October 28th, 2009

I spent the early years of my career with MacOS and then Linux as my primary OS. When the focus of my work moved to tool building, I decided that I needed to use the OS that was most common in the tools’ target audience. In the Eclipse ecosystem, that’s Windows, which captures more than three quarters of Eclipse IDE downloads.

The great thing about Eclipse is that architecturally, thanks to the amazing SWT framework that IBM created, Eclipse provides a native experience on your OS of choice. But last April, when I moved my primary OS to the Windows 7 RC, I noticed two things. The first was a feeling reminiscent of when I first started using Windows XP early 2001. Windows 7 was slick, responsive, and brought the desktop client to a new level of refinement. The second observation was that Eclipse and Tasktop, which I spend the majority of my time in, looked like dated Windows XP applications.

Today we’re happy to announce that Tasktop is working with Microsoft to help make Eclipse look and feel like an exemplary Windows 7 application. It is great to see Microsoft supporting this effort, since it will impact a broad range of users of the Eclipse IDE, as well users of commercial Eclipse-based IDEs such as the SpringSource Tool Suite IDE, and Eclipse RCP applications such as Tasktop Pro for Windows. Read more about the Microsoft initiative behind this on Vijay Rajagopalan’s post on the Microsoft Interoperability blog.

The majority of Eclipse’s current Windows 7 interoperability comes from the previous efforts of the Eclipse SWT teams and from the backwards compatibility of Windows 7. So you can happily run Eclipse on Windows 7 today. This allows us to focus entirely on leveraging the new features in Windows 7 and on look-and-feel enhancements. Here are a couple of highlights of the initial scope of the effort. Note that all contributions will be made to Eclipse.org under the EPL.

Taskbar Progress (Eclipse bug 293228)

Windows 7 provides a new visual representation of progress on taskbar icons. This feature removes the need to Alt+Tab to an application just to check on the status of a long-running job, such as a download. The plan is to integrate this with Eclipse progress in order to allow some key jobs, such as a full builds and runtime launches, to indicate their status on the taskbar. We already have a working prototype of this functionality, which I’ll show later today when I arrive at Eclipse Summit Europe.

windows7-progress1

Taskbar Jump Lists (Eclipse bug 293229)

The redesigned Windows 7 taskbar allows applications to expose frequently used features or files. We plan to incorporate this with Eclipse commands and actions that will benefit from quick taskbar based access.

windows7-jumplist

We have some additional enhancements planned, including updating the widget colors and styling to match the Windows 7 look. SWT walks a very careful line in terms of leveraging native widgets, following accessibility guidelines and using desktop themes. Enhancing that experience would not be possible without the technical expertise of the Microsoft Windows and Eclipse SWT teams, whom we have to thank for the high quality Eclipse on Windows experience that we have today. Thanks to this new open source collaboration, what we’ll soon have is the icing on that cake.

If you’re interested in tracking progress, or chiming in with what else you would like to see implemented to streamline the Eclipse experience on Windows 7, refer to Eclipse bug 293226 and its subtasks.

Agile Task Management with Tasktop 1.6 and Mylyn 3.3

by Mik Kersten, October 25th, 2009

Today’s releases of Tasktop Pro 1.6 and Eclipse Mylyn 3.3 represent a major step forward in the maturation of the task-focused interface. Mylyn has become the de facto framework for Application Lifecycle Management (ALM) integrations for Eclipse with an ecosystem that now includes 42 connectors. The Mylyn Connector Discovery mechanism that was released with Eclipse 3.5 Galileo makes it trivial to find and install connectors, helping users and encouraging the number of integrations to grow. The Tasktop Certified connector program has been a key enabler for enterprise adoption of Mylyn by ensuring the quality and compatibility of integrations that exist outside of the Eclipse Mylyn project. We are not done yet. But between the evolution of the framework, the size of the integration ecosystem, and the new features that we’re announcing today, I’m happy to say that support for task management has been established as the critical link between the ALM systems and the IDE.

2009-splash-1_6-275

The goal of the Mylyn project is to provide a task management framework and reference implementations for open source ALM technologies. Tasktop’s goal is to extend the reach of the productivity benefits of Mylyn to as many developers as possible, by integrating with commercial ALM systems and providing additional task-focused collaboration facilities. The very broad adoption of our technology is riding on the wave of the spread of Agile and Lean development processes, which make tasks a more explicit part of the development process. We have seen significant innovation around Agile ALM tool support from companies such as Atlassian, CollabNet, Danube, IBM, Microsoft, Rally and ThoughtWorks Studios. We’re continuing to see increasing usage of open source solutions like Bugzilla, Mantis and Trac. And with the input of broad enterprise adoptions of Tasktop Pro, such as Nokia’s, we have tailored this new task management layer of the IDE to make it easy for organizations adopting Agile to make the most of their ALM tools and get the dramatic productivity benefits of task-focused collaboration.

 
The Agile ALM Communication Disconnect

To realize the promised returns of an agile approach to development, developers must embrace the agile tool support they are using as their hub for communication and collaboration around code. However, developers can be resistant to adopting a tool that is not integrated with their working environment. Developers are all already experiencing a high level of overload, and agile tools introduce yet another inbox to track. The result is an anti-pattern of stories, subtasks and status being updated at the end of a sprint or release instead of as the changes happen. Or trying to figure out how much time was spent on a task two weeks ago when submitting timesheets.

broken-line

This manual approach to ALM updates challenges the benefits of agile, because it results in ongoing friction for developers and a lack of useful visibility for product owners and management. Further developer frustration can occur when expectations that were assumed to be clear are not met. As developers, we want priorities to be clear and explicit and progress to be evident, since it makes it much easier to get things done, and to say “no” when yet another feature or enhancement is suggested. Managers need progress and priorities to be explicit in order to steer the product and features to meet users’ needs. To get the full benefits of agile, a new tool automation layer is needed to connect user stories and requirements at the project management level with the delivery happening at the developer level. We call this the “task management” layer of the agile development process.

 
Introducing the Agile Task Management Layer

This ALM communication disconnect is addressed by the agile task management layer in the development tool stack. The role of this layer is to organize work around tasks that represent actual development activity, automatically link related artifacts to tasks, and provide automation for updating ALM systems for real-time project visibility.

task-management-layer

Within this layer, Mylyn provides the task management APIs that integrate the IDE with the various ALM systems in play. Tasktop and Mylyn connectors provide the integrations with a team’s tools for change management, source code configuration management, build and release management, and test and quality management. Tasktop 1.6 completes the layer by automating the linking and tracking of task across the very wide variety of commercial and open source ALM tools.

 
What’s new in Tasktop 1.6 and Mylyn 3.3?

Welcome Experience - Tasktop 1.6 includes a new welcome screen that introduces task-focused productivity features and settings step-by-step, making it easy to get started with the basics and then take advantage of Tasktop’s more advanced capabilities.

dashboard-1_6

Task Federation – Teams with multiple ALM systems often find that tasks from one system depend on tasks in another. Tasktop 1.6 now supports linking across task repositories as well as importing and migration features, making it easy to manage tasks across ALM systems. For example, a user story in one system can be linked with defects in another.

associations-sample

Improved Time Tracking - New time charts and reports in Tasktop 1.6 take the pain out of time tracking by allowing developers to quickly review and adjust time spent on each task before submitting data to the team’s project management tools.

time-reporting-ineditor

Full support for C/C++ – Mylyn 3.3 and Tasktop 1.6 now provide complete task-focused programming support is available for C/C++ developers using CDT. Code focusing was first implemented for Java, then extended to enterprise developers with focus for Spring Framework artifacts via the SpringSource Tool Suite, and as of this release is finally available to all developers using CDT.

cdt-bridge

In total, Mylyn 3.3 resolves 163 Bugzilla reports and includes 18 enhancements, see the Mylyn 3.3 New & Noteworthy. For more on Tasktop’s new capabilities, see the Tasktop 1.6 New & Noteworthy or download a free trial.

 
Close the ALM communication loop with Tasktop 1.6

Task federation, task context capture and to-the-minute time tracking mean that, as developers, we can easily indicate the task we are currently working, collaborate using the ALM tool instead of email, and convert a relevant email thread into a user story with a couple of clicks. Focusing and one-click multitasking across all ALM artifacts ensures that we activate tasks voluntarily, not because it was suggested that we do so. The privacy controls in the time tracking and context capture features streamline collaboration with management without loss of empowerment. And the fact that every task has a context associated with it provides long-term organization value, since it means that when we’re asked to fix a colleagues bug from six months ago, we get to start where they left off. By lining up project management’s needs for visibility with developer’s desire to deliver code without being overly encumbered by process, tool support for Agile task management takes the software development process to a new level of productivity and predictability.

Don’t Break the Build: A Developer’s Guide to Care-Free Commits

by David Shepherd, October 7th, 2009
Summary: Learn how to submit the right files for a given fix every time, even when working on multiple bugs concurrently, avoiding the sin of breaking the build.
Applies to: Tasktop Pro, Eclipse Mylyn
Supported Connectors: ClearQuest, ScrumWorks, JIRA, Rally, CollabNet, Bugzilla
Supported SCMs: CVS, Subversion (SVN), ClearCase (coming soon)

Developers who break the build must wear the hat of shame.
Photo courtesy of seeb’s Photo Stream

In most development circles breaking the build is a serious offense, with good reason. As other programmers check out the broken source code their progress becomes blocked, as they can no longer compile (and thus test) the software. The cost of blocking an entire development team is so large that many shops have resorted to shame tactics, forcing offenders to wear embarrassing hats or shirts. Fortunately, Tasktop can significantly reduce your chances of obtaining a new headpiece by automatically tracking changes related to each task.

Common Problem: Committing Too Much, or Too Little
One of the major causes of build breakage is committing the wrong set of files for a given fix. These types of problems reduce to 1) committing files that are unrelated to the fix and 2) omitting files that are relevant to the fix. Either case can easily cause a broken build as a committed file can reference a new method or field in an uncommitted file. While it might sound easy to track the changed files for a particular task, developers that try to do this manually face several challenges:

  1. Tracking individual tasks can exceed working memory – For some tasks developers must change more than a few files. For any task that requires changes to more than seven files the developer must remember a list of files that exceeds many people’s working memory capacity.
  2. Multi-tasking requires multi-tracking – Developers work on more than one task in parallel, and thus must track files for each task. If a developer is working on five tasks in parallel, changing as few as three files per task requires remembering 15 files, in addition to the file to task mapping.
  3. Tracking changes can span days, or even weeks – A particular development task can often become blocked after the developer has already changed several files. As the developer waits days or even weeks for the task to become unblocked his memory of the changed files will likely start to decay.

Tasktop can help you avoid these problems. It can automatically track the files you change for a given task, freeing up your working memory. Tasktop eliminates the multi-tasking problem as well, tracking changes for each task separately. Finally, it avoids the memory decay problem.

Solution: Automatic Change Set Management

In order to use Tasktop to automatically manage your change sets you only need to activate tasks as you work on them. To activate a task you can click on the icon next to the task in the Task List.

Task List with active task

In this example Bug #59, “Cannot read emails from Thunderbird” has been activated, as indicated by the icon and the bold summary in the Task List.

Once you’ve activated a task continue to edit, compile, debug as you normally would. The only changes to your existing workflow are when you finish a task. Once you finish a task open the Synchronize View and toggle the model mode, as shown below:

Change Sets with Toggle Model Highlighted

Once the model is changed to show change sets you’ll notice that all of your outgoing changes have been arranged by task (i.e., a change set has been created for each task). Similarly, all incoming changes are organized by task. Below the same set of changes is presented in the Java Model Mode (background) and in Change Set Mode (foreground). Many people consider it much easier to interpret the changes in Change Set Mode because all of the changed projects and files for a given task are grouped together in that change set. In the Java Model Mode the changes are listed per project, and thus any changes involving more than one project are scattered throughout this list. Additionally, any project that contains changes for several tasks groups the changes together into one change set.

Change Sets in two different modes

To commit your changes, select the current task, which is bold, and use the context menu to commit the changes. Tasktop automatically fills in your commit comment so that others know which task your changes correspond to, and can navigate from the committed code to the corresponding task.

A commit comment automatically filled in by Tasktop.
In the above commit dialog the commit is for the task 5256 and the automatically generated comment includes the task status, task type, task ID, task summary, and, on the next line, the task URL. The format of the automatically generated comment is configurable, and you can change it to match the format that your team prefers (Window -> Preferences -> Task -> Team) by adding the completion date, the assignee, etc. or rearranging the order of the template. For this commit only one file is involved, the AbstractTaskAssociation.java file, which is shown below the commit comment.

It's not nice to break the build

Allowing Tasktop to manage your change-sets for you has several advantages. First and foremost, it ensures that you are committing the correct files for a given task. Although it is still possible to break the build* the chances of breaking the build are significantly reduced. Additionally, if you abandon a task prior to committing your changes for any reason, it is easy to revert the changes for that task by selecting “Override and Update” for that change set. Furthermore, all of your commits are automatically commented with a link to the relevant task, so others in the team can more easily interpret your changes. If all team members are using change sets to commit their code it can improve collaboration. For instance, a colleague can commit a fix and ask you to test it. Because the incoming changes are organized by change set you can select the fix of interest and just update that change, isolating the code of interest.

Tasktop’s change set management can reduce your mental burden during programming, allowing you to focus on the important problems at hand by tracking the details for you. If you’d like to get started with automatic change set management, download Tasktop Pro.

* If you work on two tasks in parallel that involve changing the same file it is possible to break the build by committing one of the tasks without committing the other.