SlideShare a Scribd company logo
APACHE SLING & FRIENDS TECH MEETUP
BERLIN, 23-25 SEPTEMBER 2013
Sling IDE Tooling
Robert Munteanu – rombert@apache.org
A little bit about myself
2
●
Apache Sling
committer
●
Long-time Open
Source developer
( MantisBT , Eclipse
Mylyn Connectors )
●
Working on Adobe
CQ
adaptTo() 2013
Agenda
adaptTo() 2013 3
●
Why did we start working on IDE tooling?
●
What have we done so far?
●
What do we want to do next?
●
How is the IDE tooling developed?
Why did we start work on IDE tooling?
4
[INFO] --- maven-sling-plugin:2.1.0:install (default-cli) @ ui ---
[INFO] Installing Bundle ui(.../ui/target/ui-0.1-SNAPSHOT.jar) to
http://localhost:8080/system/console via POST
[INFO] Bundle installed
[INFO]
------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] Sling Content Explorer - UI ....................... SUCCESS [5.85s]
[INFO]
------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO]
------------------------------------------------------------------------
[INFO] Total time: 5.850s
adaptTo() 2013
Why did we start work on IDE tooling?
5adaptTo() 2013
JCR Repository
nt:file nt:folder
nt:unstructured
Dav Client
Why did we start work on IDE tooling?
6adaptTo() 2013
Sling Repository
JCR Resource Provider
FileSystem Resource Provider
Local workspace
Why did we start work on IDE tooling?
7
$ vlt --version
Jackrabbit FileVault [version 3.0.0-SNAPSHOT] Copyright 2013 by
Apache Software Foundation. See LICENSE.txt for more information.
$ vlt up
Connecting via JCR remoting to http://localhost:8080/server
U var/sling/bundle-
content/org.apache.sling.launchpad.content/.content.xml
U var/sling/bundle-content/ui/.content.xml
U var/discovery/impl/clusterInstances/2fd93037-3e2c-48a3-a295-
26fb5d3a999f/.content.xm
U apps/jcrtest/install/some.config.pid.xml
U libs/sling/servlet/default/authenticate.jsp
U libs/sling/servlet/default/edit-body.jsp
U libs/sling/servlet/default/properties-custom.jsp
adaptTo() 2013
Intermission – FileVault primer
8
<workspaceFilter vesion="1.0">
<filter root="/apps/slingDemo">
<exclude pattern="^.*/form.*$" />
</filter>
<filter root="/content/slingDemo"/>
</workspaceFilter>
adaptTo() 2013
Intermission – FileVault primer
9adaptTo() 2013
Intermission – FileVault primer
10
<jcr:root
jcr:primaryType="sling:Folder"
jcr:mixinTypes="[vlt:FullCoverage]"
jcr:title=“My Sling Folder“>
<my-child-node
jcr:primaryType="nt:unstructured"
jcr:title="My child node..."
tags="[to-review,to-dispatch]"
visible="{Boolean}false"
publishTime="{Date}2013-09-04T10:00:00.000+03:00"/>
</jcr:root>
adaptTo() 2013
What have we done so far?
adaptTo() 2013 11
●
Oct 2012 – Slingclipse first announced
by Antonio Sanso
●
May 2013 – Plans set out for initial
release for Sling IDE Tooling
●
Aug 2013 – FileVault donated to ASF
●
Sep 2013 – FileVault included in Sling
IDE Tooling Preview
What have we done so far?
adaptTo() 2013 12
Demo time
●
Server definition
●
Content synchronization
●
Bundle redeploy
What do we want to do next?
adaptTo() 2013 13
Sling IDE Tooling Roadmap
●
Community involvement – users and
contributors
●
Stabilize and deliver Eclipse tooling 1.0
●
Investigate tooling for other IDEs
●
$YOUR_FEATURE_HERE
How is the IDE tooling developed?
adaptTo() 2013 14
Eclipse
Core
UI
m2e-UI
Content Sync
FileVault
Resource
APIs and
Core Utilities
Transport
Filter
Serialize
Resources
adaptTo() 2013 15
●
Sling IDE Tools preview update site –
http://people.apache.org/~rombert/slin
g/ide/preview/
http://s.apache.org/sling-ide-preview
●
Sling IDE Tools codebase -
http://svn.apache.org/repos/asf/sling/b
ranches/tooling-ide-vlt/tooling/ide/
(soon to move to trunk)
Q&A
adaptTo() 2013 16
Q&A
Thank you
adaptTo() 2013 17

More Related Content

What's hot

Sleep Peacefully as Maven Tycho Builds your Product
Sleep Peacefully as Maven Tycho Builds your ProductSleep Peacefully as Maven Tycho Builds your Product
Sleep Peacefully as Maven Tycho Builds your Product
Subramanyam C
 
Scala, Functional Programming and Team Productivity
Scala, Functional Programming and Team ProductivityScala, Functional Programming and Team Productivity
Scala, Functional Programming and Team Productivity
7mind
 
