Contributing to Eclipse: Principles, Patterns, and Plug-Ins