SlideShare a Scribd company logo
1 of 17
Download to read offline
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 ProductSubramanyam C
 
Scala, Functional Programming and Team Productivity
Scala, Functional Programming and Team ProductivityScala, Functional Programming and Team Productivity
Scala, Functional Programming and Team Productivity7mind
 
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 ManagementBaiju 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 OpenStackOpenStack
 
PROMAND 2014 project structure
PROMAND 2014 project structurePROMAND 2014 project structure
PROMAND 2014 project structureAlexey 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 Stack7mind
 
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 Cosicmfrancis
 
Apache Ant
Apache AntApache Ant
Apache AntAli Bahu
 
ScalaUA - distage: Staged Dependency Injection
ScalaUA - distage: Staged Dependency InjectionScalaUA - distage: Staged Dependency Injection
ScalaUA - distage: Staged Dependency Injection7mind
 
EclipseMAT
EclipseMATEclipseMAT
EclipseMATAli Bahu
 
Introduction to Spring Boot
Introduction to Spring BootIntroduction to Spring Boot
Introduction to Spring BootTrey 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 BuildAndres Almiray
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introductionJonathan 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-testkit7mind
 
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 Zsoldosmfrancis
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android InfrastructureAlexey 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 BuildAndres Almiray
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot IntroductionJeevesh 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 Howmrdon
 

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 SlingRobert Munteanu
 
Of microservices and microservices
Of microservices and microservicesOf microservices and microservices
Of microservices and microservicesRobert 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 middlewareRobert Munteanu
 
Apache Sling as a Microservices Gateway
Apache Sling as a Microservices GatewayApache Sling as a Microservices Gateway
Apache Sling as a Microservices GatewayRobert 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 cloudRobert 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 perspectiveRobert Munteanu
 
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 tutorializdihara
 
Ensemble oscon 2011
Ensemble oscon 2011Ensemble oscon 2011
Ensemble oscon 2011OSCON Byrum
 
Developing Drizzle Replication Plugins
Developing Drizzle Replication PluginsDeveloping Drizzle Replication Plugins
Developing Drizzle Replication PluginsPadraig 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 CloudLyzun Oleksandr
 
DevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChungDevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChungKAI CHU CHUNG
 
Pyramid Deployment and Maintenance
Pyramid Deployment and MaintenancePyramid Deployment and Maintenance
Pyramid Deployment and MaintenanceJazkarta, Inc.
 
Inithub.org presentation
Inithub.org presentationInithub.org presentation
Inithub.org presentationAaron Welch
 
OpenDayLight (ODL) Project
OpenDayLight (ODL) ProjectOpenDayLight (ODL) Project
OpenDayLight (ODL) ProjectVahid Sadri
 
Magento & Cloud - Korostelov Avexey
Magento & Cloud - Korostelov AvexeyMagento & Cloud - Korostelov Avexey
Magento & Cloud - Korostelov AvexeyMagecom 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-IDEASauce 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 ApplicationsRobert 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 OSGiRobert 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 ServiceRobert Munteanu
 
Crash course in Kubernetes monitoring
Crash course in Kubernetes monitoringCrash course in Kubernetes monitoring
Crash course in Kubernetes monitoringRobert 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) profitRobert 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 OSGiRobert Munteanu
 
Cloud-native legacy applications
Cloud-native legacy applicationsCloud-native legacy applications
Cloud-native legacy applicationsRobert 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 baseRobert 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 baseRobert 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 baseRobert 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 DockerRobert 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 baseRobert 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 SlingRobert 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 SlingRobert 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 SlingRobert 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

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 

Recently uploaded (20)

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 

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.