You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2020/01/31 19:25:48 UTC

[isis] 03/09: ISIS-2062: cleans up some of the toc docs

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

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit a06f27a1a5e247712413130c2d47114d384bbcc4
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 31 16:51:52 2020 +0000

    ISIS-2062: cleans up some of the toc docs
---
 antora/toc/modules/ROOT/pages/about.adoc           |  2 +-
 .../what-is-apache-isis/common-use-cases.adoc      | 18 ++--
 .../what-is-apache-isis/isis-in-pictures.adoc      | 78 ++----------------
 .../ROOT/pages/what-is-apache-isis/powered-by.adoc |  6 +-
 .../what-is-apache-isis/powered-by/commapp.adoc    | 22 ++---
 .../what-is-apache-isis/powered-by/contactapp.adoc | 19 ++---
 .../pages/what-is-apache-isis/powered-by/cqnz.adoc |  5 +-
 .../what-is-apache-isis/powered-by/estatio.adoc    |  9 +-
 .../powered-by/gesconsultor-grc.adoc               |  1 +
 .../powered-by/transport-planner.adoc              | 30 +++----
 .../pages/what-is-apache-isis/screencasts.adoc     | 83 ++++++++++---------
 antora/toc/modules/ROOT/partials/module-nav.adoc   |  2 +-
 .../modules/comguide/pages/cutting-a-release.adoc  |  6 +-
 .../release-process-for-interim-releases.adoc      |  5 --
 .../src/main/adoc/modules/ROOT/pages/about.adoc    | 95 ++++++++++++++--------
 15 files changed, 164 insertions(+), 217 deletions(-)

diff --git a/antora/toc/modules/ROOT/pages/about.adoc b/antora/toc/modules/ROOT/pages/about.adoc
index 0db1dd1..971b5df 100644
--- a/antora/toc/modules/ROOT/pages/about.adoc
+++ b/antora/toc/modules/ROOT/pages/about.adoc
@@ -15,7 +15,7 @@
 * xref:what-is-apache-isis/common-use-cases.adoc[Common Use Cases]
 
 * xref:what-is-apache-isis/screencasts.adoc[Screencasts]
-* xref:what-is-apache-isis/powered-by.adoc[Powered By]
+// * xref:what-is-apache-isis/powered-by.adoc[Powered By]
 
 |
 [discrete]
diff --git a/antora/toc/modules/ROOT/pages/what-is-apache-isis/common-use-cases.adoc b/antora/toc/modules/ROOT/pages/what-is-apache-isis/common-use-cases.adoc
index e54020d..603f9e1 100644
--- a/antora/toc/modules/ROOT/pages/what-is-apache-isis/common-use-cases.adoc
+++ b/antora/toc/modules/ROOT/pages/what-is-apache-isis/common-use-cases.adoc
@@ -8,32 +8,30 @@
 
 Apache Isis is great for rapid prototyping, because all you need to write in order to get an application up-and-running is the domain model objects.
 
-By focussing just on the domain, you'll also find that you start to develop a ubiquitous language - a set of terms and concepts that the entire team (business and technologists alike) have a shared understanding.
-
-Once you've sketched out your domain model, you can then either start-over using your preferred framework, or you might choose to take the domain model forward into more formal specification and testing.
-
+By focusing just on the domain, you'll also find that you start to develop a ubiquitous language - a set of terms and concepts that the entire team (business and technologists alike) have a shared understanding.
 
+If you wish, you could combine this with BDD - the framework integrates with xref:testing:specsupport:about.adoc[Cucumber].
 
+Once you've sketched out your domain model, you can then either start-over using your preferred framework, or you might choose to take the domain model forward into more formal specification and testing.
 
 
-== Deploy as an human-usable webapp
+== Deploy with a generic UI
 
 One of the original motivations for Apache Isis itself was to be able automatically generate a user interface for a domain object model.
 
 Apache Isis' has a pluggable architecture allowing different user interface technologies.
- The principal implementation (as configured by the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype]) is the xref:vw:ROOT:about.adoc[Wicket viewer].
-  This provides an appealing default user interface, with the ability to customize the user interface by writing new http://wicket.apache.org[Apache Wicket] components.
-Some third-party components can be found in the (non-ASF) link:https://platform.incode.org[Incode Platform^].
+ The principal implementation is the xref:vw:ROOT:about.adoc[Wicket viewer].
 
+This provides an appealing default user interface, with the ability to customize the user interface by writing new http://wicket.apache.org[Apache Wicket] components.
 
 Deploying on Apache Isis means that the framework also manages object persistence.
 Again this is pluggable, but the principal implementation is the JDO/DataNucleus objectstore.
-Because JDO supports both SQL and NoSQL databases, you can then deploy on a variety of platforms, including the link:https://developers.google.com/appengine/[Google App Engine (GAE)] and link:http://neo4j.com/[Neo4J].
+Because JDO supports both SQL and NoSQL databases, you can then deploy on a variety of platforms, normally relational but also databases such as link:http://neo4j.com/[Neo4J].
 
 
 
 
-== Deploy as a RESTful web service
+== Deploy as a REST API
 
 REST (Representation State Transfer) is an architectural style for building highly scalable distributed systems, using the same principles as the World Wide Web.
 Many commercial web APIs (twitter, facebook, Amazon) are implemented as either pure REST APIs or some approximation therein.
diff --git a/antora/toc/modules/ROOT/pages/what-is-apache-isis/isis-in-pictures.adoc b/antora/toc/modules/ROOT/pages/what-is-apache-isis/isis-in-pictures.adoc
index 9947cd5..6701ab4 100644
--- a/antora/toc/modules/ROOT/pages/what-is-apache-isis/isis-in-pictures.adoc
+++ b/antora/toc/modules/ROOT/pages/what-is-apache-isis/isis-in-pictures.adoc
@@ -1,24 +1,13 @@
-[[isis-in-pictures]]
 = Apache Isis in Pictures
 :Notice: 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 ag [...]
 
+// TODO: v2: NICE-TO-HAVE: these screenshots should be updated, but first need to port the todoapp over first (which also means the various modules from incode-platform)
 
+On this page we want to show you what an Apache Isis application looks like, running on the xref:vw:ROOT:about.adoc[Wicket viewer].
+The screenshots below are taken from a "Todo" application.
 
