cziegeler closed pull request #4: Additional requirements for the Sling Feature Model URL: https://github.com/apache/sling-whiteboard/pull/4
This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/featuremodel/readme.md b/featuremodel/readme.md index 41d9cd5..4a88a86 100644 --- a/featuremodel/readme.md +++ b/featuremodel/readme.md @@ -11,22 +11,56 @@ The goals of this proposal are: # Requirements -The feature model should at least meet the following requirements: - -* A feature model must have a unique identifier -* A feature model must have a version -* The feature model should be described through a text format which is easily consumable by both humans and machines -* It must be possible to list the bundles belonging to the feature. The bundle definition is complete, meaning it also contains the version or exact artifact. -* It must be possible to list the OSGi configurations for this features -* It must be possible to associate an OSGi configuration with a bundle within a features -* It must be possible to define framework properties -* The feature model must be extensible to allow other (proprietary) Artifacts -* A feature must be able to extend other features. -* The feature model must describe how several features are aggregated to build a higher level feature -* The feature model must describe how several features are aggregated to build an application -* A feature must be able to specify additional requirements and capabilities that extend the requirements and capabilities from the contained artifacts. -* A feature should be describable through a single file. -* Multiple features must be described in multiple files- +The feature model should meet the following requirements: + +* SFM010 - A feature model must have a unique identifier. +* SFM020 - A feature model must have a version. +* SFM030 - The feature model should be described through a text format which is easily consumable by both humans and machines, that can be edited with common editors and support text-based diff operations. +* SFM040 - It must be possible to specify the bundles belonging to the feature, including version. +* SFM050 - It must be possible to specify the bundles in a feature in terms of Maven coordinates. +* SFM060 - It must be possible to specify the OSGi configurations for a feature. +* SFM070 - Both normal OSGi configurations as well as factory configurations must be supported. The feature model must support all data types supported by the OSGi Configuration Admin specification. +* SFM080 - It must be possible to associate an OSGi configuration with a bundle within a feature. If the bundle is not resolved at runtime then the associated configuration also does not get installed. +* SFM090 - It must be possible to define framework properties. +* SFM100 - A feature must be able to extend other features. +* SFM110 - A feature must be able to depend on other features. The feature model must be able to deal with circular dependencies. +* SFM120 - The feature model must describe how several features are combined to build an application. +* SFM130 - A feature must be describable through a single file. +* SFM140 - Multiple features must be described in multiple files. +* SFM150 - The feature model must be extensible to allow other (proprietary) artifacts and content. +* SFM160 - The feature model must allow the specification of the order in which the bundles inside the feature are started. This should be relative to when the feature itself is started. +* SFM170 - The feature model must support variable substitution for its values at runtime. +* SFM180 - The feature model must support JCR Repository Initialization via the _repoinit_ language. +* SFM190 - The feature model should allow the arbitrary text files to be written to the file system, to support configuration of components that use file-based configuration such as properties or XML files, such as web.xml. +* SFM200 - The feature model must support features which consist of repository content packages. +* SFM210 - The feature model may support more than one text-based definition language where the language used can be easily inferred, for example from the file extension. +* SFM220 - The feature model must support runtime launching with one or more features. +* SFM230 - The feature model must be able to compute the effective requirements of a feature by inspecting the feature's content and combining this with requirements specified on the feature itself. +* SFM240 - The feature model must be able to compute the capabilities of a feature by inspecting the feature's content and directly specified capabilities. +* SFM250 - A feature must be able to specify additional requirements and capabilities that extend the requirements and capabilities from the contained artifacts. +* SFM260 - The feature model must be able to find all features that provide the capabilities required by a given feature, from a set of available features. +* SFM270 - Given one or more root features, the feature model must be able to compute the start order of all resulting features so that dependencies of features are started first. +* SFM280 - The feature model should support all functionality previously provided by the Sling provisioning model. +* SFM290 - When two bundles with the same symbolic name are installed then the feature model must be capable of only using the one with the highest version number. +* SFM300 - When two bundles with the same symbolic name are installed then the feature model must be capable of installing them side-by-side. +* SFM310 - The feature model should provide support for long and multi-line values without creating files that become hard to handle. +* SFM320 - The feature model must support comments. +* SFM330 - It should be possible to dynamically install and uninstall features at runtime. + +## Tooling +The following requirements relate to tooling around the Feature Model. + +* SFT010 - A maven tool must be provided that can create a Sling Launchpad from the feature model. +* SFT020 - The feature model must allow minimal packaging of runtime artifacts for a feature based on one or more root features and including all their transitive dependencies, but no other artifacts. + +### Containers +These requirements + +* SFC010 - The feature model must support operation in a container environment such as Docker. +* SFC020 - The feature model must support micro-services oriented target runtimes where a single micro service runs in its own container containing only the binaries required for that microservice. +* SFC030 - It must be possible to add new features by placing additional files in a container's file system. +* SFC040 - It must be possible to alter existing features by placing additional files in the file system. For example to uninstall or update a bundle provided by an existing feature or to alter a configuration set by an existing feature. +* SFC050 - The feature model must enable the creation of container (Docker) images for a specified set of features. # Prototype ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services