Archive for October, 2009

Tasktop working with Microsoft to improve Eclipse on Windows 7

Wednesday, 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.

Watch Tasktop webinars

Agile Task Management with Tasktop 1.6 and Mylyn 3.3

Sunday, 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.

Watch Tasktop webinars

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

Wednesday, 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.

Watch Tasktop webinars