You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by an...@apache.org on 2019/12/04 00:11:51 UTC

[sling-whiteboard] branch master updated: Created the basic version of a FM based Sling Starter Project

This is an automated email from the ASF dual-hosted git repository.

andysch pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git


The following commit(s) were added to refs/heads/master by this push:
     new 3ea6de3  Created the basic version of a FM based Sling Starter Project
3ea6de3 is described below

commit 3ea6de3aeca515ca9e65c2e704b07d547a43df72
Author: Andreas Schaefer <sc...@iMac.local>
AuthorDate: Tue Dec 3 16:11:30 2019 -0800

    Created the basic version of a FM based Sling Starter Project
    
    This project requires the ‘create-fm-descriptor’ goal from the Slingfeature Maven Plugin.
    For now this is just a showcase on how to migrate Sling to a FM based setup
---
 .../pom.xml                                        | 259 ++++++++++++
 .../src/main/fm/boot_boot.json                     | 114 ++++++
 .../src/main/fm/composum_composum-nodes.json       |  43 ++
 .../src/main/fm/healthcheck_healthcheck.json       | 106 +++++
 .../src/main/fm/launchpad_launchpad.json           |  19 +
 .../src/main/fm/oak_oak.json                       | 120 ++++++
 .../src/main/fm/repoinit_repoinit.json             |  66 +++
 .../src/main/fm/scripting_sling.json               |  96 +++++
 .../src/main/fm/sling-caconfig_sling-caconfig.json |  28 ++
 .../main/fm/sling-discovery_sling-discovery.json   |  45 +++
 .../src/main/fm/sling-event_sling-event.json       |  32 ++
 ...els-jacksonexporter_models-jacksonexporter.json |  25 ++
 .../main/fm/sling-validation_sling-validation.json |  32 ++
 .../src/main/fm/sling_sling.json                   | 450 +++++++++++++++++++++
 .../src/main/fm/sling_slingshot.json               |  39 ++
 .../src/main/fm/standalone_standalone.json         |  16 +
 .../src/main/fm/webapp_webapp.json                 |   4 +
 17 files changed, 1494 insertions(+)