-WARNING: TODO: v2 - this material out of date, to be updated (need to migrate much of incode-platform, and port of isis-app-todoapp to github/apache/isis-app-todoapp)
-
-On this page we want to show you what a modern Apache Isis application looks like.
-
-The screenshots below are taken from the Isis Addons' http://github.com/isisaddons/isis-app-todoapp[todoapp example] (non ASF), which you are free to fork and use as you will.
-The corresponding domain classes from which this UI was built can be found https://github.com/isisaddons/isis-app-todoapp/tree/master/dom/src/main/java/todoapp/dom/todoitem[here].
-
-The todoapp also integrates with a number of other modules from the (non-ASF) link:https://platform.incode.org[Incode Platform^].
-Because we expect that most apps will end up using one or more of these modules, we've chosen to include screenshots of those too.
-
-[NOTE]
-====
-These screenshots based on Apache Isis 1.13.x.
-====
-
+NOTE: these screenshots are based on an app running against v1.13  and v1.10 of the framework.
+There have since been a number of UI improvements since these releases.
 
 == Basics
 
@@ -33,8 +22,6 @@ The core framework supports file-based realms, while the xref:security:ROOT:abou
 
 image::what-is-apache-isis/isis-in-pictures/010-login.png[width="800px",link="{imagesdir}/what-is-apache-isis/isis-in-pictures/010-login.png"]
 
-
-
 === Install Fixtures
 
 Apache Isis has lots of features to help you prototype and then fully test your application.
@@ -45,8 +32,6 @@ This is great to act as the starting point for identifying new stories; later on
 
 image::what-is-apache-isis/isis-in-pictures/020-install-fixtures.png[width="800px",link="{imagesdir}/what-is-apache-isis/isis-in-pictures/020-install-fixtures.png"]
 
-
-
 === Dashboard and View Models
 
 Most of the time the end-user interacts with representations of persistent domain entities, but Apache Isis also supports view models which can aggregate data from multiple sources.
