Skip to content

How To Get Help

Moritz Halbritter edited this page Sep 13, 2024 · 6 revisions

If you are looking for help from the Spring community and the Spring team, we’re sharing here advice on how to get to a working solution for your problem, as fast and as efficiently as possible.

Quick search

It might sound obvious, but starting with a quick search in your favorite search engine, in our reference documentation or in existing GitHub issues will definitely help. Sometimes the problem is not about the use case itself, but about specific terms being used or where the relevant documentation section is.

If you’ve found the solution at this stage, maybe the Spring documentation needs additional keywords, cross-links or notes to improve discoverability? You can help us by submitting a documentation issue.

If you haven’t found the solution at this point, it’s time to define the problem more clearly.

Defining the problem

Defining clearly and concisely the problem is probably the most important part of the process. For that, you will need to start from the problem you have encountered and work towards a minimal setup that reproduces the behavior you are seeing.

This means:

  • Removing all dependencies that aren’t on Maven Central
  • Eliminating all unnecessary features such as unrelated dependencies, use of Kotlin or Lombok, unless they are strictly necessary to reproduce the problem
  • Eliminating any other noise coming from the build or application design style

We advise you to create a vanilla application from start.spring.io and incrementally add code and dependencies until you can reproduce the problem.

We will not necessarily need an advanced test case, instead, a clear set of instructions is enough to describe the “Minimal, Reproducible Example” that you have just created:

  • I am trying to implement [feature] in my application
  • For that, I am [describe what you are doing]
  • Application is doing [describe the behavior you are seeing] when [describe how to reproduce the behavior]
  • I was expecting [describe the behavior you were expecting instead]

If external services are required (such as a database or a cache), please prepare the relevant infrastructure with a Docker compose file.

Only then, you can also share your theory or analysis of the problem and how it should be solved in Spring. Starting with your own conclusions will make things harder for people willing to help you.

At this point, a lot of issues have been figured out already. This doesn’t mean that nothing should be done in Spring - maybe documentation or quality of life improvements can be done. You can share your sample and instructions in a new GitHub issue and this can help us improve Spring for all.

If you haven’t found the solution at this point, it’s time to ask the community for help. Remember, always be respectful and constructive during the process!

Asking a question on StackOverflow

If you have worked on the problem definition, asking a question on StackOverflow should be fairly easy. The Spring team is monitoring popular tags on the website, so please avoid creating new tags (spring-boot-starter-web) or version-specific tags (spring-boot-3) as those are not monitored and scatter the community.

StackOverflow has a few rules that you should follow.

Make sure that your question includes relevant code snippets and the set of instructions. StackOverflow is efficient because all the relevant information and history is kept within the question; even if external web pages are removed in the future, your question will still be useful to all.

Your question must be about a concrete and actionable problem; asking for opinions or “ the best way” to do something are likely to be rejected by the community.

Do not expand the scope of the question in comments and turn this into a “free consulting session” as this becomes frustrating for contributors. Reward contributors with upvotes and accepted answers. If you need more help, ask another question with a well defined scope.

Asking good questions on StackOverflow makes you a Spring contributor, thank you! You can also consider helping others on StackOverflow. A lot of valuable community members are active on this website.

GitHub issues

If you are confident that what you’re seeing is a bug, because for example the behavior does not align with a specification, or this used to work in a previous version: you can skip the StackOverflow step and create a GitHub issue directly. Please create a new GitHub issue and avoid commenting on old, closed issues.

Before creating a new GitHub issue, please check that the Spring Boot version you are using is currently supported in open source. If this is not the case, upgrade first to a supported version, or consider commercial support if you need help with a commercially supported generation.

You can share your “Minimal, Reproducible Example” and set of instructions in the issue as a starting point.

Enhancement requests and documentation improvements also belong to GitHub issues in the first place. Requests that invoke software principles or personal opinion about design tend to be less actionable for the Spring team. Such requests are more impactful when they come with a concrete use case that you came across in production. Explaining how you’re implementing this right now also helps highlighting how the current solution can be suboptimal.

Clone this wiki locally