Closed artembilan closed 3 years ago
Thanks for the suggestion Artem. There are several things to unwind here and we prefer to focus on one thing at time so we may fork other issues based on the discussion.
IMO, the key to your proposal is to add a spring-integration specific module when a given tech is selected. This brings the most value and helps connect the dots between the technology and what Spring Integration has to offer. To move forward with this, could you please provide us with a mapping between an entry on start.spring.io and the artifactId
of the spring-integration module to add? Said module should be in the bom which I guess is a given. If there is some "module-specific" section in the documentation, please add that to the mapping as we could augment HELP.md
with that based on what the user has selected.
Based on this list, we can build that smart mapping and improve the description on start.spring.io. We need to be careful to avoid a too lengthy description for the Spring Integration entry so we may use another way.
If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 7 days this issue will be closed.
If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 7 days this issue will be closed.
Thanks, @snicoll , for considering such an improvement!
I don't see fully your suggestion in action, but that's just probably because of my lack of experience in this project. So, I'll just answer to your request providing a table with mapping between start.spring.io entry and Spring Integration module and its docs:
That's only what we have access for at the moment somehow. Here is a list of the rest of Spring Integration modules which don't have any reasonable search clues from start.spring.io:
spring-integration-event
spring-integration-feed
spring-integration-file
spring-integration-ftp
spring-integration-groovy
spring-integration-ip
spring-integration-jmx
spring-integration-mqtt
spring-integration-scripting
spring-integration-sftp
spring-integration-stream
spring-integration-syslog
spring-integration-xml
spring-integration-xmpp
spring-integration-zeromq
spring-integration-zookeeper
We probably may consider these "unreachable" modules in a separate issue with different approach...
Let me know if we are on the same page and how can I proceed with the fix!
Thanks again.
I don't see fully your suggestion in action, but that's just probably because of my lack of experience in this project.
What your table describes, actually. Taking one random example, when you add "Spring Integration" and "Spring Security" the spring-integration-security
module is added to the build automatically and a link to the dedicated section of the reference guide is added to HELP.md
as well.
This may not improve the discovery upfront but we can address that using HELP.md
or any other suggestion that you have. I am afraid that listing a reference to spring integration in all these modules does not sound practical.
We probably may consider these "unreachable" modules in a separate issue with different approach...
I am open to suggestions but I don't think we have to cover them all. I can see that the groovy module can be added automatically if one selects Groovy though.
Let me know if we are on the same page and how can I proceed with the fix!
Certainly a good first step would be to turn that table into something smart start.spring.io can do. If you want a concrete example of how to do this, you can have a look to the Testcontainers
integration, in particular the registry. By building such a registry with the information in the table, a BuildCustomizer
can automatically add the relevant module based on what the user has selected. Would you be willing to give that a try?
Sure! I want to contribute such a feature. Thank you for the pointer in the Testcontainers support!
I'll do my best to adapt the discussed table: the rest of Spring Integration modules we can discuss later in the separate issue.
Closing in favour of PR #605
Currently Spring Integration appears in the search result only when we type something like "integration", "messaging", "enterprise", "adapter" - some general words in the project description or tags. I suggest to improve that text for all the support integration protocols: (s)ftp, JMS, JDBC, RSocket, ZeroMQ etc. You name it! See more about supported in the project modules: https://github.com/spring-projects/spring-integration. This way end-user would know that Spring Integration supports this or that technology according their wishes.
Another improvement suggestion is to add respective Spring Integration module as dependency when some target well-known library is supported in Spring Integration. For example when end-user asks for AMQP, we suggest Spring Integration (if the first point is fixed) and Spring for RabbitMQ. When end-user select both, we also add implicitly
spring-integration-amqp
, so we assume that in most cases users want to use channel adapters for AMQP from Spring Integration. And so on for all the supported protocols. Some similar solution I see here: https://github.com/spring-io/start.spring.io/blob/master/start-site/src/main/java/io/spring/start/site/extension/dependency/springsession/SpringSessionBuildCustomizer.java.Another proposal, which might be too destructive, is a "fine-graining" Spring Integration modules, like you do at the moment for Spring Data. So, this is just like another angle looking at the original end-user experience problem...
If any thing of this sounds good, let me know and I'll issue a PR!
Happy holidays!