SlideShare a Scribd company logo
1 of 126
Using p2 for fun and profit Pascal Rapicault*  Ian Bull** Andrew Niefer* Jeff McAffer** * IBM Rational ** EclipseSource
Provision what  –  where Engineers Users Test Automated  Builds Test source code open source licensed software in-house built applications tools runtimes
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Wide range of requirements
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],p2 is about installing!
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Trends in Eclipse
How does p2 help? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
From Install to Service ,[object Object],[object Object],[object Object],[object Object],p2 offers a  continuum   from initial installation to serviceability
p2 in wild ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Outline ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
What is RCP? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
What is a Product? ,[object Object],[object Object],[object Object],[object Object],[object Object]
Creating a feature based product ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Creating a feature based product ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Creating a feature based product ,[object Object]
Creating a feature for our plug-in ,[object Object],[object Object]
A feature for the p2 parts ,[object Object],[object Object]
Creating the product file ,[object Object],[object Object],[object Object],[object Object]
Launching the product (from within eclipse)
The running product In self-hosting mode, the application being launched is not p2-enabled, as such the p2 dialogs can not be brought up. We can only update if we have a  profile. This problem will unlikely be addressed in 3.5.
Publishing the application to a repository
The result of the export ,[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
One construct to rule them all Decouple decision making from the actual content Everything is an IU Everything is installable It is also referred to as “metadata” IU (id, ver)
Anatomy of an IU Provided Capabilities Required Capabilities Properties Artifact  reference Actions Class:  IInstallableUnit IU (id, ver)
Anatomy of an IU, more ,[object Object],[object Object],[object Object],[object Object]
Anatomy of an IU, requirements / capabilities ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Separation of concerns ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Metadata Artifacts
Artifacts ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Repositories ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Metadata Repository ,[object Object],[object Object],[object Object],[object Object],[object Object]
Built-in metadata repositories ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Artifact Repository ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Artifact Repository ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Id + version == unique content ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[1] Andrew’s short talk.
Built-in artifact repositories ,[object Object],[object Object],[object Object]
p2 Architecture Metadata Artifacts Runtimes Profiles OS Eclipse Engine Eclipse Classic Eclipse for C++ Other Director Repositories Touchpoints
The Director Application ,[object Object],[object Object],[object Object],[object Object],http://wiki.eclipse.org/Equinox_p2_director_application
Running the director ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
p2 in Action Transports Http/Https File system Volume Director Profiles Runtimes Provisioning operation requested Metadata fetched and constraints analyzed IU install, uninstall, update operations Artifact availability and mirroring Mirroring Data transfer IUs configured into runtimes Profile updated Repositories p2 Update Site Engine Eclipse/OSGi Native/OS
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
A p2-enabled application ,[object Object],[object Object]
What is being run ,[object Object]
Layout of an installation Configuration area p2 data area Artifact repository index. This allows the plug-ins to be served to other instances.
Configuration data detailed ,[object Object],[object Object],[object Object],Configuration area Simple configurator data
p2 data area Download cache, where non-eclipse pieces are mirrored before being installed. Profile registry Storage for the profile Lock file created when the profile is being modified Current and previous state of the system MailApp.profile
Profile and profile registry ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Management modes and profile registry ,[object Object],[object Object],[object Object],[object Object],[object Object]
Changing a profile ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Creating an update ,[object Object]
Version Numbers ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Installing the update
Installing the update ,[object Object],[object Object]
After the update and restart
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Creating a new plug-in to install ,[object Object]
Create a feature to deliver our plug-ins ,[object Object]
Exporting the feature ,[object Object],[object Object]
The publisher ,[object Object],[object Object],[object Object],[object Object],[object Object]
Features and Bundles Publisher ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],This will generate metadata for the plug-ins and features found in source. Note that PDE has an option to do it automatically.
Installing the newly created extension
 
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Example: Building with p2
Slicing repositories ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],<p2.mirror   source= &quot;${Eclipse.Repo-3.5M6}&quot;   destination= &quot;${p2Repo}&quot; > <slicingOptions   followStrict= &quot;true&quot;   /> <iu   id= &quot;org.eclipse.equinox.p2.user.ui.feature.group&quot;   /> <iu   id= &quot;org.eclipse.ecf&quot; /> <iu   id= &quot;org.eclipse.ecf.filetransfer&quot; /> .... <iu   id= &quot;org.apache.ant&quot; /> <iu   id= &quot;org.eclipse.core.runtime.compatibility.registry&quot; /> </p2.mirror> ,[object Object],[org.eclipse.pde.build.examples.rcp.cloud.releng/buildProduct.xml createP2Repo]
Transforming repositories ,[object Object],[object Object],[object Object],[object Object],<p2.repo2runnable   destination= &quot;${transformedRepoLocation}&quot; > <source   dir= &quot;${repoBaseLocation}/&quot;   includes= &quot;*&quot; /> </p2.repo2runnable> ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[org.eclipse.pde.build/scripts/genericTargets.xml transformRepos]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Publishing metadata ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[org.eclipse.pde.build.examples.rcp.cloud.releng/buildDirectory/assemble.org.eclipse.pde.build.container.feature.win32.win32.x86.xml]
Publishing Products ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Running the Director ,[object Object],[object Object],<java   jar= &quot;${equinoxLauncherJar}&quot;   fork= &quot;true&quot;   failonerror= &quot;true&quot; > <arg   line= &quot;-application org.eclipse.equinox.p2.director.app.application&quot;   /> <arg   line= &quot;-nosplash&quot;   /> <arg   line= &quot;--launcher.suppressErrors&quot;   /> <arg   line= &quot;-consoleLog&quot;   /> <arg   line= &quot;-flavor ${p2.flavor}&quot;   /> <arg   line= &quot;-installIU ${p2.director.iu}&quot;   /> <arg   line= &quot;-version ${p2.director.version}&quot;   /> <arg   line= &quot;-p2.os ${os}&quot;   /> <arg   line= &quot;-p2.ws ${ws}&quot;   /> <arg   line= &quot;-p2.arch ${arch}&quot;   /> <arg   line= &quot;-roaming&quot;   /> <arg   line= &quot;-profile ${p2.director.profile}&quot;   /> <arg   line= &quot;${p2.director.extraArgs}&quot;   /> <arg   line= &quot;-metadataRepository&quot; /> <arg   value= &quot;${p2.repo}&quot;   /> <arg   line= &quot;-artifactRepository&quot; /> <arg   value= &quot;${p2.repo}&quot;   /> <arg   line= &quot;-destination&quot; /> <arg   value= &quot;${p2.director.installPath}&quot;   /> <arg   line= &quot;-bundlepool&quot; /> <arg   value= &quot;${p2.director.bundlepool}&quot;   /> <jvmarg   value= &quot;-Declipse.p2.data.area=${p2.director.dataArea}&quot;   /> <jvmarg   line= &quot;${p2.director.extraVMArgs}&quot;   /> </java> [org.eclipse.pde.build/scripts/genericTargets.xml runDirector]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Categorizing repository content ,[object Object]
Creating the category
Categorizing our feature
 
