Project

General

Profile

V30-experimental retired » History » Version 12

Henning Blohm, 03.12.2014 18:50

1 1 Henning Blohm
h1. Z2-Environment version 3.0
2
3
Version 3.0 is in progress
4
5 3 Henning Blohm
The main goals for 3.0 is to provide features that simplify user adoption.
6
7 9 Henning Blohm
h2. Simplified Entry-Level Operations
8 3 Henning Blohm
9
In order to reduce the initial usage barrier, the following should be possible (or simplified)
10
11
* Have a system layout consisting of a number of auto-discovered co-located file system repositories
12
** Much like the dev repo but actually based on the FSCR and "always armed"
13
** Benefit: Supports Git-branching approaches out of the box
14
** Benefit: Allows System Releases as a single ZIP to be exploded without any online access (a regular "copy" deployment)
15
 
16
* Provide consistent and complete system export
17
** Support binary or source-preserving export
18
** Provide clean component name escaping so we can also export mvn-provided artifacts if desired
19
** so we can offer a complete base distribution as binary download
20
** Running samples means to clone co-located Git Repos
21 1 Henning Blohm
** Make re-binding of repository locations simpler (e.g. a remote repo becomes a local FS repo after export)
22 5 Henning Blohm
23 6 Henning Blohm
* Support single-process mode (e.g. no Worker mode - move worker support into an add-on)
24 3 Henning Blohm
25
h2. Free Web Container Choice
26 1 Henning Blohm
27 4 Henning Blohm
It should be possible to use a Web Container of choice, as long as it is Jetty or Tomcat. Our tests indicate that it should be simple to programmatically control any pre-installed instance.
28 1 Henning Blohm
29 4 Henning Blohm
* Provide a web container resource that hooks up with a pre-configured web container OR a self-hosted web container
30
* This will require some creative business with the servlet/jsp and Web Container class path
31
32
h2. Improvements
33 1 Henning Blohm
34 7 Henning Blohm
* Provide a z2 for dummies introduction that starts with simple, include-based web apps
35 1 Henning Blohm
* Seamless support of Maven repositories (see [[V23]], [[maven_repo_support]])
36 7 Henning Blohm
** Including install into repository from z2
37
* Use string revisions rather than longs (so that natural versions are better supported)
38 1 Henning Blohm
* Introduce "Java Templates", Java (and others) Component configuration made simpler (see [[smart_props]])
39 2 Henning Blohm
* Port add-ons and samples to maven repos for external artifacts
40 11 Henning Blohm
* Drop "I" interface notation
41
* Drop resource instance on every invalidation.
42
* Define component name escaping for the file system repo helper
43
* Introduce boot repository *at* Z2_HOME into ComponentsManager 
44
** Auto-discover other repos at Z2_HOME
45
** Default "." as dev repo workspace
46
** launch purely from "java -jar z.jar"
47
** Introduce moduleName property for "free-floating" components
48
** Introduce repository adapter type.
49
* Folders for operation
50 12 Henning Blohm
** org.zding.home --> shared repos entry point, work and data store (==> repos, in particular DEV repo must use folder-unique work key). Defaults from Z2_HOME.
51
** org.zding.dev.workspaces --> workspaces to check for dev repo component overrides. Defaults from "."
52 11 Henning Blohm
* Use /code instead of /java to be more agnostic to the language in use
53
54
55 8 Henning Blohm
56
h2. Proposals
57
58
h3. Local Install Layout
59
60
By means module virtualization (already today via the module name property of the dev repo) we can essentially turn anything that has a "z.properties" into a component and use a declared name as the module "namespace".
61
62
Combined with an "adapter component type" concept we can introduce for example
63
64
* Tomcat Adapter Component: Tells the Tomcat based web container integration about the location of a Tomcat installation.
65
* and similarly for other component types that depend on "local/external" defined resources
66
67
The follwing _typical_ layout is suggested:
68
69
<pre>
70
+-<tomcat-folder>
71
|  +- z.properties  (adapter declaration)
72
|  +- LOCAL (tagging)
73 1 Henning Blohm
|  +- <whatever tomcat stuff>
74
|
75 12 Henning Blohm
+-zding
76
|  +-addons
77
|    +- zding-essentials
78
|    +- zding-jetty
79
|    +- zding-devtools  
80
|  +-zding.jar
81 1 Henning Blohm
|
82
+-<armed module 1>
83
+-<armed module 2>
84
|
85
+-<git repo 1>
86
</pre>
87 12 Henning Blohm
88
h2. Further requirements
89
90
* Autodiscovery should provide a seamless transition between remote and local repositories. 
91
* Functionality in a repository (such as devtools) should have a way to indicate (<name>/requirements.properties --> part in homeUp) that it requires other repositories (by name). 
92
93 8 Henning Blohm
94
h3. Web Container Integration
95
96
As outlined above, we will support re-use of existing pre-configured web container instances.
97
98
h3. Repository Export
99
100
We will enhance the repository export so that given a number of repository component names (possibly including mvn repos), a complete export, in source or binary, will be put into a structure as outlined above. 
101
102
* Repository Component Names can be mapped
103 1 Henning Blohm
* We will introduce a component name escaping pattern to support maven originated components as well 
104 10 Henning Blohm
105
h3. Review of Software Component Responsibilities
106
107
+core+
108
109
* Component and Module Model
110
* Component Types:
111
** System State
112
** Java / Compiler
113
** "main" programs
114
** "any"
115
116
+base+
117
118
...