This is
                                                    great. We should
                                                    wait a tiny bit and
                                                    unless there are
                                                    objections from
                                                    anyone else I
                                                    suggest the
                                                    following course of
                                                    action, roughly in
                                                    order.
                                                  * Could
                                                    you kindly change
                                                    all your potentially
                                                    donated code to EPL:
                                                    https://github.com/eclipse-ee4j/starter/blob/master/LICENSE?
                                                    I believe this
                                                    ensures basically no
                                                    legal trouble.
                                                    Please let us know
                                                    when that is done?
                                                  * Since
                                                    bringing in the
                                                    minimal Archetype
                                                    will involve some
                                                    work, I suggest the
                                                    most efficient way
                                                    to get it done is
                                                    for me to simply
                                                    work on a PR. It
                                                    will involve
                                                    addressing the gaps
                                                    I noted, adding
                                                    support for multiple
                                                    target runtimes as
                                                    well as introducing
                                                    Maven modules. I
                                                    think I can easily
                                                    do this by the end
                                                    of this weekend. You
                                                    and others can
                                                    review the PR.
                                                  
                                                  * As you
                                                    are aware, Jeyvison
                                                    has already started
                                                    working on Jakarta
                                                    EE 9 support. I
                                                    think it's best to
                                                    wait a bit for him
                                                    to properly finish
                                                    that work. So I will
                                                    just stick to
                                                    Jakarta EE 8
                                                    runtimes for my
                                                    merge effort. Done
                                                    the right way,
                                                    adding Jakarta EE
                                                    9/10 support should
                                                    be quite trivial.
                                                  * I think
                                                    Ivo, it would be
                                                    great if you could
                                                    start the UI effort
                                                    in parallel. I won't
                                                    attempt to pull in
                                                    the UI that is there
                                                    now. I suggest
                                                    starting a fresh
                                                    thread on the UI
                                                    (this one I think is
                                                    already a bit
                                                    convoluted). The
                                                    first decision is
                                                    actually choosing
                                                    the backend
                                                    technology. Ivar and
                                                    the Eclipse
                                                    Foundation should
                                                    help guide us with
                                                    that. The basic
                                                    experience should be
                                                    allowing the user to
                                                    choose some high
                                                    level functional
                                                    parameters and
                                                    letting them
                                                    download a zip file
                                                    that is ready to go
                                                    I think. Whether we
                                                    like it or not,
                                                    Spring/Quarkus/MicroProfile
                                                    starters are
                                                    probably our
                                                    baseline target
                                                    experience to a
                                                    large extent. That
                                                    said, let's kindly
                                                    discuss on a
                                                    separate thread and
                                                    hopefully others
                                                    will also chime in
                                                    with regards to the
                                                    right direction.
                                                  
                                                  P.S.: * I
                                                    think we all can
                                                    agree the
                                                    MicroProfile/Jakarta
                                                    EE situation is very
                                                    unfortunate. Unless
                                                    you have already
                                                    done so, I suggest
                                                    sharing your
                                                    viewpoints here: https://accounts.eclipse.org/mailing-list/cn4j-alliance.
                                                    I advise keeping
                                                    modest expectations.
                                                    Change in the "right
                                                    direction" has been
                                                    incredibly slow.
                                                  
                                                  * If best
                                                    practices, clean
                                                    code and
                                                    architecture is your
                                                    passion, have you
                                                    considered Eclipse
                                                    Cargo Tracker: https://eclipse-ee4j.github.io/cargotracker/?
                                                  
                                                  On
                                                    5/4/22 3:54 PM, Ivo
                                                    Woltring wrote:
                                                  
                                                  
                                                    Hi Reza, Edwin, et
                                                    all,
                                                    
                                                    
                                                    It is
                                                      a darn shame that
                                                      JakartaEE and
                                                      Microprofile are
                                                      still not together
                                                      (just my humble
                                                      opinion). The fact
                                                      is that both are
                                                      incomplete without
                                                      the other. In my
                                                      archetypes I have
                                                      put them together
                                                      because I think
                                                      they should be.
                                                      Having said that I
                                                      completely
                                                      understand that it
                                                      may not be
                                                      politically
                                                      advisable at this
                                                      time to combine
                                                      them. The trouble
                                                      is that Runtimes
                                                      like Payara just
                                                      give them to you
                                                      even if you do not
                                                      define them. As
                                                      long as they are
                                                      separate but open
                                                      source projects
                                                      they should be
                                                      usable right?
                                                      Spring uses every
                                                      kind of dependency
                                                      they need. Why
                                                      shouldn’t we? But
                                                      this discussion
                                                      should not keep us
                                                      from coming
                                                      together and make
                                                      something nice :-)
                                                    
                                                    
                                                    @Reza
                                                      I agree with
                                                      almost all your
                                                      points on my code.
                                                      It is clear that
                                                      you took a good
                                                      look at them :-)
                                                    I tent
                                                      to document my
                                                      work with actually
                                                      usable things.
                                                      That is the reason
                                                      behind the bash
                                                      scripts. If
                                                      something is a
                                                      command why not
                                                      make it
                                                      executable? It
                                                      brings its own
                                                      form of
                                                      documentation. 
                                                    I have
                                                      indeed never
                                                      integrated my code
                                                      with github
                                                      actions. I have
                                                      never had the time
                                                      te really dive
                                                      into the actions
                                                      and it is till on
                                                      my todo list and
                                                      some of my
                                                      archetypes are
                                                      from before github actions
                                                      were launched :-).
                                                      I will bump it up
                                                      on my priority
                                                      list.
                                                    
                                                    
                                                    I most
                                                      certainly agree
                                                      that most of the
                                                      code should work
                                                      on its own without
                                                      docker. I am a
                                                      docker fan and I
                                                      made the
                                                      archetypes in
                                                      essence for
                                                      myself… so docker
                                                      is a logical
                                                      choice for me. I
                                                      hate installing
                                                      software if I do
                                                      not have to :-)
                                                    
                                                    
                                                    The
                                                      license issue is
                                                      IMHO solved easily
                                                      right? I’ll just
                                                      change them. I
                                                      have that right or
                                                      don’t I as the
                                                      sole committer on
                                                      my projects?
                                                    
                                                    
                                                    @Edwin
                                                      I like your
                                                      summary. And yes
                                                      the state of my
                                                      archetypes
                                                      represent the need
                                                      I had at the time.
                                                      They are actually
                                                      a very minor
                                                      effort on my part,
                                                      but as I have some
                                                      users I feel
                                                      obliged to update
                                                      the archetype(s)
                                                      now and again even
                                                      if I am not
                                                      actively working
                                                      on or with them at
                                                      this time. This is
                                                      my main drive to
                                                      start this
                                                      discussion and
                                                      hope to find a way
                                                      to work together. 
                                                    
                                                    
                                                    @Reza
                                                      do you have an
                                                      idea on what I can
                                                      do to prepare for
                                                      a more easy merge?
                                                      I have no ego as
                                                      far as my
                                                      archetypes are
                                                      concerned, we can
                                                      do nothing,
                                                      anything or
                                                      everything to them
                                                      as far as I am
                                                      concerned. My ego
                                                      emerges only on
                                                      discussions
                                                      pertaining clean
                                                      code and best
                                                      practices and the
                                                      like 😄.
                                                    
                                                    
                                                    Is
                                                      there a clear idea
                                                      on what the UI
                                                      needs to do? 
                                                    - will
                                                      we be working with
                                                      archetypes the
                                                      user needs to run
                                                      themselves or
                                                      generate a zip
                                                      like Spring does?
                                                    - do
                                                      we actually want
                                                      the same thing as
                                                      spring does? 
                                                    
                                                    
                                                    Kind
                                                      regards,
                                                    Ivo.
                                                    
                                                    
                                                    
                                                    
                                                    
                                                      
                                                        
                                                          
                                                          
                                                          
                                                          Hi
                                                          Reza and all,
                                                          
                                                          
                                                          I
                                                          have caught up
                                                          with this
                                                          thread but
                                                          haven't found
                                                          time to look
                                                          at the code
                                                          myself - yet.
                                                          Though I would
                                                          like to
                                                          respond to
                                                          your comments.
                                                          
                                                          
                                                          I
                                                          think your
                                                          summary/analysis
                                                          is very sound
                                                          and feel that
                                                          I would make
                                                          the same
                                                          conclusions
                                                          when diving
                                                          into the
                                                          project. After
                                                          all, I know
                                                          where the
                                                          project came
                                                          from so I have
                                                          a bit of
                                                          background
                                                          knowledge.
                                                          What I would
                                                          like to say is
                                                          that you are
                                                          right that we
                                                          need to fix
                                                          some issues
                                                          regarding the
                                                          Jakarta
                                                          EE/MicroProfile
                                                          alignment,
                                                          Maven and
                                                          Docker
                                                          relation and
                                                          or
                                                          dependencies
                                                          in the
                                                          project. The
                                                          fact that the
                                                          project is in
                                                          a certain
                                                          state and does
                                                          or doesn't
                                                          contain some
                                                          features, is
                                                          because it
                                                          came from
                                                          Ivo's mind to
                                                          experiment
                                                          with the full
                                                          stack. It's
                                                          not impossible
                                                          to decouple
                                                          things if
                                                          effort is put
                                                          into this, and
                                                          Ivo agrees
                                                          with this of
                                                          course.
                                                          
                                                          
                                                          Please
                                                          correct me if
                                                          I'm wrong but
                                                          I hope this
                                                          project forms
                                                          a solid base
                                                          for starter
                                                          efforts to
                                                          come.
                                                          
                                                          
                                                          Kind
                                                          regards,
                                                          
                                                          
                                                          Edwin
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          One
                                                          additional
                                                          detail to add
                                                          - if we all
                                                          agree the UI
                                                          experience is
                                                          not centered
                                                          on surfacing
                                                          the use of
                                                          Archetypes
                                                          that the user
                                                          then needs to
                                                          manually
                                                          invoke
                                                          themselves but
                                                          should be more
                                                          like what the
