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.