UpdateSite Publisher ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],When using the category.xml, use the org.eclipse.equinox.p2.publisher.CategoryPublisher
 
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Installable Unit Fragments ,[object Object],[object Object],[object Object],[object Object],[object Object],Class: IInstallableUnitFragment
Installable Unit Patches ,[object Object],[object Object],[object Object],[object Object],[object Object],Note: In 3.5 the feature patch editor only exposes some of those capabilities. See also http://aniefer.blogspot.com/2009/06/patching-features-with-p2.html
Installable Units ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Understanding the metadata generated ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],<provided namespace='osgi.bundle' name='org.apache.commons.codec' version='1.3.0'/> <provided namespace='java.package' name='org.apache.commons.codec' version='1.3.0'/> <provided namespace='java.package' name='org.apache.commons.codec.binary' version='1.3.0'/> <provided namespace='java.package' name='org.apache.commons.codec.digest' version='1.3.0'/> <provided namespace='java.package' name='org.apache.commons.codec.language' version='1.3.0'/> <provided namespace='java.package' name='org.apache.commons.codec.net' version='1.3.0'/> <provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
Understanding the metadata generated ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],<provided namespace='osgi.fragment' name='org.eclipse.swt' version='3.5.0.v3536b'/> <provided namespace='osgi.bundle' name='org.eclipse.swt.win32.win32.x86' version='3.5.0.v3536b'/> It is important to remember that this is only the metadata generated by the applications provided as part of the publisher, but the metadata is generic and is yours to extend.
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Plug-ins map ECF Eclipse  touchpoint Native  touchpoint Tooling OSGi Update site  repository engine Metadata Director Repository UI … …
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Core plug-ins ( 1 /2)
Core plug-ins (2/2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[1] - Ant task - http://wiki.eclipse.org/Equinox/p2_Ant_Tasks
Transport related plug-ins ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Eclipse management ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[1] – Actions defined by eclipse touchpoint - http://wiki.eclipse.org/Equinox/p2/Engine/Touchpoint_Instructions
Native support ,[object Object],[object Object],[1] – Actions defined by native touchpoint - http://wiki.eclipse.org/Equinox/p2/Engine/Touchpoint_Instructions
UI plug-ins ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Repositories implementation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Misc management bundles ,[object Object],[object Object],[object Object],[object Object],[object Object],[1] – Director application doc - http://wiki.eclipse.org/Equinox_p2_director_application
Tooling plug-ins ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[1] - Ant task - http://wiki.eclipse.org/Equinox/p2_Ant_Tasks
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Tweaking the p2 UI for your audience ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Add a p2 Preference Page ,[object Object],[object Object],[object Object],[object Object]
Adding Automated Updates and other p2 Preferences ,[object Object]
Remove automatic updates ,[object Object],[object Object],[object Object],[object Object]
Customizing the UI ,[object Object],[object Object],[object Object],[object Object],[object Object]
Example – Control the Update ,[object Object],[object Object],[object Object],[object Object]
Example – Control the Update
The controlled mode ,[object Object],[object Object]
Granularity of what is visible ,[object Object],[object Object],[object Object],[object Object],[object Object]
Granularity of what is visible
Updating on Startup ,[object Object]
UI code snippets ,[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Queryable / Query ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Profile ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Planning a profile change ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Engine ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Engine flowchart
Touchpoint / actions ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Engine and actions put together
Artifact processor ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Canonical JBDiff Artifact  Repository Pack200 Pack200 Processor Artifact processor, illustrated
References ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Thank you
F.A.Q.
Bundle Pooling ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Installing just a plug-in ,[object Object],[object Object],[object Object]
Boot sequence ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Missing requirements ,[object Object],[object Object],[object Object],[object Object]

More Related Content

What's hot

Front-end development introduction (HTML, CSS). Part 1
Front-end development introduction (HTML, CSS). Part 1Front-end development introduction (HTML, CSS). Part 1
Front-end development introduction (HTML, CSS). Part 1Oleksii Prohonnyi
 
What's new in NextJS 13_.pdf
What's new in NextJS 13_.pdfWhat's new in NextJS 13_.pdf
What's new in NextJS 13_.pdfTapanPatel847364
 
Aspect oriented software development
Aspect oriented software developmentAspect oriented software development
Aspect oriented software developmentMaryam Malekzad
 
MSI Run-Time Logging and Debugging
MSI Run-Time Logging and DebuggingMSI Run-Time Logging and Debugging
MSI Run-Time Logging and DebuggingFlexera
 
DSC IIITL Flutter Workshop
DSC IIITL Flutter WorkshopDSC IIITL Flutter Workshop
DSC IIITL Flutter WorkshopDSCIIITLucknow
 
Workshop on Basics of Software Engineering (DFD, UML and Project Culture)
Workshop on Basics of Software Engineering (DFD, UML and Project Culture)Workshop on Basics of Software Engineering (DFD, UML and Project Culture)
Workshop on Basics of Software Engineering (DFD, UML and Project Culture)Dr Sukhpal Singh Gill
 

What's hot (8)

Front-end development introduction (HTML, CSS). Part 1
Front-end development introduction (HTML, CSS). Part 1Front-end development introduction (HTML, CSS). Part 1
Front-end development introduction (HTML, CSS). Part 1
 
What's new in NextJS 13_.pdf
What's new in NextJS 13_.pdfWhat's new in NextJS 13_.pdf
What's new in NextJS 13_.pdf
 
Aspect oriented software development
Aspect oriented software developmentAspect oriented software development
Aspect oriented software development
 
MSI Run-Time Logging and Debugging
MSI Run-Time Logging and DebuggingMSI Run-Time Logging and Debugging
MSI Run-Time Logging and Debugging
 
DSC IIITL Flutter Workshop
DSC IIITL Flutter WorkshopDSC IIITL Flutter Workshop
DSC IIITL Flutter Workshop
 
Divisão de Imagens 3D com CloudCompare
Divisão de Imagens 3D com CloudCompareDivisão de Imagens 3D com CloudCompare
Divisão de Imagens 3D com CloudCompare
 
Workshop on Basics of Software Engineering (DFD, UML and Project Culture)
Workshop on Basics of Software Engineering (DFD, UML and Project Culture)Workshop on Basics of Software Engineering (DFD, UML and Project Culture)
Workshop on Basics of Software Engineering (DFD, UML and Project Culture)
 
Agile Usability
Agile UsabilityAgile Usability
Agile Usability
 

Similar to Understanding and extending p2 for fun and profit

Managing Your Runtime With P2
Managing Your Runtime With P2Managing Your Runtime With P2
Managing Your Runtime With P2Pascal Rapicault
 
Extend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation stepsExtend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation stepsDragos_Mihailescu
 
Simplifying RCP Update and Install
Simplifying RCP Update and InstallSimplifying RCP Update and Install
Simplifying RCP Update and Installsusanfmccourt
 
Automating the consumption of Eclipse for internal use
Automating the consumption of Eclipse for internal useAutomating the consumption of Eclipse for internal use
Automating the consumption of Eclipse for internal usePascal Rapicault
 
p2, modular provisioning for OSGi
p2, modular provisioning for OSGip2, modular provisioning for OSGi
p2, modular provisioning for OSGiPascal Rapicault
 
Introduction To Eclipse RCP
Introduction To Eclipse RCPIntroduction To Eclipse RCP
Introduction To Eclipse RCPwhbath
 
ITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-insITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-insTonny Madsen
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview Lars Vogel
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Mack Hardy
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introductionvstorm83
 
Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019  Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019 Allan De Castro
 
Titanium Studio [Updated - 18/12/2011]
Titanium Studio [Updated - 18/12/2011]Titanium Studio [Updated - 18/12/2011]
Titanium Studio [Updated - 18/12/2011]Sentinel Solutions Ltd
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Mikkel Flindt Heisterberg
 
Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Mikkel Flindt Heisterberg
 
Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Mikkel Flindt Heisterberg
 
Android application structure
Android application structureAndroid application structure
Android application structureAlexey Ustenko
 

Similar to Understanding and extending p2 for fun and profit (20)

Managing Your Runtime With P2
Managing Your Runtime With P2Managing Your Runtime With P2
Managing Your Runtime With P2
 
What's new in p2 (2009)?
What's new in p2 (2009)?What's new in p2 (2009)?
What's new in p2 (2009)?
 
Extend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation stepsExtend Eclipse p2 framework capabilities: Add your custom installation steps
Extend Eclipse p2 framework capabilities: Add your custom installation steps
 
Simplifying RCP Update and Install
Simplifying RCP Update and InstallSimplifying RCP Update and Install
Simplifying RCP Update and Install
 
Automating the consumption of Eclipse for internal use
Automating the consumption of Eclipse for internal useAutomating the consumption of Eclipse for internal use
Automating the consumption of Eclipse for internal use
 
p2, modular provisioning for OSGi
p2, modular provisioning for OSGip2, modular provisioning for OSGi
p2, modular provisioning for OSGi
 
Introduction To Eclipse RCP
Introduction To Eclipse RCPIntroduction To Eclipse RCP
Introduction To Eclipse RCP
 
ITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-insITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-ins
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
 
Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019  Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019
 
Titanium Studio [Updated - 18/12/2011]
Titanium Studio [Updated - 18/12/2011]Titanium Studio [Updated - 18/12/2011]
Titanium Studio [Updated - 18/12/2011]
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)
 
Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)
 
Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)
 