Spring/Quarkus/MicroProfil/etc starter experience looks like, we still
                                                          need to sort
                                                          through what
                                                          the backend
                                                          technology for
                                                          the UI will
                                                          be. I suggest
                                                          going with
                                                          whatever is
                                                          most easily
                                                          provided by
                                                          the Eclipse
                                                          Foundation.
                                                          Invoking an
                                                          Archetype
                                                          behind the
                                                          scenes can be
                                                          done with
                                                          anything that
                                                          can make a
                                                          command line
                                                          invocation on
                                                          the
                                                          server-side
                                                          (could even be
                                                          node.js if we
                                                          want to stick
                                                          to JS on the
                                                          server-side
                                                          too).
                                                           
                                                           
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          As
                                                          promised, I
                                                          took some time
                                                          to carefully
                                                          take a look at
                                                          Ivo’s work. I
                                                          am sharing my
                                                          thoughts on
                                                          it. I hope
                                                          other folks
                                                          here also do a
                                                          bit of
                                                          analysis and
                                                          chime in with
                                                          their thoughts
                                                          so we can move
                                                          forward to
                                                          deliver value
                                                          for the
                                                          community.
                                                          
                                                          
                                                          - I
                                                          think the
                                                          clearest
                                                          alignment is
                                                          with regards
                                                          to bringing in
                                                          the UI. I
                                                          think the
                                                          current UI
                                                          code exposes
                                                          too much of
                                                          the underlying
                                                          Archetypes. I
                                                          think from a
                                                          UI
                                                          perspective,
                                                          the fact that
                                                          Archetypes are
                                                          used under the
                                                          hood at all
                                                          are an
                                                          implementation
                                                          detail. The
                                                          user should
                                                          mostly be
                                                          concerned with
                                                          higher level
                                                          functional
                                                          parameters
                                                          such as the
                                                          generation use
                                                          case (e.g.
                                                          minimal/REST
                                                          CRUD/JSF
                                                          CRUD/etc),
                                                          Jakarta EE
                                                          version,
                                                          target
                                                          runtime,
                                                          generated
                                                          artifact
                                                          metadata and
                                                          so on. This is
                                                          after all the
                                                          experience for
                                                          the Spring
                                                          initializer,
                                                          etc. However,
                                                          overall I
                                                          think these
                                                          are minor
                                                          deltas and UI
                                                          code looks
                                                          fairly sound.
