Hey everybody,

First of all it's a very good idea to simply the profile-stuff.

My thoughts to that are that we maybe could add a little shell-script 
(Mac/Linux), bat-file (Windows) that guides the user ("Do you want to build 
Java-sources? [Yes/No]) and states if all requirements for build of this 
profile is supplied by the specific machine of the user. I think that goes in 
the direction of Chris suggestion 1)

Furthermore it would be good to supply a "with-all" Profile that triggers all 
available profiles.

Best
Tim

Am 15.10.19, 10:07 schrieb "Christofer Dutz" <christofer.d...@c-ware.de>:

    Hi all,
    
    as I have heard complaints that the current way we handle profiles is too 
complicated, I would like to discuss alternatives with you all.
    
    Currently if you just run “./mvnw install” it will only build the 
protocols. This is probably not what the user wants.
    
    Right now we didn’t want to overwhelm someone just wanting to build Java, 
which will probably be the most common case to configure all the prerequisites 
for C++ and C#.
    So we introduced the “with-xyz” profiles. Now you only need to provide the 
tooling needed for the parts you want to build, which reduces the entry barrier 
(in my opinion)
    On the other hand we didn’t want people working on C++ and C# to have to 
run the Java test-suite before committing.
    
    But it seems that having to enable profiles already raises the barrier too 
high and people get confused instead of relieved. This was not planned and 
therefore we need to react.
    
    Yesterday I did a little brainstorming to what options I could think of … 
perhaps you have others or you have feedback to them. Your opinion would be 
highly appreciated:
    
    
      1.  If no “with-xyz” profile is activated, a message is output which 
tells the user it should enable a profile (This should be very simple to 
implement)
      2.  We make the “with-java” profile “enabled by default” (if no profile 
is enabled, this one is automatically enabled, making the naïve developer just 
trying “mvn package” scceed)
      3.  We remove all profiles and ask people to go into “plc4j” to build the 
java part, into “sandbox” if they want to build the sandbox (We could add the 
suggestion to use “-am” to the build which will “also build” any outside 
modules needed by the current selection)
    
    Here my thoughts to the approaches:
    
      1.  This shouldn’t have any negative side-effects (I personally would 
prefer this … we could even try make it “interactive” where the user can select 
the options he wants enabled and it generates a “command line” the user can use 
to build what he wants)
      2.  The problem with enabled by default profiles is that they get 
disabled if a profile is explicitly selected. So if a user builds “mvn package” 
it would build java. But if he runs “mvn -Pwith-cpp package” it would only 
build C++ and no longer java … if you want java and C++ you would need to do 
“mvn -Pwith-java,with-cpp package” (Not that intuitive, I think … but an option)
      3.  This will cause the “mvn package” type of persons to be flooded with 
a list of things to install and the build will take pretty long. As they will 
probably always have some prerequisite not installed and the build will not 
start with an explanation on why, we could use this opportunity to also point 
out that you don’t have to install all prerequisites if you only want to build 
part of the project. In this case too we would have to split the prerequisite 
check to the individual submodules or people will be left without guidance when 
building only “plc4cpp” for example … so we would have the big check in the 
root and multiple partial checks in the sub-directories.
    
    
    I personally would prefer the version 1), but let’s discuss this.
    
    Perhaps you have other ideas … I would be happy to hear and discuss them.
    
    Chris
    
    
    
    

Reply via email to