<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On 13 January 2016 at 21:47, Marek Posolda <span dir="ltr">&lt;<a href="mailto:mposolda@redhat.com" target="_blank">mposolda@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div>+1 for structure around this. I would
      personally put every SPI implementation, which can be
      theoretically replaced and which brings any dependency into
      separate module.<br></div></div></blockquote><div><br></div><div>I agree. A structure based on a major dependency like Mongo, JPA, FreeMarker, etc makes sense to me.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000"><div>
      <br>
      For example liquibase JpaUpdaterProvider is another module, which
      I would put separately, so there is easy to get rid of liquibase
      dependency and replace with another JPA updater implementation. On
      the other hand, the very basic SPI implementations like BasicTimer
      doesn&#39;t need to be in separate module IMO, as it is simple
      implementation dependent just on pure JDK.</div></div></blockquote><div><br></div><div>The JPA stores are pretty dependent on Liquibase so I would just keep them together. Otherwise we&#39;re splitting up a store implementation into multiple pieces.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000"><div><span class="HOEnZb"><font color="#888888"><br>
      <br>
      Marek</font></span><div><div class="h5"><br>
      <br>
      On 13/01/16 19:14, Stian Thorgersen wrote:<br>
    </div></div></div>
    <blockquote type="cite"><div><div class="h5">
      <div dir="ltr">How about:
        <div><br>
        </div>
        <div>keycloak-common</div>
        <div>keycloak-common-saml</div>
        <div>keycloak-common-oidc</div>
        <div><br>
        </div>
        <div>keycloak-server-spi</div>
        <div>keycloak-server-jpa</div>
        <div>keycloak-server-mongo<br>
        </div>
        <div>keycloak-server-infinispan<br>
        </div>
        <div>keycloak-server-freemarker<br>
        </div>
        <div>keycloak-server-ldap<br>
        </div>
        <div>keycloak-server-themes<br>
        </div>
        <div>keycloak-server-wildfly</div>
        <div>keycloak-server-services</div>
        <div><br>
        </div>
        <div>All providers that are don&#39;t fall into one of the above
          categories (for example timer, protocol mappers, etc..) can
          just go into keycloak-server-services.</div>
        <div><br>
        </div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On 12 January 2016 at 19:44, Stian
          Thorgersen <span dir="ltr">&lt;<a href="mailto:sthorger@redhat.com" target="_blank">sthorger@redhat.com</a>&gt;</span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div dir="ltr"><br>
              <div class="gmail_extra"><br>
                <div class="gmail_quote">
                  <div>
                    <div>On 12 January 2016 at 19:32, Stian
                      Thorgersen <span dir="ltr">&lt;<a href="mailto:sthorger@redhat.com" target="_blank"></a><a href="mailto:sthorger@redhat.com" target="_blank">sthorger@redhat.com</a>&gt;</span>
                      wrote:<br>
                      <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                        <div dir="ltr"><br>
                          <div class="gmail_extra"><br>
                            <div class="gmail_quote"><span>On 12 January
                                2016 at 16:26, Bill Burke <span dir="ltr">&lt;<a href="mailto:bburke@redhat.com" target="_blank"></a><a href="mailto:bburke@redhat.com" target="_blank">bburke@redhat.com</a>&gt;</span>
                                wrote:<br>
                                <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
                                  <div bgcolor="#FFFFFF" text="#000000"><span>
                                      <br>
                                      <br>
                                      <div>On 1/12/2016 2:45 AM, Stian
                                        Thorgersen wrote:<br>
                                      </div>
                                      <blockquote type="cite">
                                        <div dir="ltr"><br>
                                          <div class="gmail_extra"><br>
                                            <div class="gmail_quote">On
                                              12 January 2016 at 03:22,
                                              Bill Burke <span dir="ltr">&lt;<a href="mailto:bburke@redhat.com" target="_blank"></a><a href="mailto:bburke@redhat.com" target="_blank">bburke@redhat.com</a>&gt;</span>
                                              wrote:<br>
                                              <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">I
                                                can&#39;t find the original
                                                email on this, but we
                                                need to do this for<br>
                                                1.9.  I can start doing
                                                it one module at a
                                                time: </blockquote>
                                              <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
                                                Common:<br>
                                                keycloak-common<br>
                                                keycloak-common-saml<br>
                                                keycloak-common-oidc<br>
                                                <br>
                                                Libraries server:<br>
                                                <br>
                                                keycloak-server-spi -
                                                all SPI interfaces and
                                                common code<br>
                                                keycloak-server-saml -
                                                all saml server code,
                                                broker and protocol
                                                plugins<br>
                                                keycloak-server-oidc -
                                                all oidc code, broker
                                                and protocol plugins<br>
                                                keycloak-server-impl -
                                                everything<br>
                                              </blockquote>
                                              <div><br>
                                              </div>
                                              <div>I&#39;m not 100% sure we
                                                should put all
                                                implementations of SPIs
                                                into
                                                keycloak-server-impl. We
                                                at least need to keep
                                                Mongo separate as it&#39;s
                                                not part of the product.</div>
                                              <div><br>
                                              </div>
                                              <div>If we put all SPI
                                                implementations,
                                                including services, into
                                                the same module we&#39;d end
                                                up with one huge module.
                                                There&#39;s also a risk that
                                                we&#39;d end up with strong
                                                relationships between
                                                them, rather than having
                                                them properly linked via
                                                SPI interfaces.</div>
                                              <div><br>
                                              </div>
                                              <div>I&#39;m a bit 50/50 on it
                                                though.</div>
                                            </div>
                                          </div>
                                        </div>
                                      </blockquote>
                                    </span> You do remember how many
                                    modules we currently have don&#39;t
                                    you?  Minimally, we should have a
                                    big SPI module right? <br>
                                  </div>
                                </blockquote>
                                <div><br>
                                </div>
                              </span>
                              <div>I&#39;m absolutely on board with:</div>
                              <span>
                                <div><br>
                                </div>
                                <div>Common:</div>
                                <div>keycloak-common</div>
                                <div>keycloak-common-saml</div>
                                <div>keycloak-common-oidc</div>
                                <div><br>
                                </div>
                                <div>Libraries server:</div>
                                <div>keycloak-server-spi<br>
                                </div>
                                <div><br>
                                </div>
                              </span>
                              <div>So we can agree on that, I&#39;m just not
                                100% sure about a single module for all
                                SPI implementations and services.</div>
                            </div>
                          </div>
                        </div>
                      </blockquote>
                      <div><br>
                      </div>
                    </div>
                  </div>
                  <div>We can go with a single module if you want. Only
                    thing that needs to be separate is Mongo at least
                    for now as it&#39;s not going to be supported and we
                    need to be able to remove it easily.</div>
                  <span>
                    <div> </div>
                    <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                      <div dir="ltr">
                        <div class="gmail_extra">
                          <div class="gmail_quote"><span>
                              <div><br>
                              </div>
                              <div> </div>
                              <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
                                <div bgcolor="#FFFFFF" text="#000000"><span>
                                    <br>
                                    <br>
                                    <pre cols="72">-- 
Bill Burke
JBoss, a division of Red Hat
<a href="http://bill.burkecentral.com" target="_blank">http://bill.burkecentral.com</a></pre>
                                  </span></div>
                              </blockquote>
                            </span></div>
                          <br>
                        </div>
                      </div>
                    </blockquote>
                  </span></div>
                <br>
              </div>
            </div>
          </blockquote>
        </div>
        <br>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      </div></div><span class=""><pre>_______________________________________________
keycloak-dev mailing list
<a href="mailto:keycloak-dev@lists.jboss.org" target="_blank">keycloak-dev@lists.jboss.org</a>
<a href="https://lists.jboss.org/mailman/listinfo/keycloak-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-dev</a></pre>
    </span></blockquote>
    <br>
  </div>

</blockquote></div><br></div></div>