Simplifying RCP Update and Install

5,449 views

Published on

EclipseCon 2010 presentation
http://www.eclipsecon.org/2010/sessions/?page=sessions&id=1079

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,449
On SlideShare
0
From Embeds
0
Number of Embeds
273
Actions
Shares
0
Downloads
150
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Tasktop: the Task-Focused Desktop
  • Mylyn: a Task Focused UI for Eclipse
  • Mylyn: a Task Focused UI for Eclipse
  • Mylyn: a Task Focused UI for Eclipse
  • Mylyn: a Task Focused UI for Eclipse
  • Mylyn: a Task Focused UI for Eclipse
  • Mylyn: a Task Focused UI for Eclipse
  • Mylyn: a Task Focused UI for Eclipse
  • Mylyn: a Task Focused UI for Eclipse
  • Mylyn: a Task Focused UI for Eclipse
  • Mylyn: a Task Focused UI for Eclipse
  • Mylyn: a Task Focused UI for Eclipse
  • Mylyn: a Task Focused UI for Eclipse
  • Mylyn: a Task Focused UI for Eclipse
  • Mylyn: a Task Focused UI for Eclipse
  • Mylyn: a Task Focused UI for Eclipse
  • Mylyn: a Task Focused UI for Eclipse
  • Mylar: a Task Focused UI for Eclipse
  • Mylyn is a task-focused interface for Eclipse that integrates task and bug tracking systems by making tasks a first class part of the IDE Connectors are needed to connect to different types of repositories such as Bugzilla or JIRA Ecosystem has grown from a handful connectors to 45
  • Go back to years to Ganymede Mylyn is part of most EPP distributions but only Bugzilla is included by default
  • Firefox extension install was the model for the workflow User should not be concerned with technical details of install No configuration of p2 repositories Branding Hosting of listing on the server
  • Amazing provisioning system available in Eclipse Ganymede shipped in June 2009 with Mylyn 3.2 and discovery Learned that there was a demand for extension install Adopted by Subversive and SpringSource Tool Suite Modelling package reduced size from 400 MB to 250 MB in Helios M6 using discovery Three different ways to use discovery
  • There is not always a need for a separate catalog and meta-data discovery if app has extensions No frills p2 UI Branding (icons) planned for M7
  • No need for users to know repository urls Harder to verify Based on extension point Entries can come from extension point registry or bundle
  • 1. Download directory that points to bundles hard coded in client 2. Download bundles to parse extensions 3. Extentensions points to p2 repositories and IUs > Demo
  • This is what's needed to integrate discovery
  • This is what's needed to integrate discovery
  • Tasktop Training > Demo Mylyn: a Task Focused UI for Eclipse
  • Tasktop Training Integrate P2 wizards with Discovery Merge with p2 UIs? Drive needs by community demands Mylyn: a Task Focused UI for Eclipse
  • Mylar: a Task Focused UI for Eclipse
  • Simplifying RCP Update and Install

    1. 1. Simplifying Update and Extension Install for RCP applications Susan McCourt (IBM Rational), Steffen Pingel (Tasktop Technologies)
    2. 2. Simplifying RCP Update and Install <ul><li>What (and why) do we need to simplify?
    3. 3. What are we doing about it?
    4. 4. How do p2 and p2/Mylyn Discovery fit together?
    5. 5. Examples and Demos </li></ul>
    6. 6. RCP Install/Update in 3.5 <ul><li>p2 UI class library structured with RCP in mind </li><ul><li>Separate the building blocks from UI contributions
    7. 7. Configurable policy to control aspects of UI
    8. 8. Building blocks (wizards, pages, viewers, etc.) to customize the experience </li></ul><li>SDK UI must support a diverse set of users </li><ul><li>Continuous balancing of concerns
    9. 9. Plug-in developers, update site producers, end users
    10. 10. Product branding has not been critical path </li></ul><li>RCP users not served well out of the box </li></ul>
    11. 11. RCP Developers' Reaction to 3.5 <ul><li>Customization of UI is too hard </li><ul><li>Don't want to write Java code
    12. 12. p2 API is too complex
    13. 13. Critical pieces (branding) are missing
    14. 14. Customization examples aren't enough/aren't hitting the right use cases </li></ul><li>We need a bolt-on self update feature that can handle the 80% case without writing Java code
    15. 15. When a product supports add-ons, our users expect the Firefox Install experience </li></ul>
    16. 16. Deliverables in 3.6 <ul><li>Declare API </li><ul><li>p2 Operations API </li><ul><li>Simple things should be simple
    17. 17. Refactor the 80% case out of the UI code </li></ul><li>Metadata enhancements to support branding </li></ul><li>Enhance the story for RCP self-update
    18. 18. Move Mylyn Discovery to p2 </li><ul><li>Discovery is the recommended install for branded, filtered installs
    19. 19. 'Install New Software...' is still the default to support plug-in developer use cases </li></ul></ul>
    20. 20. API: R3.5 Headless Update
    21. 21. API: R3.6 Headless Update
    22. 22. API: Branding Metadata <ul><li>Branding begins at discovery
    23. 23. Discovery can happen in different ways </li><ul><li>Users read blogs, email, announcements (drag the URL into Eclipse)
    24. 24. Aggregators design catalogs (rankings, search, tags, ...)
    25. 25. Different restrictions in different deployments </li></ul><li>Once an item has been installed, we need to retain its branding identity </li><ul><li>Installed software list
    26. 26. Update notifications </li></ul></ul>
    27. 27. RCP Mail Update Example Snapshot of demo, give demo
    28. 28. RCP Example: Good ol' RCP Code Snapshot of demo, give demo Need a status line and progress indicator public void preWindowOpen() { IWorkbenchWindowConfigurer configurer = getWindowConfigurer(); configurer.setInitialSize(new Point(600, 400)); configurer.setShowCoolBar(true); configurer.setShowStatusLine(true); configurer.setShowProgressIndicator(true); } Define menus and locations for additions protected void fillMenuBar(IMenuManager menuBar) { ... MenuManager toolsMenu = new MenuManager(&quot;&Tools&quot;, M_TOOLS); toolsMenu.add(preferencesAction); toolsMenu.add(new Separator()); toolsMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); }
    29. 29. RCP Example: Menu Snapshot of demo, give demo Contribute the menu <extension point=&quot;org.eclipse.ui.menus&quot;> <menuContribution locationURI=&quot;menu:tools?after=additions&quot; > <command commandId= &quot;org.eclipse.equinox.p2.examples.rcp.cloud.command.update&quot; mnemonic=&quot;%Update.command.mnemonic&quot; id=&quot;org.eclipse.equinox.p2.examples.rcp.cloud.menu.update&quot;> </command> </menuContribution> </extension>
    30. 30. RCP Example: Update Command Snapshot of demo, give demo Contribute the command and handler <extension point=&quot;org.eclipse.ui.commands&quot;> <command name=&quot;%Update.command&quot; id=&quot;org.eclipse.equinox.p2.examples.rcp.cloud.command.update&quot;> </command> </extension> <extension point=&quot;org.eclipse.ui.handlers&quot;> <handler commandId=&quot;org.eclipse.equinox.p2.examples.rcp.cloud.command.update&quot; class=&quot;org.eclipse.equinox.p2.examples.rcp.cloud.p2.UpdateHandler&quot;> </handler> </extension>
    31. 31. RCP Self-Update in 3.5 <ul><li>What's wrong with this picture? </li></ul>
    32. 32. RCP Example: Update Code Snapshot of demo, give demo The update code // create the update operation. The defaults are fine. UpdateOperation operation = getProvisioningUI().getUpdateOperation( null , null ); // check for updates operation.resolveModal( null ); if (UpdateSingleIUWizard. validFor (operation)) { // Special case for only updating a single root UpdateSingleIUWizard wizard = new UpdateSingleIUWizard(getProvisioningUI(), operation); WizardDialog dialog = new WizardDialog(getShell(), wizard); dialog.create(); dialog.open(); } else { // Open the normal version of the update wizard getProvisioningUI().openUpdateWizard( false , operation, null); }
    33. 33. RCP Example: Branding Metadata Snapshot of demo, give demo Define a document suitable for displaying in a browser that describes your update. Refer to it in the metadata. <unit id=&quot;org.eclipse.equinox.p2.examples.rcp.cloud.product&quot; version=&quot;2.0.0.z201003162033&quot;> <update id=&quot;org.eclipse.equinox.p2.examples.rcp.cloud.product&quot; description=&quot;This update contains Mylyn Discovery!&quot; range=&quot;0.0.0&quot; severity=&quot;0&quot; uri=&quot;file:/C:/_projects/eclipsecon2010/updatenotification.png&quot; />
    34. 34. RCP Self-Update in 3.6 <ul><li>Better? </li></ul>
    35. 35. RCP Install <ul><li>One size does not fit all </li><ul><li>Support, enable, and encourage UI for more targeted groups of users </li></ul><li>Move Mylyn Discovery to p2 </li><ul><li>Branded, configurable catalogs, Firefox-like simplicity </li></ul><li>Look for integration but avoid temptation </li><ul><li>As p2 catalog and branding metadata evolves, will Mylyn/p2 Discovery replace 'Install New Software...'?
    36. 36. Fight complexity </li><ul><li>Installation conflicts
    37. 37. User configurability </li></ul></ul></ul>
    38. 38. Extension Install
    39. 39. Motivation <ul><li>Mylyn has a broad ecosystem of Agile and ALM integrations
    40. 40. Users had trouble getting connectors </li><ul><li>Most connectors are maintained and hosted outside of Eclipse
    41. 41. The default p2 installer is geared towards advanced users </li></ul></ul>
    42. 42. Extension Install in 2008
    43. 43. How can we improve? <ul><li>Simple install
    44. 44. Install embedded into regular workflow
    45. 45. Support for product information </li></ul>
    46. 46. Extension Install Today
    47. 47. Using p2 Discovery in Your App <ul><li>Code moved to Equinox p2 </li><ul><li>Feature available in Helios repository since M6 </li></ul><li>How can I use this? </li><ul><li>Simple front-end for existing p2 repositories
    48. 48. Front-end for branded extension catalogs </li></ul></ul>
    49. 49. Simplified p2 Front-end <ul><li>Enables browsing of p2 repositories </li><ul><li>Meta-data provided by the repository </li></ul></ul>
    50. 50. Catalog-based Discovery <ul><li>Enables browsing of extension catalogs </li><ul><li>Catalog items point to a feature and p2 repository
    51. 51. PDE tooling is used for editing </li></ul><li>Existing Implementations </li><ul><li>Mylyn connector discovery
    52. 52. Subversive connector installer
    53. 53. SpringSource Tool Suite extensions page </li></ul></ul>
    54. 54. Integrating p2 Discovery
    55. 55. Remote Catalogs http://.../directory.xml http://eclipse.../catalog.jar http://tasktop.../catalog.jar
    56. 56. Catalog Tooling
    57. 57. Catalog Item Descriptor
    58. 58. <ul><li>UI components were designed with extensibility in mind </li><ul><li>Pluggable discovery strategy
    59. 59. Extensible data model
    60. 60. Viewer based UI </li></ul><li>Existing Implementations </li><ul><li>Eclipse Marketplace Client </li></ul></ul>Build Your Own p2 UI
    61. 61. Outlook <ul><li>Streamline install experience </li><ul><li>Do not require restart
    62. 62. Integrate discovery with P2 license and install wizard </li></ul></ul>
    63. 63. P2 Project http://wiki.eclipse.org/Equinox_p2_User_Interface http://wiki.eclipse.org/Equinox/p2/Discovery Mylyn Discovery http://wiki.eclipse.org/Mylyn/Discovery Marketplace Client http://eclipse.org/mpc Questions?

    ×