Five Reasons to Love Mylar
Changing the way you write software
Feb. 21, 2007 12:00 PM
Modern development environments bring multiple integrated tools to developers' fingertips. Integration of editors and compilers for multiple languages, database browsers, framework-specific development tools, and more are commonplace and considered by many to be entry-level features: the minimum support required to be taken seriously. But modern development environments miss out when it comes to integrating the most important part: the developer.
Bringing multiple tools that work well together with a harmonized look and feel help a software developer be productive. However, as systems built using integrated development environments get more and more complex with larger and larger code bases, just having tools that are easy to find and use isn't enough. Modern developers need a development environment that focuses first class tools on the artifacts that they care about, and exposes only those artifacts that they're interested in and hide away everything else. The days of tool-focused development environments are numbered with the introduction of Eclipse Mylar. Mylar changes the way that you write software: rather than bringing a collection of tools to the development artifacts, Mylar brings the development artifacts to the tools.
With this in mind, we present five reasons to love Mylar.
Mylar Focuses You on Your Task
To exploit the power of Mylar, you must break your activities (development and otherwise) into tasks. Each task defines some portion of the work that needs to be undertaken. As you start to work with Mylar, you may find that your tasks are quite coarse-grained ("Create an application"), but with some experience, tasks become more fine-grained ("Modify the editor generated by EMF into a view"). This evolution occurs as you learn to explicitly factor your development activities into smaller, more easily managed bits (this is something that many people do implicitly). Tasks can be of various levels of granularity, but - as we'll see later - finer-grained tasks tend to best leverage the power of Mylar. Tasks can be categorized, so you can keep multiple, separate collections of tasks. Tasks help you keep track of progress. By defining and actively managing a category of tasks, you can easily keep track of how much of your work is complete (see Figure 1), and how much more there is to do.
The Task List can be filtered to hide entire categories, complete tasks, or tasks with a priority below a specified threshold. As a task manager, the Task List is quite functional.
Mylar Only Shows What You're Interested in
As you navigate through your workspace, Mylar builds a context that keeps track of the files, types, methods and other artifacts that you touch. Every time you touch some artifact (by opening a file, modifying types and methods, etc.) Mylar keeps track of that touch and uses it to compile a collection of things that you're interested in. The things you are interested in are shown in the various views and everything else is hidden. As the interest in an artifact increases, its decoration in views changes: Java classes and methods that you work with very frequently, for example, will appear bold in the lists.
Figure 2 shows a new task after opening a single class file. Note that only one class, along with its containment hierarchy, is visible in the Package Explorer (there are several hundred other classes in the workspace, but only this one is visible). Note also that the outline view is completely blank and all the methods in the editor are automatically folded (the method bodies are hidden) since none of them have been touched.
Figure 3 shows the same workspace after some minor edits have been made to the class. Now, the drawImage() method is unfolded; it also appears in the Package Explorer and Outline views. As other methods are edited, they too will appear in these views.
As you become less interested in artifacts (by working with them less frequently), their decoration starts to fade (bold items become normal, normal items become gray) and eventually drops from sight. The belief upon which Mylar is built is that if you make a change in an artifact, you are likely to make another change. Further, in completing a task, you are more likely to work again with artifacts that you've worked with frequently. The converse is also true: as the frequency with which you work on an artifact decreases, so too is the likelihood that you'll make future changes. Mylar manages this evolving level of interest and responds accordingly.
Views can be toggled to disable the filtering of their content by clicking the "Focus on Active Task" button (); you might turn this off in the Package Explorer to make it easier to find an artifact that is hidden by Mylar and then turn it back on once you've found it. Java developers tend to have to do this infrequently due to the power inherent in the Eclipse Java Development Tools (JDT), which make opening related types and members easy. It is also possible to suspend the current task to allow you to explore unrelated artifacts without cluttering your views with artifacts that are not pertinent to the task.
Mylar's support for exposing only those artifacts you're interested in includes files and other types of data. The "out-of-the-box" Mylar experience integrates very tightly with Java by including Java types and members in the context. Mylar exposes APIs for providing similar levels of integration with other kinds of information, including other languages.
Mylar Remembers What You Were Doing When You Switch Between Tasks
Not only does Mylar keep track of what you're doing, it keeps track of it on a task-by-task basis. Figure 4 shows what an Eclipse workspace looks like while working on a bug for an Eclipse Corner article (bug 138600).
Figure 5 shows the same window, but with a different active task. This particular task (Eclipse Bugzilla bug 164658) touches three different files (note that this and the previous task are concerned with non-Java artifacts).
As you switch between the tasks, the state of the various views in the workbench show what Mylar has determined is interesting for that specific task and hides everything else. Only one task can be active at one time, but you can switch the active task in several ways. Tasks can activated (or deactivated) via the popup menu in the task editor, entries in the "Navigate" menu, or by clicking on the first column in the row corresponding with the task in the task list. To make things even easier, you can very easily flip between recent tasks by using the drop-down on the task list as shown in Figure 6.
The name of the currently active task is shown at the top of the Task List view; the active task is also indicated by the solid bullet in the first column of the table in the Task List view.
By managing a separate context for each task, Mylar lets the developer focus on very fine-grained tasks and switch focus quickly and easily. As you switch tasks, Mylar immediately draws your attention to the artifacts that are pertinent to that task, thereby reducing the time wasted trying to reacquaint yourself with the problem and getting you started working on solving it.
Mylar Hooks To External Task Repositories
The Mylar download site (www.eclipse.org/mylar/dl.php) offers support for integrating with Bugzilla (www.bugzilla.org/), JIRA (www.atlassian.com/software/jira/), and Trac (http://trac.edgewall.org/). There are also efforts underway to integrate Mylar with XPlanner (www.xplanner.org/) and other task repositories. By connecting to a task repository, tasks can be made persistent outside of the development environment and shared with other developers.
Figure 7 shows the Mylar Task List displaying bugs stored in multiple repositories. The first task category, "Open Harmony Bugs," connects to the JIRA repository used by Apache Harmony developers (http://harmony.apache.org/). The other categories contain tasks obtained from Eclipse Bugzilla (https://bugs.eclipse.org/bugs/) through various queries.