Archive for the ‘Mylyn’ Category

Eclipse Foundation Board Elections

Friday, March 5th, 2010

Each year the Eclipse Foundation holds an election to vote in board representatives for its committers and sustaining members. If you represent one of these member classes you have one week from today to cast your vote. I’m running as a sustaining member representative and my vision is below. Voting uses a single transferrable voting system, so be sure to read other candidates’ positions before voting.

Vision

Eclipse has reached a stage of maturity that enables Sustaining Members to play a primary role in driving the direction of Eclipse. As Sustaining Members, we represent the largest volume of the Eclipse membership. In 2010 our impact on Eclipse and the value we receive from participating are poised for substantial growth.

I’ve been closely engaged with both the technology and the business aspects of the Eclipse ecosystem since the outset in 2001. I’ve worked directly with many Solution Member companies and watched some Eclipse business models flourish while others have failed. Starting a successful company around Eclipse has given me a pragmatic perspective on how to participate in the platform while growing both product and service revenues on Eclipse-based offerings. As a Sustaining Member representative, my duty will be to apply that knowledge to help make your Eclipse-based efforts successful.

Succeeding in Eclipse means striking a balance between the member, committer and user communities. As board representative, my priorities will be to:

  greenbullet_icon Facilitate reaching users: Marketing in a vendor-neutral open source ecosystem can be far from obvious, and reaching the very broad Eclipse user base is needed for both the commercial success of members and of Eclipse as a whole. I have been closely involved in improving the install story for Eclipse solutions and the upcoming Eclipse Marketplace client. These efforts will provide the next generation of opportunities to get your solution into Eclipse users’ hands.
  greenbullet_icon Lower the barrier to engaging with projects: With product releases and other pressures, too often the step of getting directly involved with an Eclipse project that you build on does not make the cost/benefit cut. But not getting involved has the longer-term cost of incompatibilities and overhead. Lowering the bar for direct participation will provide members with better access to the collaboration and contributor community that make Eclipse a great open source ecosystem. On the Mylyn project we have had over 800 bugs and feature requests resolved by community contributions. I will use my experience of making this work for Mylyn to help lower the overhead of participation with existing projects so that similar benefits are accessible to more members.
  greenbullet_icon Listen to members: My job will be to represent your needs on the board, and I will work with the other representatives to actively seek out feedback from all Solution Members. I helped make the needs of individual committers heard as a committer representative on the Eclipse board, and will ensure that your needs are
represented in discussions and decisions made at the board level.

About the candidate

Dr. Mik Kersten is the CEO of Tasktop Technologies and lead of the Eclipse Mylyn project. Mik is a popular speaker on Eclipse at conferences in the United States, Germany, and worldwide. Highlights of Mik’s contributions to Eclipse include:

  greenbullet_icon Creator and lead of the Eclipse Mylyn project (since 2005)
  greenbullet_icon Active member of the Eclipse Architecture Council (since 2007)
  greenbullet_icon Elected committer representative on the Eclipse Board of Directors in (2008/2009)
  greenbullet_icon Only Eclipse evangelist to be voted a JavaOne Rock Star (2008 and 2009)
  greenbullet_icon Only Eclipse content author on the top authors of the decade list of IBM developerWorks Java
  greenbullet_icon PhD in Computer Science from the University of British Columbia that lead to the invention of Mylyn’s task-focused interface (2006)
  greenbullet_icon Co-creator of the Eclipse AspectJ and AJDT projects (2002) based on his work creating of the first Aspect-Oriented Programming (AOP) tools, Xerox PARC (2000)

Related publications

  greenbullet_icon Symbian Blog: Mik Kersten on Transparency
  greenbullet_icon Tasktop Blog: Growing open source ecosystems: the install story
  greenbullet_icon Tasktop Blog: Tasktop working with Microsoft to improve Eclipse on Windows 7
  greenbullet_icon How Software is Built: Interview with Mik Kersten (highest ranked in series)
  greenbullet_icon Tasktop Blog: Tips on paying for free software
  greenbullet_icon Tasktop Blog: Platform for Innovation, Part 1: Openness & Modularity

