<div dir="ltr"><div><div><div>Hello Stian,<br><br></div>I believe it is a bit of both; documentation can assist to a certain degree but the codebase holds the <br><br>I find it considerably simpler to make a concept (read &quot;themes&quot;, &quot;roles&quot;, &quot;workflow&quot;) usable if its implementation is somewhat centered in a module, potentially with several subprojects. I was planning to use KeyCloak as an OOTB solution, but found it simpler to dig into the codebase to see how things are implemented to get it going. I can elaborate - if you wish - in another email (private or to the list).<br><br></div>... and while digging into the codebase, I found some things that I wanted to share and possibly contribute, partly because I found it somewhat difficult to understand how the configuration related to the file system. Also, some best practises were not touched upon in documentation or examples - and while that is understandable considering that KeyCloak is a project, I figured I could perhaps submit a suggestion [in the form of a GitHub pull request] for simplifying somewhat.<br><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-08-10 8:56 GMT+02:00 Stian Thorgersen <span dir="ltr">&lt;<a href="mailto:stian@redhat.com" target="_blank">stian@redhat.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Is the main issue here that &quot;import&quot; can be a list in theme.properties? If so that&#39;s really a documentation issue, not organization of code-base.<br>
<br>
BTW Keycloak is an OOTB solution so you should refer to documentation and examples (I know it&#39;s lacking in some places) not the code base. We are targeting non-Java developers and others that just wants something that works without coding. For extending/customization of Keycloak we plan to improve on documentation and clean-up Java APIs that are public.<br>
<span class=""><br>
----- Original Message -----<br>
&gt; From: &quot;Lennart Jörelid&quot; &lt;<a href="mailto:lennart.jorelid@gmail.com">lennart.jorelid@gmail.com</a>&gt;<br>
&gt; To: <a href="mailto:keycloak-dev@lists.jboss.org">keycloak-dev@lists.jboss.org</a><br>
&gt; Sent: Sunday, 9 August, 2015 7:00:59 PM<br>
&gt; Subject: [keycloak-dev] Fwd:  Concept structure in the VCS?<br>
&gt;<br>
&gt; Ah - by mistake, I replied only to Bill. Cross-posting to the list as well.<br>
&gt; Sorry for the spam.<br>
&gt;<br>
&gt; ======<br>
&gt;<br>
&gt; Hello there,<br>
&gt;<br>
&gt; First - I found the current screencasts massively helpful in getting started,<br>
&gt; to be honest. They are something I really have not seen in most projects,<br>
&gt; and they contributed a lot to me making sense of the Keycloak codebase and<br>
&gt; usage scenarios. Kudos.<br>
&gt;<br>
&gt; Sedond - I think it would be quite helpful to add additional modularization<br>
&gt; and also harmonize some configuration to make it more evident in how it is<br>
&gt; interpreted. Let me clarify the last bit here (I&#39;ll take themes as an<br>
&gt; example, but I believe that the same conclusion stands for other parts of<br>
&gt; the Keycloak codebase):<br>
&gt;<br>
&gt; # Import and extend definitions<br>
&gt; parent = base<br>
&gt; import = common/keycloak<br>
&gt; styles = lib/patternfly/css/patternfly.css lib/zocial/zocial.css<br>
&gt; stylesheets/login.css stylesheets/yourOwn.css<br>
&gt;<br>
&gt;<br>
</span>&gt;     1. The documentation and examples provides something roughly similar to<br>
&gt;     the above.<br>
&gt;     2. Turning the attention to the &quot;import&quot; parameter, one could jump to the<br>
<span class="">&gt;     conclusion that there would be directory called &quot;common/keycloak&quot; and<br>
&gt;     that this directory should contain a lib directory containing the styles<br>
&gt;     css documents from the &quot;styles&quot; configuration.<br>
</span>&gt;     3. Reading the codebase, it seems that the semantics of the &quot;import&quot;<br>
<span class="">&gt;     property is something completetly different. From the<br>
&gt;     ExtendingThemeManager::loadTheme, I can see that the &#39;/&#39; is instead used<br>
&gt;     as a list separator implying that we should attempt loading resources<br>
&gt;     from several sources. (Snippet pasted below).<br>
&gt;<br>
&gt; if (theme.getImportName() != null ) {<br>
&gt; String[] s = theme.getImportName().split( &quot;/&quot; );<br>
</span>&gt; themes.add(findTheme(s[ 1 ], Theme.Type. valueOf (s[ 0 ].toUpperCase())));<br>
<div class="HOEnZb"><div class="h5">&gt; }<br>
&gt; So ... I would believe that the configuration in this case would be clearer<br>
&gt; on a Java Object, JSON or XML form, where one can provide somewhat better<br>
&gt; semantics than what is possible in a properties file (one could use a List<br>
&gt; of theme names instead of a single string value to be parsed and<br>
&gt; interpreted, for example).<br>
&gt;<br>
&gt; Mind if I take a stab at implementing a suggestion here?<br>
&gt;<br>
&gt;<br>
&gt; 2015-08-09 17:25 GMT+02:00 Bill Burke &lt; <a href="mailto:bburke@redhat.com">bburke@redhat.com</a> &gt; :<br>
&gt;<br>
&gt;<br>
&gt; Only plans right now are to separate our public SPIs and APIs from our<br>
&gt; private ones. This is a requirement by Red hat before we go into product.<br>
&gt;<br>
&gt; Also, a massive backlog of requirements and feature requests has made us<br>
&gt; rush documentation. The screencast videos haven&#39;t been updated since<br>
&gt; January. It is what it is. Over the next 3-6 months we will catch up<br>
&gt; on this stuff becuase we are required to before we go into Product.<br>
&gt;<br>
&gt; FYI, we already autogenerate REST docs.<br>
&gt;<br>
&gt; On 8/9/2015 7:38 AM, Lennart Jörelid wrote:<br>
&gt; &gt; Hello all,<br>
&gt; &gt;<br>
&gt; &gt; A month or so ago, I got curious about Keycloak. Downloaded, set up in a<br>
&gt; &gt; dev environment, created some custom themes and took a look at the<br>
&gt; &gt; codebase. I have a few questions, likely because I have missed some<br>
&gt; &gt; developer documentation:<br>
&gt; &gt;<br>
&gt; &gt; * *Codebase concepts*: I frequently try to structure codebases to<br>
&gt; &gt; highlight its big concepts. For example, if we consider &#39;themes&#39; to<br>
&gt; &gt; be such a concept in KeyCloak we might create a folder called<br>
&gt; &gt; &#39;themes&quot;, with some project wihtin it: (themes-model, themes-spi,<br>
&gt; &gt; themes-impl-jpa, themes-impl-freemarker, ....). Is there a<br>
&gt; &gt; description of the codebase structure or concepts currently?<br>
&gt; &gt; (&quot;mini-SAD&quot;)<br>
&gt; &gt; * *Codebase javadoc:* Do we have a policy for JavaDoc&#39;ing the<br>
&gt; &gt; Model/API/SPI but perhaps not the implementation classes, other than<br>
&gt; &gt; with implementation details?<br>
&gt; &gt; * *Configuration:* Some of the descriptions in the docbook are really<br>
&gt; &gt; good, and some are more shallow. If we create a standard way of<br>
&gt; &gt; configuring the parts of keycloak, we could likely generate standard<br>
&gt; &gt; setup/configuration documentation (somewhat similar to maven plugins<br>
&gt; &gt; where certain parts of a site documentation is generated from<br>
&gt; &gt; annotations or JavaDocs). Are there such plans?<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; --<br>
&gt; &gt;<br>
&gt; &gt; --<br>
&gt; &gt; +==============================+<br>
&gt; &gt; | Bästa hälsningar,<br>
&gt; &gt; | [sw. &quot;Best regards&quot;]<br>
&gt; &gt; |<br>
&gt; &gt; | Lennart Jörelid<br>
&gt; &gt; | EAI Architect &amp; Integrator<br>
&gt; &gt; |<br>
&gt; &gt; | jGuru Europe AB<br>
&gt; &gt; | Mölnlycke - Kista<br>
&gt; &gt; |<br>
&gt; &gt; | <a href="mailto:Email%3Alj@jguru.se">Email:lj@jguru.se</a> &lt;mailto: <a href="mailto:lj@jguru.se">lj@jguru.se</a> &gt;<br>
&gt; &gt; | URL: <a href="http://www.jguru.se" rel="noreferrer" target="_blank">www.jguru.se</a> &lt; <a href="http://www.jguru.se" rel="noreferrer" target="_blank">http://www.jguru.se</a> &gt;<br>
&gt; &gt; | Phone<br>
&gt; &gt; | (skype): jgurueurope<br>
&gt; &gt; | (intl): <a href="tel:%2B46%20708%20507%20603" value="+46708507603">+46 708 507 603</a><br>
&gt; &gt; | (domestic): 0708 - 507 603<br>
&gt; &gt; +==============================+<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; keycloak-dev mailing list<br>
&gt; &gt; <a href="mailto:keycloak-dev@lists.jboss.org">keycloak-dev@lists.jboss.org</a><br>
&gt; &gt; <a href="https://lists.jboss.org/mailman/listinfo/keycloak-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-dev</a><br>
&gt; &gt;<br>
&gt;<br>
&gt; --<br>
&gt; Bill Burke<br>
&gt; JBoss, a division of Red Hat<br>
&gt; <a href="http://bill.burkecentral.com" rel="noreferrer" target="_blank">http://bill.burkecentral.com</a><br>
&gt; _______________________________________________<br>
&gt; keycloak-dev mailing list<br>
&gt; <a href="mailto:keycloak-dev@lists.jboss.org">keycloak-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/keycloak-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-dev</a><br>
&gt;<br>
&gt; --<br>
&gt; --<br>
&gt; +==============================+<br>
&gt; | Bästa hälsningar,<br>
&gt; | [sw. &quot;Best regards&quot;]<br>
&gt; |<br>
&gt; | Lennart Jörelid<br>
&gt; | EAI Architect &amp; Integrator<br>
&gt; |<br>
&gt; | jGuru Europe AB<br>
&gt; | Mölnlycke - Kista<br>
&gt; |<br>
&gt; | Email: <a href="mailto:lj@jguru.se">lj@jguru.se</a> | URL: <a href="http://www.jguru.se" rel="noreferrer" target="_blank">www.jguru.se</a> | Phone<br>
&gt; | (skype):    jgurueurope<br>
&gt; | (intl):     <a href="tel:%2B46%20708%20507%20603" value="+46708507603">+46 708 507 603</a><br>
&gt; | (domestic): 0708 - 507 603<br>
&gt; +==============================+<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; keycloak-dev mailing list<br>
&gt; <a href="mailto:keycloak-dev@lists.jboss.org">keycloak-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/keycloak-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-dev</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><span style="font-family:monospace;font-size:medium"><pre>--
+==============================+
| Bästa hälsningar,
| [sw. &quot;Best regards&quot;]
|
| Lennart Jörelid
| EAI Architect &amp; Integrator
|
| jGuru Europe AB
| Mölnlycke - Kista
|
| Email: <a href="mailto:lj@jguru.se" target="_blank">lj@jguru.se</a>
| URL:   <a href="http://www.jguru.se" target="_blank">www.jguru.se</a>
| Phone
| (skype):    jgurueurope
| (intl):     +46 708 507 603
| (domestic): 0708 - 507 603
+==============================+</pre></span></div>
</div>