<div dir="ltr"><div>Let's take a higher-level view:</div><div><br></div>Is this discussion a false dichotomy?<div><br></div><div>This is about extensibility models, and how we implement one.  Who's to say we have to implement one and only one?</div><div><br></div><div>S,</div><div>ALR<br><div><br></div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Nov 2, 2016 at 12:36 PM, Michael Kleinhenz <span dir="ltr"><<a href="mailto:kleinhenz@redhat.com" target="_blank">kleinhenz@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">An addition: hence when we are designing that stuff, we should not<br>
think "how do we provide the best technical solution?" but "how can we<br>
provide the cheapest solution for the integrators?". It all boils down<br>
to someone asking someone else "how expensive will it be to integrate<br>
this stuff?"...<br>
<div class="HOEnZb"><div class="h5"><br>
On Wed, Nov 2, 2016 at 5:33 PM, Michael Kleinhenz <<a href="mailto:kleinhenz@redhat.com">kleinhenz@redhat.com</a>> wrote:<br>
> I understand the point, in the REST API model, a 3rd party could write<br>
> a proxy and host it elsewhere, but is that a realistic scenario?<br>
><br>
> This boils down to three scenarios:<br>
><br>
> 1. the build provider's vendor would host it themselves, then this<br>
> would be prone to the described problem "must operate our integration,<br>
> which costs ongoing money".<br>
> 2. we host it, then there is no real difference between the REST API<br>
> case and the Plugin case.<br>
> 3. a 4th party hosts it, at which point I would say that is a very<br>
> fragile construct, both technically and from a policy standpoint (the<br>
> secret key is going thu not 2 parties, but 3!).<br>
><br>
> So either way, I see the "proxy" model only asa theoretical model, not<br>
> a real one.<br>
><br>
> And I don't like it either, but tech considerations are if ever, only<br>
> 50% of the consideration when providing external integration points.<br>
> The best designed system does not make sense if customers don't adopt<br>
> this stuff because of business reasons.<br>
><br>
><br>
> On Wed, Nov 2, 2016 at 3:54 PM, Tomas Nozicka <<a href="mailto:tnozicka@redhat.com">tnozicka@redhat.com</a>> wrote:<br>
>> Both models require NO changes to vendor's existing systems!<br>
>><br>
>> Max, I am a bit confused by that argument as well. Maybe Michael would<br>
>> like to elaborate on that?<br>
>><br>
>> Let's summarize:<br>
>><br>
>> = Plugin model (Deployment API) =<br>
>> The plugin will be "a proxy" translating Almighty Build SPI -> Target<br>
>> build environment API calls.)<br>
>><br>
>> + doesn't need any hosting<br>
>> + no changes to vendor's existing system<br>
>> - runs inside Almighty process in sandbox - major *security risk*<br>
>> - forces user to learn subset of Lua (or any scripting language we<br>
>> *force* them to use) with special functions - *steep learning curve*;<br>
>> - additional complexity for Almighty to implement sandboxing<br>
>><br>
>><br>
>><br>
>> = REST API (Consumer API)<br>
>> The REST service will be "a proxy" translating Almighty Build SPI -><br>
>> Target build environment API calls. Also a vendor can *choose* to build<br>
>> such API into their build system providing a native support for<br>
>> Almighty without need for such proxy. Again *choose*.)<br>
>><br>
>> + *vendor chooses implementation language* he likes (uses) an writes<br>
>> simple REST (stateless) service (like a proxy translating Almighty<br>
>> Build SPI -> Target build environment API calls)<br>
>> + no changes to vendor's existing system<br>
>> + scales independently<br>
>> + one provider can be used by multiple Almighty instances<br>
>> + *testable*<br>
>> + *secure*<br>
>> - needs hosting (but that's dead simple e.g. with OpenShift Online<br>
>> especially for stateless service)<br>
>><br>
>><br>
>> I don't really see any advantage in writing a plugin than the fact that<br>
>> you don't need to deploy it. But that's really simple in the age of<br>
>> OpenShift, Kubernetes and CaaS...<br>
>><br>
>> Otherwise there are only advantages if we choose the REST approach.<br>
>><br>
>> Regards,<br>
>> Tomas<br>
>><br>
>><br>
>><br>
>> On St, 2016-11-02 at 14:36 +0100, Michael Kleinhenz wrote:<br>
>>> Ah, sorry, missed the words. I meant the "Deployment Model", not the<br>
>>> "Consumer Model", sorry. I meant the one I would recommend :-)<br>
>>> Everything else applies :-)<br>
>>><br>
>>> On Wed, Nov 2, 2016 at 2:22 PM, Max Rydahl Andersen <<a href="mailto:manderse@redhat.com">manderse@redhat.com</a>> wrote:<br>
>>> ><br>
>>> > On 2 Nov 2016, at 14:15, Michael Kleinhenz wrote:<br>
>>> ><br>
>>> > ><br>
>>> > > Hi all,<br>
>>> > ><br>
>>> > > preliminary notice: I can live with any of the solutions, I see<br>
>>> > > advantages and problems with both.<br>
>>> > ><br>
>>> > > Maybe I have done too much sales on such stuff, but I think the<br>
>>> > > "Consumer Model" will be a major roadblock in actually convincing<br>
>>> > > people to support us. This model will require lots of effort, changes<br>
>>> > > to their live system and/or deployment and operations(!) to support<br>
>>> > > integrating with us. In my experience especially the last one,<br>
>>> > > operations, is a real blocker for 3rd parties. Just my 0.02€ on real<br>
>>> > > world adoption of products in the corporate world..<br>
>>> ><br>
>>> ><br>
>>> > I'm really confused how something that requires no changes on their external<br>
>>> > systems<br>
>>> > is a problem for adoption ?<br>
>>> ><br>
>>> > I'm missing something in this argument ;)<br>
>>> ><br>
>>> > ><br>
>>> > > I think our way of approaching that question is way to technical and<br>
>>> > > not enough sales. (I am feeling dirty that I have said that :-)<br>
>>> > ><br>
>>> > > But anyway, again: if we decide for the consumer style model, thats<br>
>>> > > fine for me, I just want to say that there might be another, non-tech,<br>
>>> > > view on that.<br>
>>> ><br>
>>> ><br>
>>> > /max<br>
>>> > ><br>
>>> > ><br>
>>> > ><br>
>>> > > -- Michael<br>
>>> > ><br>
>>> > > On Tue, Nov 1, 2016 at 6:30 PM, Andrew Lee Rubinger <<a href="mailto:alr@redhat.com">alr@redhat.com</a>><br>
>>> > > wrote:<br>
>>> > > ><br>
>>> > > ><br>
>>> > > > Gave some time to think this through. :)  Appreciate the thoughts<br>
>>> > > > Michael,<br>
>>> > > > because I think your email here has redirected our line of thinking into<br>
>>> > > > something better than originally designed.<br>
>>> > > ><br>
>>> > > > To me, the most important issues this thread has vetted are:<br>
>>> > > ><br>
>>> > > > 1) Encouraging extension of Almighty through new providers<br>
>>> > > > 2) Security<br>
>>> > > ><br>
>>> > > > Now, I had been initially conceiving something akin to what Michael is<br>
>>> > > > calling the "Deployment" model; an interface that providers implement.<br>
>>> > > > On<br>
>>> > > > further reflection I've come to find the REST-based approach outlined as<br>
>>> > > > the<br>
>>> > > > "Consumer" model accomplishes all of our goals and better handles the two<br>
>>> > > > points above.<br>
>>> > > ><br>
>>> > > > For 1), we let users register their own service, running *somewhere*, to<br>
>>> > > > be<br>
>>> > > > written in whatever language and execution environment they decide.  This<br>
>>> > > > imposes on providers writers the burden of deploying their thing instead<br>
>>> > > > of<br>
>>> > > > deploying it into Almighty, but, as 2) shows, this is a good thing.<br>
>>> > > ><br>
>>> > > > The security constraints of 2) really say that we will absolutely not run<br>
>>> > > > untrusted code in our online service offering.  Initially I'd thought<br>
>>> > > > that<br>
>>> > > > anyone who wants to write their own providers could be on their own to<br>
>>> > > > host<br>
>>> > > > an Almighty instance as well, but by making the provider model a firewall<br>
>>> > > > where untrusted code runs externally to Almighty, we could be opening<br>
>>> > > > ourselves off to safe extensibility or community-driven extensions in the<br>
>>> > > > future.  While this is not a requirement for our first launch, it's<br>
>>> > > > definitely the kind of thing Todd envisions for us going forward.<br>
>>> > > ><br>
>>> > > > TL;DR for me now: a REST-based extension SPI model, and registration<br>
>>> > > > mechanism with Almighty core which sets that up.  Will look forward to<br>
>>> > > > seeing those designs.<br>
>>> > > ><br>
>>> > > > S,<br>
>>> > > > ALR<br>
>>> > > ><br>
>>> > > > On Mon, Oct 31, 2016 at 10:57 AM, Tomas Nozicka <<a href="mailto:tnozicka@redhat.com">tnozicka@redhat.com</a>><br>
>>> > > > wrote:<br>
>>> > > > ><br>
>>> > > > ><br>
>>> > > > ><br>
>>> > > > > Hi Pete,<br>
>>> > > > ><br>
>>> > > > > (see inline)<br>
>>> > > > ><br>
>>> > > > > On Thu, 2016-10-27 at 13:15 -0400, Pete Muir wrote:<br>
>>> > > > > ><br>
>>> > > > > ><br>
>>> > > > > > This reminded me of the VS Code/LSP architecture. In this<br>
>>> > > > > > architecture there are a number of proceses running:<br>
>>> > > > > ><br>
>>> > > > > > 1) The VS Code tool<br>
>>> > > > > > 2) A server which can control and talk to any LSP implementation via<br>
>>> > > > > > a socket or REST or other transport protocol<br>
>>> > > > > > 3) The LSP implementation(s) written in the language of choice,<br>
>>> > > > > > talking a JSON protocol<br>
>>> > > > ><br>
>>> > > > > I like the separation and implementation language independence.<br>
>>> > > > ><br>
>>> > > > > ><br>
>>> > > > > ><br>
>>> > > > > > This is closest to the the Consumer model that Michael describes, but<br>
>>> > > > > > I think we could also look at also being able to run the plugin (and<br>
>>> > > > > > the thing it connects to) on our servers, but using transports other<br>
>>> > > > > > than HTTP (e.g. sockets).<br>
>>> > > > ><br>
>>> > > > > I am not opposing the idea, but would you mind laying out some story<br>
>>> > > > > why it would be useful?<br>
>>> > > > ><br>
>>> > > > > From my point of view vendors can run such service on OpenShift Online<br>
>>> > > > > or any other server (or cloud).<br>
>>> > > > ><br>
>>> > > > > Even we were (are) planing to run OSBP on different server using<br>
>>> > > > > HTTPS.<br>
>>> > > > ><br>
>>> > > > > I don't see the use case for supporting sockets (or similar mechanisms)<br>
>>> > > > > especially when Almighty will be running in the cloud; if such<br>
>>> > > > > mechanism could even work there.<br>
>>> > > > ><br>
>>> > > > > ><br>
>>> > > > > ><br>
>>> > > > > > I don't think allowing people to write scripts that execute inside<br>
>>> > > > > > our processes is a good idea.<br>
>>> > > > ><br>
>>> > > > > +1<br>
>>> > > > ><br>
>>> > > > ><br>
>>> > > > > Regards,<br>
>>> > > > > Tomas<br>
>>> > > ><br>
>>> > > ><br>
>>> > > ><br>
>>> > > ><br>
>>> > > ><br>
>>> > > > --<br>
>>> > > > Red Hat Developer Group Architecture<br>
>>> > > > @ALRubinger<br>
>>> > ><br>
>>> > ><br>
>>> > > --<br>
>>> > > Michael Kleinhenz<br>
>>> > > Principal Software Engineer<br>
>>> > ><br>
>>> > > Red Hat Deutschland GmbH<br>
>>> > > Werner-von-Siemens-Ring 14<br>
>>> > > 85630 Grasbrunn<br>
>>> > > Germany<br>
>>> > ><br>
>>> > > RED HAT | TRIED. TESTED. TRUSTED.<br>
>>> > > Red Hat GmbH, <a href="http://www.de.redhat.com" rel="noreferrer" target="_blank">www.de.redhat.com</a>,<br>
>>> > > Registered seat: Grasbrunn, Commercial register: Amtsgericht München,<br>
>>> > > HRB 153243,<br>
>>> > > Managing Directors: Paul Argiry, Charles Cachera, Michael Cunningham,<br>
>>> > > Michael O'Neill<br>
>>> > ><br>
>>> > > ______________________________<wbr>_________________<br>
>>> > > almighty-public mailing list<br>
>>> > > <a href="mailto:almighty-public@redhat.com">almighty-public@redhat.com</a><br>
>>> > > <a href="https://www.redhat.com/mailman/listinfo/almighty-public" rel="noreferrer" target="_blank">https://www.redhat.com/<wbr>mailman/listinfo/almighty-<wbr>public</a><br>
>>> ><br>
>>> ><br>
>>> ><br>
>>> > /max<br>
>>> > <a href="http://about.me/maxandersen" rel="noreferrer" target="_blank">http://about.me/maxandersen</a><br>
>>><br>
>>><br>
>>><br>
><br>
><br>
><br>
> --<br>
> Michael Kleinhenz<br>
> Principal Software Engineer<br>
><br>
> Red Hat Deutschland GmbH<br>
> Werner-von-Siemens-Ring 14<br>
> 85630 Grasbrunn<br>
> Germany<br>
><br>
> RED HAT | TRIED. TESTED. TRUSTED.<br>
> Red Hat GmbH, <a href="http://www.de.redhat.com" rel="noreferrer" target="_blank">www.de.redhat.com</a>,<br>
> Registered seat: Grasbrunn, Commercial register: Amtsgericht München,<br>
> HRB 153243,<br>
> Managing Directors: Paul Argiry, Charles Cachera, Michael Cunningham,<br>
> Michael O'Neill<br>
<br>
<br>
<br>
--<br>
Michael Kleinhenz<br>
Principal Software Engineer<br>
<br>
Red Hat Deutschland GmbH<br>
Werner-von-Siemens-Ring 14<br>
85630 Grasbrunn<br>
Germany<br>
<br>
RED HAT | TRIED. TESTED. TRUSTED.<br>
Red Hat GmbH, <a href="http://www.de.redhat.com" rel="noreferrer" target="_blank">www.de.redhat.com</a>,<br>
Registered seat: Grasbrunn, Commercial register: Amtsgericht München,<br>
HRB 153243,<br>
Managing Directors: Paul Argiry, Charles Cachera, Michael Cunningham,<br>
Michael O'Neill<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr">Red Hat Developer Group Architecture<div>@ALRubinger</div></div></div></div></div>
</div>