Skip to content

Contributing to GumTree_74391

nxi edited this page Apr 9, 2015 · 1 revision
Created by Tony Lam, last modified on Jul 24, 2007

Eclipse Way of Contribution

GumTree is an Eclipse based RCP (Rich Client Platfrom) application. It uses the Eclipse Plug-in Architecture to extend its functionality. For consistence, GumTree encourage developers to follow the Eclipse way in contributing new plug-ins into the GumTree workbench. The Eclipse way, as described in Erich Gamma's book: Contributing to Eclipse, demonstrates the culture of plug-in development, but be warn this is not a software engineering development process. It focus on plug-in reusability without breaking contribution from other developers.

Rules for Contribution

An Eclipse tutorial, Contributing to Eclipse: Understanding and Writing Plug-ins, has extracted some key elements in Erich Gamma's book about plug-in contribution:
  • Everything is a contribution.
  • Contribution code is only loaded when it is needed.
  • Separate core functionality from UI functionality.
  • Separate the API of your plug-in from its internals.
  • Add, don't replace.
  • Contributions must conform to expected interfaces.
  • Only contribute if you can successfully operate.
  • Execute all deployment steps.
  • License your feature.
  • Whenever possible let others contribute to your contributions.
  • Reveal the API a little at a time.
  • Extension points accept multiple extensions.
  • As the provider of an extension point, you must protect yourself against misbehavior on the part of Extenders.
  • Clearly identify your plug-in as the source of problems.
  • All clients play by the same rules, even me.
  • In your contributions check and program to the Eclipse API contract.
  • Declare and describe explicitly how your contribution can be extended.
  • Once you have invited others to contribute, try hard to keep your API stable.
  • Separate testing code from plug-in code.
  • Cover both, the Extender and the Enabler behavior of your plug-ins.

Presentation

Document generated by Confluence on Apr 01, 2015 00:11
Clone this wiki locally