SlideShare a Scribd company logo
Simplifying Update and Extension Install for RCP applications Susan McCourt (IBM Rational), Steffen Pingel (Tasktop Technologies)
Simplifying RCP Update and Install What (and why) do we need to simplify?
What are we doing about it?
How do p2 and p2/Mylyn Discovery fit together?
Examples and Demos
RCP Install/Update in 3.5 p2 UI class library structured with RCP in mind Separate the building blocks from UI contributions
Configurable policy to control aspects of UI
Building blocks (wizards, pages, viewers, etc.) to customize the experience SDK UI must support a diverse set of users Continuous balancing of concerns
Plug-in developers, update site producers, end users
Product branding has not been critical path RCP users not served well out of the box
RCP Developers' Reaction to 3.5 Customization of UI is too hard Don't want to write Java code
p2 API is too complex
Critical pieces (branding) are missing
Customization examples aren't enough/aren't hitting the right use cases We need a bolt-on self update feature that can handle the 80% case without writing Java code
When a product supports add-ons, our users expect the Firefox Install experience
Deliverables in 3.6 Declare API p2 Operations API  Simple things should be simple
Refactor the 80% case out of the UI code Metadata enhancements to support branding Enhance the story for RCP self-update
Move Mylyn Discovery to p2 Discovery is the recommended install for branded, filtered installs
'Install New Software...' is still the default to support plug-in developer use cases
API:  R3.5 Headless Update
API:  R3.6 Headless Update
API:  Branding Metadata Branding begins at discovery
Discovery can happen in different ways Users read blogs, email, announcements (drag the URL into Eclipse)
Aggregators design catalogs (rankings, search, tags, ...)
Different restrictions in different deployments Once an item has been installed, we need to retain its branding identity Installed software list
Update notifications
RCP Mail Update Example Snapshot of demo, give demo
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("&Tools", M_TOOLS);  toolsMenu.add(preferencesAction); toolsMenu.add(new Separator()); toolsMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); }
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>
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>
RCP Self-Update in 3.5 What's wrong with this  picture?
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); }

More Related Content

PPT
Introduction To Eclipse RCP
PPTX
Eclipse RCP Demo
PDF
Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!
PPT
Eclipse RCP
PPTX
Eclipse RCP Overview @ Rheinjug
PPTX
Plugin architecture (Extensible Application Architecture)
PDF
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
PPTX
[ApacheCon 2016] Advanced Apache Cordova
Introduction To Eclipse RCP
Eclipse RCP Demo
Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!
Eclipse RCP
Eclipse RCP Overview @ Rheinjug
Plugin architecture (Extensible Application Architecture)
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
[ApacheCon 2016] Advanced Apache Cordova

What's hot (20)

PPT
Eclipse - Single Source;Three Runtimes
PPTX
Apache Cordova In Action
PPTX
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
PDF
Five Steps to Add AppUp .NET SDK to Microsoft Visual Studio
PDF
p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...
PPTX
SAPUI5/OpenUI5 - Continuous Integration
PPTX
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
PPTX
[Devoxx Morocco 2015] Apache Cordova In Action
PPTX
Deployingmuleapplications 160903085602
PDF
Laravel Forge: Hello World to Hello Production
PPTX
Appium solution
PPTX
Indianapolis_meetup_April-1st-2022.pptx
PPTX
Tech talks (Automation on Selenium Web Driver. How to begin & implement)
PPTX
Performance Testing REST APIs
PPT
Paragon New and Old Comparassion
PDF
Automation Testing using Selenium
PPTX
UI5con 2017 - UI5 Components - More Performance...
PDF
Appium workshop technopark trivandrum
PDF
Building an Eclipse plugin to recommend changes to developers
PPT
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
Eclipse - Single Source;Three Runtimes
Apache Cordova In Action
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
Five Steps to Add AppUp .NET SDK to Microsoft Visual Studio
p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...
SAPUI5/OpenUI5 - Continuous Integration
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
[Devoxx Morocco 2015] Apache Cordova In Action
Deployingmuleapplications 160903085602
Laravel Forge: Hello World to Hello Production
Appium solution
Indianapolis_meetup_April-1st-2022.pptx
Tech talks (Automation on Selenium Web Driver. How to begin & implement)
Performance Testing REST APIs
Paragon New and Old Comparassion
Automation Testing using Selenium
UI5con 2017 - UI5 Components - More Performance...
Appium workshop technopark trivandrum
Building an Eclipse plugin to recommend changes to developers
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
Ad

