Мы с участниками социальной сети open-life.org решили сделать перевод статьи Джо Шилдза (Jo Shields) «Here we go again – why Mono doesn’t suck». В результате получилась статья «Почему Mono хорош». Копию данного перевода можно прочитать здесь: Почему Mono хорош — open-life.org
Прим.: Если кто захочет инвайт на open-life.org — стучитесь в личку
![](https://habrastorage.org/getpro/habr/post_images/6f1/13e/bb3/6f113ebb3d6375789df5e0be4c7fba90.png)
Я участник Debian Mono Group, Debian CLI Applications Team, и Debian CLI Libraries Team. И уже в течении года работаю над сопровождением пакетов проекта Mono и программ, которые используют его в ОС Ubuntu (и Debian). Мне хорошо известны горячие споры, угрозы и последующие переходы на личности, и сейчас я принимаю ваш «вызов». В этой статье я говорю от себя лично — не от проекта Debian, не от Ubuntu, не от Mono, и не потому, что меня попросил мой начальник.
Вам хотелось «объективного пояснения, чем хорош Mono, почему он не представляет угрозы и почему его следует включить в Ubuntu по умолчанию»? — Я отвечу на эти 3 вопроса по очереди, затем предложу общий вывод к этой статье, а так же к более широкому движению «Анти-Mono». Это сообщение подписано GPG (прим. переводчика: GPG=GNU Privacy Guard — свободная альтернатива набору криптографического ПО PGP) для подтверждения факта его публикации без изменений. Оригинальный текст доступен по адресу retro.apebox.org/herewegoagain.txt чтобы каждый желающий мог проверить его подлинность самостоятельно.
Почему Mono хорош?
Ответ зависит от того, кому этот вопрос был задан.
Задавая данный вопрос простым пользователям, в ответ вы услышите «ничем», равно как и для компилятора Scheme или LOLCODE-интерпретатора.
Но задавая тот-же вопрос программистам, вы будете получать множество СОВЕРШЕННО разных ответов. Mono предоставляет хорошо сбалансированную интегрированную систему позволяющую разрабатывать открытое ПО быстро, эффективно и продуктивно. Под словом «сбалансированный» я имею в виду беспристрастность в растановке приоритетов особенностей языка программирования — использование оперативной памяти, скорость выполнения, доступность библиотек и многое другое — он довольно хорош ВО ВСЕМ. В плане скорости, Mono гораздо быстрее чем Python — вплоть до разницы в несколько сотен раз по результатам некоторых тестов; занимает меньше памяти, если сравнивать с программами на Java; содержит современные возможности вроде сборщика мусора, который делает очень легким написание кода по сравнению с malloc()-счастливчиками C и C++. Это хорошо сбалансированная система. Таким образом, для тех, кто собирается писать программы для среды открытого ПО, она представляет собой оправданный выбор основы для разработки. Некоторые программы, которые были созданы сравнительно недавно — например, GNOME Do — полностью используют функциональность платформы Mono, вместе с возможностью писать очень быстро и просто, в сравнении с гоняющимся SIGSEGV за человеческими ошибками неизбежными при разработке на C. Mono с самого начала задумывался как способ избежать абсолютного ужаса в поддержке большой кодовой GUI-базы C (см. Evolution).
Далее, Mono в целом позволяет более лёгкую миграцию, как для разработчиков, так и для пользователей, с ставших привычными CLR-каркасов вроде Microsoft .NET. Студенты, изучающие Visual Studio .NET в университетах, могут использовать полученные навыки и напрямую применять их для создания и улучшения свободного ПО в новых дистрибутивах Ubuntu, без необходимости изучать новый язык. Коммерческие предприятия, вложившиеся в приложения, основанные на .NET, могут задуматься над заменой ПО своих серверов и десктопов на свободное. Хотя предоставление совместимости с .NET всегда было вторичной целью, оно всегда было очень популярно и побуждало разных людей к вкладу своих сил в улучшение Mono.
Однако стоит отметить, что этот случай использования (миграция с ОС Windows) не является причиной включения Mono в стандартные дистрибутивы (в большей степени, например, чем Wine). И действительно, библиотеки, необходимые для работы большинства приложений Microsoft.NET исключены из дистрибутива Ubuntu из-за отсутствия необходимости в них.
Почему Mono не опасен?
Этот вопрос порождает множество бесполезных, но горячих споров, хотя это не повредит вам и вашей веб-странице, а вы получите неплохой доход. Mono не опасен, так как не существует каких-либо правовых ограничений. Многие люди тратят часы, если не дни и недели, пытаясь объяснить это. Что ж, я попробую сделать это снова. Существует множество причин полностью объясняющих правильность этого утверждения, и сейчас мы рассмотрим их по отдельности.
- Mono не является результатом каких-либо дел между Novell и Microsoft. Он был создан за 4 года до той неприятной сделки. Он не обсуждался в этом деле профессионально, он вообще не упоминался (так же как и другие программы). Это важно отметить.
- Mono находится под покровительством организации OIN, как и большая часть свободных приложений. Патентные атаки против Mono несут тот же риск для нападающих, как и атаки против других участников OIN. Атаки против Mono чреваты патентной «холодной войной», которую Microsoft не сможет выиграть. Такие действия повредят их бизнесу и приведут к потере большого количества денег.
- Mono, как уже упоминалось, реализует международный стандарт – хотя и от признанного монополиста. Если это проблема, тогда почему люди используют Си, стандарт от другого монополиста — AT&T? Mono, что тоже упоминалось, совершенней и является свободной заменой для проприетарных предложений. Если это проблема, почему люди используют GNU (который добавив улучшений, стал свободной заменой для проприетарного UNIX)?
- Независимо от того, существуют ли какие-то патенты, Mono «прикрыто» стандартами ECMA 334 и 335, если все таки такие патенты действительны (это очень часто скрывается), факт, что заявления сделанные общественно, поддерживающие идею лицензирования без лицензионных отчислений как таковых, уменьшает финансовое воздействие такого нарушения до нуля. Если какая-нибудь корпорация будет иметь «бездискриминационную» лицензию, чтобы использовать патенты, и не заплатит за них, то любые изменения станут дискриминацией (разрыв подписанных сроков относительно лицензируемого патента), иначе эти патенты теряют любую финансовую ценность. Хотя, все ещё могут нести нематериальную ценность (например, в защите против исков связанных с этими патентами), т.е. не делая их “свободными для всех” в любом смысле.
- Mono не станет нерабочим из-за несовместимых изменений в Microsoft.NET по двум причинам. Во-первых, из-за таких изменений была бы нарушена работа каждой существующей программы основанной на .NET(фактически, если это случится, то наиболее лучшим вариантом для пользователей будет запуск приложений с помощью Mono). Во-вторых, поддержка Microsoft.NET является вторичной целью проекта Mono. Если Microsoft что-то изменит в коде .NET 5.0, то это не помешает Banshee или GNOME скомпилировать и запустить приложение на других системах, вроде Ubuntu.
- Отсутствие «патентной защиты» не равно «патентному нарушению». Если я попрошу кого-нибудь заплатить за мое обещание не преследовать их за использование моих патентов, они примут мое предложение, но без гарантий на то, что я когда-то еще смогу продать им что-нибудь хорошее — лишь то, что они готовы купить. Если Джим покупает защиту от каких-либо моих патентов, то это не значит, что он посягает на что-то конкретное — равно как если Тед делает то же самое, то это не значит, что он не нарушает ничего другого. Если в страховку Вашего дома входит защита от наводнений, то это не значит, что Ваш дом будет затоплен, и неоплаченная страховка не будет означать обратное.
- Патенты охватывающие осуществление конкретных деталей проекта не могут погубить его — примером может служить Freetype. Apple создала несколько патентных проблем Freetype-разработчикам, «закрытием» подсказок к TrueType шрифтам. Обратите внимание, что Freetype существует и по сей день — это объясняется тем, что МЕТОД, который заложила Apple, смогли обойти и использовать автоматически генерируемые подсказки вместо закрытых. Угрозы Apple рассеялись и проект получил развитие. Нехорошими компаниями были выдвинуты предположения о том, что ядро Linux содержит ряд патентных нарушений — если конкретные детали будут раскрыты, то такие нарушения можно будет обойти. Патентные нарушения в Linux ядре не вызовут закрытие всех GNU/Linux дистрибутивов за одну ночь. И было бы нечестно говорить о том, что любое другое Свободное ПО чем-то отличается в этом плане. Даже если в Свободном ПО будут найдены серьезные нарушения, то в исправлении этого не будет ничего сложного — модифицировать основное приложение и, возможно, способ работы с ним довольно легко. Только закрытые программы не могут быть исправлены в случае радикальных перемен, поэтому о проприетарных программах заботятся в последнюю очередь.
- Так же у Mono много «путей отступления», особенно в Debian/Ubuntu. В первую очередь, сомнительные не-ISO библиотеки Microsoft, вроде System.Windows.Forms не включены в Mono по умолчанию, и редко используются в свободных программах (т.к. WinForms похожа на задницу, между прочим). если причина будет крыться в удалении этих библиотек, то БАЦ, и они уходят без ущерба для свободного ПО. Во-вторых, если потребуются более серьезные изменения, то пакеты Mono могут быть пропатчены для устранения нарушений. Если уж понадобятся более серьезные изменения, то как упоминалось выше, то программы могут быть так же пропатчены для поддержки каких-либо изменений платформы. А если рассматривать еще более драматическую ситуацию, то программы могут быть портированы на другие платформы. Это сложный и трудоемкий процесс, наносящий огромный вред для будущих темпов развития (хотя не хуже, если бы программа была сразу написана для другой платформы), но никто во время написания программы не думает о том, что однажды поднимет руки и скажет: «Не переживайте — это было забавно, но я вынужден прекратить её разработку».
Почему Mono должен быть включен в Ubuntu по-умолчанию?
Мы не хотим, чтобы Mono был установлен по-умолчанию во всех дистрибутивах. Mono — это программная платформа, а значит он не должен быть установлен у всех пользователей. Ubuntu не поставляется по-умолчанию с Java, Scheme, Assemby, LISP и различными фреймворками, просто потому, что они не интересны большинству пользователей.
Мы хотим, чтобы по-умолчанию были хорошие программы. После загрузки Ubuntu, Kubuntu, Xubuntu или другого дистрибутива пользователь должен сказать «Ух ты, Свободное ПО настолько хорошо, что я больше не нуждаюсь в Windows». Все дистрибутивы СПО, стремящиеся обрести фанатов, должны выбирать лучшие приложения. В случае с Ubuntu, командой Desktop Team было принято решение включить в дистрибутив лучшее приложение для работы с заметками и лучший фото менеджер.
Desktop Team решила, что наилучшем приложением для работы с заметками является Tomboy. Приложение Tomboy гораздо функциональнее, чем апплеты «Sticky Notes» («Липучие заметки») как и от GNOME, так и от Windows Vista. Также Tomboy можно рассматривать как бесплатную замену проприетарному Microsoft OneNote стоимостью ?80. Единственное аналогичное по возможностям приложение является Zim «Desktop Wiki».
Zim — высококачественный продукт, но Desktop Team решила использовать Tomboy, поскольку это приложение удобнее для многих пользователей (и сейчас Tomboy используется как стандартное приложение в этом классе)
Также Desktop Team решила, что лучшим фото-менеджером является программа F-Spot. Приложение F-Spot можно сравнить по возможностям с проприетарными приложениями iPhoto компании Apple и Picasa от Google Inc. F-Spot нельзя сравнивать с приложениями типа файл-менеджер как gThumb, поскольку одной из ключевых особенностей является возможность прикреплять к фотографии важные метаданные, но gThumb работает для каждого каталога отдельно, а не для всех фото сразу, как F-Spot.
Как Tomboy, так и F-Spot для запуска требуют Mono JITter, а также набор библиотек таких как GTK#. Таким образом, чтобы предложить эти лучшие бесплатные программы для новых пользователей (эти программы выбраны командой Ubuntu Desktop Team), часть свободного программного обеспечения нужна для запуска других приложений, как например GNOME System Monitor требует для работы GTKmm. До тех пор, пока Tomboy и F-Spot будут лучшими в своем классе, они будут включены в дистрибутив Ubuntu, а значит вместе с ними будут включены нужные для их работы библиотеки и приложения. Если же найдутся лучшие программы, то они будут включены в стандартную поставку Ubuntu, если приложение основанное на Mono будет лучше других приложений, то Mono будет включен в дистрибутив. Это мнение не основывается на предпочтении к данному фреймфорку, хотя я думаю, что разработка на языках высокого уровня таких как C# или Python гораздо быстрее и удобна, чем на C.
Пост размещенный в Linux Today
Из вашего первого сообщения ясно, что вы не беспристрастны. Вот несколько конкретных фраз, цель которых — обругать и показать ваше уже определенное мнение на выбранные вами темы. Все фразы основываются на чистом предубеждении, что вынуждает тех, кто понимает что-то про Mono, не лезть на рожон. Поэтому всем кажется, что большинство — противники Mono.
«Есть множество приложений и получше, которые можно включить в дистрибутив» — Пожалуйста, назовите такие приложения.
«проталкивание технологий Microsoft» — Помогите! Помогите! Нас угнетают! Нет, давайте серьёзно. Хорошая технология — это хорошая технология, а не изобретение велосипеда, который никому никогда не помогал. Среди участников Desktop Team нет профессионалов в Mono (большинство из них фанаты Python) и односторонних решений связанных с включением программ в дистрибутив не было, нету и не будет. Никто ничего не проталкивает! Ни один из пакетов связанных с Mono не был помечен как «важный» (Essential:yes).
«Включение этих програм оскверняет Ubuntu» — Демагогия. Microsoft — обычная корпорация, а не нечто сверхъестественное. Обвинение Microsoft в нечестивости и проталкивании продуктов делает им слишком много чести. Они — корпорация с огромным количеством глупых менеджеров и с редкими просветами в виде компетентных разработчиков. И ничего больше.
«Фанаты Mono разводят слишком много шума на форумах Ubuntu» — На самом деле, в этом виноваты противники Mono. Если вы говорите об обвинениях в цензуре, то вы заблуждаетесь. Те, кто читал подробности этих обвинений, могут увидеть в сообщениях грубость, угрозы, споры и прочее, а в корне всего этого были противники Mono. Ни ребячество, ни друзья среди модераторов не помогли победить в споре.
«Не могли бы вы сказать, почему Mono был удален из установочного дистрибутива Ubuntu?» — Предлагаю вашему вниманию цитату Томаса Джефферсона — «Насмешка — его единственное оружие против непонятных суждений. Мысли должны быть отчетливыми прежде чем разум сможет с ними что-либо сделать». Требования удалить Mono из дистрибутива Ubuntu беспричинны — в Ubuntu нету других пакетов, которые могли бы стать лучшей заменой, но сообщество требует удалить Mono. Это, проще говоря, «программный терроризм» — требование сменить политику и утверждение того что Desktop Team не свободны в выборе, основанном на собственной политике. Многие люди могут возразить в этом вопросе, но пока у них не будет адекватной замены для «приложений Mono», их выбор прост — делать Linux хуже и хуже, двигаясь к базовому набору приложений или всё-таки смириться с существованием Mono. Стоит заметить что такие люди — гораздо большая потеря нежели различные пользователи форумов, например, Mark Shuttleworth, который не один раз заявлял, что не разделяет страхов сообщества по поводу Mono. Я лично поддержал бы переход с Mono-приложений на другие, не основанные на Mono, но гораздо лучшими в своем классе.
«Просто включить его в стандартный репозиторий не приемлемо.» — Это абсолютно приемлемо, хотя это не единственное выдвинутое предложение — они варьируются от реклассификации Mono в non-Free репозиторий, до его полного удаления из Debian и Ubuntu. Свободные программы должны быть в стандартном репозитории, независимо от их реализации — но если реализация какого-то приложения является лучшей, то она должна быть включена по умолчанию.
«Неспособность фанатов Mono ответить на те простые вопросы меня немного беспокоит, такое впечатление, что есть куда более важные вопросы.» — Если вы обвиняете кого-то, тогда объясните суть обвинений. Если у вас есть конкретные обвинения к людям, которые не противостоят Mono, тогда напишите их или же не распространяйте мифы.
Движение против Mono
Есть люди, которые «за» какие-то вещи. Они за свободу, или за техническое превосходство, или за спортивную команду, или за что-то другое. Есть люди, которые «против». Они против некоторых политиков, или людей определенной национальности, или чего-то другого. Некоторые люди определяют себя сторонниками чего-то, а другие противниками. Mono вызывает огромный гнев среди второй группы; в частности, люди, которые используют GNU/Linux не потому, что они «за» что-либо, а потому, что они «против» Microsoft. Это можно хорошо разглядеть в использовании слов «Microshaft» или «Micro$oft» или других детских попытках определить «их» и «нас», чтобы высмеять «их». Для них все символично: если Mono — свободное ПО, то они «за», но если оно безвозмездно получено из рук Великого Сатаны, то это непростительно.
Многие из тех, кто рекламировал себя как противник Mono, откровенно говоря, выглядят жутковато, т.к. желают смерти сотрудников Microsoft (см. комментарии к Boycott Novell), или пытаются навредить людям, которые позитивно отозвались о Mono (см. недавние замечания в списках рассылки Ubuntu), или намекают на это тем, кто с ними не согласен (практически в каждой новости Boycott Novell) — это отвратительное поведение представляет из себя наихудшую рекламу «Свободному ПО». Если люди хотят быть «против» Mono, то для этого есть разумный путь — например, работа по поддержке пакетов альтернативного ПО. Если анти-Mono движение хочет быть принято всерьез, то они должны понять, что для борьбы им необходимо хорошо знать как Mono работает и почему, для того, чтобы правильно направлять свою энергию (и крики “ZOMG! MICRO$HAFT!” имеют неверное направление). Я буду СЧАСТЛИВ увидеть высококачественные приложения для GNOME на Java или Python — такая конкуренция приведет к улучшению ПО в целом.
Большинство противников Mono не являются даже создателями сборок, а не то что разработчиками ПО. Они заявляют, что программисты (которые действительно тратят время на разработку СПО) должны использовать те платформы, которые нравятся им, а не самим разработчикам. Это другая причина, почему аргументы противников Mono не получают должного внимания — предположение о том, что кто-то может решать за разработчиков очень раздражает. СПО основывается на меритократии — более способные получают больше уважения. Пока противники Mono не будут вносить свой вклад в СПО они будут выглядеть чудаковато и их вопросы останутся без ответа.
В конце концов, не найдется ничего, что заставит исчезнуть споры вокруг Mono, до тех пор, пока расплывчатые угрозы юридической атаки распространяются и подпитываются некоторыми членами сообщества. Практически ничто не сможет успокоить тех, кто уже составил свое собственное мнение без какой-либо озабоченности о реальных основаниях или фактах. Аргументы против Mono основанные на реальности или фактах я считаю хорошими и приветствую их, но встречаться с ними мне приходилось очень редко. И даже если они приводятся, то тонущими в настолько густом соусе демагогии, страха, неуверенности и сомнения, что действительно важная информация попросту невидна.
Итак, я считаю эта статья то, что вы искали. Вы можете перепечатывать её или нет. Она создана как новая глава в ежедневных личных нападках на меня со стороны уж очень искушенных противников Mono.