Contributing to GumTree_74391 - Gumtree/gumtree GitHub Wiki

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
⚠️ **GitHub.com Fallback** ⚠️