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.