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