Широко применяемым принципом разработки приложения является независимость ядра приложения от специфического пользовательского приложения. Отделение приложения от интерфейса пользователя позволяет разработчику независимо аботать над этими двумя компонентами. Это также позволяет программе работать с различными интерфейсами без изменений в ядре приложения. Это упрощает перенос приложения на более чем один интерфейс и экспереманты с различными конфигурациями одного и тогоже интерфейса.
Большинство приложений нуждаются в сборе данных от пользователя и отображения выходной информации в некотором виде. Это может быть упрощено разделением ядра приложения и интерфейса пользователя указанием набора обобщенных подпрограмм ввода и вавода также как и необходимых структур данных. Если эти обобщенные интерфейсы не зависят от конкретного интерфейса пользователя они могут быть реализованы различными способами для различных интерфейсов без изменения ядра приложения. Это есть модули для взаимодействия между ядром приложения и интерфейсом.
Motif реализация интерфейсных модулей состоит из кода выполняющего следующие задачи:
Ининциализацию набора компонентов.
Создание иерархии виджетов.
Определение процедур обратного вызова.
Разрешения отображения виджетов.
Вход в цикл который ожидает и обрабатывает ввод пользователя.
Эти шаги более подробно рассматриваются в главе 3.
Язык описания интерфейсов (UIL - User Interface Language) помогает увеличить разделение интерфейса от ядра приложения. При использовании UIL разработчик определяет виджеты и их характеристики в текстовом файле и затем компилирует текстовый файл в бинарный формат. Во время выполнения приложение использует подпрограммы менеджера ресурсов Motif (MRM - Motif Resource Manager) для извлечения описания виджетов из бинарного файла и MRM создает виджеты по этому описанию. UIL файл также определяет данные, такие как текстовые строки и цвета, а MRM извлекает эти данные во время исполнения.
В этом случае приложение может удалить описание иерархии виджетов из кода программы. В своем исходном коде приложение определяет процедуры обратного вызова и взаимодействут с виджетами также как если бы использовало Motif обычных способом. Если приложение определяет все необходимые ему процедуры обратного вызова, то разработчик может изменить иерархию виджетов редактированием и перекомпиляцией UIL файлов без перекомпиляции и сборки программы.