We appreciate new contributors to adhere to the following guidelines, to make things easier for all of us:

Before starting to code, it is a good practice to open an issue (PTR) first in our JIRA instance, and discuss the problem in the developer mailing list (see mailing lists), giving the reason for submitting your pull request so that it is clear and more experienced members can suggest appropriate solutions/ideas.

All new files must include the Apache Software Foundation license header. See any NetBeans source code in case of doubt.

All commits must contain a meaningful commit message.
A meaningful commit message holds in the first line a summary of the commit and in the body (beginning on the third-line) an explanation of what was changed and why it was done.
Remember that in the future this commit message is most probably the only source of information why a change was committed to the code base.
If the commit fixes a reported issue, the summary line should hold the issue number and title [NETBEANS-XXX] Maven pom.xml file corrupted after inserting dependecies for example.

A Pull Request can consist of multiple commits. These commits should group the changes into meaningful entities. Fixup commits should be squashed into the base commit they fix.

For contributors: Be prepared to be asked questions about your PR

A reviewer might have questions and you should be able to answer why you did a fix in a certain way and why it is safe and appropriate.

Remember that the review sometimes takes as long, as creating a patch in the first place.

Good commit messages help as they anticipate questions.

For reviewers: Keep in mind that the contributor wants to fix a problem and has put effort into it. So be polite and focused.

Don’t change code that is correct and works.

Consider a simple loop. In many cases you can switch between for-loop, for-each-loop and stream construct. All are valid solutions, don’t change the code if it is not broken.

An improvement is a different case. For example a try-with-resource construct is in general more correct than the try-finally construct which many developers fail to implement correctly.

Constructs leading to warnings from the javac are also good candidates for simple fixes.

Run unit tests and, if you introduce new feature/fixes, add unit tests. So before you start your work, check that unit tests for the module you are working on run correctly and after you are done keep doing.

If unit tests fail, fixing these would be a good addition to the code base (it would be good to use a separate commit for this)

Keep your pull requests up-to-date. When the PR can’t be merged directly (it can happen that changes are introduced into the code base, that conflict with your PR) you should then update it accordingly.

Apache NetBeans is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.