### 27.4 gdb/mi Development and Front Ends

The application which takes the MI output and presents the state of the program being debugged to the user is called a front end.

Although gdb/mi is still incomplete, it is currently being used by a variety of front ends to gdb. This makes it difficult to introduce new functionality without breaking existing usage. This section tries to minimize the problems by describing how the protocol might change.

Some changes in MI need not break a carefully designed front end, and for these the MI version will remain unchanged. The following is a list of changes that may occur within one level, so front ends should parse MI output in a way that can handle them:

- New MI commands may be added.
- New fields may be added to the output of any MI command.
- The range of values for fields with specified values, e.g., `in_scope` (see -var-update) may be extended.

If the changes are likely to break front ends, the MI version level will be increased by one. This will allow the front end to parse the output according to the MI version. Apart from mi0, new versions of gdb will not support old versions of MI and it will be the responsibility of the front end to work with the new one.

The best way to avoid unexpected changes in MI that might break your front end is to make your project known to gdb developers and follow development on gdb@sourceware.org and gdb-patches@sourceware.org.