- The
                                                          code is
                                                          definitely
                                                          focused on
                                                          minimal
                                                          generation,
                                                          just with a
                                                          simple POM,
                                                          Jakarta EE
                                                          deployment
                                                          descriptors
                                                          and a very
                                                          simple hello
                                                          world REST
                                                          endpoint. I
                                                          don’t think it
                                                          does any real
                                                          harm to add
                                                          this option to
                                                          the starter
                                                          here. Overall,
                                                          the amount of
                                                          additional
                                                          code would be
                                                          very small
                                                          (perhaps in
                                                          the order of a
                                                          few hundred
                                                          lines). I do
                                                          think the
                                                          nature of the
                                                          generated code
                                                          is different
                                                          enough to
                                                          warrant *one*
                                                          separate
                                                          Archetype with
                                                          a robust post
                                                          processing
                                                          script that
                                                          handles minor
                                                          variants like
                                                          target runtime
                                                          and Jakarta EE
                                                          version.
- The
                                                          examples mix
                                                          and match
                                                          MicroProfile
                                                          and Jakarta
                                                          EE. Given the
                                                          ongoing
                                                          Jakarta EE and
                                                          MicroProfile
                                                          alignment
                                                          conversations,
                                                          I think we
                                                          need to tread
                                                          carefully here
                                                          and maybe even
                                                          ask for advise
                                                          from the
                                                          Jakarta EE
                                                          steering
                                                          committee/platform
                                                          specification.
                                                          For one, it
                                                          makes the
                                                          situation odd
                                                          for runtimes
                                                          like
                                                          GlassFish. My
                                                          inclination is
                                                          to stick to
                                                          vanilla
                                                          Jakarta EE in
                                                          this starter
                                                          for now and
                                                          just stay out
                                                          of a
                                                          potentially
                                                          contentious
                                                          conversation.
- The
                                                          code makes no
                                                          effort in
                                                          trying to use
                                                          Maven plugins
                                                          to have a
                                                          self-contained
                                                          runtime
                                                          experience
                                                          right from
                                                          Maven (e.g.
                                                          mvn clean
                                                          package
                                                          tomee:run).
                                                          Honestly I
                                                          believe this
                                                          is a mistake.
                                                          With embedded
                                                          runtimes like
                                                          Spring Boot,
                                                          Quarkus, etc
                                                          developers
                                                          expect to
                                                          run/test
                                                          applications
                                                          right from
                                                          Maven. I think
                                                          even in a
                                                          minimal
                                                          starter
                                                          project,
                                                          having this is
                                                          important in
                                                          order to
                                                          position
                                                          Jakarta EE as
                                                          something
                                                          modern. This
                                                          is what we
                                                          have in the
                                                          starter
                                                          already for
                                                          reference.
- The
                                                          code really is
                                                          quite
                                                          dependent on
                                                          Docker, going
                                                          as far as
                                                          making an
                                                          assumption
                                                          that users
                                                          must have a
                                                          Docker Hub
                                                          account.
                                                          Honestly I
                                                          think this too
                                                          is a usability
                                                          mistake. Many
                                                          developers are
                                                          still very new
                                                          to containers
                                                          so needlessly
                                                          aligning too
                                                          much with
                                                          Docker is a
                                                          potential
                                                          usability
                                                          hazard that I
                                                          don’t think we
                                                          really need to
                                                          get into. It
                                                          should be
                                                          mostly
                                                          possible to
                                                          use the
                                                          starter
                                                          without Docker
                                                          at all and
                                                          still have
                                                          easily running
                                                          code.
- The
                                                          code has a
                                                          number of
                                                          scripts that
                                                          abstract over
                                                          relatively
                                                          simple Docker
                                                          commands. This
                                                          can actually
                                                          lead to the
                                                          impression
                                                          that using
                                                          Jakarta EE
                                                          with Docker is
                                                          so difficult
                                                          that you need
                                                          scripts to
                                                          deal with the
                                                          complexity. I
                                                          suggest we
                                                          simply
                                                          generate a
                                                          Dockerfile and
                                                          document the
                                                          few relatively
                                                          simple
                                                          commands to
                                                          build a Docker
                                                          image that
                                                          contains the
                                                          Jakarta EE
                                                          application
                                                          and run the
                                                          Docker image.
                                                          This is what
                                                          we have now
                                                          for reference.
