Reporting
The official way to report defects against Ubuntu's Xorg is:
ubuntu-bug xorg
This lets you attach a lot of common debugging data. But it's not enough!!
Include a detailed description of the problem.
A good description
Step-by-step directions for how you reproduced it
When was your system last working properly?
photo of the screen
If your report doesn't have a good description, and there's no relevant errors in your log files, your bug will be closed as not actionable and you'll be referred here. Don't be upset - the always-busy X package maintainers get a LOT of bug reports and need to focus their limited time on well-described problems. Instead, read this page and try again, making your new bug report a well-described problem.
Keep in mind that the Launchpad bug tracker is a development tool, not for technical support - Ubuntu does have volunteer and paid technical support staff but none of them frequent the bug tracker. In particular, if you're using a released version of Ubuntu, you probably should start with the technical support channels.
Be Specific, Especially in the Title
X bugs often have very generic symptoms, like "booted with black screen", or "crashed", or "sluggish performance". Two people can have the same general symptom but completely different underlying bugs. Just like two people with "a headache" could have completely different illnesses.
The problem is that other people will glom onto your bug report and sidetrack it to get their issue solved, and your issue will be ignored and your email box filled with a bunch of irrelevant emails. So be specific!
Focus on One Issue
The rule is "One Defect, One Person Per Report". You may find there are several problems with your computer, particularly after a big upgrade. But don't almalgamate every problem together; these may be distinct bugs, each needing analysis. Select one issue and report it. Feel free to mention the other problems in case they're relevant symptoms, but make it clear which problem you're aiming to get solved.
Otherwise, the analyst will just pick one issue from your list that looks interesting to work on, and tell you to file bug reports on the other problems.
Avoid Saying 'Randomly' - Think Like a Scientist
Many times it's unclear what is causing the X problem. It's tempting to describe it as "just happening randomly". But the word "Randomly" just gives the impression you haven't given your problem much thought or study. If you don't care to think about it much, why would anyone else? So, avoid the word "randomly" (or "intermittently", "unexpectedly", et al.)
Instead, think how you can characterize it. If it occurs every so often, guess how many minutes or hours on average it occurs? Does it happen only when you're doing stuff on the computer? Only when it's idle? Only after you've suspended and resumed?
Treat writing your bug report like you would writing a chemistry lab report. Identify variables - what has changed recently about your system, what makes your system unique, what you're doing when the problem occurs. Take lots of measurements. Make a hypothesis and attempt to disprove it. Repeat the experiment and see if you get the same results.
If you simply can't characterize it, consider holding off on filing a bug report until you have a better understanding and can describe it more specifically.
Be Prepared to Roll Up Your Sleeves
A bug report is not a support request, but a way to engage with the maintainers. This implies an expectation of your participation in the in the development process. It may be limited to just testing the fix and verifying it works, or it could be extensively technical. If that seems like more than you can handle, state so in the bug report so expectations are set properly, and so appropriate guidance can be given to you.
Often, the more involved the reporter is at following up with new info, chasing down leads, and trying out variants, the more likely the bug will catch someone's interest and lend a hand.
Troubleshooting
Before reporting the defect you've found, take some time to analyze and isolate it:
A good defect report treats the issue scientifically, isolating when the problem happens and does not happen. Variables should be varied, such as configuration settings, driver versions, and so on. We provide snapshots of upstream versions of things in the xorg-edgers PPA; testing those to identify the issue is fixed or not fixed is invaluable.
Keep Calm and Carry On
Bugs can be frustrating, and X bugs particularly so. Your system may be completely broken and unusable. It may seem no one is giving any attention to the bug report, and you're feeling quite mad about the whole deal.
But don't give in to the dark side. Losing your cool and ranting can be quite unproductive, and just makes you look bad for all posterity. Threatening to "Go back to windows", that the bug "drives away users", and so on does nothing to help spot a solution. Instead keep discussions civil, and follow the Ubuntu Code of Conduct and keep discussions civil, even if you're frustrated. There are millions of Ubuntu users, and thousands of bug reports and just a handful of people to work on fixes -- it simply is not humanly possible to give a personal reply to every bug report. If you're not getting fast enough response on a bug, then in addition to checking your analysis work and improving the defect report, you can try reporting it upstream, locate patches or workarounds to test and report your findings, or even try your hand at coding a fix yourself (if you know C coding).
Reporting Bugs from a Different Machine
Apport does a good job of collecting information on certain kinds of bugs. By default, it tries to launch your web browser to complete the bug filing. But sometimes you can't do this. Maybe X is utterly broken, or the buggy machine lacks a network connection, or some other problem.
You can make apport capture bug data manually like this:
apport-bug --save /tmp/foo.apport
Then copy that foo.apport file to the machine you want to file the bug from (using scp, rsync, a usb drive, or whatever), and then file it like this:
apport-bug ~/foo.apport
For the situation where apport automatically captured a crash dump from a crash or X lockup, but you can't file it from the sick machine, you will find the file in your /var/crash directory on the sick machine. Copy that over to another machine and file it from there, like above:
apport-bug /path/to/file.crash
The crash files can be unpacked (like if you only want certain files):
mkdir ~/tmp apport-unpack /path/to/file.crash ~/tmp/
What Next?
Once your X bug is reported, a triager may mark it Incomplete with questions or request some info, or mark as a dupe of a known issue. Due to the volume of reports, automated scripts are used to help with triage; please be patient, these bots are not very smart.
If there is no reply from you within a month or two, the bug report may be closed as expired. You should feel free to reopen it once you have the needed information.
Once enough info is there, the bug will be analyzed and diagnosed.
A lot of problems reported as "X bugs" are actually not X's fault at all. These days there are a lot of other pieces in the stack that take care of graphics and the input stack. So often the first thing to do will be to isolate which component is faulty, such as by testing with various things turned off, booting into guest sessions, booting unity 2d or classic gnome, etc. Your bug may be moved from X to a different component if it can be isolated.
For the remaining bugs, most X bugs are actually due to faults in the upstream X code. So your report may be forwarded to the upstream bug tracker. You will need to join the discussion there (which may require registering an account at bugs.freedesktop.org). If a fix is found upstream it will be considered for backporting and inclusion in Ubuntu too. Not all fixes can be included - some are too risky or too involved.
If a fix is found and backported, you'll be asked to test and verify that it solves the issue. Often the fix can't be rolled out until someone validates it; if no one does so for an extended period of time, your fix will be left in limbo. So definitely do plan to help with testing! Otherwise all the time will have been for naught.