MUI сегодня. by anny (kas1e@yandex.ru) 10.10.2011
Желание написать подобную статью возникло в свете того, что в последнее время я оказался вовлеченным в портирование WebKit-based браузера с морфос на amigaos4 сделанного Fabien Coeurjoly зовущегося Odyssey (ранее OWB), GUI котого, основано на MUI4. Однако до недавнего времени, amigaos4 имело только mui3.9, и по этому пришлось окунаться во все проблемы и дебри связанные с разницами между различными версиями муи на разных amiga и amiga like осях, их изменениях и текущих состояниях, реализованных и не реализованных фичах и тд, что в общем по итогу я решил структуризовать и оформить все как статью, что в свою очередь может быть интересным и другим амига-юзерам, и просто интересующимся современными амига-осями.
MuiOWB on amigaos4 with MUI3.9
Касаться будем в основном AmigaOS4 и MorphOS, т.к. только на этих осях муи развивается, и обе выросли из оригинальных сорцов. Старых версий MUI для amigaos3 (сегодня устаревших), и также Zune под AROS (эмуляция старой MUI3.8 под AROS) каснемся лишь для полноты картины. Итак, что такое MUI ? MUI (magic user interface) это просто toolkit, облегчающий написание GUI интерефейсов. Т.е. это просто набор библиотек и классов, которые упрощают программистам жизнь при создании GUI для их программ. Первые версии MUI появились еще в 1992 году , и естественно как первые версии, MUI была небольшой, с небольшим числом возможностей и вообще без каких либо классов (не говоря конечно о том, что никто никаких сторонних классов еще и не писал). Для русскоязычных амижников, MUI во времена AmigaOS3, являлась основным GUI тулкитом при разработки интерфейсов и было аписано достаточно много туториалов, среди которых можно вспомнить и почитать онлайн: 1. Статьи из журнала "Новая Амига" Андрея Чернышова (1998-1999): Программирование в AmigaOS Часть 2 Программирование в AmigaOS Часть 3 2. Туториал написанный RDC в 1999: Программирование под AmigaOS и MUI для начинающих Разумеется речь в них идет о mui3.8 и старых версиях amigaos, все новые туториалы о MUI и новых возможностях новых версий доступны лишь на анлгийском, такие например как Magic User Interface Programming написанные Grzegorz Kraszewski Изначально MUI была написана неким Stefan Stuntz, и самой популярной версией была версия 3.8, просто потому , что это была последняя версия вышедшая для AmigaOS3, и прошло некоторое количество лет прежде чем AmigaOs4 и MorphOS достигли своего уровня с новыми MUI. Поэтому те, кто все еще юзали amigaos3, в течении продолжительного времени осозновали что MUI всегда останется на отметке 3.8. Сегодня конечно (спустя 15 лет) старые версии MUI выглядит очень retro и мягко говоря "outdated", достаточно посмотреть на скриншоты и сравнить с mui4 на морфос.
Show preview Show preview
До 2000 с MUI все было ясно и понятно. Развитие шло своим чередом, но эти годы опять же былы годами когда amiga пользователи ожидали новую AmigaOS и MorphOS давала о себе знать, поэтому было не ясно как быть, поддерживать все еще AmigaOS, или же переключаться на Morphos. Начались проблемы с торговыми марками и всем остальным, все хотели себе полные права, и тд и тп, в общем так или иначе, все пришло к тому, что на amigaos4 до последнего момента было доступно только mui3.9 (отличие между 3.8 и 3.9 было в целом в убирании кучи багов, неком лучшом дизайне и тд и тп, но все тот же mui3). А на Morphos начали появлятся первые версии MUI4, и до последнего времени Morphos была единственной amiga-like ОС, где было MUI4. Однако так или иначе автор решил поддержать обе оси, и отдал первые-начальные mui4 сорцы (над которым работал только он, пока морфос девелоперы не стали помогать и апдейтить) ос4 девелоперам, в которых многое то, что уже сейчас есть в mui4, не реализовано, и для aos4 mui девелоперов пришлось писать все с нуля, исходя из тестов-скриншотов-автодок с mui4 на morphos. Так или иначе, когда мы стали работать над портом MUIOWB на AmigaOS4, некий немец с ником Tboeckel (Thore Bockelmann), автор некоторых муи программ (таких как YAM) и со-автор многих mui классов (таких как better-string, textinput, Nlist и тд) уже работал над обновлением mui3.9 в разных аспектах, и так совпало, что при портировании muiowb, он начал добавлять все больше и больше фич и кода, приводя mui3.9 в mui4 все больше и больше. Началось все с добавления простых конструкций, и убирания некоторых мелких багов и на момент написания этой статьи, мы уже обсуждали стоит ли называть нашу муи теперь mui4, или еще рано. Сегодня beta-версия mui3.9 имеет все те фичи и возможности что имеет текущая mui4 на морфос, за исключением некоторых моментов которые в процессе добавления. Теперь в mui39 и поддержка truecolor градиентов, и любых схем и image-setов, и fancy-bitmaps (дающие возможность изменять любые элементы как угодно), и поддержка List titles (как в Nlist), и все приятные возможности любых настроек и управления GUI, чем так известен MUI4. В текущие дни я как раз занимаюсь тем что воспроизвожу дефолтную Ferox схему с mui4 на морфос, и для сравнения 2 скриншота: 1 с морфоc/mui4 и 1 с amigaos4/3.9 (хотя лучше уже сказать amigaos4/mui4.0alpha)
Show preview Show preview
Конечно видны некие отличия (пока что не 1:1) , но суть скриншотов это показать, что на amigaos4 теперь mui имеет теже возможности как и на morphos. И как бы обособленно стоит AROS версия MUI, называющаяся ZUNE, и которая написана с нуля, дабы повторить MUI3.
Show preview
Единственный плюс ZUNE, это открытый код, т.е. любой может фиксить баги и добовлять новые возможности, однако по результату Zune достигла некого уровня при котором можно писать mui3 проги и особо не развивается. Багов слишком много, эмуляция mui3 не полноценная, и большинство функций просто не реализованы, не говоря уже о том чтобы иметь чтото от mui4. Хотя справедливости ради стоит добавить, чтол на AROS портирован Mui-Mplayer с Morphos, который использует некоторые mui4-онли фичи, которые ради mplayer порта и были добавлены в Zune. Сейчас многие пытаются сделать Zune такой же как MUI4, но пока никто так и не начал работу над этим. На основном aros странице можно посмотреть текущую ситуацию с zune, а на power2people сайте можно посмотреть недавно созданное bounty, дабы кто-то начал работать над улучшением zune. Итак, что же мы имеем по итогу ? - mui4 для morphos и amigaos4 - 2 оси где разработка муи двигается, и достигла опредленного и современного уровн - zune для aros - opensource тулкит который пытается эмулировать mui3.8, но еще нет (не говоря о mui4) - mui3.x для старых версий amigaos - это уже для retro любителей, т.к. развитие mui3.x это mui4. Однако, новые муи классы часто все еще поддержкивают mui3.8. Можно ли сказать, что если сегодня программер хочет написать какуюто тулзу, с гуи которую он сможет портировать на любую амига и амига-лайк ось без изменений в гуи коде, то mui это единственный вариант ? Я думаю да. Конечно если речь идет о нативном амижном гуи. Т.к. все также можно юзать SDL, OpenGL и гуи тулкиты основанные на них. Долгое время основные разработчики AmigaOS4, Hyperion, пыталось проводить политику, о том что mui это плохо, и что Reaction это будущее (официальный тулкит в amigaos4), но практика и время показало, то MUI был, и остается единственным полно-фичным gui тулкитом, и все hyperion'овские выпады против МУИ был лишь потому, что автор никак не мог договорить о том в каком виде включать mui в amigaos4 дистрибутив (и даже сейчас, по умолчанию mui на amigaos4 не зарегестрировано). Справедливости ради стоит добавить, что Reaction постоянно дополняетс и изменяетс, и почти что достиг уровня mui. В общем по итогу, amigaos4 пользователи только выигрывают от этого всего: это единственная ось, где пользователи имееют теперь и последний Reaction, и последний MUI, и программы могут быть написанны для любого из этих тулкитов. Выбор конечно за программистом что использовать, но на сегодняшний день если кодер хочет поддерживать развивающиеся амига-лайк оси, mui это единственный выбор.