Read more about Mik Kersten on Wikipedia.

Be more productive. Guaranteed.

Mylyn Atlassian JIRA Connector Moving

Monday, February 22nd, 2010

The Mylyn JIRA Connector has been developed as part of the Eclipse Mylyn project since 2006 (Bug 109905), when Wesley Coelho and I met in a Vancouver coffee shop and decided to start collaborating on an idea for a startup that involved extending Mylyn’s open source integrations to commercial tools. A year later Wesley became one of the first employees at a new company called Tasktop Technologies, the connector took off, saw steady community contributions, and Mylyn’s reach was extended to JIRA users. Later in 2007 we kicked off a collaboration with Atlassian to improve the JIRA Connector, which in 2008/09 led to Tasktop working with Atlassian to create the initial Atlassian Bamboo and Crucible connectors, now part of the Atlassian Connector for Eclipse effort hosted on studio.atlassian.com. The time has come to merge the two codebases of Atlassian’s Eclipse integrations, and Atlassian has asked that the JIRA connector move to studio.atlassian.com.

According to Atlassian, the decision migrate the source code to their own infrastructure was driven by a desire for greater operational efficiency. Both the implementation of the Connector for Eclipse and the APIs in Atlassian’s server products are evolving, and hosting all these projects in a unified infrastructure enables faster development and more frequent releases of new and improved functionality. The Atlassian Connector for Eclipse will continue to be open source and distributed under the EPL. Anyone can view full project activity and download the full source at https://studio.atlassian.com/browse/PLE. Currently, all committers to the Atlassian Connector for Eclipse are either Atlassian or Tasktop employees, but Atlassian is working to allow others to commit new functionality to the code base.

Mylyn has grown from two integrations to over four dozen, and is playing a driving role in developers’ adoption of Application Lifecycle Management (ALM) and Agile collaboration tools. Having a connector hosted as part of the Mylyn project used to be vital due to the friction of finding and installing Eclipse extensions, and the JIRA connector got very broad exposure. But with our introduction of the Mylyn Connector Discovery feature in last year’s Eclipse Galileo release, it became trivial for users to install Mylyn connectors wherever they are hosted. Also thanks to the discovery mechanism, the move will be transparent to users of the integration.

For users of Tasktop and Mylyn, the main concern is the availability of a high-quality connector. One of the most important aspects of Mylyn’s architecture is that it provides a unified user experience across all integrations, since the majority of the user interaction is handled by the Mylyn framework. Atlassian has provided assurance that they will contribute to the Mylyn framework as part of increasing their own resources behind the integration, which will help ensure that the integration evolves along with upcoming changes in Mylyn. An expected benefit of the move is that some of the shortcomings of the integration that stem from JIRA’s SOAP APIs, such as the lack of support for custom fields and workflows, will be addressed more quickly with all of the code hosted and supported under one umbrella. Tasktop’s relationship with Atlassian continues, and the JIRA connector remains part of the Tasktop Certified program that ensures usability and ALM stack interoperability.

Mylyn’s goal is to provide a framework for Eclipse ALM integrations and to support an ecosystem of extensions. To that end, we have aimed from the start to provide reference integrations to open source tools, starting with Bugzilla. The JIRA integration was the exception as JIRA is closed source, but has been very popular with open source developers due its use in some open source communities such as Apache. The move of the JIRA connector restores the clear split between Mylyn’s reference integrations to open source repositories, hosted on eclipse.org/mylyn and the very the broad ecosystem of integrations with closed source tools. This will help focus the resources of the project on the core framework and open source integrations, while mechanisms such as Connector Discovery and the Tasktop Certified program ensure easy installation and the quality of the connectors that developers need to get the most out of Mylyn.

Be more productive. Guaranteed.

Mastering the Eclipse Toolset: Change Sets

Tuesday, 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

Thursday, 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

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

Eclipse ecosystem: Open discourse at the risk of open conflict

Thursday, 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

Friday, 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

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

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.

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.