- The
                                                          code does not
                                                          utilize GitHub
                                                          Actions or any
                                                          other kind of
                                                          automated
                                                          sanity
                                                          checks/tests.
                                                          I think we
                                                          absolutely
                                                          need that for
                                                          a distributed
                                                          project with
                                                          many potential
                                                          contributors.
- There
                                                          is no index
                                                          page and the
                                                           documentation
                                                          is quite
                                                          minimal. Since
                                                          we have quite
                                                          a bit more
                                                          visibility as
                                                          an official
                                                          Jakarta EE
                                                          umbrella
                                                          project, we
                                                          will obviously
                                                          need to
                                                          improve that.
If
                                                          this all seems
                                                          reasonable to
                                                          most folks
                                                          here, I am
                                                          happy to begin
                                                          working on a
                                                          PR to
                                                          basically
                                                          merge the
                                                          efforts (I may
                                                          need a tiny
                                                          bit of help
                                                          with the UI as
                                                          I am not that
                                                          proficient
                                                          with JS yet).
                                                          I think this
                                                          is small
                                                          enough to just
                                                          be a few
                                                          evenings’
                                                          effort. I
                                                          could get it
                                                          done by the
                                                          end of the
                                                          weekend so we
                                                          can keep
                                                          focusing on
                                                          forward
                                                          progress
                                                          delivering
                                                          more releases.
                                                           
                                                           
                                                           
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          Unfortunately
                                                          with the
                                                          popularity of
                                                          the Spring
                                                          initializer, I
                                                          am afraid we
                                                          have no choice
                                                          but to have a
                                                          UI. I do
                                                          believe at
                                                          least
                                                          initially we
                                                          need to focus
                                                          on a simple
                                                          UI. Certainly
                                                          trying to
                                                          present a
                                                          “components”
                                                          view of
                                                          Jakarta EE is
                                                          something we
                                                          should
                                                          prioritize
                                                          lower at this
                                                          time. I think
                                                          it’s best to
                                                          just evolve
                                                          features
                                                          including the
                                                          UI over time.
                                                          Part of the
                                                          reason the
                                                          project was
                                                          stuck for so
                                                          long is a lot
                                                          of analysis
                                                          paralysis
                                                          around
                                                          requirements
                                                          and the UI. I
                                                          think we
                                                          should remain
                                                          in a different
                                                          gear now and
                                                          focus a bit
                                                          more on
                                                          delivering
                                                          working
                                                          releases, even
                                                          if
                                                          incremental.
                                                          
                                                          
                                                          I do
                                                          have to say
                                                          that
                                                          personally I
                                                          believe a
                                                          command line
                                                          is all you
                                                          need because
                                                          the array of
                                                          options indeed
                                                          could be quite
                                                          small. That’s
                                                          why I would
                                                          prefer we kept
                                                          a mindset of
                                                          being somewhat
                                                          agnostic of a
                                                          UI. Luckily as
                                                          a side effect
                                                          the IDE
                                                          experience
                                                          also remains
                                                          nice as most
                                                          IDEs have
                                                          pretty good
                                                          support for
                                                          Maven
                                                          Archetypes.
                                                          It’s fairy
                                                          easy to
                                                          support all
                                                          three pathways
                                                          equally
                                                          without too
                                                          much work.
                                                          
                                                          
                                                          With
                                                          regards to
                                                          Gradle, I
                                                          spoke with
                                                          Bazlur and we
                                                          feel we could
                                                          easily do this
                                                          without too
                                                          much hassle
                                                          using Maven to
                                                          Gradle
                                                          converters
                                                          behind the
                                                          scenes. The
                                                          plan was to
                                                          look at this
                                                          once we have
                                                          delivered a
                                                          few more solid
                                                          releases.
                                                          
                                                          
                                                          I
                                                          should add
                                                          that I am not
                                                          necessarily
                                                          totally
                                                          against having
                                                          a more minimal
                                                          project
                                                          generation
                                                          option. What I
                                                          am having
                                                          trouble
                                                          visualizing is
                                                          what exact
                                                          content is
                                                          worth putting
                                                          into a minimal
                                                          option. Just a
                                                          pom does not
                                                          feel like it’s
                                                          worth the
                                                          effort because
                                                          of the nature
                                                          of Jakarta EE.
                                                          Perhaps
                                                          looking at
                                                          what Ivo has
                                                          might help. I
                                                          will try to do
                                                          that analysis
                                                          by the end of
                                                          this week. As
                                                          such, adding a
                                                          minimal option
                                                          won’t “hurt”
                                                          anything
                                                          except for
                                                          maybe a bit
                                                          more code to
                                                          maintain for
                                                          us. Perhaps it
                                                          can be done
                                                          with a small
                                                          amount of
                                                          code. I’ll try
                                                          to think about
                                                          that once it’s
                                                          a bit clearer
                                                          what could be
                                                          generated that
                                                          makes
                                                          reasonable
                                                          sense.
                                                          
                                                          
                                                          I
                                                          definitely
                                                          feel strongly
                                                          that a
                                                          reasonably
                                                          complete,
                                                          working REST
                                                          CRUD example
                                                          is very
                                                          important to
                                                          have in the
                                                          starter
                                                          experience to
                                                          increase
                                                          adoption with
                                                          new users for
                                                          sure. There is
                                                          already plenty
                                                          of data points
                                                          to support
                                                          this need and
                                                          plenty of
                                                          precedent.
                                                          Hopefully some
                                                          of the folks
                                                          that can
                                                          already see
                                                          that will
                                                          chime in too.
                                                           
                                                           
                                                          
                                                          
                                                          Hi
                                                          Ivo (and all),
                                                          
                                                          
                                                          Thanks,
                                                          I'm also glad
                                                          to see you
                                                          joining this
                                                          initiative. I
                                                          know that it
                                                          is your cup of
                                                          tea from both
                                                          a technical
                                                          and teaching
                                                          perspective,
                                                          so your input
                                                          is very
                                                          much appreciated!
                                                          
                                                          
                                                          I'm
                                                          still
                                                          struggling
                                                          with the GUI
                                                          for generating
                                                          Jakarta EE
                                                          based
                                                          projects,
                                                          based on
                                                          archetypes or
                                                          not. It is
                                                          indeed dead
                                                          simple as you
                                                          stated,
                                                          because
                                                          bootstrapping
                                                          a Jakarta EE
                                                          project is
                                                          that simple. A
                                                          Maven pom.xml
                                                          file with the
                                                          necessary
                                                          provided
                                                          Jakarta EE
                                                          dependency,
                                                          the required
                                                          directory
                                                          layout for
                                                          Maven and
                                                          optionally
                                                          some basic
                                                          files like
                                                          persistence.xml
                                                          and beans.xml
                                                          would already
                                                          be sufficient.
