How To Make A Framework Plugin That Does Not Suck
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

How To Make A Framework Plugin That Does Not Suck

on

  • 4,141 views

Eclipse plugins that tries to support a specific framework such as Hibernate, JPA, servlets, Struts, Spring, Drools, log4j, etc. all have many of the same challenges but somehow they have a tendency ...

Eclipse plugins that tries to support a specific framework such as Hibernate, JPA, servlets, Struts, Spring, Drools, log4j, etc. all have many of the same challenges but somehow they have a tendency to solve it differently and we end up with a fractured IDE from a usability and architectural perspective.

It seems like everyone understands what functionallity that is specific for their framework, but forget to consider issues like multiple version support, classpath libraries, debugging/launching and coexistence with other 3rd party framework plugins.

After working five years with this in context of JBoss Tools and Eclipse itself I came to realize a lot of this fracture is caused by either not using already existing functionallity available in Eclipse API's or simply not realizing how little effort it actually takes to handle these common issues.

This talk will outline the identified issues and present patterns and in some cases implementation for how framework plugins should be done so they work well within the majority of the Eclipse Java ecosystem.

Statistics

Views

Total Views
4,141
Views on SlideShare
4,073
Embed Views
68

Actions

Likes
1
Downloads
68
Comments
1

3 Embeds 68

http://www.eclipsecon.org 49
http://www.slideshare.net 18
http://www.mefeedia.com 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • great stuff, this should be the start to build something along the lines of the Apple Human Interface Guidelines for Eclipse plugin development, if it's not too late to save us from the current mess
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br />
  • <br />
  • Project Wizards <br /> Class Path containers <br /> New Java Class Wizard, New Servlet, New JPA Mapping <br /> .java, web.ml, .drl, hbm.xml <br /> open-on, find references, open type/resources <br /> compile/validate requires full domain knowledge <br /> refactoring if you are really good <br />
  • Primary use case for Apache Ant Plugin is not as a framework but as to being used. <br /> CVS plugin and SVN plugin team provider plugins; again for using - not for developers to use. <br /> GEF, a plugin to build other plugins with - relies on pure Java plugin for its framework &#x201C;features&#x201D; <br /> <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • Libraries not explicitly defined <br /> Upgrades to plugin magically updates users libraries <br /> Only One Runtime <br />
  • Libraries not explicitly defined <br /> Upgrades to plugin magically updates users libraries <br /> Only One Runtime <br />
  • Libraries not explicitly defined <br /> Upgrades to plugin magically updates users libraries <br /> Only One Runtime <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />

How To Make A Framework Plugin That Does Not Suck Presentation Transcript

  • 1. HOW TO MAKE A FRAMEWORK PLUGIN THAT DOES NOT SUCK by Max Rydahl Andersen, Red Hat
  • 2. WHICH OF THESE ARE FRAMEWORK PLUGINS ? • Hibernate Tools • Seam Tools • Eclipse JDT • SpringIDE • JUnit Plugin • TestNG Plugin • Apache Ant Plugin • CVS Plugin • SVN Plugin • Eclipse CDT • GEF • DroolsIDE
  • 3. TYPICAL KEY FUNCTIONS • Provide support for a (Java) framework • To be used by new and seasoned developers • Setup of Libraries/Dependencies • Wizards to Create Artifacts • Editors for artifacts with code completion • “Compile/Validate” • Navigate between artifacts • Refactoring
  • 4. FRAMEWORK PLUGINS • Hibernate Tools • Seam Tools • Eclipse JDT • SpringIDE • JUnit Plugin • TestNG Plugin • Apache Ant Plugin • CVS Plugin • SVN Plugin • Eclipse CDT • GEF • DroolsIDE
  • 5. DEVELOPERS, DEVELOPERS, DEVELOPERS, ...
  • 6. DEVELOPERS, DEVELOPERS, DEVELOPERS, ... ...are lazy ...don’t read docs ...are not working alone ...uses more than just one framework
  • 7. HOW DO WE SUPPORT LAZY DEVELOPERS THAT DOESN’T READ ?
  • 8. DEFAULTS BASED ON CURRENT SELECTION
  • 9. DEFAULTS BASED ON CURRENT SELECTION s ! c k S u
  • 10. HOW DO WE SUPPORT DEVELOPERS THAT USES MULTIPLE FRAMEWORKS ?
  • 11. s ! c k S u
  • 12. s ! c k S u
  • 13. s ! c k S u S uc ks !
  • 14. GOING BEYOND NATURES • Natures are “stupid markers” and require custom UI • Facets are an API to provide unified enablement and configuration of frameworks •Iview Facets as installer/uninstaller of Natures + standardized Configuration UI • Facet’s have been around since 2006 (Scary!) • Start use them!
  • 15. FACET USER INTERFACE
  • 16. FACET USER INTERFACE
  • 17. ‘N’-RUNTIMES
  • 18. ‘N’-RUNTIMES s ! c k Su
  • 19. ‘N’-RUNTIMES s ! c k Su
  • 20. NAVEL-GAZING CLASSPATH CONTAINERS
  • 21. NAVEL-GAZING CLASSPATH ! CONTAINERS s c k S u
  • 22. NAVEL-GAZING CLASSPATH ! CONTAINERS s c k S u
  • 23. NAVEL-GAZING CLASSPATH CONTAINERS s ! c k S u Consider integrating with Maven...
  • 24. PRACTICE RELATIVITY Folders/Files should be defined relative to a “root” Avoid hard coded names/paths Use logical names instead Make sure sharable settings are storable in a project...
  • 25. BECAUSE THEN YOU ARE SUPPORTING DEVELOPERS THAT WORK WITH OTHER DEVELOPERS, AND...
  • 26. ...YOUR PLUGIN WILL NOT SUCK! ...because you are implementing the key functionalities ...you use selections and good defaults so users doesn’t have to think, type or read (too much) ...you use the configure menu and/or facets to provide consistent UI for framework setup ...you support multiple runtimes to allow use of old and new ...you use relative settings to allow for shareable projects/ configuration in teams
  • 27. ...YOUR PLUGIN WILL NOT SUCK! ...because you are implementing the key functionalities ...you use selections and good defaults so users doesn’t have to think, type or read (too much) ...you use the configure menu and/or facets to provide consistent UI for framework setup ...you support multiple runtimes to allow use of old and new ...you use relative settings to allow for shareable projects/ configuration in teams
  • 28. RELATED LINKS How to report bugs effectively http://bit.ly/cbUW9d Eclipse Facets Tutorial http://bit.ly/aEf1am Navel Gazing Classpath Containers http://bit.ly/9q0h7S Eclipse 2009 Long talk http://bit.ly/cxy61Q
  • 29. QUESTIONS ? Up Next in Steven’s Creek: Pimp My Bug Report • http://in.relation.to/Bloggers/Max • http://twitter.com/maxandersen • http://twitter.com/jbosstools