После года разработки компания Apple представила релиз новой стабильной ветки свободной системы печати CUPS 1.5 (Common Unix Printing System), используемой в Mac OS X и подавляющем большинстве дистрибутивов Linux. Проект распространяется под лицензией GPLv2 (фильтры и библиотеки под LGPLv2), но с 2007 года, после поглощения создавшей CUPS компании Easy Software Products, разработку CUPS полностью контролирует Apple, ставя в развитии проекта на первое место интересы платформы Mac OS X.
Подготовка новой версии была связана с волной критики со стороны разработчиков открытых проектов, угрозе создания форка и, в конце концов, к разработке нового альтернативного диспетчера очереди печати printerd. Возмущения были связаны с переводом в разряд устаревших компилятора драйверов в формате PPD и протокола "CUPS Browse", которые активно используются в Linux-дистрибутивах. В качестве мотива прекращения поддержки CUPS Browse называются наличие архитектурных проблем с работой в WiFi-сетях, невозможность использования при запрете в сети широковещательных рассылок и излишняя привязка на внешние DNS-сервисы. Для сохранения совместимости подсистемы PPD и CUPS Browse пока оставлены в составе CUPS 1.6.0, но сообщается, что они будут удалены из кодовой базы в будущих выпусках.
Вместо PPD предлагается более использовать появившийся в CUPS 1.6.0 протокол IPP Everywhere, целью которого является обеспечение печати на всех принтерах в бездрайверном режиме ("driverless"). Вместо протокола CUPS Browse, который использует сетевой порт 631 и выполняет определение наличия очередей печати для принтеров через отправку запросов в широковещательном режиме, предлагается использовать протоколы Bonjour и mDNS/DNS-SD (Zeroconf).
В анонсе новой версии CUPS подчёркивается, что поддержка Bonjour и IPP Everywhere, изначально используемых в Mac OS X, начиная с выпуска CUPS 1.6 в полной мере обеспечена для Linux и других свободных систем. На начальной стадии разработки CUPS 1.6 наблюдались проблемы с совместимостью с пакетом Avahi, в рамках которого развивается открытая реализация Zeroconf, используемая в дистрибутивах Linux. Но в процессе разработки CUPS 1.6 проблемы взаимодействия с Avahi были устранены и CUPS теперь полностью совместим с данной системой. Тем не менее, функциональность автоматического определения очередей печати будет работать только при установке Avahi на стороне клиента и сервера.
Еще одним успешно разрешённым конфликтом интересов является ситуация с прекращением поддержки ряда фильтров печати и бэкендов, используемых в Linux, но не представляющих интереса для Mac OS X. По договорённости с организацией Linux Foundation поддержки данных компонентов будет осуществляться в рамках проекта OpenPrinting и распространяться в виде отдельного пакета cups-filters с дополнениями к CUPS. В состав пакета включены бэкенды для вывода через последовательные и параллельные интерфейсы, модуль php_cups, а также фильтры bannertops, commandtoescpx, commandtopclx, imagetops, imagetoraster, pdftops, rastertoescpx, rastertopclx и texttops.
Основные новшества CUPS 1.6:
- Поддержка средств для управления цветопередачей. Добавлена возможность работы с цветовыми профилями ICC, при наличии в системе цветового менеджера colord, обращение к которому производится через D-BUS;
- Поддержка технологии Bonjour для организации доступа к принтерам и определения наличия принтеров в локальной сети;
- Возможность переопределения имени пользователя по умолчанию через переменную окружения CUPS_USER или директиву User в client.conf;
- Увеличение максимальной возможной длины пароля до 127 символов;
- Прекращение поддержки опций "brightness", "columns", "fitplot", "gamma", "hue", "natural-scaling", "penwidth", "position", "ppi", "saturation" и "scaling". Объявление устаревшими опций "page-bottom", "page-left", "page-right", "page-top", "prettyprint" и "wrap", которые будут удалены в следующих выпусках;
- Изменения в системе планирования заданий печати:
- Поддержка автоматического выбора типа аутентификации, при установке в DefaultAuthType значения "auto" будет автоматически выбран метод Basic (username/password) и Negotiate (Kerberos);
- Планировщик теперь корректно заполняет атрибут "номер документов" для всех заданий, как того требует спецификация IPP 2.1;
- Для фильтров и бэкендов отныне выставлены права доступа, запрещающие запись для группы;
- С целью экономии дискового пространства PPD-файлы теперь могут быть упакованы и установлены в виде сжатых tar-архивов;
- Консолидирован процесс динамического обновления PPD, обновление PPD-файла заданного принтера теперь выполняется один раз в конце выполнения задания печати;
- Прекращена поддержка протоколов LDAP и SLP для обеспечения совместного доступа к принтерам;
- Поддержка задания ограничений времени ожидания и выполнения заданий. Для управления ограничениями введены директивы MaxHoldTime и MaxJobTime, кроме того, добавлена возможность указания времени в директивах PreserveJobFiles и PreserveJobHistory;
- Изменение API:
- Поддержка протокола IPP Everywhere с реализацией API для динамического выбора доступного принтера в сети, позволяющего определять наличие принтеров, отправлять запросы о параметрах и выполнять операции по выводу на печать, как напрямую, так и через промежуточные хосты, предоставляющие доступ к подключенным к ним принтерам. IPP Everywhere предоставляет возможности эквивалентные драйверам PPD и обеспечивает средства разрешения конфликтов, не требуя при этом создания статических файлов конфигурации.
- При формировании IPP-запросов по умолчанию теперь используется версия протокола 2.0, подразумевающая закрытие публичного доступа к структурам ipp_t и ipp_value_t;
- Расширена поддержка SNMP, для функций cupsSideChannelSNMPGet и cupsSideChannelSNMPWalk добавлена поддержка запроса по OID и возможность использования значений, размером до 64 Кб.