Test your Kubernetes operator with Operator Lifecycle Management
Test your Kubernetes operator with Operator Lifecycle ManagementTest your Kubernetes operator with Operator Lifecycle Management
Test your Kubernetes operator with Operator Lifecycle Management
Baiju Muthukadan
 
How to build your own OpenStack distro using Puppet OpenStack
How to build your own OpenStack distro using Puppet OpenStackHow to build your own OpenStack distro using Puppet OpenStack
How to build your own OpenStack distro using Puppet OpenStack
OpenStack
 
PROMAND 2014 project structure
PROMAND 2014 project structurePROMAND 2014 project structure
PROMAND 2014 project structure
Alexey Buzdin
 
Izumi 1.0: Your Next Scala Stack
Izumi 1.0: Your Next Scala StackIzumi 1.0: Your Next Scala Stack
Izumi 1.0: Your Next Scala Stack
7mind
 
Taming startup dynamics - Magnus Jungsbluth & Domagoj Cosic
Taming startup dynamics - Magnus Jungsbluth & Domagoj CosicTaming startup dynamics - Magnus Jungsbluth & Domagoj Cosic
Taming startup dynamics - Magnus Jungsbluth & Domagoj Cosic
mfrancis
 
Apache Ant
Apache AntApache Ant
Apache Ant
Ali Bahu
 
ScalaUA - distage: Staged Dependency Injection
ScalaUA - distage: Staged Dependency InjectionScalaUA - distage: Staged Dependency Injection
ScalaUA - distage: Staged Dependency Injection
7mind
 
EclipseMAT
EclipseMATEclipseMAT
EclipseMAT
Ali Bahu
 
Introduction to Spring Boot
Introduction to Spring BootIntroduction to Spring Boot
Introduction to Spring Boot
Trey Howard
 
Making the Most of Your Gradle Build
Making the Most of Your Gradle BuildMaking the Most of Your Gradle Build
Making the Most of Your Gradle Build
Andres Almiray
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
Jonathan Holloway
 
Hyper-pragmatic Pure FP testing with distage-testkit
Hyper-pragmatic Pure FP testing with distage-testkitHyper-pragmatic Pure FP testing with distage-testkit
Hyper-pragmatic Pure FP testing with distage-testkit
7mind
 
Intro To OSGi
Intro To OSGiIntro To OSGi
Intro To OSGi
Stephan Janssen
 
Avoid the chaos - Handling 100+ OSGi Components - Balázs Zsoldos
Avoid the chaos - Handling 100+ OSGi Components - Balázs ZsoldosAvoid the chaos - Handling 100+ OSGi Components - Balázs Zsoldos
Avoid the chaos - Handling 100+ OSGi Components - Balázs Zsoldos
mfrancis
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android Infrastructure
Alexey Buzdin
 
Making the Most of Your Gradle Build
Making the Most of Your Gradle BuildMaking the Most of Your Gradle Build
Making the Most of Your Gradle Build
Andres Almiray
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot Introduction
Jeevesh Pandey
 
The Web on OSGi: Here's How
The Web on OSGi: Here's HowThe Web on OSGi: Here's How
The Web on OSGi: Here's How
mrdon
 

What's hot (20)

Sleep Peacefully as Maven Tycho Builds your Product
Sleep Peacefully as Maven Tycho Builds your ProductSleep Peacefully as Maven Tycho Builds your Product
Sleep Peacefully as Maven Tycho Builds your Product
 
Scala, Functional Programming and Team Productivity
Scala, Functional Programming and Team ProductivityScala, Functional Programming and Team Productivity
Scala, Functional Programming and Team Productivity
 
Test your Kubernetes operator with Operator Lifecycle Management
Test your Kubernetes operator with Operator Lifecycle ManagementTest your Kubernetes operator with Operator Lifecycle Management
Test your Kubernetes operator with Operator Lifecycle Management
 
How to build your own OpenStack distro using Puppet OpenStack
How to build your own OpenStack distro using Puppet OpenStackHow to build your own OpenStack distro using Puppet OpenStack
How to build your own OpenStack distro using Puppet OpenStack
 
PROMAND 2014 project structure
PROMAND 2014 project structurePROMAND 2014 project structure
PROMAND 2014 project structure
 
Izumi 1.0: Your Next Scala Stack
Izumi 1.0: Your Next Scala StackIzumi 1.0: Your Next Scala Stack
Izumi 1.0: Your Next Scala Stack
 
Taming startup dynamics - Magnus Jungsbluth & Domagoj Cosic
Taming startup dynamics - Magnus Jungsbluth & Domagoj CosicTaming startup dynamics - Magnus Jungsbluth & Domagoj Cosic
Taming startup dynamics - Magnus Jungsbluth & Domagoj Cosic
 
Apache Ant
Apache AntApache Ant
Apache Ant
 
ScalaUA - distage: Staged Dependency Injection
ScalaUA - distage: Staged Dependency InjectionScalaUA - distage: Staged Dependency Injection
ScalaUA - distage: Staged Dependency Injection
 
EclipseMAT
EclipseMATEclipseMAT
EclipseMAT
 
Introduction to Spring Boot
Introduction to Spring BootIntroduction to Spring Boot
Introduction to Spring Boot
 