@@ -57,9 +42,6 @@ image::what-is-apache-isis/isis-in-pictures/030-dashboard-view-model.png[width="
 In general we recommend to initially focus only on domain entities; this will help drive out a good domain model.
 Later on view models can be introduced in support of specific use cases.
 
-
-
-
 === Domain Entity
 
 The screenshot below is of the todoapp's `ToDoItem` domain entity.
@@ -76,9 +58,6 @@ The benefit of the latter is that it can be updated (and the UI redrawn) without
 
 Any production-ready app will require this metadata but (like the view models discussed above) this metadata can be added gradually on top of the core domain model.
 
-
-
-
 === Edit properties
 
 By default properties on domain entities are editable, meaning they can be changed directly.
@@ -90,9 +69,6 @@ image::what-is-apache-isis/isis-in-pictures/050-edit-property.png[width="800px",
 Note that some of the properties are read-only even in edit mode; individual properties can be made non-editable.
 It is also possible to make all properties disabled and thus enforce changes only through actions (below).
 
-
-
-
 === Actions
 
 The other way to modify an entity is to an invoke an action.
@@ -107,9 +83,6 @@ Or, it might not update any objects at all, but could instead perform some other
 In general though, all actions are associated with some object, and are (at least initially) also implemented by that object: good old-fashioned encapsulation.
 We sometimes use the term "behaviourally complete" for such domain objects.
 
-
-
-
 === Mixins
 
 As an alternative to placing actions (business logic) on a domain object, it can instead be placed inside a mixin object.
@@ -119,13 +92,8 @@ In the screenshot below the highlighted "export as xml" action, the "relative pr
 
 image::what-is-apache-isis/isis-in-pictures/065-contributions.png[width="800px",link="{imagesdir}/what-is-apache-isis/isis-in-pictures/065-contributions.png"]
 
-
 == Extensible Views
 
-[NOTE]
-====
-The remaining screenshots on this page are for v1.10.0 of the framework, which precedes the support for tabbed views introduced in v1.12.0.
-====
 
 The Apache Isis viewer is implemented using http://wicket.apache.org[Apache Wicket], and has been designed to be extensible.
 For example, when a collection of objects is rendered, this is just one of several views, as shown in the selector drop-down:
@@ -149,8 +117,7 @@ image::what-is-apache-isis/isis-in-pictures/090-fullcalendar2-view.png[width="80
 
 
 
-Yet another "view" (though this one is rather simpler) is that provided by the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s excel Wicket component
-This provides a download button to the table as a spreadsheet:
+Yet another "view" (though this one is rather simpler) is that provided by the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s excel Wicket component This provides a download button to the table as a spreadsheet:
 
 image::what-is-apache-isis/isis-in-pictures/100-excel-view-and-docx.png[width="800px",link="{imagesdir}/what-is-apache-isis/isis-in-pictures/100-excel-view-and-docx.png"]
 
@@ -163,26 +130,15 @@ This is _not_ a view but instead is a (contributed) action that uses the (non-AS
 image::what-is-apache-isis/isis-in-pictures/110-docx.png[width="800px",link="{imagesdir}/what-is-apache-isis/isis-in-pictures/110-docx.png"]
 
 
-
-
-[NOTE]
-====
-Please note that the Isis Addons are not part of ASF, but they _are_ all licensed under Apache License 2.0 and are maintained by the Apache Isis committers.
-====
-
-
-
-
 == Security, Auditing and more...
 
 As well as providing extensions to the UI, the (non ASF) Isis Addons provide a rich set of modules to support various cross-cutting concerns.
 
-Under the activity menu are four sets of services which provide support for (non-ASF) link:https://platform.incode.org[Incode Platform^]'s sessionlogger module (for user session logging/auditing) , command module (audit/profiling), audit module (audit object changes) (shown) and (inter-system) event publishing:
+Under the activity menu are four sets of services which provide support on user session logging/auditing, command module (profiling and replay), audit module (audit object changes) and (inter-system) event publishing:
 
 image::what-is-apache-isis/isis-in-pictures/120-auditing.png[width="800px",link="{imagesdir}/what-is-apache-isis/isis-in-pictures/120-auditing.png"]
 
 
-
 In the security menu is access to the rich set of functionality provided by the xref:security:ROOT:about.adoc[SecMan extension]:
 
 image::what-is-apache-isis/isis-in-pictures/130-security.png[width="800px",link="{imagesdir}/what-is-apache-isis/isis-in-pictures/130-security.png"]
@@ -204,9 +160,6 @@ Most apps (the todoapp example included) won't expose these services directly, b
 
 image::what-is-apache-isis/isis-in-pictures/150-appsettings.png[width="800px",link="{imagesdir}/what-is-apache-isis/isis-in-pictures/150-appsettings.png"]
 
-
-
-
 === Multi-tenancy support
 
 One significant feature of the xref:security:ROOT:about.adoc[SecMan extension] is the ability to associate users and objects with a "tenancy".
@@ -219,7 +172,6 @@ image::what-is-apache-isis/isis-in-pictures/160-switch-tenancy.png[width="800px"
 
 For more details, see the xref:security:ROOT:about.adoc[SecMan extension].
 
-
 === Me
 
 Most of the xref:security:ROOT:about.adoc[SecMan extension]'s services are on the security menu, which would normally be provided only to administrators.
@@ -238,7 +190,6 @@ image::what-is-apache-isis/isis-in-pictures/180-app-user-entity.png[width="800px
 If not all of these properties are required, then they can be hidden either using security or though Apache Isis' internal event bus (described below).
 Conversely, additional properties can be "grafted onto" the user using the contributed properties/collections discussed previously.
 
-
 === Themes
 
 Apache Isis' Wicket viewer uses http://getbootstrap.com[Twitter Bootstrap], which means that it can be themed.
@@ -246,9 +197,6 @@ If more than one theme has been configured for the app, then the viewer allows t
 
 image::what-is-apache-isis/isis-in-pictures/190-switch-theme.png[width="800px",link="{imagesdir}/what-is-apache-isis/isis-in-pictures/190-switch-theme.png"]
 
-
-
-
 == REST API
 
 In addition to Apache Isis' Wicket viewer, it also provides a rich REST API with a full set of hypermedia controls, generated automatically from the domain objects (entities and view models).
@@ -266,13 +214,6 @@ From this spec REST clients can be code-generated; it also allows developers to
 
 image::what-is-apache-isis/isis-in-pictures/205-swagger-ui.png[width="800px",link="{imagesdir}/what-is-apache-isis/isis-in-pictures/205-swagger-ui.png"]
 
-
-
-
-
-
-
-
 == Integration Testing Support
 
 Earlier on we noted that Apache Isis allows fixtures to be installed through the UI.
@@ -296,11 +237,6 @@ The wrapper simulates this by throwing an appropriate exception:
 
 image::what-is-apache-isis/isis-in-pictures/230-testing-wrapper-factory.png[width="550px",link="{imagesdir}/what-is-apache-isis/isis-in-pictures/230-testing-wrapper-factory.png"]
 
-
-
-
-
-
 == Internal Event Bus
 
 Contributions, discussed earlier, are an important tool in ensuring that the packages within your Apache Isis application are decoupled; by extracting out actions the order of dependency between packages can effectively be reversed.
diff --git a/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by.adoc b/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by.adoc
index 529139f..a27db8c 100644
--- a/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by.adoc
+++ b/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by.adoc
@@ -1,12 +1,11 @@
-[[powered-by]]
 = Powered By
 :notice: 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 ag [...]
 
 
+// TODO: V2: need to update these, they are getting stale.
 
 
-Deciding whether to use a full stack framework such as Apache Isis means in large part determining to what extent the
-applications you need to develop align with the strengths and philosophy of the framework.
+Deciding whether to use a full stack framework such as Apache Isis means in large part determining to what extent the applications you need to develop align with the strengths and philosophy of the framework.
 This page catalogues a few notable applications that are powered by Apache Isis so you can help make that determination.
 
 [TIP]
@@ -14,7 +13,6 @@ This page catalogues a few notable applications that are powered by Apache Isis
 If you have written an app in Apache Isis that you'd like to share, please mention it on the xref:toc:ROOT:support.adoc#[mailing list].
 ====
 
-
 include::powered-by/estatio.adoc[leveloffset=+1]
 include::powered-by/gesconsultor-grc.adoc[leveloffset=+1]
 include::powered-by/contactapp.adoc[leveloffset=+1]
diff --git a/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/commapp.adoc b/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/commapp.adoc
index 021afd8..61c80e1 100644
--- a/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/commapp.adoc
+++ b/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/commapp.adoc
@@ -1,34 +1,28 @@
 = CommApp
 :notice: 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 ag [...]
-:page-partial:
+:page-partial:r
 
+// TODO: V2: need to update these, they are getting stale.
 
-CommApp is an application whose domain is that of managing businesses themselves, specifically the commercial aspects
-of a business.  You can get a feel for it from this screenshot:
+CommApp is an application whose domain is that of managing businesses themselves, specifically the commercial aspects of a business.
+You can get a feel for it from this screenshot:
 
 image::powered-by/commapp/screenshot-1.png[width="900px",link="{imagesdir}/powered-by/commapp/screenshot-1.png"]
 
-which shows how the app integrates a number of the (non-ASF) link:https://platform.incode.org[Incode Platform^] components
-(excel, fullcalendar2, gmap3 and wickedcharts).
-
+which shows how the app integrates a number of the (non-ASF) link:https://platform.incode.org[Incode Platform^] components (excel, fullcalendar2, gmap3 and wickedcharts).
 
 == Why Apache Isis?
 
 When making our decision towards a software development framework, we evaluated some few like Spring Framework and Oracle ADF, including a newer semantic framework.
 At that point we faced we needed to choose between being locked in to a framework using many of their proprietary classes, methods and other features, or having to write a lot of code even to get things as CURD operations, and we would be facing significant differences in the code if using relational databases or the newer so called NonSQL databases.
 
-So we added Apache Isis to our evaluation, and we found it to be open in many aspects, including an open architecture and auto-generated UI viewer, as well as equally open and auto-generated REST/SOA web services, seamlessly support both SQL and NoSQL through an open and standard http://datanucleus.org[persistence manager], as well as open security
-(http://shiro.apache.org[Apache Shiro], LDAP) and features such as multi-tenancy.
+So we added Apache Isis to our evaluation, and we found it to be open in many aspects, including an open architecture and auto-generated UI viewer, as well as equally open and auto-generated REST/SOA web services, seamlessly support both SQL and NoSQL through an open and standard http://datanucleus.org[persistence manager], as well as open security (http://shiro.apache.org[Apache Shiro], LDAP) and features such as multi-tenancy.
 
 Our main focus in the code is given to the business domain, with business logic treated as a first class citizen.
 And because our code simply uses non-proprietary Java, we've been able to extend it the normal way.
-Very little code in our application so far can be considered to be framework-specific, the few that is only because we chose to use some
-of the (non-ASF) link:https://platform.incode.org[Incode Platform^] modules that provide our applications with high value, and which are
-open source also.
+Very little code in our application so far can be considered to be framework-specific, the few that is only because we chose to use some of the (non-ASF) link:https://platform.incode.org[Incode Platform^] modules that provide our applications with high value, and which are open source also.
 
-When creating our prototype and then subsequent application, we've found quite amazing support: most of the time the
-Isis team provides same day high quality support, with samples and references, which has helped us find the solution
-to our needs quickly.
+When creating our prototype and then subsequent application, we've found quite amazing support: most of the time the Isis team provides same day high quality support, with samples and references, which has helped us find the solution to our needs quickly.
 The framework is growing rapidly as well, keeping its openness and business domain driven focus.
 The tutorials and documentation is quite comprehensive and very clear.
 We have found all this hard to find in many other open source frameworks.
diff --git a/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/contactapp.adoc b/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/contactapp.adoc
index 684f6e8..90dbb91 100644
--- a/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/contactapp.adoc
+++ b/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/contactapp.adoc
@@ -2,8 +2,9 @@
 :notice: 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 ag [...]
 :page-partial:
 
+// TODO: V2: need to update these, they are getting stale.
 
-The _Contact App_ is a contact management application (like xref:powered-by.adoc#_powered-by_estatio[Estatio]) developed for and deployed at link:http://eurocommercial.com[Eurocommercial].
+The _Contact App_ is a contact management application developed for and deployed at link:http://eurocommercial.com[Eurocommercial].
 
 This app originated out of our users' need to quickly look up different employees of Eurocommercial's.
 At the same time the app managers would need to be able to easily edit or add to the existing contact information.
@@ -13,19 +14,17 @@ image:https://github.com/incodehq/contactapp/blob/master/docs/contactapp-backend
 
 == Apache Isis with Ionic
 
-Because of the requirements of the app - quick and portable access - we decided to create a mobile app for it
-using the link:http://ionicframework.com/[Ionic Framework]. For the backend we decided to use link:http://isis.apache.org[Apache Isis]
-since this allowed us to rapidly develop the required backend application and surface a REST API to which the
-mobile application could connect. We found that it worked together quite well, and with part of the team
-behind http://github.com/estatio/estatio[Estatio] we were able to create an app that is clear to use and manage.
+Because of the requirements of the app - quick and portable access - we decided to create a mobile app for it using the link:http://ionicframework.com/[Ionic Framework].
+For the backend we decided to use link:http://isis.apache.org[Apache Isis]
+since this allowed us to rapidly develop the required backend application and surface a REST API to which the mobile application could connect.
+We found that it worked together quite well, and with part of the team behind http://github.com/estatio/estatio[Estatio] we were able to create an app that is clear to use and manage.
 
 image:https://github.com/incodehq/contactapp/blob/master/docs/contactapp-frontend.png[width="97%"]
 
 As our first Apache Isis app making use of mobile technologies it opens the doors for more to follow.
-Ionic has proven easy to learn and build apps with, and has a helpful community.  Meanwhile we've used
-Apache Isis' support for xref:userguide:fun:programming-model.adoc#jaxb[JAXB view models]
-and in particular the xref:vro:ROOT:simplified-representations.adoc[simplified REST representations] introduced in v1.12.0.
-The result is code that is easy to follow and enhance.
+Ionic has proven easy to learn and build apps with, and has a helpful community.
+Meanwhile we've used Apache Isis' support for xref:userguide:fun:programming-model.adoc#jaxb[JAXB view models]
+and in particular the xref:vro:ROOT:simplified-representations.adoc[simplified REST representations] introduced in v1.12.0. The result is code that is easy to follow and enhance.
 
 We expect that the scope of _Contact App_ will expand and new features added, these will (almost certainly) remain open source.
 Meanwhile we're now set up nicely to build further mobile apps using this technology stack.
diff --git a/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/cqnz.adoc b/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/cqnz.adoc
index 267c3ce..7257d94 100644
--- a/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/cqnz.adoc
+++ b/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/cqnz.adoc
@@ -2,6 +2,7 @@
 :notice: 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 ag [...]
 :page-partial:
 
+// TODO: V2: need to update these, they are getting stale.
 
 CQNZ(TM) (pronounced "sequence") is a thematic social network that:
 
@@ -12,7 +13,6 @@ ____
 
 image::powered-by/cqnz/cqnz-advert.png[width="900px",link="{imagesdir}/powered-by/cqnz/cqnz-advert.png"]
 
-
 == Underlying Technology
 
 With regard to the underlying technology, CQNZ(TM) is a mobile application served by a web application using RESTful web services.
@@ -35,6 +35,7 @@ This is also one of the many reasons we choose Apache Isis over Spring Framework
 
 == For more info
 
-For further information, please see our link:https://www.facebook.com/pg/mycqnz/about/?ref=page_internal[facebook page] or visit link:http://cqnz.rocks/[cqnz.rocks].  All images and trademarks property of their respective owners.
+For further information, please see our link:https://www.facebook.com/pg/mycqnz/about/?ref=page_internal[facebook page] or visit link:http://cqnz.rocks/[cqnz.rocks].
+All images and trademarks property of their respective owners.
 
 _Case study provided by Cesar Lugo, Research and Development Director, Vortech IT._
diff --git a/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/estatio.adoc b/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/estatio.adoc
index e360668..e22cd0b 100644
--- a/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/estatio.adoc
+++ b/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/estatio.adoc
@@ -3,10 +3,12 @@
 :page-partial:
 
 
+// TODO: V2: need to update these, they are getting stale.
 
 Estatio is an estate management application developed for and deployed at link:http://www.eurocommercialproperties.com/[Eurocommercial].
 
-Eurocommercial Properties is a Dutch-listed company that owns and operates over 50 shopping centres across Italy, France and Sweden, with income from property of approx. EUR150m per year.
+Eurocommercial Properties is a Dutch-listed company that owns and operates over 50 shopping centres across Italy, France and Sweden, with income from property of approx.
+EUR150m per year.
 Previously the company had used one of the leading software packages for its invoicing; however this had proven on the one hand lacking in key features/functionality for some locales, while overlapping/duplicating the features/capabilities of the general ledger system.
 It had also been found to be extremely difficult to upgrade to new versions of the product (eg multiple regressions).
 
@@ -21,10 +23,10 @@ image::powered-by/estatio/estatio-1.png[width="900px",link="{imagesdir}/powered-
 The development team for the original implementation consisted of just two developers (both of whom are Apache Isis committers); the first version of the application was developed over 2 years and 2 man-years effort.
 Since the initial release - as the scope of the application has grown - the team has expanded to take on a further part-time developer and also some interns.
 
-
 == Supporting Open Source
 
-Much of Apache Isis' recent development has been driven out by the requirements of this application, so you can see for yourself how many of the features in Isis are used in real life.  Much of the (non-ASF) link:https://platform.incode.org[Incode Platform^] also originate from the requirements of Estatio.
+Much of Apache Isis' recent development has been driven out by the requirements of this application, so you can see for yourself how many of the features in Isis are used in real life.
+Much of the (non-ASF) link:https://platform.incode.org[Incode Platform^] also originate from the requirements of Estatio.
 
 Estatio itself is also open source, licensed under Apache Software License and available on link:https://github.com/estatio/estatio[github].
 
@@ -33,6 +35,5 @@ Our heart-felt thanks.
 
 And to learn a little more about the Estatio domain model itself, take a look at both the source code (of course) and also at https://github.com/estatio/estatio/blob/master/adocs/documentation/src/main/asciidoc/auditability.adoc[this documentation], developed to allow Eurocommercial's accountants to understand and audit the application.
 
-
 _Case study provided by Jeroen van der Wal, link:http://incode.org[Incode]_
 
diff --git a/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/gesconsultor-grc.adoc b/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/gesconsultor-grc.adoc
index 7613d61..5f66a95 100644
--- a/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/gesconsultor-grc.adoc
+++ b/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/gesconsultor-grc.adoc
@@ -2,6 +2,7 @@
 :notice: 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 ag [...]
 :page-partial:
 
+// TODO: V2: need to update these, they are getting stale.
 
 link:http://www.gesconsultor.com[GESCONSULTOR] GRC (currently SandaS GRC) is an IT Governance, Risk and Compliance
 platform to help companies be compliant with IT-related ISO Standards, laws, regulations and best practices.  Its scope
diff --git a/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/transport-planner.adoc b/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/transport-planner.adoc
index 84ee42a..2d1a6d9 100644
--- a/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/transport-planner.adoc
+++ b/antora/toc/modules/ROOT/pages/what-is-apache-isis/powered-by/transport-planner.adoc
@@ -2,21 +2,20 @@
 :notice: 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 ag [...]
 :page-partial:
 
+// TODO: V2: need to update these, they are getting stale.
 
-
-TransportPlanner is a demo done by link:http://www.sintef.no/home/MARINTEK/[Marintek AS] to show a possible 'solution' to a multimodal transport planning problem. It's a small part of a bigger European funded project.
+TransportPlanner is a demo done by link:http://www.sintef.no/home/MARINTEK/[Marintek AS] to show a possible 'solution' to a multimodal transport planning problem.
+It's a small part of a bigger European funded project.
 
 The domain is that:
 
--  some cargo should be transported from a pickup destination to a delivery destination.
--  A 'client' creates a transport demand
--  A 'logistics service provider' plans a route from pickup to delivery using a shortest path algorithm.
--  The route's waypoints (where cargo is loaded from one providere to another) may be shown on a map.
--  The costs associated with each leg may be shown as a pie chart
+- some cargo should be transported from a pickup destination to a delivery destination.
+- A 'client' creates a transport demand
+- A 'logistics service provider' plans a route from pickup to delivery using a shortest path algorithm.
+- The route's waypoints (where cargo is loaded from one providere to another) may be shown on a map.
+- The costs associated with each leg may be shown as a pie chart
 - The resource usage, i.e. costs and time for each leg, may be shown as a bar chart.
--  An event may be generated (e.g. some customs papers are missing, therefore transport execution stops and a replan
-is necessary).
-
+- An event may be generated (e.g. some customs papers are missing, therefore transport execution stops and a replan is necessary).
 
 [cols="2a,2a"]
 |===
@@ -35,18 +34,15 @@ is necessary).
 
 |===
 
-
-
-
-
-The author, Christian Steinebach, wrote this demo part-time over the course of a few weeks.  He commented:
+The author, Christian Steinebach, wrote this demo part-time over the course of a few weeks.
+He commented:
 
 pass:[<div class="extended-quote"><p>]
 I did not have too much time to get 'something done' ... But although I had a hard time in the beginning with Isis I don't think I would have made it in time using 'conventional' development with database, GUI etc.
 using Apache Isis.
 pass:[</p></div>]
 
-Because this is a demo, there is a lot of room for improvement, but it does show how a relatively simple domain model can be brought 'alive'. The source code is available link:https://www.assembla.com/code/transportplanner/git/nodes[here] (note: it was written against a snapshot version of Apache Isis).
-
+Because this is a demo, there is a lot of room for improvement, but it does show how a relatively simple domain model can be brought 'alive'.
+The source code is available link:https://www.assembla.com/code/transportplanner/git/nodes[here] (note: it was written against a snapshot version of Apache Isis).
 
 _Case study provided by Christian Steinebach, Marintech_
diff --git a/antora/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc b/antora/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
index 63bc4f6..60cbdef 100644
--- a/antora/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
+++ b/antora/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
@@ -1,12 +1,15 @@
-[[screencasts]]
 = Screencasts
 :notice: 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 ag [...]
+:page-role: -toc
 
 
-
+// TODO: v2: NICE-TO-HAVE: update these screenshots for v2
 
 We've prepared a number of screencasts to help you see what Apache Isis has to offer; the following were recorded using Apache Isis v1.12.x.
 
+NOTE: these screencasts were recorded using v1.12.x.
+There have since been a number of UI improvements since these releases.
+
 While these each follow on from each other, you should be able to watch them in any order; the typical duration is
 3 minutes.
 The number of each screencast (eg 'link:https://www.youtube.com/watch?v=OTNHR5EdAs8[001^]') is a link over
@@ -30,10 +33,10 @@ Finally, you can also find some screencasts for earlier versions of the framewor
 
 
 
-|    11+|[big]#*Playlists*#
+|    11+|*Playlists*
 
 
-12+| [big]#*Archetype, IDE, layouts*#
+12+| *Archetype, IDE, layouts*
 
 include::screencasts/playlists.adoc[]
 
@@ -58,7 +61,7 @@ Importing the generated app into an xref:toc:devguide:ide.adoc[IDE] +
 
 
 |link:https://www.youtube.com/watch?v=xVTjtiJM8XM[003^] +
-Walking through the main classes that make up the SimpleApp: `SimpleObject` persistent entity, `HomePageViewModel` xref:userguide:fun:view-models.adoc[view model] and `SimpleObjects` domain service (repository).
+Walking through the main classes that make up the SimpleApp: `SimpleObject` persistent entity, `HomePageViewModel`xref:userguide:fun:programming-model/view-models.adoc[view model] and `SimpleObjects` domain service (repository).
 ||||x|||||||
 
 
@@ -72,13 +75,13 @@ Using the optional `Xxx.layout.xml` file to provide xref:vw:ROOT:layout.adoc#fil
 
 
 
-12+| [big]#*Fixture scripts, rules, tests*#
+12+| *Fixture scripts, rules, tests*
 
 include::screencasts/playlists.adoc[]
 
 
 |link:https://www.youtube.com/watch?v=pH02g0l2GKY[005^] +
-Using xref:fixtures:ROOT:about.adoc[fixture scripts] to initialize the database, eg while prototyping and for demos
+Using xref:testing:fixtures:about.adoc[fixture scripts] to initialize the database, eg while prototyping and for demos
 ||x|||||||||
 
 
@@ -102,7 +105,7 @@ Writing end-to-end xref:testing:integtestsupport:about.adoc[integration tests] f
 
 
 
-12+| [big]#*Swagger UI*#
+12+| *Swagger UI*
 
 include::screencasts/playlists.adoc[]
 
@@ -121,17 +124,17 @@ Using the Swagger UI to access the xref:vro:ROOT:about.adoc[REST API] automatica
 
 
 
-12+| [big]#*App Manifest*#
-
-
-|link:https://www.youtube.com/watch?v=1sNiR3Y84c0[011^] +
-How the framework uses the xref:refguide:applib-cm:classes/AppManifest-bootstrapping.adoc[`AppManifest`] is used to bootstrap the application
-||||||||||x|
+//12+| *App Manifest*
+//
+//
+//|link:https://www.youtube.com/watch?v=1sNiR3Y84c0[011^] +
+//How the framework uses the xref:refguide:applib-cm:classes/AppManifest-bootstrapping.adoc[`AppManifest`] is used to bootstrap the application
+//||||||||||x|
 
 
 
 
-12+| [big]#*Actions*#
+12+| *Actions*
 
 
 include::screencasts/playlists.adoc[]
@@ -146,7 +149,7 @@ Implementing business logic using a (no-arg) action, and associating with a prop
 
 
 
-12+| [big]#*Titles and icons, UI event subscribers*#
+12+| *Titles and icons, UI event subscribers*
 
 
 include::screencasts/playlists.adoc[]
@@ -166,7 +169,7 @@ Moving the responsibility to specify the icon for a domain object out and into a
 
 
 
-12+| [big]#*Derived collections*#
+12+| *Derived collections*
 
 
 |link:https://www.youtube.com/watch?v=ckT8Lt20SE4[016^] +
@@ -177,18 +180,18 @@ How to implement a derived collection on a domain object.
 
 
 
-12+| [big]#*More on fixture scripts*#
+12+| *More on fixture scripts*
 
 
 |link:https://www.youtube.com/watch?v=l_oZymgb65I[017^] +
-Extending a xref:fixtures:ROOT:about.adoc[fixture script] to more easily demonstrate new functionality.
+Extending a xref:testing:fixtures:about.adoc[fixture script] to more easily demonstrate new functionality.
 ||x|||||||||
 
 
 
 
 
-12+| [big]#*Page size of collections*#
+12+| *Page size of collections*
 
 
 |link:https://www.youtube.com/watch?v=39Hpd7C4Kvo[018^] +
@@ -200,7 +203,7 @@ Using xref:vw:ROOT:layout.adoc#file-based[dynamic (XML) layouts] to specify the
 
 
 
-12+| [big]#*Hints and end-user features*#
+12+| *Hints and end-user features*
 
 
 include::screencasts/playlists.adoc[]
@@ -227,7 +230,7 @@ Demonstrates how the end-user can use bookmarks and breadcrumbs within Apache Is
 
 
 
-12+| [big]#*Decoupling (mixins & subscribers)*#
+12+| *Decoupling (mixins & subscribers)*
 
 
 include::screencasts/playlists.adoc[]
@@ -260,7 +263,7 @@ Using a domain event xref:refguide:applib-cm:classes/super.adoc#AbstractSubscrib
 
 
 
-12+| [big]#*Titles using the @Title annotation*#
+12+| *Titles using the @Title annotation*
 
 
 
@@ -272,7 +275,7 @@ Using the xref:refguide:applib-ant:Title.adoc[`@Title`] annotation (instead of t
 
 
 
-12+| [big]#*Integration testing of mixins*#
+12+| *Integration testing of mixins*
 
 
 
@@ -286,7 +289,7 @@ How to write an xref:testing:integtestsupport:about.adoc[integration test] for a
 
 
 
-12+| [big]#*Removing boilerplate*#
+12+| *Removing boilerplate*
 
 
 
@@ -308,7 +311,7 @@ Using the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s paranam
 
 
 
-12+| [big]#*Action validation*#
+12+| *Action validation*
 
 
 
@@ -328,7 +331,7 @@ How to validate action parameters using the xref:refguide:applib-ant:Parameter.a
 
 
 
-12+| [big]#*Instantiating/Initializing Objects*#
+12+| *Instantiating/Initializing Objects*
 
 
 
@@ -341,7 +344,7 @@ How to instantiate/initialize objects using xref:refguide:applib-svc:persistence
 
 
 
-12+| [big]#*Property and parameter choices*#
+12+| *Property and parameter choices*
 
 
 
@@ -361,7 +364,7 @@ How to provide a set of xref:refguide:applib-cm:methods.adoc#choices[choices] (a
 
 
 |link:https://www.youtube.com/watch?v=fKo6aTPK-gk[035^] +
-How to use the xref:refguide:applib-cm:methods.adoc#choices[choices] supporting methods as a source for default values within a xref:fixtures:ROOT:about.adoc[fixture script].
+How to use the xref:refguide:applib-cm:methods.adoc#choices[choices] supporting methods as a source for default values within a xref:testing:fixtures:about.adoc[fixture script].
 ||x|||||||x||
 
 
@@ -373,7 +376,7 @@ How to use an enum for choices (drop down list) for both a property or an action
 
 
 
-12+| [big]#*Hiding columns*#
+12+| *Hiding columns*
 
 
 
@@ -392,7 +395,7 @@ How to hide properties as columns in tables, using CSS.
 
 
 
-12+| [big]#*Fixture scripts defaults / fake data*#
+12+| *Fixture scripts defaults / fake data*
 
 
 
@@ -412,7 +415,7 @@ Using the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s fakedat
 
 
 
-12+| [big]#*BigDecimals*#
+12+| *BigDecimals*
 
 
 include::screencasts/playlists.adoc[]
@@ -432,7 +435,7 @@ How to use the xref:refguide:applib-ant:Digits.adoc[`@Digits`] annotation for ac
 
 
 
-12+| [big]#*Action parameters*#
+12+| *Action parameters*
 
 
 
@@ -461,7 +464,7 @@ How to use the xref:refguide:applib-cm:methods.adoc#autoComplete[`autoCompleteXx
 
 
 
-12+| [big]#*Excel, Calendars, Maps*#
+12+| *Excel, Calendars, Maps*
 
 
 
@@ -500,7 +503,7 @@ Using derived properties to persist value types (such as gmap3's Location value
 
 
 
-12+| [big]#*View Models*#
+12+| *View Models*
 
 
 
@@ -529,7 +532,7 @@ Adding an action to a xref:userguide:fun:programming-model.adoc#jaxb[(JAXB) view
 
 
 
-12+| [big]#*Renaming*#
+12+| *Renaming*
 
 
 
@@ -567,7 +570,7 @@ Updating the logo for the application as it appears in the header.
 
 
 
-12+| [big]#*Decoupling*#
+12+| *Decoupling*
 
 
 include::screencasts/playlists.adoc[]
@@ -586,7 +589,7 @@ Separating out the responsibilities of the persistent domain entities from those
 
 
 
-12+| [big]#*(Parented) collections*#
+12+| *(Parented) collections*
 
 
 
@@ -615,7 +618,7 @@ How deleting one persistent entity can, if required, automatically delete anothe
 
 
 
-12+| [big]#*Metadata fieldset*#
+12+| *Metadata fieldset*
 
 include::screencasts/playlists.adoc[]
 
@@ -625,7 +628,7 @@ Improving the layout of domain entities by adding a metadata fieldset.
 ||||x|||||||
 
 
-12+| [big]#*for Contributors and Committers*#
+12+| *for Contributors and Committers*
 
 include::screencasts/playlists.adoc[]
 
diff --git a/antora/toc/modules/ROOT/partials/module-nav.adoc b/antora/toc/modules/ROOT/partials/module-nav.adoc
index 2494cbd..a80e452 100644
--- a/antora/toc/modules/ROOT/partials/module-nav.adoc
+++ b/antora/toc/modules/ROOT/partials/module-nav.adoc
@@ -2,7 +2,7 @@
 ** xref:what-is-apache-isis/isis-in-pictures.adoc[Apache Isis in pictures]
 ** xref:what-is-apache-isis/common-use-cases.adoc[Common Use Cases]
 ** xref:what-is-apache-isis/screencasts.adoc[Screencasts]
-** xref:what-is-apache-isis/powered-by.adoc[Powered By]
+// ** xref:what-is-apache-isis/powered-by.adoc[Powered By]
 
 
 * Starter Apps
diff --git a/antora/toc/modules/comguide/pages/cutting-a-release.adoc b/antora/toc/modules/comguide/pages/cutting-a-release.adoc
index ad2ff21..7023825 100644
--- a/antora/toc/modules/comguide/pages/cutting-a-release.adoc
+++ b/antora/toc/modules/comguide/pages/cutting-a-release.adoc
@@ -101,8 +101,8 @@ So, bump to the release version:
 
 [source,bash,subs="attributes+"]
 ----
-mvn versions:set -DnewVersion=${ISISREL}
-git commit -am "${ISISJIRA}: bumps version to ${ISISREL}"
+mvn versions:set -DnewVersion=$ISISREL
+git commit -am "$ISISJIRA: bumps version to $ISISREL"
 ----
 
 so that they should read:
@@ -301,7 +301,7 @@ Therefore:
 ----
 cd core-parent
 mvn versions:set -DnewVersion=2.0.0-SNAPSHOT
-git commit -am "${ISISJIRA}: resetting version"
+git commit -am "$ISISJIRA: resetting version"
 ----
 
 == Push branches
diff --git a/antora/toc/modules/comguide/pages/release-process-for-interim-releases.adoc b/antora/toc/modules/comguide/pages/release-process-for-interim-releases.adoc
index adbe39a..4901d00 100644
--- a/antora/toc/modules/comguide/pages/release-process-for-interim-releases.adoc
+++ b/antora/toc/modules/comguide/pages/release-process-for-interim-releases.adoc
@@ -14,11 +14,6 @@ Since `-SNAPSHOT` changes on a day-to-day basis, the idea is to tag a particular
 Whereas xref:toc:comguide:about.adoc#cutting-a-release.adoc[formal release]s and xref:toc:comguide:release-process-for-snapshots[snapshot release]s are public (released through the Maven repository maintained by Apache Software Foundation), interim releases are non-public and rely on infrastructure provided by a developer team.
 The tagged release resides __not__ in the xref:toc:ROOT:downloads.adoc#\__downloads_source_code[official Apache Isis git repository], but instead in a fork/clone maintained by the developer team.
 
-[NOTE]
-====
-The procedure developed here was put together for the team working on the xref:toc:ROOT:powered-by/powered-by.adoc#_powered-by_estatio[Estatio app], which maintains its own link:https://github.com/incodehq/isis[fork on github] and uses link:https://www.cloudbees.com/[CloudBees] as a Jenkins build server/private Maven repo.
-====
-
 
 == Prerequisites
 
diff --git a/examples/demo/src/main/adoc/modules/ROOT/pages/about.adoc b/examples/demo/src/main/adoc/modules/ROOT/pages/about.adoc
index a94809f..73248bd 100644
--- a/examples/demo/src/main/adoc/modules/ROOT/pages/about.adoc
+++ b/examples/demo/src/main/adoc/modules/ROOT/pages/about.adoc
@@ -1,75 +1,100 @@
-= Demo
+= Demo App
+:notice: 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 ag [...]
 
-The Demo provides an introduction to the features and components available in Apache Isis.
+The Demo app provides an introduction to some of the features and components available in Apache Isis.
+It is bundled as a Docker image (link:https://hub.docker.com/r/apacheisis/demo-springboot/tags/[apacheisis/demo-springboot]) on Docker Hub.
 
-It allows you to learn the very basics and also to discover some of the more advanced features, the framework has to offer. See the Docker section below on how to get started.
+The app allows you to allow you to learn the very basics with a minimum of hassle.
+You can also use it to discover some of the more advanced features that the framework has to offer.
 
-== Getting Started (Docker)
 
-NOTE: Further on *<tag>* is used as a placeholder for the docker image tag of your choice. When omitted the latest version is used. Actual tag names might be changed without notice. Currently we have tag *nightly*. See https://hub.docker.com/r/apacheisis/demo-springboot/tags/[apacheisis/demo-springboot] (Docker-Hub)
+== Prereqs
 
-=== Prereqs
+Head over to https://www.docker.com/community-edition[Docker] to install the community edition.
 
-Install https://www.docker.com/community-edition[Docker] on your computer.
 
-=== Pulling the Docker Image
+== Running the Docker Image
 
-.pull the Demo image
+* Pull the Demo image
++
+[source,bash]
 ----
-docker pull apacheisis/demo-springboot:<tag>
+docker pull apacheisis/demo-springboot:latest
 ----
 
-=== Running the Docker Image
-
-.run the Demo image
+* Running the Docker Image
++
+[source,bash]
 ----
-docker run --name demo --detach -p8080:8080 apacheisis/demo-springboot:<tag>
+docker run \
+        --name demo \
+        --detach \
+        -p8080:8080 \
+        apacheisis/demo-springboot:latest
 ----
-
-This will start a new Docker container named `demo`.
-
-The Demo can then be accessed at http://localhost:8080/wicket/[].
++
+The Demo app can then be accessed at http://localhost:8080/wicket/[].
 Login with `sven:pass`.
 
-.stop and remove the container named `demo`
+* Stop and remove the container named `demo`
++
+[source,bash]
 ----
 docker stop demo && docker rm demo
 ----
 
-=== Customization (Context Path)
+=== Customization
 
-.run using a _context-path_, add an environment variable eg. `ContextPath=/demo`
+The way in which the app is run by Docker be customised in a couple of ways:
+
+* Specify a different context Path
++
 ----
-docker run --name demo --detach -p8080:8080 -eContextPath=/demo apacheisis/demo-springboot:<tag>
+docker run \
+        --name demo \
+        --detach \
+        -p8080:8080 \
+        -eContextPath=/myPath \
+        apacheisis/demo-springboot:latest
 ----
++
+then access at http://localhost:8080/myPath/wicket/[].
 
-=== Customization (Prototyping)
-
-.run in _prototyping_ mode, add an environment variable `PROTOTYPING=true`.
+* Prototyping mode
++
 ----
-docker run --name demo --detach -p8080:8080 -ePROTOTYPING=true apacheisis/demo-springboot:<tag>
+docker run \
+        --name demo \
+        --detach
+        -p8080:8080 \
+        -ePROTOTYPING=true \
+        apacheisis/demo-springboot
 ----
 
-=== Customization (Attached Console)
-
-To run the container with your console attached, replace the '--detach' argument with '-it'.
-
-.use CTRL-C to stop and detach
+* Attached console
++
 ----
-docker run --name demo -it -p8080:8080 apacheisis/demo-springboot:<tag>
+docker run \
+        --name demo \
+        -it \
+        -p8080:8080 \
+        apacheisis/demo-springboot:latest
 ----
++
+To run the container with your console attached, replace the '--detach' argument with '-it'.
+Use CTRL-C to stop and detach
 
 == Contributing
 
 If you like to get involved quickly, please feel free to open new pull requests (at github) or just join the discussion and provide feedback.
 
-If you are interested in contributing to Apache Isis, see the https://isis.apache.org/guides/dg/dg.html[Developers' Guide] for details. 
+If you are interested in contributing to Apache Isis, see the https://isis.apache.org/guides/dg/dg.html[Developers' Guide] for details.
 
 
 == Credits
 
-This Demo App uses icons made by link:http://www.freepik.com[Freepik] and
+* This Demo App uses icons made by link:http://www.freepik.com[Freepik] and
 link:https://www.flaticon.com/authors/smashicons[Smashicons].
 These are licensed by link:http://creativecommons.org/licenses/by/3.0/[Creative Commons BY 3.0^]
 
-We use link:https://github.com/asciidoctor/asciidoctorj[AsciidoctorJ] for Asciidoc rendering.
+* We use link:https://github.com/asciidoctor/asciidoctorj[AsciidoctorJ] for Asciidoc rendering.