Similar to Simplifying RCP Update and Install (20)

PPT
Understanding and extending p2 for fun and profit
PPT
What's new in p2 (2009)?
PPTX
Extend Eclipse p2 framework capabilities: Add your custom installation steps
PPT
Automating the consumption of Eclipse for internal use
PDF
Eclipse Way
PPT
Eclipse Training - Introduction
PPT
Building a p2 update site using Buckminster
PPT
Eclipse Training - RCP & Industrialization
PPT
Eclipse Training - Main eclipse ecosystem classes
PPT
"Eclipse Application Development" at GNUnify 07
ODP
Introduction To The Eclipse Platform
PPT
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen
PPT
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen (In Dan...
PDF
Runtime surgery
ODP
OSGi Sticker Shock Eclipse Con 2010
PDF
Eclipse Packaging Project Usage Data Collector
PPT
C:\Users\User\Desktop\Eclipse Infocenter
PPT
eRCP Overview and Update '06
PDF
P2 Introduction
PPT
Managing Your Runtime With P2
Understanding and extending p2 for fun and profit
What's new in p2 (2009)?
Extend Eclipse p2 framework capabilities: Add your custom installation steps
Automating the consumption of Eclipse for internal use
Eclipse Way
Eclipse Training - Introduction
Building a p2 update site using Buckminster
Eclipse Training - RCP & Industrialization
Eclipse Training - Main eclipse ecosystem classes
"Eclipse Application Development" at GNUnify 07
Introduction To The Eclipse Platform
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen (In Dan...
Runtime surgery
OSGi Sticker Shock Eclipse Con 2010
Eclipse Packaging Project Usage Data Collector
C:\Users\User\Desktop\Eclipse Infocenter
eRCP Overview and Update '06
P2 Introduction
Managing Your Runtime With P2
Ad

Recently uploaded (20)

PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Spectroscopy.pptx food analysis technology
PPTX
Big Data Technologies - Introduction.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Machine learning based COVID-19 study performance prediction
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Encapsulation theory and applications.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
MYSQL Presentation for SQL database connectivity
PDF
MIND Revenue Release Quarter 2 2025 Press Release
“AI and Expert System Decision Support & Business Intelligence Systems”
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Chapter 3 Spatial Domain Image Processing.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
The Rise and Fall of 3GPP – Time for a Sabbatical?
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Spectroscopy.pptx food analysis technology
Big Data Technologies - Introduction.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Machine learning based COVID-19 study performance prediction
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Encapsulation theory and applications.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
MYSQL Presentation for SQL database connectivity
MIND Revenue Release Quarter 2 2025 Press Release

Simplifying RCP Update and Install

  • 1. Simplifying Update and Extension Install for RCP applications Susan McCourt (IBM Rational), Steffen Pingel (Tasktop Technologies)
  • 2. Simplifying RCP Update and Install What (and why) do we need to simplify?
  • 3. What are we doing about it?
  • 4. How do p2 and p2/Mylyn Discovery fit together?
  • 6. RCP Install/Update in 3.5 p2 UI class library structured with RCP in mind Separate the building blocks from UI contributions
  • 7. Configurable policy to control aspects of UI
  • 8. Building blocks (wizards, pages, viewers, etc.) to customize the experience SDK UI must support a diverse set of users Continuous balancing of concerns
  • 9. Plug-in developers, update site producers, end users
  • 10. Product branding has not been critical path RCP users not served well out of the box
  • 11. RCP Developers' Reaction to 3.5 Customization of UI is too hard Don't want to write Java code
  • 12. p2 API is too complex
  • 14. Customization examples aren't enough/aren't hitting the right use cases We need a bolt-on self update feature that can handle the 80% case without writing Java code
  • 15. When a product supports add-ons, our users expect the Firefox Install experience
  • 16. Deliverables in 3.6 Declare API p2 Operations API Simple things should be simple
  • 17. Refactor the 80% case out of the UI code Metadata enhancements to support branding Enhance the story for RCP self-update
  • 18. Move Mylyn Discovery to p2 Discovery is the recommended install for branded, filtered installs
  • 19. 'Install New Software...' is still the default to support plug-in developer use cases
  • 20. API: R3.5 Headless Update
  • 21. API: R3.6 Headless Update
  • 22. API: Branding Metadata Branding begins at discovery
  • 23. Discovery can happen in different ways Users read blogs, email, announcements (drag the URL into Eclipse)
  • 24. Aggregators design catalogs (rankings, search, tags, ...)
  • 25. Different restrictions in different deployments Once an item has been installed, we need to retain its branding identity Installed software list
  • 27. RCP Mail Update Example Snapshot of demo, give demo
  • 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. 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. 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. RCP Self-Update in 3.5 What's wrong with this picture?
  • 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. 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. RCP Self-Update in 3.6 Better?
  • 35. RCP Install One size does not fit all Support, enable, and encourage UI for more targeted groups of users Move Mylyn Discovery to p2 Branded, configurable catalogs, Firefox-like simplicity Look for integration but avoid temptation As p2 catalog and branding metadata evolves, will Mylyn/p2 Discovery replace 'Install New Software...'?
  • 39. Motivation Mylyn has a broad ecosystem of Agile and ALM integrations
  • 40. Users had trouble getting connectors Most connectors are maintained and hosted outside of Eclipse
  • 41. The default p2 installer is geared towards advanced users
  • 43. How can we improve? Simple install
  • 44. Install embedded into regular workflow
  • 45. Support for product information
  • 47. Using p2 Discovery in Your App Code moved to Equinox p2 Feature available in Helios repository since M6 How can I use this? Simple front-end for existing p2 repositories
  • 48. Front-end for branded extension catalogs
  • 49. Simplified p2 Front-end Enables browsing of p2 repositories Meta-data provided by the repository
  • 50. Catalog-based Discovery Enables browsing of extension catalogs Catalog items point to a feature and p2 repository
  • 51. PDE tooling is used for editing Existing Implementations Mylyn connector discovery
  • 53. SpringSource Tool Suite extensions page
  • 55. Remote Catalogs http://.../directory.xml http://eclipse.../catalog.jar http://tasktop.../catalog.jar
  • 58. UI components were designed with extensibility in mind Pluggable discovery strategy
  • 60. Viewer based UI Existing Implementations Eclipse Marketplace Client Build Your Own p2 UI
  • 61. Outlook Streamline install experience Do not require restart
  • 62. Integrate discovery with P2 license and install wizard
  • 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?

Editor's Notes

  • #2: Tasktop: the Task-Focused Desktop
  • #3: Mylyn: a Task Focused UI for Eclipse
  • #4: Mylyn: a Task Focused UI for Eclipse
  • #5: Mylyn: a Task Focused UI for Eclipse
  • #6: Mylyn: a Task Focused UI for Eclipse
  • #7: Mylyn: a Task Focused UI for Eclipse
  • #8: Mylyn: a Task Focused UI for Eclipse
  • #9: Mylyn: a Task Focused UI for Eclipse
  • #10: Mylyn: a Task Focused UI for Eclipse
  • #11: Mylyn: a Task Focused UI for Eclipse
  • #12: Mylyn: a Task Focused UI for Eclipse
  • #13: Mylyn: a Task Focused UI for Eclipse
  • #14: Mylyn: a Task Focused UI for Eclipse
  • #15: Mylyn: a Task Focused UI for Eclipse
  • #16: Mylyn: a Task Focused UI for Eclipse
  • #17: Mylyn: a Task Focused UI for Eclipse
  • #18: Mylyn: a Task Focused UI for Eclipse
  • #19: Mylar: a Task Focused UI for Eclipse
  • #20: 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
  • #21: Go back to years to Ganymede Mylyn is part of most EPP distributions but only Bugzilla is included by default
  • #22: 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
  • #24: 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
  • #25: 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
  • #26: No need for users to know repository urls Harder to verify Based on extension point Entries can come from extension point registry or bundle
  • #28: 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 &gt; Demo
  • #29: This is what&apos;s needed to integrate discovery
  • #30: This is what&apos;s needed to integrate discovery
  • #31: Tasktop Training &gt; Demo Mylyn: a Task Focused UI for Eclipse
  • #32: Tasktop Training Integrate P2 wizards with Discovery Merge with p2 UIs? Drive needs by community demands Mylyn: a Task Focused UI for Eclipse
  • #33: Mylar: a Task Focused UI for Eclipse