# How to report a bug

*Tickets -be it bug reports or feature requests- are the basics of any software improvement. The lack of tickets or poorly written ones seriously impair a healthy software development. Like building a house on weak foundations, this should be avoided.*

The ticket you are going to write will be handled by an IT expert who might not know much about your personal context. For this reason, it is really important to be accurate in the way you describe your problem. The more information you can provide about a problem, the better. To be understandable by every one in the coding community, tickets must be in English. Since Kiwix is hosted on github, you will also need to create a github account (a one-step thing).

### Before creating a ticket: a few checks

Before creating a ticket, a few checks need to be done:
+ How many different problems do you concretely face? You should open only one ticket per problem. If you have *N* different  problems, then open *N* different tickets.
+ Has this problem already been reported? Use the search function to find out.
+ Did you test your problem against the latest version of the software? If not, and if possible, run your test again with the most recent versoin available. Maybe your problem has already been fixed.

### Mandatory

Each ticket must answer clearly to the following questions:
+ What is your environment (browser, version of the software you use, which product, etc.)?
+ What is the detailed step-by-step procedure to reproduce the problem?
+ What do you see? A copy of the error message or a screenshot is always useful.
+ What should be the behaviour from your point of view? How do you expect the service to work?

Speak from the point-of-view of the (end) user: don't try to explain or analyze the process (this is a job for the people trying to solve your issue).

### Optional

To make your ticket more thorough, check if you can deliver more information:
+ What is the context of this ticket? If not obvious, explain why you need to do this.
+ If you have an idea about the technical background of the ticket, please share it also at the end.

### Post ticket creation

A developer will handle your ticket and might have additional questions or feedback to share with you. You will also probably be interested to know when the ticket is fixed. Make sure that you will be kept informed about it (and try to answer quickly to developer's requests):
+ Configure email notifications with your github account
+ Create a view on the ticketing tool to follow "your" tickets.

For a better ticket lifecycle, avoid using third party tools to communicate with the developers. Put all your concerns, precisions, etc. as new comments to the ticket.
