Hi,

On 1 August 2016 at 11:02, Carsten Ziegeler <cziege...@apache.org> wrote:

> Well, I think you're misinterpreting my comments - I never said that it
> will require a special tooling - I said it would be insane to edit a
> complex setup by editing nodes in the repository.
>

I was, apologies and thank you for the clarification.

No special tooling *and* a simple set of rules that are natural to
communicate and document.

I don't have a strong opinion on merging or inheritance, provided its
simple to use and the result if obvious with no strange side effects to
catch a deployer out.


>
> Clearly with devops automation you have some tooling already in place
> which is using text files and does something to start AEM, so you can
> add the stuff there - or - the configuration are content packages after
> all, so if the automation supports content packages in some form, you're
> done.
>

Agreed.
Best Regards
Ian


>
> Carsten
>
> > Hi,
> >
> > I think it must be possible to configure a Sling/AEM instance without
> using
> > specific Sling/AEM tooling to create and manage the source configuration.
> > The reason I say this is almost all serious deployments use some form of
> > DevOps automation ranging from Puppet/Chef/AWS etc through to
> > Docker/Mesos/Kubernetes etc. Almost without exception those systems work
> > with configuration stored in text files (property, json, yaml etc), often
> > stored in Git/SVN/Hg, edited by a human in a text editor. There are
> systems
> > that only allow config via a GUI, but most of those only used, under
> > sufferance, when there is no other option, (or competing product). The
> > "customer" here is not a Sling/AEM expert, but a DevOps engineer who has
> > never seen either before.
> >
> > If the only way to configure Sling/AEM is via special Sling/AEM tooling
> > then we will have made the job of the TechOps/DevOps team even harder.
> >
> > I can think of lots of ways that merging at the property level could be
> > made to work, but if we are not able to communicate clearly how it works,
> > and all the potential side effects, to those whose job it is to make
> > Sling/AEM work in production then we will have failed. If we have to
> resort
> > to validation tools, compilers, special editors thats an indication the
> > system is so complex we are not able to document it in plain english.
> For
> > that reason, I beg, please keep whatever solution is chosen as simple as
> > possible.
> >
> > I did try to document "object" level inheritance (ie aggregating
> > properties), with all the side effects, but when I realised it was not
> > going to be simple, I gave up and went back "object" level merging, which
> > is brutal and simple by comparison.
> >
> > Best Regards
> > Ian
> >
> >
> >
> > On 1 August 2016 at 08:29, Carsten Ziegeler <cziege...@apache.org>
> wrote:
> >
> >>> Hi everyone,
> >>>
> >>> I personally see a tooling based approach complicated due to the
> >> ownership
> >>> scenarios.
> >> Let's assume two scenarios, configuration A and configuration B inherits
> >> from A.
> >>
> >> Now, if we support merging, someone is allowed to change A, adds a new
> >> property and this automatically influences B - and in this case the
> >> person who made changes to A does not even need to have access rights to
> >> change anything for B. (Which I think is scary).
> >>
> >> If we don't support inheritance, there is still someone who is allowed
> >> to make a change to A - at first this has no influence on B. If that
> >> same person is allowed to also change B and wants to "inherit" the new
> >> property to B, the tooling will allow so.
> >>
> >> With that respect, not having automatic inheritance sounds like the
> >> better option when it comes to access rights.
> >>
> >> Carsten
> >>
> >>> We are talking about context aware configuration that typically
> >>> would be applied by some runtime user that might have limited write
> >> access
> >>> (just for a specific context). The assumption that who writes to the
> >>> inheriting configuration node also has write access to the subsequent
> >>> levels is something we cannot and should not make here. I know multiple
> >>> customer scenarios where a central site (including global
> configuration)
> >>> was maintained by a central marketing organization while the markets
> >> owned
> >>> their own sites - so they declare inheritance (pull) instead of having
> >> the
> >>> global one pushed.
> >>>
> >>> The one thing in between that I could imagine might work sufficiently
> is
> >>> referencing (by path to property) instead of inheritance. This still
> >>> provides the lookup of "inheritance" at runtime where changes are
> >> reflected
> >>> in the lookup immediately but at the same time gets rid of magic
> >>> inheritance rules.
> >>>
> >>> Just a thought about an alternative in between.
> >>>
> >>> Cheers
> >>> Dominik
> >>>
> >>> On Mon, Aug 1, 2016 at 8:36 AM, Carsten Ziegeler <cziege...@apache.org
> >
> >>> wrote:
> >>>
> >>>>>> ... if you have merging (or inheritance) then you change the
> >>>>>> attribute of a parent and this influences all childs and you
> >>>>>> have no idea what happens there...
> >>>>>
> >>>>> We can create a felix console plugin that shows for a given
> >>>>> context path and config name the value of the property and the
> >>>>> path from where it was taken - that way both developers and ops
> >>>>> can quickly check what's going wrong if results are unexpected.
> >>>>>
> >>>>>> I personally think this comes all down to tooling ...
> >>>>>
> >>>>> So this could mean e.g. an additional maven plugin, which handles
> >>>>> merging of configurations and then the runtime can work without
> >>>>> merging. The problem I see with that is that
> >>>>> * you end up having two similar configuration model types (one in
> >>>>>   the source code that supports merging and one effective one for
> >>>>>   the runtime) - this makes the mechanism harder to understand
> >>>>>   for everyone
> >>>>> * the tooling has to be created and IMHO it'll not be easier/less
> >>>>>   code than creating a smarter runtime (even if we take into
> >>>>>   account that we have to create the felix console plugin to make
> >>>>>   it traceable)
> >>>>>
> >>>> First of all, you need tooling anyway. It would be foolish to make
> >>>> these configurations without any tooling by hand. Tooling can easily
> >>>> be customized to anyones needs without tampering the implementation.
> >>>> The implementation at runtime can be simply and effective.
> >>>>
> >>>> We had similar discussions while starting the work for the OSGi
> >>>> Configurator which allows you to put OSGi configurations into a bundle
> >>>> which then get applied at runtime. My initial proposal had all the
> >>>> things requested here as well (merging, inheritance etc.). It turned
> >>>> out that this messed up the specification and made the implementation
> >>>> extraordinary complicated. While moving this into the tooling which
> >>>> creates the bundles in the first place solves all the problems.
> >>>>
> >>>> Just think of all the different cases you have to solve once you
> >>>> start support merging. And not to mention the runtime implications as
> >>>> you have to do the merging dynamically at runtime as well, or you
> >>>> start introducing all kinds of caching again. All of this is not
> >>>> required if you move this to the tooling level.
> >>>>
> >>>>  Regards
> >>>>
> >>>> Carsten
> >>>>
> >>>> --
> >>>> Carsten Ziegeler
> >>>> Adobe Research Switzerland
> >>>> cziege...@apache.org
> >>>>
> >>>>
> >>>
> >>
> >>
> >>
> >>
> >> --
> >> Carsten Ziegeler
> >> Adobe Research Switzerland
> >> cziege...@apache.org
> >>
> >>
> >
>
>
>
>
> --
> Carsten Ziegeler
> Adobe Research Switzerland
> cziege...@apache.org
>
>

Reply via email to