Making the Most of Your Gradle Build
Making the Most of Your Gradle BuildMaking the Most of Your Gradle Build
Making the Most of Your Gradle Build
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
 
Hyper-pragmatic Pure FP testing with distage-testkit
Hyper-pragmatic Pure FP testing with distage-testkitHyper-pragmatic Pure FP testing with distage-testkit
Hyper-pragmatic Pure FP testing with distage-testkit
 
Intro To OSGi
Intro To OSGiIntro To OSGi
Intro To OSGi
 
Avoid the chaos - Handling 100+ OSGi Components - Balázs Zsoldos
Avoid the chaos - Handling 100+ OSGi Components - Balázs ZsoldosAvoid the chaos - Handling 100+ OSGi Components - Balázs Zsoldos
Avoid the chaos - Handling 100+ OSGi Components - Balázs Zsoldos
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android Infrastructure
 
Making the Most of Your Gradle Build
Making the Most of Your Gradle BuildMaking the Most of Your Gradle Build
Making the Most of Your Gradle Build
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot Introduction
 
The Web on OSGi: Here's How
The Web on OSGi: Here's HowThe Web on OSGi: Here's How
The Web on OSGi: Here's How
 

Viewers also liked

Slide IDE Tooling (adaptTo 2016)
Slide IDE Tooling (adaptTo 2016)Slide IDE Tooling (adaptTo 2016)
Slide IDE Tooling (adaptTo 2016)
Robert Munteanu
 
Effective web application development with Apache Sling
Effective web application development with Apache SlingEffective web application development with Apache Sling
Effective web application development with Apache Sling
Robert Munteanu
 
Of microservices and microservices
Of microservices and microservicesOf microservices and microservices
Of microservices and microservices
Robert Munteanu
 
Do you really want to go fully micro?
Do you really want to go fully micro?Do you really want to go fully micro?
Do you really want to go fully micro?
Robert Munteanu
 
Apache Sling as an OSGi-powered REST middleware
Apache Sling as an OSGi-powered REST middlewareApache Sling as an OSGi-powered REST middleware
Apache Sling as an OSGi-powered REST middleware
Robert Munteanu
 
Apache Sling as a Microservices Gateway
Apache Sling as a Microservices GatewayApache Sling as a Microservices Gateway
Apache Sling as a Microservices Gateway
Robert Munteanu
 
Apache Jackrabbit Oak - Scale your content repository to the cloud
Apache Jackrabbit Oak - Scale your content repository to the cloudApache Jackrabbit Oak - Scale your content repository to the cloud
Apache Jackrabbit Oak - Scale your content repository to the cloud
Robert Munteanu
 

Viewers also liked (7)

Slide IDE Tooling (adaptTo 2016)
Slide IDE Tooling (adaptTo 2016)Slide IDE Tooling (adaptTo 2016)
Slide IDE Tooling (adaptTo 2016)
 
Effective web application development with Apache Sling
Effective web application development with Apache SlingEffective web application development with Apache Sling
Effective web application development with Apache Sling
 
Of microservices and microservices
Of microservices and microservicesOf microservices and microservices
Of microservices and microservices
 
Do you really want to go fully micro?
Do you really want to go fully micro?Do you really want to go fully micro?
Do you really want to go fully micro?
 
Apache Sling as an OSGi-powered REST middleware
Apache Sling as an OSGi-powered REST middlewareApache Sling as an OSGi-powered REST middleware
Apache Sling as an OSGi-powered REST middleware
 
Apache Sling as a Microservices Gateway
Apache Sling as a Microservices GatewayApache Sling as a Microservices Gateway
Apache Sling as a Microservices Gateway
 
Apache Jackrabbit Oak - Scale your content repository to the cloud
Apache Jackrabbit Oak - Scale your content repository to the cloudApache Jackrabbit Oak - Scale your content repository to the cloud
Apache Jackrabbit Oak - Scale your content repository to the cloud
 

Similar to Sling IDE Tooling @ adaptTo 2013

Sling Applications - A DevOps perspective
Sling Applications - A DevOps perspectiveSling Applications - A DevOps perspective
Sling Applications - A DevOps perspective
Robert Munteanu
 
Using Maven2
Using Maven2Using Maven2
Using Maven2
elliando dias
 
Slim3 quick start
Slim3 quick startSlim3 quick start
Slim3 quick start
Guangyao Cao
 
Pixels_Camp
Pixels_CampPixels_Camp
Pixels_Camp
Nelson Gomes
 