Alfresco Architecture
Alfresco ArchitectureAlfresco Architecture
Alfresco Architecture
 
Android application structure
Android application structureAndroid application structure
Android application structure
 
Eclipse IDE
Eclipse IDEEclipse IDE
Eclipse IDE
 
Eclipse - Single Source;Three Runtimes
Eclipse - Single Source;Three RuntimesEclipse - Single Source;Three Runtimes
Eclipse - Single Source;Three Runtimes
 

Recently uploaded

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 

Recently uploaded (20)

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

Understanding and extending p2 for fun and profit

  • 1. Using p2 for fun and profit Pascal Rapicault* Ian Bull** Andrew Niefer* Jeff McAffer** * IBM Rational ** EclipseSource
  • 2. Provision what – where Engineers Users Test Automated Builds Test source code open source licensed software in-house built applications tools runtimes
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19. Launching the product (from within eclipse)
  • 20. The running product In self-hosting mode, the application being launched is not p2-enabled, as such the p2 dialogs can not be brought up. We can only update if we have a profile. This problem will unlikely be addressed in 3.5.
  • 21. Publishing the application to a repository
  • 22.
  • 23.
  • 24. One construct to rule them all Decouple decision making from the actual content Everything is an IU Everything is installable It is also referred to as “metadata” IU (id, ver)
  • 25. Anatomy of an IU Provided Capabilities Required Capabilities Properties Artifact reference Actions Class: IInstallableUnit IU (id, ver)
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37. p2 Architecture Metadata Artifacts Runtimes Profiles OS Eclipse Engine Eclipse Classic Eclipse for C++ Other Director Repositories Touchpoints
  • 38.
  • 39.
  • 40. p2 in Action Transports Http/Https File system Volume Director Profiles Runtimes Provisioning operation requested Metadata fetched and constraints analyzed IU install, uninstall, update operations Artifact availability and mirroring Mirroring Data transfer IUs configured into runtimes Profile updated Repositories p2 Update Site Engine Eclipse/OSGi Native/OS
  • 41.
  • 42.
  • 43.
  • 44. Layout of an installation Configuration area p2 data area Artifact repository index. This allows the plug-ins to be served to other instances.
  • 45.
  • 46. p2 data area Download cache, where non-eclipse pieces are mirrored before being installed. Profile registry Storage for the profile Lock file created when the profile is being modified Current and previous state of the system MailApp.profile
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 54.
  • 55. After the update and restart
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62. Installing the newly created extension
  • 63.  
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 76.  
  • 77.
  • 78.  
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87. Plug-ins map ECF Eclipse touchpoint Native touchpoint Tooling OSGi Update site repository engine Metadata Director Repository UI … …
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104. Example – Control the Update
  • 105.
  • 106.
  • 107. Granularity of what is visible
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 116.
  • 117. Engine and actions put together
  • 118.
  • 119. Canonical JBDiff Artifact Repository Pack200 Pack200 Processor Artifact processor, illustrated
  • 120.
  • 122. F.A.Q.
  • 123.
  • 124.
  • 125.
  • 126.

Editor's Notes

  1. HENRIK What does it mean to “provision Eclipse in the Entrprise” – it could mean anything from provisioning source code and pre-built components to developers to automatic and policy driven installation of in-house built applications based to servers, desktop machines and small handheld device.
  2. HENRIK Eclipse and Equinox is used for many purposes – and users has expressed a wide variety of requirements – requirements that often are direct conflict.
  3. JEFF
  4. JEFF
  5. JEFF
  6. `