Rules
This document describes the code, architecture, and lifecycle rules that are obligatory for all ETS components.
General rules
-
All public ETS component code repositories have their home at
https://github.com/Galeria-Kaufhof/ets-<name-of-component>
-
All ETS components that release and publish artifacts used by others must follow the Semantic Versioning 2.0.0 guidelines for versioning their releases
-
All public ETS components must ship with a root folder
CHANGELOG.md
file that follows the Keep a Changelog 1.0.0 guidelines -
All public ETS components must be released under The MIT License and must be copyright Galeria Kaufhof GmbH if released by Galeria Kaufhof GmbH employees or contractors
Naming and namespacing rules
-
The correct spelling of the long form name of ETS is
Galeria Kaufhof eShop Technology Stack
, the correct spelling of the medium form name iseShop Technology Stack
, and the short form isETS
-
ETS Software uses the Java namespace / groupId
de.kaufhof.ets
-
Within this namespace, each component has its own namespace, e.g.
filestorage
, resulting in the fully qualified namespacede.kaufhof.ets.filestorage
-
Within a component's namespace, each subcomponent has its own namespace, e.g.
core
, resulting in the fully qualified namespacede.kaufhof.ets.filestorage.core
-
The artifactId of all artifacts an ETS component releases must start with
ets-
, e.g.ets-filestorage-core
-
If your component is an ETS library or application, then if it has only one subcomponent, its artifactId must end with
-core
, e.g.ets-filestorage-core
; additional subcomponents can have arbitrary artifactId endings, e.g.ets-filestorage-nfs
-
Subcomponents of an ETS component must live in root subfolders which are named like the subcomponent's artifactId, e.g.
/ets-filestorage-core
-
Within a subcomponent's subfolder, create a source code hierarchy following the pattern
src/main/scala/de/kaufhof/ets/<component-name>/<subcomponent-name>
, e.g.src/main/scala/de/kaufhof/ets/filestorage/core
-
Component and subcomponent namespace segments must be one-word all-lowercase UTF-8
[a-z0-9]
strings (e.g.de.kaufhof.ets.filestorage.core
) -
Component artifactIds must be at-least-one-word, possibly multiple-words-concatenated-by-hyphens all-lowercase UTF-8
[a-z0-9]
strings (e.g.ets-filestorage-core
)
Example
The source code for an ETS-compatible filestorage library would live at https://github.com/Galeria-Kaufhof/ets-filestorage
.
Its groupId + artifactId name would be de.kaufhof.ets:ets-filestorage-core
.
The Scala source code tree starts at /ets-filestorage-core/src/main/scala/de/kaufhof/ets/filestorage/core
, with package names starting with de.kaufhof.ets.filestorage.core
.