I was going to write a post called "How to Make a Great Bug Report" but then i realized that what I was going to say is really something more general, which is "How to understand Joomla problems that come up." And I realized the same advice applies for JBS members and people building extensions.

First of all, you really need a separate testing site, because you shouldn't be doing this on a production site. You can either make a local site or  just make a testing folder and put your testing install on your host.  You can protect it with htaccess if you want. Make the site with the Joomla sample data. This is important because it  provides a common basis for talking to other people about whatever it is you are doing. So often on the tracker we ask people to explain how to reproduce a problem with sample data. This doesn't mean you won't modify or add, but you need to work from a shared starting point.

Get ready

 Next, open up your global configuration and:

  • On the system tab, set both debugging settings to yes.
  • On the server tab set error reporting to maximum.

These are going to help you a lot with understanding what is causing problems and how to track them down.

Now for the key addition.

Get and install two language packs, one that requires UTF-8 and one that is for a right to left language.

Reproduce

From now on, you need to keep careful track of what you are doing.

When you are trying to understand a problem, what you need to do is first understand step by step what brings the problem up. This isn't necessarily what causes the problem, but it's what makes the problem visible.

So, now step by step recreate the problem and write those steps down.

Sometimes you will need to change sample data to do this. The best thing is to pick an appropriate piece of sample data and make the smallest possible number of changes to cause the problem. Carefully document each change and each step so that other people can understand the issue you are seeing. Sometimes you will need to add new sample data or even add an extension. Again, do as little as possible to get the issue.

In some cases, you should then try to reproduce the issue in each of the core emplates and in the different languages. This is especially important if the issue involves layout of any kind, whether html or css. 

Also if there are links of any kind involved, test with and without SEF--and with SEF try the different combinations (with or without suffixes, with or without mod_rewrite).

Sometimes an extension developer will report an issue to the tracker  that isn't possible to reproduce in the core code. If this is the case for you, try making a hello world extension that just does whatever it is that you are having issues with. Again, this isolates the problem and makes it possible for other people to understand it.

 Write the test

 Okay, we don't really write tests exactly, but determine what it is that you think should be happening. Explain that and why you think so.

 If you got this far you  are ready to make a great tracker report.

 Now supposed you want to fix. We'll skip that and go to ... propose a solution

The great thing is, if you have done all of these steps, when you have a proposed solution, you know just what to do.

Describe the proposed solution.

Explain where you are making changes and why you think they will work. Best is to have a patch file, but saying lin xxx of file yyy is also great. 

Test

Test it on sample data by using the steps to reproduce that you already wrote down. Do it in the different templates and languages, with and without SEF.

Do you get the intended results?

 If yes, propose it.

Then what?

 Well, you have to wait, unless you have also tested on both IIS and apache and various versions of PHP.  So if you can do those things youself, that's also great.

The harder question for JBS is always, will this break anyone's site? Will this break anything else? Will it be confusing for existing users? And that is one reason why sometimes it takes a while for issue sto be fixed. But that's for another post.