Teaching people that this is all that's required to run on a compatible
                                                          application
                                                          server of
                                                          their choice
                                                          and which one:
                                                          that's imho
                                                          where the
                                                          struggle is.
                                                          New users
                                                          often don't
                                                          understand
                                                          this concept
                                                          ootb, and
                                                          certainly not
                                                          the value and
                                                          benefits of
                                                          this. They
                                                          expect to
                                                          click an
                                                          interface, get
                                                          a file back
                                                          and be able to
                                                          run it.
                                                          Therefore: I
                                                          get comments
                                                          like:
                                                          
                                                          
                                                          -
                                                          Jakarta EE is
                                                          bad because it
                                                          doesn't have a
                                                          GUI like
                                                          Spring or
                                                          Quarkus. My
                                                          option: no it
                                                          doesn't
                                                          because it
                                                          doesn't
                                                          necessarily
                                                          need it other
                                                          than the dead
                                                          simple
                                                          interface like
                                                          you provided.
                                                          Or the
                                                          MicroProfile
                                                          starter. You
                                                          don't have to
                                                          select
                                                          components for
                                                          Jakarta EE
                                                          compatible
                                                          projects.
                                                          -
                                                          Jakarta EE is
                                                          bad because it
                                                          doesn't have
                                                          (sufficient)
                                                          Gradle
                                                          support. My
                                                          opinion: no it
                                                          doesn't
                                                          because it
                                                          doesn't
                                                          necessarily
                                                          need it other
                                                          than that the
                                                          exact same
                                                          build
                                                          artifacts are
                                                          generated by a
                                                          different
                                                          tool.
                                                          
                                                          
                                                          So
                                                          getting to the
                                                          question of
                                                          the backlog
                                                          items we want
                                                          to process: to
                                                          what extent do
                                                          we want to
                                                          adhere to the
                                                          user's desires
                                                          via command
                                                          line, GUI and
                                                          tooling
                                                          support? I
                                                          would suggest
                                                          that we create
                                                          a product
                                                          vision for the
                                                          starter
                                                          that describes
                                                          what we
                                                          include, and
                                                          want to teach
                                                          people to use
                                                          the right
                                                          way, the
                                                          Jakarta EE
                                                          way. Anything
                                                          else can be
                                                          explained in a
                                                          FAQ or
                                                          tutorials or
                                                          whatever why
                                                          support for
                                                          certain
                                                          desires is not
                                                          going to be
                                                          implemented.
                                                          
                                                          
                                                          What
                                                          are your
                                                          thoughts?
                                                          
                                                          
                                                          Edwin
                                                          
                                                          
                                                          
                                                          He
                                                          Edwin, 
                                                          
                                                          
                                                          Good
                                                          to hear from
                                                          you!
                                                          
                                                          
                                                          I
                                                          can only say…
                                                          I agree with
                                                          your three
                                                          points :-)
                                                          
                                                          
                                                          Laterz,
                                                          Ivo.
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          Hi
                                                          all,
                                                          
                                                          
                                                          I
                                                          like the
                                                          initiative of
                                                          this separate
                                                          starter
                                                          project and
                                                          mailing list,
                                                          separated from
                                                          the usual
                                                          Jakarta EE
                                                          mailing list
                                                          discussions. I
                                                          don't have all
                                                          the answers to
                                                          the
                                                          discussions
                                                          yet but would
                                                          like to share
                                                          my two cents
                                                          to
                                                          participate:
                                                          
                                                          
                                                          -
                                                          we have users
                                                          that would
                                                          like to see
                                                          IDE and
                                                          command
                                                          line usage,
                                                          and we have
                                                          users that
                                                          want a UI to
                                                          generate a
                                                          project. Why
                                                          not both?
                                                          -
                                                          using
                                                          archetypes is
                                                          to bootstrap a
                                                          project
                                                          indeed, with
                                                          minimal
                                                          content for a
                                                          certain
                                                          purpose.
                                                          Generating a
                                                          full fledged
                                                          demo project
                                                          from an
                                                          archetype
                                                          feels like
                                                          stretching the
                                                          concept, and
                                                          begs the
                                                          question: why?
                                                          -
                                                          I would advise
                                                          not to overdo
                                                          and overvalue
                                                          the use of
                                                          archetypes.
                                                          Having
                                                          separate ones
                                                          for certain
                                                          purposes (is
                                                          the cut-off
                                                          point a major
                                                          Jakarta EE
                                                          version?)
                                                          feels legit,
                                                          is it really
                                                          that much of a
                                                          burden
                                                          regarding
                                                          maintenance?
                                                          
                                                          
                                                          I'll
                                                          also have a
                                                          look at the
                                                          content and
                                                          project and
                                                          see what I can
                                                          come up with.
                                                          
                                                          
                                                          Kind regards,
                                                          
                                                          
                                                          Edwin
                                                          
                                                          
                                                          
                                                          
                                                          I'll
                                                          take a look
                                                          and share my
                                                          thoughts on
                                                          what you have.
                                                          I
                                                          suspect the
                                                          primary issue
                                                          is the amount
                                                          of generated
                                                          code and the
                                                          fact that you
                                                          might be
                                                          largely a solo
                                                          effort and
                                                          this effort
                                                          already
                                                          needing to
                                                          collaborate
                                                          between a
                                                          number of
                                                          committers and
                                                          contributors.
                                                          For solo
                                                          efforts with
                                                          very minimal
                                                          archetypes the
                                                          complexity
                                                          that arises
                                                          from code
                                                          duplication
                                                          and needing to
                                                          maintain
                                                          multiple
                                                          archetypes and
                                                          repositories
                                                          is less of an
                                                          issue. I think
                                                          if you explore
                                                          the current
                                                          code base a
                                                          bit more,
                                                          you'll see why
                                                          a simple
                                                          change like
                                                          adding a new
                                                          runtime,
                                                          fixing a bug
                                                          or making
                                                          enhancements
                                                          across
                                                          needlessly
                                                          duplicated
                                                          code would be
                                                          a headache
                                                          across a
                                                          distributed
                                                          team.
                                                          
                                                          It
                                                          also sounds
                                                          like the
                                                          command line
                                                          and IDE usage
                                                          as opposed to
                                                          UI usage may
                                                          not be a
                                                          primary
                                                          concern for
                                                          you. The
                                                          reason we went
                                                          the Archetype
                                                          route (which
                                                          was not the
                                                          original
                                                          direction) is
                                                          to better
                                                          enable command
                                                          line and IDE
                                                          usage. Having
                                                          fewer
                                                          Archetypes to
                                                          navigate makes
                                                          the command
                                                          line and IDE
                                                          pathways
                                                          easier to use
                                                          and document.
                                                          
                                                          One
                                                          of the prime
                                                          target
                                                          audiences we
                                                          have been
                                                          putting in
                                                          efforts
                                                          towards is
                                                          newcomers to
                                                          Jakarta EE
                                                          (hence start.jakarta.ee).
                                                          For these
                                                          sorts of folks
                                                          there is
                                                          definite value
                                                          to a compete
                                                          working but
                                                          still
                                                          relatively
                                                          small example
                                                          that showcases
                                                          the power and
                                                          simplicity of
                                                          the platform.
                                                          This is a
                                                          primary use
                                                          case for
                                                          Archetypes (https://maven.apache.org/guides/introduction/introduction-to-archetypes.html)
                                                          and there are
                                                          plenty of
                                                          examples of
                                                          this in the
                                                          Apache
                                                          Archetype
                                                          catalog.
                                                          Certainly this
                                                          is what we do
                                                          for our Azure
                                                          Archetypes (https://github.com/microsoft/azure-maven-archetypes)
                                                          and it is very
                                                          much
                                                          appreciated by
                                                          newcomers.
                                                          That
                                                          said, another
                                                          use case is
                                                          definitely
                                                          minimal
                                                          archetypes
                                                          that just
                                                          generate a
                                                          POM. The
                                                          question is
                                                          whether that's
                                                          a valuable
                                                          model for
                                                          Jakarta EE. It
                                                          certainly
                                                          makes clearer
                                                          sense for
                                                          something like
                                                          Spring,
                                                          Quarkus or
                                                          even
                                                          MicroProfile
                                                          where the POM
                                                          itself is not
                                                          so simple to
                                                          compose.
                                                          With
                                                          regards to the
                                                          items on the
                                                          issue list,
                                                          they are quite
                                                          dated and
                                                          probably
                                                          should be
                                                          thought of as
                                                          long term wish
                                                          list items at
                                                          this point
                                                          rather than an
                                                          actual
                                                          committed
                                                          roadmap. As we
                                                          begin to
                                                          tackle those
                                                          after we work
                                                          through the
                                                          roadmap items
                                                          there are
                                                          higher levels
                                                          of commitment
                                                          on delivering
                                                          (https://github.com/eclipse-ee4j/starter#roadmap),
                                                          we would
                                                          certainly
                                                          evolve,
                                                          perhaps
                                                          logically in
                                                          the direction
                                                          of multiple
                                                          Archetypes. I
                                                          think for now
                                                          focusing too
                                                          much on those
                                                          does not make
                                                          sense yet (as
                                                          opposed to say
                                                          creating a UI,
                                                          supporting
                                                          more popular
                                                          runtimes or
                                                          adding support
                                                          for Jakarta EE
                                                          9.1).
                                                          For
                                                          GlassFish
                                                          questions,
                                                          please feel
                                                          free to reach
                                                          out to the
                                                          GlassFish
                                                          alias: https://accounts.eclipse.org/mailing-list/glassfish-dev.
                                                          Most folks
                                                          here are not
                                                          GlassFish
                                                          committers
                                                          unfortunately.
                                                          
                                                          On
                                                          5/2/22 3:03
                                                          PM, Ivo
                                                          Woltring
                                                          wrote:
                                                          
                                                           The
                                                          thing is I
                                                          have
                                                          maintained a
                                                          couple of
                                                          archetypes the
                                                          last couple of
                                                          years and I
                                                          have chosen to
                                                          do that in
                                                          separate
                                                          repositories
                                                          because of the
                                                          ease of use,
                                                          maintaining
                                                          and ease of
                                                          creating new
                                                          ones. My post
                                                          processing
                                                          script is very
                                                          simple and
                                                          always the
                                                          same. 
                                                          
                                                          
                                                          @Reza
                                                          you asked for
                                                          code...
                                                          
                                                          
                                                          The
                                                          code for these
                                                          archetypes can
                                                          be found here:
                                                          
                                                          
                                                          
                                                          And
                                                          they are all
                                                          presented
                                                          (GUI) here:
                                                          
                                                          
                                                          
                                                          
                                                          I
                                                          hope that is
                                                          enough of a
                                                          demonstration
                                                          of giving
                                                          clear names
                                                          and easy
                                                          code. 
                                                          
                                                          
                                                          Why
                                                          would having
                                                          multiple
                                                          repositories
                                                          make
                                                          maintaining
                                                          something more
                                                          difficult? I
                                                          do not see
                                                          that at all.
                                                          If you need to
                                                          change
                                                          something for
                                                          a specific
                                                          archetype you
                                                          only have to
                                                          do that for
                                                          that archetype
                                                          right? No
                                                          other
                                                          archetypes
                                                          needs to
                                                          change. Also
                                                          if you write a
                                                          GUI like mine
                                                          you actually
                                                          have to
                                                          document less
                                                          as the choices
                                                          you have are
                                                          already
                                                          clearly
                                                          defined in the
                                                          GUI. The GUI
                                                          is dead simple
                                                          because all
                                                          the archetypes
                                                          follow the
                                                          same routine
                                                          but with a
                                                          different
                                                          combination of
                                                          tools. The
                                                          telling names
                                                          say it all.
                                                          
                                                          
                                                          
                                                          So
                                                          in my
                                                          experience it
                                                          is way easier
                                                          to maintain a
                                                          very simple
                                                          archetype than
                                                          to maintain a
                                                          difficult one.
                                                          The more the
                                                          post
                                                          processing
                                                          script has to
                                                          do the more
                                                          difficult it
                                                          will become.
                                                          Taking
                                                          versions /
                                                          incompatibilities
                                                          / different
                                                          examples /
                                                          etc. into
                                                          account.
                                                          
                                                          
                                                          Right
                                                          now I am
                                                          creating an
                                                          archetype for
                                                          Glassfish
                                                          6.2.5 with
                                                          JakartaEE 9.1
                                                          and Docker.
                                                          That
                                                          is the only
                                                          thing I want
                                                          in that
                                                          archetype. It
                                                          is almost
                                                          trivial for me
                                                          to make a new
                                                          one based on
                                                          another
                                                          example I
                                                          already have
                                                          or update that
                                                          one to the new
                                                          version, but
                                                          it is not as
                                                          trivial for me
                                                          to create a PR
                                                          on the
                                                          official repo
                                                          and that is
                                                          why I haven’t
                                                          yet.
                                                          
                                                          
                                                          I
                                                          see a lot of
                                                          requests for
                                                          examples in
                                                          the issue list
                                                          (
https://github.com/eclipse-ee4j/starter/issues).
                                                          The more
                                                          examples you
                                                          are going to
                                                          put in the
                                                          more exception
                                                          flows (lots of
                                                          if statements)
                                                          you need to
                                                          write if you
                                                          want to jam
                                                          that al into
                                                          one repo. It
                                                          is
                                                          fantastically
                                                          easy to create
                                                          all those
                                                          examples in
                                                          separate
                                                          archetypes and
                                                          maintain them
                                                          as they grow
                                                          or need a new
                                                          version. 
                                                          
                                                          On
                                                          another note.
                                                          Should a fully
                                                          fletched demo
                                                          be put into an
                                                          archetype? If
                                                          I have to
                                                          remove 80% of
                                                          the code every
                                                          time I need to
                                                          start a new
                                                          project I will
                                                          not use it.
                                                          How about you?
                                                          Should
                                                          examples not
                                                          be tutorials
                                                          with a repo
                                                          attached?
                                                          
                                                          
                                                          Archetypes
                                                          are there to
                                                          generate a
                                                          specific
                                                          starting point
                                                          for developers
                                                          right? I know
                                                          I am new to
                                                          this
                                                          discussion but
                                                          if the goal is
                                                          newcomers
                                                          isn’t an
                                                          archetype not
                                                          a strange
                                                          approach? I am
                                                          not trying to
                                                          be difficult
                                                          but I honestly
                                                          don’t
                                                          understand
                                                          these choices.
                                                          I think an
                                                          archetype
                                                          should help
                                                          developers to
                                                          start coding,
                                                          not to give a
                                                          demo.
                                                          
                                                          
                                                          BTW
                                                          why do we not
                                                          have official
                                                          Glassfish
                                                          docker images
                                                          anymore?
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          The
                                                          GitHub Actions
                                                          Pipeline in
                                                          the current
                                                          project is
                                                          already
                                                          designed to
                                                          test out all
                                                          the current
                                                          options per
                                                          check-in or
                                                          PR. Have you
                                                          had a chance
                                                          to look at
                                                          that? Whatever
                                                          the project
                                                          structure, it
                                                          would be
                                                          important to
                                                          have such
                                                          automation in
                                                          place. I would
                                                          say these
                                                          needs are
                                                          basically the
                                                          same no matter
                                                          what the
                                                          approach.
                                                          
                                                          
                                                          As I
                                                          alluded to
                                                          elsewhere, I
                                                          personally
                                                          have a hard
                                                          time
                                                          understanding
                                                          what the value
                                                          proposition
                                                          would be for a
                                                          very basic
                                                          Archetype for
                                                          Jakarta EE.
                                                          Because of the
                                                          nature of
                                                          Jakarta EE,
                                                          the essential
                                                          Maven
                                                          structure is
                                                          always rather
                                                          simple. Would
                                                          it really
                                                          differ very
                                                          much from the
                                                          Archetypes
                                                          that Apache
                                                          already has in
                                                          the catalog?
                                                          Other than the
                                                          Maven project
                                                          structure and
                                                          POM, what
                                                          other
                                                          generated code
                                                          would be
                                                          included if
                                                          any? A Servlet
                                                          or JSF page?
                                                          Is that really
                                                          important
                                                          these day? A
                                                          REST endpoint?
                                                          Is that really
                                                          different
                                                          enough from
                                                          what’s there
                                                          right now?
                                                          
                                                          
                                                          Anyway,
                                                          a relatively
                                                          complete code
                                                          example of
                                                          what would be
                                                          generated
                                                          would really
                                                          help me
                                                          understand
                                                          (and probably
                                                          others too).
                                                          How do you
                                                          think one
                                                          could get
                                                          that? Would it
                                                          be possible to
                                                          issue a draft
                                                          PR? Is it
                                                          already
                                                          available to
                                                          see? That
                                                          would also
                                                          help clarify
                                                          the value for
                                                          a possible
                                                          separate
                                                          Archetype
                                                          (that’s what I
                                                          had in mind
                                                          for JSF as the
                                                          generated code
                                                          including the
                                                          unit tests and
                                                          index page
                                                          would likely
                                                          vary too much
                                                          from the
                                                          current REST
                                                          CRUD example).
                                                           
                                                           
                                                          
                                                          From:
                                                          starter-dev
                                                          <
starter-dev-bounces@xxxxxxxxxxx>
                                                          on behalf of
                                                          Ivo Woltring
                                                          <
ivo@xxxxxxxxx>
                                                          Sent: Monday,
                                                          May 2, 2022
                                                          3:07 AM
                                                          To: starter
                                                          developer
                                                          discussions
                                                          <starter-dev@eclipseorg>
                                                          Subject: Re:
                                                          [starter-dev]
                                                          Starter
                                                          archetypes /
                                                          GUI / Issue
                                                          #67
                                                          
 
                                                          
                                                          If you make an
                                                          archetype that
                                                          can do a lot
                                                          of things and
                                                          configure a
                                                          lot then it
                                                          becomes more
                                                          difficult by
                                                          definition.
                                                          
How
                                                          do you test
                                                          such an
                                                          archetype with
                                                          all its
                                                          options?
                                                          Generate all
                                                          combinations
                                                          with every
                                                          change and see
                                                          if it still
                                                          works?
                                                          
                                                          
                                                          DRY
                                                          is in my
                                                          opinion not
                                                          always the
                                                          best way to
                                                          go, but I see
                                                          your point.
                                                          
                                                          
                                                          What
                                                          of a
                                                          compromise?
                                                          
                                                          A
                                                          bare bones
                                                          project with
                                                          only the maven
                                                          project and
                                                          Dockerfile of
                                                          choice and one
                                                          with all the
                                                          demo thingies
                                                          and options in
                                                          it.
                                                          One
                                                          for new blood
                                                          to learn and
                                                          one for those
                                                          who just want
                                                          a new project
                                                          so they can
                                                          start jamming?
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          Still,
                                                          I am happy to
                                                          actually
                                                          prototype out
                                                          what I had in
                                                          mind so folks
                                                          here can take
                                                          a look and
                                                          hopefully see
                                                          for themselves
                                                          how much not a
                                                          big deal this
                                                          really is.
                                                          
                                                          
                                                          Now,
                                                          I am not
                                                          saying that if
                                                          the generated
                                                          project varies
                                                          too much in
                                                          reaction to
                                                          parameters
                                                          that there
                                                          isn’t a
                                                          sensible case
                                                          for creating a
                                                          separate
                                                          Archetype. For
                                                          example, I can
                                                          see a
                                                          generated JSF
                                                          CRUD project
                                                          being
                                                          sufficiently
                                                          different from
                                                          the current
                                                          REST CRUD
                                                          generated
                                                          code. But
                                                          fairly minor
                                                          variations for
                                                          Jakarta EE
                                                          versions and
                                                          target
                                                          platform? I
                                                          think that’s
                                                          no big deal at
                                                          all. Even the
                                                          relatively
                                                          simple Payara
                                                          Micro
                                                          Archetype
                                                          handles
                                                          Jakarta EE
                                                          versions just
                                                          fine as
                                                          parameters: 
https://docs.payara.fish/enterprise/docs/documentation/ecosystem/maven-archetype.html.