diff --git a/sling-org-apache-sling-feature-model-starter/pom.xml b/sling-org-apache-sling-feature-model-starter/pom.xml
new file mode 100644
index 0000000..3a4188f
--- /dev/null
+++ b/sling-org-apache-sling-feature-model-starter/pom.xml
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+    <!--
+        Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+        agreements. See the NOTICE file distributed with this work for additional information
+        regarding copyright ownership. The ASF licenses this file to you under the Apache License,
+        Version 2.0 (the "License"); you may not use this file except in compliance with the
+        License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+        Unless required by applicable law or agreed to in writing, software distributed under the
+        License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+        either express or implied. See the License for the specific language governing permissions
+        and limitations under the License.
+    -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.sling</groupId>
+        <artifactId>sling</artifactId>
+        <version>35</version>
+        <relativePath />
+    </parent>
+
+    <artifactId>org.apache.sling.feature.model.starter</artifactId>
+    <packaging>slingosgifeature</packaging>
+    <version>12-SNAPSHOT</version>
+
+    <name>Apache Sling Feature Module Starter Application</name>
+    <description>
+        The Sling Starter application built from Feature Models
+    </description>
+
+<!--    <scm>-->
+<!--        <connection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-starter.git</connection>-->
+<!--        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-starter.git</developerConnection>-->
+<!--        <url>https://gitbox.apache.org/repos/asf?p=sling-org-apache-sling-starter.git</url>-->
+<!--      <tag>HEAD</tag>-->
+<!--  </scm>-->
+
+    <properties>
+        <sling.java.version>8</sling.java.version>
+        <IT.expected.bundles.count>126</IT.expected.bundles.count>
+        <slingfeature-maven-plugin.version>1.1.10</slingfeature-maven-plugin.version>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>ianal-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>verify-legal-files</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-clean-plugin</artifactId>
+                <configuration>
+                    <filesets>
+                        <fileset>
+                            <directory>${basedir}</directory>
+                            <includes>
+                                <include>derby.log</include>
+                                <include>cachedir/**</include>
+                                <include>sling/**</include>
+                                <include>jackrabbit/**</include>
+                                <include>coverage.ec</include>
+                            </includes>
+                        </fileset>
+                    </filesets>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>slingfeature-maven-plugin</artifactId>
+                <version>${slingfeature-maven-plugin.version}</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <features>src/main/fm</features>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>aggregate-base-feature</id>
+                        <phase>generate-test-sources</phase>
+                        <goals>
+                            <goal>aggregate-features</goal>
+                        </goals>
+                        <configuration>
+                            <aggregates>
+                                <aggregate>
+                                    <classifier>sling12</classifier>
+                                    <filesInclude>**/*.json</filesInclude>
+                                    <includeArtifact>
+                                        <groupId>org.apache.sling</groupId>
+                                        <artifactId>org.apache.sling.jcr.packageinit</artifactId>
+                                        <version>0.0.1-SNAPSHOT</version>
+<!--                                        <classifier>jcr-packageinit</classifier>-->
+                                        <type>pom</type>
+                                    </includeArtifact>
+                                </aggregate>
+                            </aggregates>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>attach-base-feature</id>
+                        <phase>process-test-sources</phase>
+                        <goals>
+                            <goal>attach-features</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+<!--            <plugin>-->
+<!--                <groupId>org.apache.sling</groupId>-->
+<!--                <artifactId>slingstart-maven-plugin</artifactId>-->
+<!--                <extensions>true</extensions>-->
+<!--                <executions>-->
+<!--                    <execution>-->
+<!--                         <id>start-container</id>-->
+<!--                        <goals>-->
+<!--                            <goal>start</goal>-->
+<!--                            <goal>stop</goal>-->
+<!--                        </goals>-->
+<!--                    </execution>-->
+<!--                </executions>                -->
+<!--                <configuration>-->
+<!--                    <createWebapp>true</createWebapp>-->
+<!--                    <servers>-->
+<!--                        <server>-->
+<!--                            <port>${http.port}</port>-->
+<!--                            <controlPort>${sling.control.port}</controlPort>-->
+<!--                        </server>-->
+<!--                    </servers>                    -->
+<!--                </configuration>-->
+<!--            </plugin>-->
+
+<!--            <plugin>-->
+<!--                <groupId>org.codehaus.mojo</groupId>-->
+<!--                <artifactId>build-helper-maven-plugin</artifactId>-->
+<!--                <executions>-->
+<!--                    <execution>-->
+<!--                        <id>reserve-network-port</id>-->
+<!--                        <goals>-->
+<!--                            &lt;!&ndash; pre-integration-test is too late &ndash;&gt;-->
+<!--                            <goal>reserve-network-port</goal>-->
+<!--                        </goals>-->
+<!--                        <phase>process-resources</phase>-->
+<!--                        <configuration>-->
+<!--                            <portNames>-->
+<!--                                <portName>http.port</portName>-->
+<!--                                <portName>sling.control.port</portName>-->
+<!--                            </portNames>-->
+<!--                        </configuration>-->
+<!--                    </execution>-->
+<!--                </executions>-->
+<!--            </plugin>-->
+
+<!--            <plugin>-->
+<!--                <artifactId>maven-failsafe-plugin</artifactId>-->
+<!--                <executions>-->
+<!--                    <execution>-->
+<!--                        <goals>-->
+<!--                            <goal>integration-test</goal>-->
+<!--                            <goal>verify</goal>-->
+<!--                        </goals>-->
+<!--                    </execution>-->
+<!--                </executions>-->
+<!--                <configuration>-->
+<!--                    <systemPropertyVariables>-->
+<!--                        <launchpad.http.port>${http.port}</launchpad.http.port>-->
+<!--                        <IT.expected.bundles.count>${IT.expected.bundles.count}</IT.expected.bundles.count>-->
+<!--                    </systemPropertyVariables>-->
+<!--                </configuration>-->
+<!--            </plugin>            -->
+        </plugins>
+
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <!-- Extend RAT configuration from parent pom -->
+                    <groupId>org.apache.rat</groupId>
+                    <artifactId>apache-rat-plugin</artifactId>
+                    <configuration>
+                        <excludes combine.children="append">
+                            <!-- Exclude sling instance -->
+                            <exclude>sling/**</exclude>
+                        </excludes>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+
+    </build>
+    
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>4.5.6</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.utils</artifactId>
+            <version>1.11.0</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <profiles>
+        <profile>
+            <id>launch</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.sling</groupId>
+                        <artifactId>slingfeature-maven-plugin</artifactId>
+                        <version>1.0.7-SNAPSHOT</version>
+                        <extensions>true</extensions>
+                        <dependencies>
+                            <dependency>
+                                <groupId>org.apache.sling</groupId>
+                                <artifactId>org.apache.sling.feature.launcher</artifactId>
+                                <version>1.0.7-SNAPSHOT</version>
+                            </dependency>
+                            <dependency>
+                                <groupId>org.apache.sling</groupId>
+                                <artifactId>org.apache.sling.feature.extension.content</artifactId>
+                                <version>1.0.5-SNAPSHOT</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>launch-it</id>
+                                <phase>install</phase>
+                                <goals>
+                                    <goal>launch-features</goal>
+                                </goals>
+                                <configuration>
+                                    <selection>
+                                        <includeClassifier>sling12</includeClassifier>
+                                    </selection>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
+
diff --git a/sling-org-apache-sling-feature-model-starter/src/main/fm/boot_boot.json b/sling-org-apache-sling-feature-model-starter/src/main/fm/boot_boot.json
new file mode 100644
index 0000000..543c3f0
--- /dev/null
+++ b/sling-org-apache-sling-feature-model-starter/src/main/fm/boot_boot.json
@@ -0,0 +1,114 @@
+
+{
+    "id":"org.apache.sling:org.apache.sling.feature.model.starter:slingfeature:boot:12-SNAPSHOT",
+    "variables":{
+        "slf4j.version":"1.7.25"
+    },
+    "bundles":[
+        {
+            "id":"org.apache.aries:org.apache.aries.util:1.1.3",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.commons:commons-lang3:3.8.1",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.configadmin:1.9.14",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.eventadmin:1.5.0",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.geronimo.specs:geronimo-annotation_1.3_spec:1.1",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.geronimo.specs:geronimo-atinject_1.0_spec:1.1",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.geronimo.specs:geronimo-ws-metadata_2.0_spec:1.1.3",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.servicemix.bundles:org.apache.servicemix.bundles.jaxb-impl:2.2.11_1",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.servicemix.bundles:org.apache.servicemix.bundles.saaj-impl:1.3.23_2",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.servicemix.specs:org.apache.servicemix.specs.jaxb-api-2.2:2.9.0",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.servicemix.specs:org.apache.servicemix.specs.jaxws-api-2.2:2.9.0",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.servicemix.specs:org.apache.servicemix.specs.saaj-api-1.3:2.8.0",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.commons.log:5.1.10",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.commons.logservice:1.0.6",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.installer.core:3.9.0",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.installer.factory.configuration:1.2.2",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.installer.provider.file:1.1.0",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.javax.activation:0.1.0",
+            "start-order":"1"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.settings:1.3.10",
+            "start-order":"1"
+        },
+        {
+            "id":"org.jvnet.staxex:stax-ex:1.7.6",
+            "start-order":"1"
+        },
+        {
+            "id":"org.osgi:org.osgi.util.function:1.1.0",
+            "start-order":"1"
+        },
+        {
+            "id":"org.osgi:org.osgi.util.promise:1.1.0",
+            "start-order":"1"
+        },
+        {
+            "id":"org.slf4j:jcl-over-slf4j:1.7.25",
+            "start-order":"1"
+        },
+        {
+            "id":"org.slf4j:log4j-over-slf4j:1.7.25",
+            "start-order":"1"
+        },
+        {
+            "id":"org.slf4j:slf4j-api:1.7.25",
+            "start-order":"1"
+        }
+    ],
+    "framework-properties":{
+        "sling.run.mode.install.options":"oak_tar,oak_mongo",
+        "localIndexDir":"${sling.home}/repository/index",
+        "repository.home":"${sling.home}/repository"
+    }
+}
\ No newline at end of file
diff --git a/sling-org-apache-sling-feature-model-starter/src/main/fm/composum_composum-nodes.json b/sling-org-apache-sling-feature-model-starter/src/main/fm/composum_composum-nodes.json
new file mode 100644
index 0000000..56297ef
--- /dev/null
+++ b/sling-org-apache-sling-feature-model-starter/src/main/fm/composum_composum-nodes.json
@@ -0,0 +1,43 @@
+
+{
+    "id":"org.apache.sling:org.apache.sling.feature.model.starter:slingfeature:composum_composum-nodes:12-SNAPSHOT",
+    "variables":{
+        "composum.nodes.version":"1.11.3"
+    },
+    "bundles":[
+        {
+            "id":"com.composum.sling.core:composum-sling-core-commons:1.11.3",
+            "start-order":"20"
+        },
+        {
+            "id":"com.composum.sling.core:composum-sling-core-console:1.11.3",
+            "start-order":"20"
+        },
+        {
+            "id":"com.composum.sling.core:composum-sling-core-jslibs:1.11.3",
+            "start-order":"20"
+        },
+        {
+            "id":"com.composum.sling.core:composum-sling-package-manager:1.11.3",
+            "start-order":"20"
+        },
+        {
+            "id":"com.composum.sling.core:composum-sling-user-management:1.11.3",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.jackrabbit.vault:org.apache.jackrabbit.vault:3.2.4",
+            "start-order":"20"
+        }
+    ],
+    "configurations":{
+        "org.apache.sling.jcr.base.internal.LoginAdminWhitelist.fragment~composum":{
+            "whitelist.bundles":[
+                "com.composum.core.commons",
+                "com.composum.core.pckgmgr",
+                "com.composum.core.pckginstall"
+            ],
+            "whitelist.name":"composum"
+        }
+    }
+}
\ No newline at end of file
diff --git a/sling-org-apache-sling-feature-model-starter/src/main/fm/healthcheck_healthcheck.json b/sling-org-apache-sling-feature-model-starter/src/main/fm/healthcheck_healthcheck.json
new file mode 100644
index 0000000..f83dc3c
--- /dev/null
+++ b/sling-org-apache-sling-feature-model-starter/src/main/fm/healthcheck_healthcheck.json
@@ -0,0 +1,106 @@
+
+{
+    "id":"org.apache.sling:org.apache.sling.feature.model.starter:slingfeature:healthcheck:12-SNAPSHOT",
+    "bundles":[
+        {
+            "id":"org.apache.felix:org.apache.felix.healthcheck.api:2.0.2",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.healthcheck.core:2.0.6",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.healthcheck.generalchecks:2.0.4",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.healthcheck.webconsoleplugin:2.0.0",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.hc.api:1.0.4",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.hc.support:1.0.6",
+            "start-order":"20"
+        }
+    ],
+    "configurations":{
+        "org.apache.felix.hc.generalchecks.BundlesStartedCheck":{
+            "hc.tags":[
+                "bundles"
+            ]
+        },
+        "org.apache.felix.hc.generalchecks.CpuCheck":{
+            "hc.tags":[
+                "cpu",
+                "system-resources"
+            ],
+            "cpuPercentageThresholdWarn":95
+        },
+        "org.apache.felix.hc.generalchecks.DiskSpaceCheck":{
+            "hc.tags":[
+                "diskspace",
+                "system-resources"
+            ],
+            "diskPaths":[
+                "."
+            ]
+        },
+        "org.apache.felix.hc.generalchecks.FrameworkStartCheck":{
+            "hc.tags":[
+                "systemalive"
+            ],
+            "targetStartLevel:Integer":"30"
+        },
+        "org.apache.felix.hc.generalchecks.MemoryCheck":{
+            "hc.tags":[
+                "memory",
+                "system-resources"
+            ],
+            "heapUsedPercentageThresholdCritical":100,
+            "heapUsedPercentageThresholdWarn":95
+        },
+        "org.apache.felix.hc.generalchecks.ServicesCheck":{
+            "hc.tags":[
+                "systemalive"
+            ],
+            "services.list":[
+                "org.apache.sling.jcr.api.SlingRepository",
+                "org.apache.sling.engine.auth.Authenticator",
+                "org.apache.sling.api.resource.ResourceResolverFactory",
+                "org.apache.sling.api.servlets.ServletResolver",
+                "javax.script.ScriptEngineManager"
+            ]
+        },
+        "org.apache.felix.hc.generalchecks.ThreadUsageCheck":{
+            "hc.tags":[
+                "threads",
+                "cpu",
+                "system-resources"
+            ]
+        },
+        "org.apache.felix.hc.core.impl.filter.ServiceUnavailableFilter~startupandshutdown":{
+            "osgi.http.whiteboard.filter.regex":"(?!/system/).*",
+            "avoid404DuringStartup":true,
+            "service.ranking:Integer":"2147483647",
+            "includeExecutionResult":false,
+            "osgi.http.whiteboard.context.select":"(osgi.http.whiteboard.context.name=*)",
+            "tags":[
+                "systemalive"
+            ],
+            "autoDisableFilter":true,
+            "responseTextFor503":"classpath:org.apache.sling.starter.content:content/content/startup/index.html"
+        },
+        "org.apache.felix.hc.core.impl.servlet.HealthCheckExecutorServlet~default":{
+            "servletPath":"/system/health"
+        },
+        "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~hc-support":{
+            "user.mapping":[
+                "org.apache.sling.hc.support=sling-readall"
+            ]
+        }
+    }
+}
\ No newline at end of file
diff --git a/sling-org-apache-sling-feature-model-starter/src/main/fm/launchpad_launchpad.json b/sling-org-apache-sling-feature-model-starter/src/main/fm/launchpad_launchpad.json
new file mode 100644
index 0000000..d36c980
--- /dev/null
+++ b/sling-org-apache-sling-feature-model-starter/src/main/fm/launchpad_launchpad.json
@@ -0,0 +1,19 @@
+
+{
+    "id":"org.apache.sling:org.apache.sling.feature.model.starter:slingfeature:launchpad:12-SNAPSHOT",
+    "bundles":[
+        {
+            "id":"org.apache.sling:org.apache.sling.launchpad.base:6.0.2-2.6.36",
+            "start-order":"20"
+        }
+    ],
+    "framework-properties":{
+        "sling.jre.java.xml":",javax.xml;version=\"2.1.0\",javax.xml.datatype;uses:=\"javax.xml.namespace\";version=\"2.1.0\",javax.xml.namespace;version=\"2.1.0\",javax.xml.parsers;uses:=\"javax.xml.validation,org.w3c.dom,org.xml.sax,org.xml.sax.helpers\";version=\"2.1.0\",javax.xml.stream;uses:=\"javax.xml.namespace,javax.xml.stream.events,javax.xml.stream.util,javax.xml.transform\";version=\"1.0.0\",javax.xml.stream.events;uses:=\"javax.xml.namespace,javax.xml.stream\";version=\"1.0.0 [...]
+        "felix.systempackages.calculate.uses":"true",
+        "org.osgi.framework.system.packages":"org.osgi.framework;version=\"1.9\",org.osgi.framework.dto;version=\"1.8\";uses:=\"org.osgi.dto\",org.osgi.framework.hooks.bundle;version=\"1.1\";uses:=\"org.osgi.framework\",org.osgi.framework.hooks.resolver;version=\"1.0\";uses:=\"org.osgi.framework.wiring\",org.osgi.framework.hooks.service;version=\"1.1\";uses:=\"org.osgi.framework\",org.osgi.framework.hooks.weaving;version=\"1.1\";uses:=\"org.osgi.framework.wiring\",org.osgi.framework.laun [...]
+        "felix.systempackages.substitution":"true",
+        "sling.jre-jpms":"{dollar}{felix.jpms.java.base}{dollar}{felix.jpms.java.compiler}{dollar}{felix.jpms.java.datatransfer}{dollar}{felix.jpms.java.desktop}{dollar}{felix.jpms.java.instrument}{dollar}{felix.jpms.java.logging}{dollar}{felix.jpms.java.management}{dollar}{felix.jpms.java.management.rmi}{dollar}{felix.jpms.java.naming}{dollar}{felix.jpms.java.net.http}{dollar}{felix.jpms.java.prefs}{dollar}{felix.jpms.java.rmi}{dollar}{felix.jpms.java.scripting}{dollar}{felix.jpms.java. [...]
+        "sling.jpms.java.xml":"{dollar}{sling.jre.java.xml},javax.xml.catalog;uses:=\"javax.xml.namespace\";version=\"1.0.0\"",
+        "sling.jre-1.8":",java.applet;version=\"{dollar}{felix.detect.java.version}\",java.awt;version=\"{dollar}{felix.detect.java.version}\",java.awt.color;version=\"{dollar}{felix.detect.java.version}\",java.awt.datatransfer;version=\"{dollar}{felix.detect.java.version}\",java.awt.dnd;version=\"{dollar}{felix.detect.java.version}\",java.awt.event;version=\"{dollar}{felix.detect.java.version}\",java.awt.font;version=\"{dollar}{felix.detect.java.version}\",java.awt.geom;version=\"{dolla [...]
+    }
+}
\ No newline at end of file
diff --git a/sling-org-apache-sling-feature-model-starter/src/main/fm/oak_oak.json b/sling-org-apache-sling-feature-model-starter/src/main/fm/oak_oak.json
new file mode 100644
index 0000000..4871cd8
--- /dev/null
+++ b/sling-org-apache-sling-feature-model-starter/src/main/fm/oak_oak.json
@@ -0,0 +1,120 @@
+
+{
+    "id":"org.apache.sling:org.apache.sling.feature.model.starter:slingfeature:oak:12-SNAPSHOT",
+    "variables":{
+        "oak.version":"1.16.0"
+    },
+    "bundles":[
+        {
+            "id":"org.apache.felix:org.apache.felix.jaas:1.0.2",
+            "start-order":"10"
+        },
+        {
+            "id":"org.apache.jackrabbit:oak-api:1.16.0",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:oak-blob-plugins:1.16.0",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:oak-blob:1.16.0",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:oak-commons:1.16.0",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:oak-core-spi:1.16.0",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:oak-core:1.16.0",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:oak-jcr:1.16.0",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:oak-lucene:1.16.0",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:oak-query-spi:1.16.0",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:oak-security-spi:1.16.0",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:oak-store-composite:1.16.0",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:oak-store-document:1.16.0",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:oak-store-spi:1.16.0",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.jcr.oak.server:1.2.2",
+            "start-order":"16"
+        },
+        {
+            "id":"org.apache.jackrabbit:oak-segment-tar:1.16.0",
+            "run-modes":"oak_tar",
+            "start-order":"15"
+        }
+    ],
+    "configurations":{
+        "org.apache.felix.jaas.ConfigurationSpi":{
+            "jaas.defaultRealmName":"jackrabbit.oak",
+            "jaas.configProviderName":"FelixJaasProvider"
+        },
+        "org.apache.jackrabbit.oak.security.authentication.AuthenticationConfigurationImpl":{
+            "org.apache.jackrabbit.oak.authentication.configSpiName":"FelixJaasProvider"
+        },
+        "org.apache.jackrabbit.oak.security.user.RandomAuthorizableNodeName":{
+            "length:Integer":"21"
+        },
+        "org.apache.jackrabbit.oak.security.user.UserConfigurationImpl":{
+            "groupsPath":"/home/groups",
+            "defaultDepth":"1",
+            "importBehavior":"besteffort",
+            "usersPath":"/home/users"
+        },
+        "org.apache.jackrabbit.oak.spi.security.user.action.DefaultAuthorizableActionProvider":{
+            "userPrivilegeNames":[
+                "jcr:all"
+            ],
+            "groupPrivilegeNames":[
+                "jcr:read"
+            ],
+            "enabledActions":[
+                "org.apache.jackrabbit.oak.spi.security.user.action.AccessControlAction"
+            ]
+        },
+        "org.apache.felix.jaas.Configuration.factory~GuestLoginModule":{
+            "jaas.controlFlag":"optional",
+            "jaas.classname":"org.apache.jackrabbit.oak.spi.security.authentication.GuestLoginModule",
+            "jaas.ranking:Integer":"300"
+        },
+        "org.apache.felix.jaas.Configuration.factory~LoginModuleImpl":{
+            "jaas.controlFlag":"required",
+            "jaas.classname":"org.apache.jackrabbit.oak.security.authentication.user.LoginModuleImpl"
+        },
+        "org.apache.felix.jaas.Configuration.factory~TokenLoginModule":{
+            "jaas.controlFlag":"sufficient",
+            "jaas.classname":"org.apache.jackrabbit.oak.security.authentication.token.TokenLoginModule",
+            "jaas.ranking:Integer":"200"
+        },
+        "org.apache.jackrabbit.oak.segment.SegmentNodeStoreService":{
+            "name":"Default NodeStore"
+        }
+    }
+}
\ No newline at end of file
diff --git a/sling-org-apache-sling-feature-model-starter/src/main/fm/repoinit_repoinit.json b/sling-org-apache-sling-feature-model-starter/src/main/fm/repoinit_repoinit.json
new file mode 100644
index 0000000..2c75958
--- /dev/null
+++ b/sling-org-apache-sling-feature-model-starter/src/main/fm/repoinit_repoinit.json
@@ -0,0 +1,66 @@
+
+{
+    "id":"org.apache.sling:org.apache.sling.feature.model.starter:slingfeature:repoinit:12-SNAPSHOT",
+    "bundles":[
+        {
+            "id":"org.apache.sling:org.apache.sling.jcr.repoinit:1.1.10",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.provisioning.model:1.8.4",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.repoinit.parser:1.2.4",
+            "start-order":"20"
+        }
+    ],
+    "repoinit:TEXT|true":[
+        "# general",
+        "create path (sling:OrderedFolder) /content",
+        "set ACL for everyone",
+        "allow   jcr:read\ton /content",
+        "end",
+        "",
+        "# sling-mapping",
+        "create service user sling-mapping",
+        "",
+        "set ACL for sling-mapping",
+        "allow   jcr:read    on /",
+        "end",
+        "",
+        "# sling-readall",
+        "create service user sling-readall",
+        "",
+        "set ACL for sling-readall",
+        "allow   jcr:read    on /",
+        "end",
+        "",
+        "# sling-xss",
+        "create service user sling-xss",
+        "",
+        "create path (sling:Folder) /apps/sling/xss",
+        "",
+        "set ACL for sling-xss",
+        "allow   jcr:read    on /apps/sling/xss",
+        "end",
+        "",
+        "# sling-i18n",
+        "create service user sling-i18n",
+        "",
+        "set ACL for sling-i18n",
+        "allow   jcr:read    on /",
+        "end",
+        "",
+        "# sling-jcr-install",
+        "create service user sling-jcr-install",
+        "",
+        "# used for config OSGi writeback",
+        "create path (sling:Folder) /apps/sling/install",
+        "",
+        "set ACL for sling-jcr-install",
+        "allow\tjcr:read\ton\t/",
+        "allow\trep:write\ton /apps/sling/install",
+        "end"
+    ]
+}
\ No newline at end of file
diff --git a/sling-org-apache-sling-feature-model-starter/src/main/fm/scripting_sling.json b/sling-org-apache-sling-feature-model-starter/src/main/fm/scripting_sling.json
new file mode 100644
index 0000000..818dbd6
--- /dev/null
+++ b/sling-org-apache-sling-feature-model-starter/src/main/fm/scripting_sling.json
@@ -0,0 +1,96 @@
+
+{
+    "id":"org.apache.sling:org.apache.sling.feature.model.starter:slingfeature:scripting_sling:12-SNAPSHOT",
+    "bundles":[
+        {
+            "id":"org.antlr:antlr4-runtime:4.7.1",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.servicemix.bundles:org.apache.servicemix.bundles.rhino:1.7.10_1",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.scripting.api:2.2.0",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.scripting.core:2.0.56",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.scripting.el-api:1.0.0",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.scripting.javascript:3.0.4",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.scripting.jsp-api:1.0.0",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.scripting.jsp.taglib:2.4.0",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.scripting.jsp:2.3.4",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.scripting.sightly.compiler.java:1.1.2-1.4.0",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.scripting.sightly.compiler:1.1.2-1.4.0",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.scripting.sightly.js.provider:1.0.28",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.scripting.sightly.models.provider:1.0.8",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.scripting.sightly.repl:1.0.6",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.scripting.sightly.runtime:1.1.0-1.4.0",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.scripting.sightly:1.1.2-1.4.0",
+            "start-order":"20"
+        }
+    ],
+    "configurations":{
+        "org.apache.sling.scripting.core.impl.ScriptCacheImpl":{
+            "org.apache.sling.scripting.cache.additional_extensions":[
+                "js"
+            ]
+        },
+        "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~scripting":{
+            "user.mapping":[
+                "org.apache.sling.scripting.core=sling-scripting",
+                "org.apache.sling.scripting.sightly.js.provider=sling-scripting"
+            ]
+        }
+    },
+    "repoinit:TEXT|true":[
+        "#<<< SLING-5848 - Define service user and ACLs for Scripting",
+        "create service user sling-scripting",
+        "",
+        "create path (sling:Folder) /libs",
+        "create path (sling:Folder) /apps",
+        "",
+        "set ACL for sling-scripting",
+        "deny    jcr:all     on /",
+        "allow   jcr:read    on /libs,/apps",
+        "end",
+        "# SLING-5848 - Define service user and ACLs for Scripting >>>"
+    ]
+}
\ No newline at end of file
diff --git a/sling-org-apache-sling-feature-model-starter/src/main/fm/sling-caconfig_sling-caconfig.json b/sling-org-apache-sling-feature-model-starter/src/main/fm/sling-caconfig_sling-caconfig.json
new file mode 100644
index 0000000..cc3131d
--- /dev/null
+++ b/sling-org-apache-sling-feature-model-starter/src/main/fm/sling-caconfig_sling-caconfig.json
@@ -0,0 +1,28 @@
+
+{
+    "id":"org.apache.sling:org.apache.sling.feature.model.starter:slingfeature:sling-caconfig:12-SNAPSHOT",
+    "bundles":[
+        {
+            "id":"org.apache.sling:org.apache.sling.caconfig.api:1.1.2",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.caconfig.impl:1.4.14",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.caconfig.spi:1.3.4",
+            "start-order":"20"
+        }
+    ],
+    "configurations":{
+        "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~sling-caconfig":{
+            "user.mapping":[
+                "org.apache.sling.caconfig.impl=sling-readall"
+            ]
+        }
+    },
+    "repoinit:TEXT|true":[
+        "create path (sling:Folder) /conf"
+    ]
+}
\ No newline at end of file
diff --git a/sling-org-apache-sling-feature-model-starter/src/main/fm/sling-discovery_sling-discovery.json b/sling-org-apache-sling-feature-model-starter/src/main/fm/sling-discovery_sling-discovery.json
new file mode 100644
index 0000000..c50f992
--- /dev/null
+++ b/sling-org-apache-sling-feature-model-starter/src/main/fm/sling-discovery_sling-discovery.json
@@ -0,0 +1,45 @@
+
+{
+    "id":"org.apache.sling:org.apache.sling.feature.model.starter:slingfeature:sling-discovery:12-SNAPSHOT",
+    "bundles":[
+        {
+            "id":"org.apache.sling:org.apache.sling.discovery.api:1.0.4",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.discovery.base:2.0.8",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.discovery.commons:1.0.20",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.discovery.oak:1.2.28",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.discovery.support:1.0.4",
+            "start-order":"20"
+        }
+    ],
+    "configurations":{
+        "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~sling.discovery":{
+            "user.mapping":[
+                "org.apache.sling.discovery.commons=sling-discovery",
+                "org.apache.sling.discovery.base=sling-discovery",
+                "org.apache.sling.discovery.oak=sling-discovery"
+            ]
+        }
+    },
+    "repoinit:TEXT|true":[
+        "create service user sling-discovery",
+        "",
+        "create path (sling:Folder) /var/discovery",
+        "create path (sling:Folder) /var/discovery/oak",
+        "",
+        "set ACL for sling-discovery",
+        "allow   jcr:read,rep:write    on /var/discovery",
+        "end"
+    ]
+}
\ No newline at end of file
diff --git a/sling-org-apache-sling-feature-model-starter/src/main/fm/sling-event_sling-event.json b/sling-org-apache-sling-feature-model-starter/src/main/fm/sling-event_sling-event.json
new file mode 100644
index 0000000..8cd957e
--- /dev/null
+++ b/sling-org-apache-sling-feature-model-starter/src/main/fm/sling-event_sling-event.json
@@ -0,0 +1,32 @@
+
+{
+    "id":"org.apache.sling:org.apache.sling.feature.model.starter:slingfeature:sling-event:12-SNAPSHOT",
+    "bundles":[
+        {
+            "id":"org.apache.sling:org.apache.sling.event.dea:1.1.4",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.event:4.2.12",
+            "start-order":"20"
+        }
+    ],
+    "configurations":{
+        "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~sling.event":{
+            "user.mapping":[
+                "org.apache.sling.event=sling-event",
+                "org.apache.sling.event.dea=sling-event"
+            ]
+        }
+    },
+    "repoinit:TEXT|true":[
+        "create service user sling-event",
+        "",
+        "create path (sling:Folder) /var",
+        "create path (sling:Folder) /var/eventing",
+        "",
+        "set ACL for sling-event",
+        "allow   jcr:read,rep:write    on /var/eventing",
+        "end"
+    ]
+}
\ No newline at end of file
diff --git a/sling-org-apache-sling-feature-model-starter/src/main/fm/sling-models-jacksonexporter_models-jacksonexporter.json b/sling-org-apache-sling-feature-model-starter/src/main/fm/sling-models-jacksonexporter_models-jacksonexporter.json
new file mode 100644
index 0000000..f2e664c
--- /dev/null
+++ b/sling-org-apache-sling-feature-model-starter/src/main/fm/sling-models-jacksonexporter_models-jacksonexporter.json
@@ -0,0 +1,25 @@
+
+{
+    "id":"org.apache.sling:org.apache.sling.feature.model.starter:slingfeature:sling-models-jacksonexporter_models-jacksonexporter:12-SNAPSHOT",
+    "variables":{
+        "jackson.version":"2.9.9"
+    },
+    "bundles":[
+        {
+            "id":"com.fasterxml.jackson.core:jackson-annotations:2.9.9",
+            "start-order":"20"
+        },
+        {
+            "id":"com.fasterxml.jackson.core:jackson-core:2.9.9",
+            "start-order":"20"
+        },
+        {
+            "id":"com.fasterxml.jackson.core:jackson-databind:2.9.9",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.models.jacksonexporter:1.0.8",
+            "start-order":"20"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/sling-org-apache-sling-feature-model-starter/src/main/fm/sling-validation_sling-validation.json b/sling-org-apache-sling-feature-model-starter/src/main/fm/sling-validation_sling-validation.json
new file mode 100644
index 0000000..da06699
--- /dev/null
+++ b/sling-org-apache-sling-feature-model-starter/src/main/fm/sling-validation_sling-validation.json
@@ -0,0 +1,32 @@
+
+{
+    "id":"org.apache.sling:org.apache.sling.feature.model.starter:slingfeature:sling-validation:12-SNAPSHOT",
+    "bundles":[
+        {
+            "id":"org.apache.sling:org.apache.sling.validation.api:1.0.0",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.validation.core:1.0.4",
+            "start-order":"20"
+        }
+    ],
+    "configurations":{
+        "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~validation":{
+            "user.mapping":[
+                "org.apache.sling.validation.core=sling-validation"
+            ]
+        }
+    },
+    "repoinit:TEXT|true":[
+        "create service user sling-validation",
+        "",
+        "create path (sling:Folder) /apps",
+        "create path (sling:Folder) /libs",
+        "",
+        "set ACL for sling-validation",
+        "allow   jcr:read    on /apps",
+        "allow   jcr:read    on /libs",
+        "end"
+    ]
+}
\ No newline at end of file
diff --git a/sling-org-apache-sling-feature-model-starter/src/main/fm/sling_sling.json b/sling-org-apache-sling-feature-model-starter/src/main/fm/sling_sling.json
new file mode 100644
index 0000000..cca427c
--- /dev/null
+++ b/sling-org-apache-sling-feature-model-starter/src/main/fm/sling_sling.json
@@ -0,0 +1,450 @@
+
+{
+    "id":"org.apache.sling:org.apache.sling.feature.model.starter:slingfeature:sling:12-SNAPSHOT",
+    "variables":{
+        "jackrabbit.version":"2.18.2"
+    },
+    "bundles":[
+        {
+            "id":"commons-codec:commons-codec:1.12",
+            "start-order":"20"
+        },
+        {
+            "id":"commons-collections:commons-collections:3.2.2",
+            "start-order":"20"
+        },
+        {
+            "id":"javax.mail:mail:1.5.0-b01",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.commons:commons-collections4:4.2",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.commons:commons-math:2.2",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.geronimo.bundles:jstl:1.2_1",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.httpcomponents:httpclient-osgi:4.5.6",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.httpcomponents:httpcore-osgi:4.4.10",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.adapter:2.1.10",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.auth.form:1.0.14",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.bundleresource.impl:2.3.2",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.commons.classloader:1.4.4",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.commons.compiler:2.3.6",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.commons.fsclassloader:1.0.10",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.commons.mime:2.2.0",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.commons.osgi:2.4.0",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.commons.scheduler:2.7.2",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.commons.threads:3.2.18",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.engine:2.6.18",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.fsresource:2.1.14",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.i18n:2.5.14",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.installer.console:1.0.2",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.installer.hc:2.0.2",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.installer.provider.jcr:3.1.26",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.jcr.contentloader:2.3.0",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.jcr.resource:3.0.18",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.models.api:1.3.8",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.models.impl:1.4.10",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.resourceresolver:1.6.8",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.serviceuser.webconsole:1.0.0",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.serviceusermapper:1.4.4",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.servlets.get:2.1.40",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.servlets.post:2.3.30",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.servlets.resolver:2.5.2",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.xss:2.1.8",
+            "start-order":"20"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.metatype:1.2.2",
+            "start-order":"4"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.scr:2.1.16",
+            "start-order":"4"
+        },
+        {
+            "id":"commons-fileupload:commons-fileupload:1.3.3",
+            "start-order":"5"
+        },
+        {
+            "id":"commons-io:commons-io:2.6",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.aries.jmx:org.apache.aries.jmx.api:1.1.5",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.aries.jmx:org.apache.aries.jmx.core:1.1.8",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.aries.jmx:org.apache.aries.jmx.whiteboard:1.2.0",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.bundlerepository:2.0.10",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.http.whiteboard:4.0.0",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.inventory:1.0.6",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.prefs:1.1.0",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.webconsole.plugins.ds:2.1.0",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.webconsole.plugins.event:1.1.8",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.webconsole.plugins.memoryusage:1.0.8",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.webconsole.plugins.obr:1.0.4",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.webconsole.plugins.packageadmin:1.0.4",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.webconsole:4.3.8",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.api:2.20.0",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.auth.core:1.4.2",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.commons.johnzon:1.1.2",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.commons.log.webconsole:1.0.0",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.extensions.threaddump:0.2.2",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.extensions.webconsolebranding:1.0.2",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.extensions.webconsolesecurityprovider:1.2.2",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.starter.content:1.0.4",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.http.sslfilter:1.2.6",
+            "start-order":"10"
+        },
+        {
+            "id":"org.apache.pdfbox:fontbox:2.0.16",
+            "start-order":"10"
+        },
+        {
+            "id":"org.apache.pdfbox:jempbox:1.8.16",
+            "start-order":"10"
+        },
+        {
+            "id":"org.apache.pdfbox:pdfbox:2.0.16",
+            "start-order":"10"
+        },
+        {
+            "id":"org.apache.tika:tika-core:1.21",
+            "start-order":"10"
+        },
+        {
+            "id":"org.apache.tika:tika-parsers:1.21",
+            "start-order":"10"
+        },
+        {
+            "id":"com.google.guava:guava:15.0",
+            "start-order":"15"
+        },
+        {
+            "id":"io.dropwizard.metrics:metrics-core:3.2.6",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:jackrabbit-api:2.18.2",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:jackrabbit-data:2.18.2",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:jackrabbit-jcr-commons:2.18.2",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:jackrabbit-jcr-rmi:2.18.2",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:jackrabbit-spi-commons:2.18.2",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:jackrabbit-spi:2.18.2",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.jackrabbit:jackrabbit-webdav:2.18.2",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.commons.metrics:1.2.6",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.jcr.api:2.4.0",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.jcr.base:3.0.6",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.jcr.davex:1.3.10",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.jcr.jackrabbit.accessmanager:3.0.4",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.jcr.jackrabbit.usermanager:2.2.8",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.jcr.jcr-wrapper:2.0.0",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.jcr.registration:1.0.6",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.jcr.webconsole:1.0.2",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.jcr.webdav:2.3.8",
+            "start-order":"15"
+        },
+        {
+            "id":"org.apache.sling:org.apache.sling.resource.filter:1.0.0",
+            "start-order":"15"
+        }
+    ],
+    "configurations":{
+        "org.apache.sling.commons.log.LogManager":{
+            "org.apache.sling.commons.log.packagingDataEnabled":true,
+            "org.apache.sling.commons.log.pattern":"%d{dd.MM.yyyy HH:mm:ss.SSS} *%level* [%thread] %logger %msg%n",
+            "org.apache.sling.commons.log.level":"info",
+            "org.apache.sling.commons.log.file":"logs/error.log",
+            "org.apache.sling.commons.log.file.number:Integer":"7",
+            "org.apache.sling.commons.log.file.size":"'.'yyyy-MM-dd"
+        },
+        "org.apache.sling.engine.impl.log.RequestLogger":{
+            "access.log.enabled":true,
+            "request.log.outputtype:Integer":"0",
+            "access.log.output":"log.access",
+            "request.log.output":"log.request",
+            "request.log.enabled":true,
+            "access.log.outputtype:Integer":"0"
+        },
+        "org.apache.sling.jcr.davex.impl.servlets.SlingDavExServlet":{
+            "alias":"/server"
+        },
+        "org.apache.sling.jcr.webdav.impl.servlets.SimpleWebDavServlet":{
+            "dav.root":"/dav"
+        },
+        "org.apache.sling.commons.log.LogManager.factory.config~access.log":{
+            "org.apache.sling.commons.log.pattern":"%msg%n",
+            "org.apache.sling.commons.log.names":[
+                "log.access"
+            ],
+            "org.apache.sling.commons.log.level":"info",
+            "org.apache.sling.commons.log.file":"logs/access.log"
+        },
+        "org.apache.sling.commons.log.LogManager.factory.config~request.log":{
+            "org.apache.sling.commons.log.pattern":"%msg%n",
+            "org.apache.sling.commons.log.names":[
+                "log.request"
+            ],
+            "org.apache.sling.commons.log.level":"info",
+            "org.apache.sling.commons.log.file":"logs/request.log"
+        },
+        "org.apache.sling.jcr.base.internal.LoginAdminWhitelist.fragment~sling":{
+            "whitelist.bundles":[
+                "org.apache.sling.discovery.commons",
+                "org.apache.sling.discovery.base",
+                "org.apache.sling.discovery.oak",
+                "org.apache.sling.extensions.webconsolesecurityprovider",
+                "org.apache.sling.i18n",
+                "org.apache.sling.jcr.base",
+                "org.apache.sling.jcr.contentloader",
+                "org.apache.sling.jcr.jackrabbit.usermanager",
+                "org.apache.sling.jcr.oak.server",
+                "org.apache.sling.jcr.repoinit",
+                "org.apache.sling.jcr.webconsole",
+                "org.apache.sling.servlets.post",
+                "org.apache.sling.serviceuser.webconsole"
+            ],
+            "whitelist.name":"sling"
+        },
+        "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~i18n":{
+            "user.mapping":[
+                "org.apache.sling.i18n=sling-i18n"
+            ]
+        },
+        "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~jcr-install":{
+            "user.mapping":[
+                "org.apache.sling.installer.provider.jcr=sling-jcr-install"
+            ]
+        },
+        "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~jcr-resource":{
+            "user.mapping":[
+                "org.apache.sling.jcr.resource:validation=sling-readall"
+            ]
+        },
+        "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~observation":{
+            "user.mapping":[
+                "org.apache.sling.jcr.resource:observation=sling-readall"
+            ]
+        },
+        "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~resourceresolver":{
+            "user.mapping":[
+                "org.apache.sling.resourceresolver:mapping=sling-mapping",
+                "org.apache.sling.resourceresolver:hierarchy=sling-readall",
+                "org.apache.sling.resourceresolver:observation=sling-readall",
+                "org.apache.sling.resourceresolver:console=sling-readall"
+            ]
+        },
+        "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~servletsresolver":{
+            "user.mapping":[
+                "org.apache.sling.servlets.resolver:console=sling-readall",
+                "org.apache.sling.servlets.resolver:scripts=sling-scripting"
+            ]
+        },
+        "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~xss":{
+            "user.mapping":[
+                "org.apache.sling.xss=sling-xss"
+            ]
+        }
+    }
+}
\ No newline at end of file
diff --git a/sling-org-apache-sling-feature-model-starter/src/main/fm/sling_slingshot.json b/sling-org-apache-sling-feature-model-starter/src/main/fm/sling_slingshot.json
new file mode 100644
index 0000000..1628f03
--- /dev/null
+++ b/sling-org-apache-sling-feature-model-starter/src/main/fm/sling_slingshot.json
@@ -0,0 +1,39 @@
+
+{
+    "id":"org.apache.sling:org.apache.sling.feature.model.starter:slingfeature:sling_slingshot:12-SNAPSHOT",
+    "bundles":[
+        {
+            "id":"org.apache.sling:org.apache.sling.sample.slingshot:0.9.0",
+            "start-order":"20"
+        }
+    ],
+    "configurations":{
+        "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~sling.slingshot":{
+            "user.mapping":[
+                "org.apache.sling.sample.slingshot=slingshot-service"
+            ]
+        }
+    },
+    "repoinit:TEXT|true":[
+        "create service user slingshot-service",
+        "create user slingshot1 with password slingshot1",
+        "create user slingshot2 with password slingshot2",
+        "",
+        "create path (sling:Folder) /content/slingshot",
+        "create path (sling:Folder) /content/slingshot/users",
+        "create path (sling:Folder) /content/slingshot/users/slingshot1",
+        "create path (sling:Folder) /content/slingshot/users/slingshot2",
+        "",
+        "set ACL for slingshot-service",
+        "allow   jcr:read,rep:write    on /content/slingshot",
+        "end",
+        "",
+        "set ACL for slingshot1",
+        "allow   jcr:read,rep:write    on /content/slingshot/users/slingshot1",
+        "end",
+        "",
+        "set ACL for slingshot2",
+        "allow   jcr:read,rep:write    on /content/slingshot/users/slingshot2",
+        "end"
+    ]
+}
\ No newline at end of file
diff --git a/sling-org-apache-sling-feature-model-starter/src/main/fm/standalone_standalone.json b/sling-org-apache-sling-feature-model-starter/src/main/fm/standalone_standalone.json
new file mode 100644
index 0000000..4bf9d52
--- /dev/null
+++ b/sling-org-apache-sling-feature-model-starter/src/main/fm/standalone_standalone.json
@@ -0,0 +1,16 @@
+
+{
+    "id":"org.apache.sling:org.apache.sling.feature.model.starter:slingfeature:standalone:12-SNAPSHOT",
+    "bundles":[
+        {
+            "id":"org.apache.felix:org.apache.felix.http.jetty:4.0.8",
+            "run-modes":":standalone",
+            "start-order":"5"
+        },
+        {
+            "id":"org.apache.felix:org.apache.felix.http.servlet-api:1.1.2",
+            "run-modes":":standalone",
+            "start-order":"5"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/sling-org-apache-sling-feature-model-starter/src/main/fm/webapp_webapp.json b/sling-org-apache-sling-feature-model-starter/src/main/fm/webapp_webapp.json
new file mode 100644
index 0000000..94fe38e
--- /dev/null
+++ b/sling-org-apache-sling-feature-model-starter/src/main/fm/webapp_webapp.json
@@ -0,0 +1,4 @@
+
+{
+    "id":"org.apache.sling:org.apache.sling.feature.model.starter:slingfeature:webapp:12-SNAPSHOT"
+}
\ No newline at end of file