Lean microservices through ahead of time compilation (Tobias Piper, Loveholid...
Lean microservices through ahead of time compilation (Tobias Piper, Loveholid...Lean microservices through ahead of time compilation (Tobias Piper, Loveholid...
Lean microservices through ahead of time compilation (Tobias Piper, Loveholid...
London Microservices
 
Struts2 tutorial
Struts2 tutorialStruts2 tutorial
Struts2 tutorial
izdihara
 
Spring boot
Spring bootSpring boot
Spring boot
jacob benny john
 
Struts2 tutorial
Struts2 tutorialStruts2 tutorial
Struts2 tutorial
Achyuta Kumar
 
Struts2 tutorial
Struts2 tutorialStruts2 tutorial
Struts2 tutorial
Suhas Kamble
 
Ensemble oscon 2011
Ensemble oscon 2011Ensemble oscon 2011
Ensemble oscon 2011
OSCON Byrum
 
Developing Drizzle Replication Plugins
Developing Drizzle Replication PluginsDeveloping Drizzle Replication Plugins
Developing Drizzle Replication Plugins
Padraig O'Sullivan
 
Meet Magento Spain 2019 - Our Experience with Magento Cloud
Meet Magento Spain 2019 - Our Experience with Magento CloudMeet Magento Spain 2019 - Our Experience with Magento Cloud
Meet Magento Spain 2019 - Our Experience with Magento Cloud
Lyzun Oleksandr
 
Gradle como alternativa a maven
Gradle como alternativa a mavenGradle como alternativa a maven
Gradle como alternativa a maven
David Gómez García
 
DevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChungDevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChung
KAI CHU CHUNG
 
One-Man Ops
One-Man OpsOne-Man Ops
One-Man Ops
Jos Boumans
 
Pyramid Deployment and Maintenance
Pyramid Deployment and MaintenancePyramid Deployment and Maintenance
Pyramid Deployment and Maintenance
Jazkarta, Inc.
 
Inithub.org presentation
Inithub.org presentationInithub.org presentation
Inithub.org presentation
Aaron Welch
 
OpenDayLight (ODL) Project
OpenDayLight (ODL) ProjectOpenDayLight (ODL) Project
OpenDayLight (ODL) Project
Vahid Sadri
 
Magento & Cloud - Korostelov Avexey
Magento & Cloud - Korostelov AvexeyMagento & Cloud - Korostelov Avexey
Magento & Cloud - Korostelov Avexey
Magecom UK Limited
 
#SFSE Lightning Talk: WebDriver, ScalaTest, SBT and IntelliJ-IDEA
#SFSE Lightning Talk: WebDriver, ScalaTest, SBT and IntelliJ-IDEA#SFSE Lightning Talk: WebDriver, ScalaTest, SBT and IntelliJ-IDEA
#SFSE Lightning Talk: WebDriver, ScalaTest, SBT and IntelliJ-IDEA
Sauce Labs
 

Similar to Sling IDE Tooling @ adaptTo 2013 (20)

Sling Applications - A DevOps perspective
Sling Applications - A DevOps perspectiveSling Applications - A DevOps perspective
Sling Applications - A DevOps perspective
 
Using Maven2
Using Maven2Using Maven2
Using Maven2
 
Slim3 quick start
Slim3 quick startSlim3 quick start
Slim3 quick start
 
Pixels_Camp
Pixels_CampPixels_Camp
Pixels_Camp
 
Lean microservices through ahead of time compilation (Tobias Piper, Loveholid...
Lean microservices through ahead of time compilation (Tobias Piper, Loveholid...Lean microservices through ahead of time compilation (Tobias Piper, Loveholid...
Lean microservices through ahead of time compilation (Tobias Piper, Loveholid...
 
Struts2 tutorial
Struts2 tutorialStruts2 tutorial
Struts2 tutorial
 
Spring boot
Spring bootSpring boot
Spring boot
 
Struts2 tutorial
Struts2 tutorialStruts2 tutorial
Struts2 tutorial
 
Struts2 tutorial
Struts2 tutorialStruts2 tutorial
Struts2 tutorial
 
Ensemble oscon 2011
Ensemble oscon 2011Ensemble oscon 2011
Ensemble oscon 2011
 
Developing Drizzle Replication Plugins
Developing Drizzle Replication PluginsDeveloping Drizzle Replication Plugins
Developing Drizzle Replication Plugins
 
Meet Magento Spain 2019 - Our Experience with Magento Cloud
Meet Magento Spain 2019 - Our Experience with Magento CloudMeet Magento Spain 2019 - Our Experience with Magento Cloud
Meet Magento Spain 2019 - Our Experience with Magento Cloud
 
Gradle como alternativa a maven
Gradle como alternativa a mavenGradle como alternativa a maven
Gradle como alternativa a maven
 
DevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChungDevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChung
 
One-Man Ops
One-Man OpsOne-Man Ops
One-Man Ops
 
Pyramid Deployment and Maintenance
Pyramid Deployment and MaintenancePyramid Deployment and Maintenance
Pyramid Deployment and Maintenance
 
Inithub.org presentation
Inithub.org presentationInithub.org presentation
Inithub.org presentation
 
OpenDayLight (ODL) Project
OpenDayLight (ODL) ProjectOpenDayLight (ODL) Project
OpenDayLight (ODL) Project
 
Magento & Cloud - Korostelov Avexey
Magento & Cloud - Korostelov AvexeyMagento & Cloud - Korostelov Avexey
Magento & Cloud - Korostelov Avexey
 
#SFSE Lightning Talk: WebDriver, ScalaTest, SBT and IntelliJ-IDEA
#SFSE Lightning Talk: WebDriver, ScalaTest, SBT and IntelliJ-IDEA#SFSE Lightning Talk: WebDriver, ScalaTest, SBT and IntelliJ-IDEA
#SFSE Lightning Talk: WebDriver, ScalaTest, SBT and IntelliJ-IDEA
 

More from Robert Munteanu

Secure by Default Web Applications
Secure by Default Web ApplicationsSecure by Default Web Applications
Secure by Default Web Applications
Robert Munteanu
 
Will it blend? Java agents and OSGi
Will it blend? Java agents and OSGiWill it blend? Java agents and OSGi
Will it blend? Java agents and OSGi
Robert Munteanu
 
Escape the defaults - Configure Sling like AEM as a Cloud Service
Escape the defaults - Configure Sling like AEM as a Cloud ServiceEscape the defaults - Configure Sling like AEM as a Cloud Service
Escape the defaults - Configure Sling like AEM as a Cloud Service
Robert Munteanu
 
Crash course in Kubernetes monitoring
Crash course in Kubernetes monitoringCrash course in Kubernetes monitoring
Crash course in Kubernetes monitoring
Robert Munteanu
 
Java agents for fun and (not so much) profit
Java agents for fun and (not so much) profitJava agents for fun and (not so much) profit
Java agents for fun and (not so much) profit
Robert Munteanu
 
Will it blend? Java agents and OSGi
Will it blend? Java agents and OSGiWill it blend? Java agents and OSGi
Will it blend? Java agents and OSGi
Robert Munteanu
 
Cloud-native legacy applications
Cloud-native legacy applicationsCloud-native legacy applications
Cloud-native legacy applications
Robert Munteanu
 
Cloud-Native Sling
Cloud-Native SlingCloud-Native Sling
Cloud-Native Sling
Robert Munteanu
 
From Monolith to Modules - breaking apart a one size fits all product into mo...
From Monolith to Modules - breaking apart a one size fits all product into mo...From Monolith to Modules - breaking apart a one size fits all product into mo...
From Monolith to Modules - breaking apart a one size fits all product into mo...
Robert Munteanu
 
What's new in the Sling developer tooling?
What's new in the Sling developer tooling?What's new in the Sling developer tooling?
What's new in the Sling developer tooling?
Robert Munteanu
 
Scaling up development of a modular code base
Scaling up development of a modular code baseScaling up development of a modular code base
Scaling up development of a modular code base
Robert Munteanu
 
Scaling up development of a modular code base
Scaling up development of a modular code baseScaling up development of a modular code base
Scaling up development of a modular code base
Robert Munteanu
 
Scaling up development of a modular code base
Scaling up development of a modular code baseScaling up development of a modular code base
Scaling up development of a modular code base
Robert Munteanu
 
Zero downtime deployments for Sling application using Docker
Zero downtime deployments for Sling application using DockerZero downtime deployments for Sling application using Docker
Zero downtime deployments for Sling application using Docker
Robert Munteanu
 
Scaling up development of a modular code base
Scaling up development of a modular code baseScaling up development of a modular code base
Scaling up development of a modular code base
Robert Munteanu
 
Secure by Default Web Applications with Apache Sling
Secure by Default Web Applications with Apache SlingSecure by Default Web Applications with Apache Sling
Secure by Default Web Applications with Apache Sling
Robert Munteanu
 
Effective Web Application Development with Apache Sling
Effective Web Application Development with Apache SlingEffective Web Application Development with Apache Sling
Effective Web Application Development with Apache Sling
Robert Munteanu
 
Building domain-specific testing tools : lessons learned from the Apache Slin...
Building domain-specific testing tools : lessons learned from the Apache Slin...Building domain-specific testing tools : lessons learned from the Apache Slin...
Building domain-specific testing tools : lessons learned from the Apache Slin...
Robert Munteanu
 
Effective Web Application Development with Apache Sling
Effective Web Application Development with Apache SlingEffective Web Application Development with Apache Sling
Effective Web Application Development with Apache Sling
Robert Munteanu
 
Tdd Primer
Tdd PrimerTdd Primer
Tdd Primer
Robert Munteanu
 

More from Robert Munteanu (20)

Secure by Default Web Applications
Secure by Default Web ApplicationsSecure by Default Web Applications
Secure by Default Web Applications
 
Will it blend? Java agents and OSGi
Will it blend? Java agents and OSGiWill it blend? Java agents and OSGi
Will it blend? Java agents and OSGi
 
Escape the defaults - Configure Sling like AEM as a Cloud Service
Escape the defaults - Configure Sling like AEM as a Cloud ServiceEscape the defaults - Configure Sling like AEM as a Cloud Service
Escape the defaults - Configure Sling like AEM as a Cloud Service
 
Crash course in Kubernetes monitoring
Crash course in Kubernetes monitoringCrash course in Kubernetes monitoring
Crash course in Kubernetes monitoring
 
Java agents for fun and (not so much) profit
Java agents for fun and (not so much) profitJava agents for fun and (not so much) profit
Java agents for fun and (not so much) profit
 
Will it blend? Java agents and OSGi
Will it blend? Java agents and OSGiWill it blend? Java agents and OSGi
Will it blend? Java agents and OSGi
 
Cloud-native legacy applications
Cloud-native legacy applicationsCloud-native legacy applications
Cloud-native legacy applications
 
Cloud-Native Sling
Cloud-Native SlingCloud-Native Sling
Cloud-Native Sling
 
From Monolith to Modules - breaking apart a one size fits all product into mo...
From Monolith to Modules - breaking apart a one size fits all product into mo...From Monolith to Modules - breaking apart a one size fits all product into mo...
From Monolith to Modules - breaking apart a one size fits all product into mo...
 
What's new in the Sling developer tooling?
What's new in the Sling developer tooling?What's new in the Sling developer tooling?
What's new in the Sling developer tooling?
 
Scaling up development of a modular code base
Scaling up development of a modular code baseScaling up development of a modular code base
Scaling up development of a modular code base
 
Scaling up development of a modular code base
Scaling up development of a modular code baseScaling up development of a modular code base
Scaling up development of a modular code base
 
Scaling up development of a modular code base
Scaling up development of a modular code baseScaling up development of a modular code base
Scaling up development of a modular code base
 
Zero downtime deployments for Sling application using Docker
Zero downtime deployments for Sling application using DockerZero downtime deployments for Sling application using Docker
Zero downtime deployments for Sling application using Docker
 
Scaling up development of a modular code base
Scaling up development of a modular code baseScaling up development of a modular code base
Scaling up development of a modular code base
 
Secure by Default Web Applications with Apache Sling
Secure by Default Web Applications with Apache SlingSecure by Default Web Applications with Apache Sling
Secure by Default Web Applications with Apache Sling
 
Effective Web Application Development with Apache Sling
Effective Web Application Development with Apache SlingEffective Web Application Development with Apache Sling
Effective Web Application Development with Apache Sling
 
Building domain-specific testing tools : lessons learned from the Apache Slin...
Building domain-specific testing tools : lessons learned from the Apache Slin...Building domain-specific testing tools : lessons learned from the Apache Slin...
Building domain-specific testing tools : lessons learned from the Apache Slin...
 
Effective Web Application Development with Apache Sling
Effective Web Application Development with Apache SlingEffective Web Application Development with Apache Sling
Effective Web Application Development with Apache Sling
 
Tdd Primer
Tdd PrimerTdd Primer
Tdd Primer
 

Recently uploaded

Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
ScyllaDB
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
Ivo Velitchkov
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
Fwdays
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
christinelarrosa
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
Fwdays
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
Enterprise Knowledge
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
christinelarrosa
 

Recently uploaded (20)

Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
 

Sling IDE Tooling @ adaptTo 2013

  • 1. APACHE SLING & FRIENDS TECH MEETUP BERLIN, 23-25 SEPTEMBER 2013 Sling IDE Tooling Robert Munteanu – rombert@apache.org
  • 2. A little bit about myself 2 ● Apache Sling committer ● Long-time Open Source developer ( MantisBT , Eclipse Mylyn Connectors ) ● Working on Adobe CQ adaptTo() 2013
  • 3. Agenda adaptTo() 2013 3 ● Why did we start working on IDE tooling? ● What have we done so far? ● What do we want to do next? ● How is the IDE tooling developed?
  • 4. Why did we start work on IDE tooling? 4 [INFO] --- maven-sling-plugin:2.1.0:install (default-cli) @ ui --- [INFO] Installing Bundle ui(.../ui/target/ui-0.1-SNAPSHOT.jar) to http://localhost:8080/system/console via POST [INFO] Bundle installed [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] Sling Content Explorer - UI ....................... SUCCESS [5.85s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 5.850s adaptTo() 2013
  • 5. Why did we start work on IDE tooling? 5adaptTo() 2013 JCR Repository nt:file nt:folder nt:unstructured Dav Client
  • 6. Why did we start work on IDE tooling? 6adaptTo() 2013 Sling Repository JCR Resource Provider FileSystem Resource Provider Local workspace
  • 7. Why did we start work on IDE tooling? 7 $ vlt --version Jackrabbit FileVault [version 3.0.0-SNAPSHOT] Copyright 2013 by Apache Software Foundation. See LICENSE.txt for more information. $ vlt up Connecting via JCR remoting to http://localhost:8080/server U var/sling/bundle- content/org.apache.sling.launchpad.content/.content.xml U var/sling/bundle-content/ui/.content.xml U var/discovery/impl/clusterInstances/2fd93037-3e2c-48a3-a295- 26fb5d3a999f/.content.xm U apps/jcrtest/install/some.config.pid.xml U libs/sling/servlet/default/authenticate.jsp U libs/sling/servlet/default/edit-body.jsp U libs/sling/servlet/default/properties-custom.jsp adaptTo() 2013
  • 8. Intermission – FileVault primer 8 <workspaceFilter vesion="1.0"> <filter root="/apps/slingDemo"> <exclude pattern="^.*/form.*$" /> </filter> <filter root="/content/slingDemo"/> </workspaceFilter> adaptTo() 2013
  • 9. Intermission – FileVault primer 9adaptTo() 2013
  • 10. Intermission – FileVault primer 10 <jcr:root jcr:primaryType="sling:Folder" jcr:mixinTypes="[vlt:FullCoverage]" jcr:title=“My Sling Folder“> <my-child-node jcr:primaryType="nt:unstructured" jcr:title="My child node..." tags="[to-review,to-dispatch]" visible="{Boolean}false" publishTime="{Date}2013-09-04T10:00:00.000+03:00"/> </jcr:root> adaptTo() 2013
  • 11. What have we done so far? adaptTo() 2013 11 ● Oct 2012 – Slingclipse first announced by Antonio Sanso ● May 2013 – Plans set out for initial release for Sling IDE Tooling ● Aug 2013 – FileVault donated to ASF ● Sep 2013 – FileVault included in Sling IDE Tooling Preview
  • 12. What have we done so far? adaptTo() 2013 12 Demo time ● Server definition ● Content synchronization ● Bundle redeploy
  • 13. What do we want to do next? adaptTo() 2013 13 Sling IDE Tooling Roadmap ● Community involvement – users and contributors ● Stabilize and deliver Eclipse tooling 1.0 ● Investigate tooling for other IDEs ● $YOUR_FEATURE_HERE
  • 14. How is the IDE tooling developed? adaptTo() 2013 14 Eclipse Core UI m2e-UI Content Sync FileVault Resource APIs and Core Utilities Transport Filter Serialize
  • 15. Resources adaptTo() 2013 15 ● Sling IDE Tools preview update site – http://people.apache.org/~rombert/slin g/ide/preview/ http://s.apache.org/sling-ide-preview ● Sling IDE Tools codebase - http://svn.apache.org/repos/asf/sling/b ranches/tooling-ide-vlt/tooling/ide/ (soon to move to trunk)

Editor's Notes

  1. A couple of words about myself ; I&apos;m primarily a Java developer, with occasional breakouts in web development. I have a long history of contributing to Open Source projects and am currently working at Adobe on CQ. And here&apos;s a less-than-140-characters quote on how I feel about Sling and the surrounding ecosystem (… ). Of course, &apos;hacking late at night&apos; and &apos;need to finish presentation for and code for adaptTo&apos; are two completely unrelated events, don&apos;t let anyone tell you otherwise.
  2. Here&apos;s what I want to go over in the next 60-odd minutes. We&apos;ll have a general Q&amp;A session at the end. In the meantime, if you have very specific questions about the topic I&apos;m discussing, please interrupt me. I watch out of InterruptedExceptions and resume gracefuly with no memory corruption ;-)
  3. There are a number of ways of getting content into your Sling instance at development time. I&apos;m only going to focus on development time, and only on Open-Source, Sling-applicable solutions. Probably the most obvious solution is to use the maven tooling. There&apos;s absolutely nothing wrong with it, and it&apos;s a solid approach. You can deploy Java code and you can deploy content using the Sling-Initial-Content approach. By show of hands, how many of you practice this approach at development time? The only critique to this approach is that it&apos;s not IDE-driven. It&apos;s not incremental. You have to Alt-TAB ( or Cmd-Tab, if you will ) out of your IDE to do that. And it&apos;s not instant. Typically UX/HCI rules of the thumb are – 0.1 seconds means instant, 1 second is noticeable, but does not interrupt flow, 10 seconds means loss of focus. Now this example might be about a large content deployment, but nevertheless ; I don&apos;t want to switch programs. Otherwise I&apos;d be happy with vim, the git cli and curl. And trust me, even though I&apos;m a Linux die-hard and very comfortable using the CLI, I prefer Eclipse.
  4. Another way of doing development is webdav. The JCR repository wrapped by Sling &apos;speaks&apos; WebDavish. If you have a client which speaks the same tongue, you&apos;re all set. You can modify files, directories … and that about does it. Again, by show of hands, does anyone use webdav at development time? Notice that I mentioned three node types, webdav handles nt:file, nt:folder and their derivatives nicely, but does not ( and probably can not ) handle other kinds of nodes, or metadata attached to file-like and folder-like nodes. And another roadblock is that it doesn&apos;t work directly with my IDE. Even if it would, a remote FS is very unpredictable when it comes to performance, and I for one am very sensitive about performance, and I supposed you are as well.
  5. Another approach – and one which I find quite elegant is the FS Resource Provider. Instead of trying to pull the content from the repository, it uses the Sling ResourceProvider extension point to mount the local filesystem in the repository. This approach has been demo&apos;ed in the Rookie session, for those that were there. Now, surprise, surprise, by show of hands, who uses this at development time? Again, this approach works fine if you want to work with files and folders only. It doesn&apos;t support arbitrary node types though, and has the disadvantage of your content not really being in the repository. That is not a problem for green-field projects, but in long-running projects which are coded against the JCR API this doesn&apos;t fly. And, of course, there are many valid reasons to code against the JCR API.
  6. A fairly recent addition to my list of development-time approaches is using the FileVault CLI interface. FileVault was donated to the ASF as part of the Jackrabbit project in August. Those of you working with CQ are probably familiar with it, but anyway... FileVault is a project ( java library, OSGi bundle, CLI tool ) which provides a JCR repository to filesystem mapping. VLT is the CLI tool, and it provides operations similar to the svn CLI tool: import/export, checkin/checkout, diff etc. It&apos;s incremental, and defines a representation format for arbitrary content structures. It also has a format for defining arbitrary filters which map repositories to workspaces.
  7. This is how FileVault defines its filters. The root element is a (surprise) workspace filter, and it can contain one to N filter entries. Each filter defines a root – and that&apos;s all it can hold. For instance the second filter matches everything under /content/slingDemo. But it can also user patterns to include/exclude content. One use case is to exclude user-generated content. And that&apos;s what the first filter aims to do, checkout everything except for nodes whose name starts with &apos;form&apos; .
  8. I&apos;ve mentioned that FileVault can serialize arbitrary content to disk. To be brief, content which is not covered by regular file or folder attributes in the filesystem is converted into a .content.xml file, which holds all those extra attributes.
  9. Some node types will be compacted into a full xml file. This node type can be of arbitrary depth, and fully covers the node structure beneath it. For brevity, I&apos;ve shown how a node ( jcr:root ) and a child node ( my-child-node ) are represented. Note that we properly represent multi-valued properties ( tags ), non-String properties ( visible, publishTime ). And if you&apos;re wondering – why on Earth are we taking a crash course in FileVault instead of seeing the Sling IDE tools … stay put :-) we&apos;ll be there in a couple of slides.
  10. These are the major events ( at least IMO ) in the current Sling IDE tooling timeline (read, comment). AS kicked off Slingclipse, out of nowhere. He just came to the mailing list and said – hey, I have this cool Eclipse plugin which does this and that. And made me get off my butt and contribute. So hat tip to Antonio for getting this rolling. In the mean time, we&apos;ve added two more contributors from the Sling community, and yesterday we&apos;ve had our first contributor patch. So things are looking up :-) And yes, the reason for going through the FileVault stuff is that it&apos;s the primary transport/serialization/filter mechanism for the Sling IDE Tooling.
  11. And now, Demo time! I&apos;ve tried to give a not-so-subtle hint that the work we&apos;ve done so far is Eclipse-only. The reasons are very simple – it&apos;s what we use, it&apos;s what we know how to develop. But, as you&apos;ll see a bit later, we&apos;ve tried hard to keep some of the parts IDE-independent, so they can be reused in other IDE plug-ins or in any other Java-based environment for that matter.
  12. As for the roadmap, for me personally the biggest item is to get people on board. And that means both users and contributors. If you know what I mean, nudge, nudge, wink, wink. And I see that as a prerequisite for stabilizing and delivering a first release – whether it&apos;s branded as 1.0 or not. And going beyond that, investigating tooling for other IDEs, which is actually a subset of the $YOUR_FEATURE_HERE part, but I wanted it to stand out to make it clear that we&apos;re not doing only Eclipse tooling. But, it&apos;s up to you to help us decide.
  13. Going a bit into the &apos;how stuff happens&apos; part, this is the project structure for the current IDE tooling. First one is the API/Core part. This defines to contracts for how a content sync implementation { transports, filters for inclusion/exclusion, and serializes to/from disk} contents. There are currently two implementations. The main one is FileVault-based, and you&apos;ve seen how that works. The second one is Resource-based. It&apos;s a little greyed out since it&apos;s a proof-of-concept rather than production-ready. It was the initial implementation and was used in driving the APIs from the left part of the screen. Now, some people have asked, and with good reason, why two implementations? There are a couple of reasons 1. Testing ; these APIs will allows us to mock Content Sync implementations and create integration tests for the plugins. 2. API cleanliness; FileVault is a mature and capable library, and has its own quirks and peculiarities. Fortunately, so does Eclipse. So we need to find mediate between then and make sure that our impementation is polluted by neither 3. JCR vs Resources; TBH, I wasn&apos;t aware of how important this is until I saw this year&apos;s Keynote. The point is that FileVault works (beautifully) at the JCR level. Plug in a different resource provider and it stops working. Sooner or later we&apos;re going to need supporting it at the resource level. Later on there&apos;s the Eclipse-specific stuff. The base implementation works with plain projects, but there&apos;s some stuff – namely the project creation wizards, which requires Maven. And since we&apos;re at this point, we build everything with Maven.
  14. If you want to take the plug-in for a spin, the first link is where you can find a p2 update site. The second link is the current source location. You&apos;lll notice it&apos;s in a branch, but that&apos;s only because we&apos;re developing against a SNAPSHOT version of FileVault. Once we get a FileVault release, we&apos;ll move back to trunk. And in case you have troubles getting the code or the plug-in, I have the key :-) That is, the p2 update site offline and the code exported from svn.
  15. Whew, that about covers it. Time for some Q&amp;A.
  16. So, this guy says it better than I can – thank you! See you at the hackathon.