Предлагаю перевод недавнего интервью Мигеля для портала InfoQ.
У нас появился шанс связаться с Мигелем де Икаса, основателем проекта Mono и материнской компании Xamarin. Мы затронули несколько тем, включая будущее ASP.NET MVC в Mono и прекращение разработки Moonlight.
InfoQ: Mono поддерживал ASP.NET с самых ранних времен. Это было сделано «для галочки» или вы заинтересованы в ASP.NET на платформе Mono?
Miguel de Icaza: Мы уже какое-то время не проводили опросов, но, судя по последнему, ASP.NET на Unix — до сих пор важная функция для людей. Я бы сказал, что интерес понизился, когда Microsoft изменила свою лицензионную политику для Windows Server. Из-за этого финансовая привлекательность Mono в некотором роде упала. На текущий момент основной причиной использования ASP.NET на Mono является привязка к Linux иных компонент программной системы.
InfoQ: ASP.NET MVC уже некоторое время открытый фреймворк. Если заглянуть в прошлое, сколько усилий требовалось, чтобы сделать его совместимым с Mono?
Miguel: MVC 1 и MVC 2 запускались на Mono достаточно просто. С MVC3 все было иначе, т.к. MVC3 был открытым, но зависел от нескольких библиотек, которые либо не были тогда открытыми, либо являлись перехо́дными. Так что непосредственно совместить MVC3 и Mono было не сложно, в отличие от развертывания сайтов. Сайт на MVC3 редко можно было увидеть работающим на Mono, это было весьма трудноосуществимо.
После недавнего перевода библиотек ASP.NET на открытую лицензию все поменялось, и нам удалось заставить MVC3 работать с Mono «из коробки».
Однако, запускать MVC4 некоторое время не получится. Для MVC4 требуется обновить ядро ASP.NET, чтобы добавить поддержку async, а пока над этим никто не работает. Вопрос лишь в том, достаточно ли это нужно людям, чтобы они добавили нужные изменения в Mono.
InfoQ: Как вы считаете, является ли возможность вносить изменения непосредственно в ASP.NET MVC значительным преимуществом для сохранения совместимости?
Miguel: Основную пользу от публикации исходников ASP.NET MVC получает его сообщество: мучительное внедрение нововведений и исправление ошибок было ограничено возможностями разработчиков Microsoft, тем, что они сделали, могли реализовать или выявили. Сейчас ASP.NET в одном ряду с другими открытыми фреймворками, которые быстро развиваются и оперативно реагируют на изменения.
InfoQ: Сейчас существует 4 различных технологии пользовательских интерфейсов, основанных на XAML: WPF, Silverlight, Silverlight для Windows Embedded и Silverlight для Windows Phone. С появлением Windows 8 мы увидим пятую технологию? Какова ваша точка зрения по поводу такого разнообразия?
Miguel: Сейчас мы сфокусированы на C# для Android, iOS и Mac, так что мы не очень стремимся к взаимодействию с XAML-фреймворками.
В XAML есть интересные решения, но я никогда не поддерживал XML в качестве языка разметки. Я долгое время мечтал, что Microsoft адаптирует какую-то более понятную для людей технологию разметки, например, Json или ту, что была частью JavaFX. Их было бы одинаково просто использовать и поддерживать как с помощью утилит, так и вручную.
В какой-то момент мы реализовали открытый движок рендинга, способный работать с разметкой Silverlight 3/4.
Сейчас мы говорим разработчикам разбивать их приложения на две части: один общий слой, который будет использоваться на всех платформах .NET/Mono, и другой, уровень представления, либо с нативным интерфейсом для iOS, Android, Mac и Windows, либо с его HTML-версией.
InfoQ: Множество разработчиков переходят на платформы типа PhoneGap, чтобы стандартизировать интерфейс между всеми платформами. Вы когда-нибудь рассматривали возможность иметь такую UI-библиотеку для C#, которая могла бы работать между iOS, Android и Windows Phone?
Miguel: Их там будет целая смесь.
Иногда у вас маленький бюджет и вы используете пиши-один-раз-используй-везде уровень представления. Именно это дало такую популярность Java и мы используем такой подход для некоторых наших утилит с помощью библиотек Gtk# и Xwt.
Но иногда вы хотите предоставить лучший в своем классе пользовательский интерфейс, тогда нужно писать собственный нативный код. Мы также используем и этот подход для некоторых утилит, например, наша новая система документации для Mono, которая теперь использует нативный интерфейс на каждой платформе.
В частности, люди, работающие на Mac и iOS, высоко ценят качество готового продукта и нативные интерфейсы, поэтому кроссплатформенный UI оставит не самые лучшие впечатления.
InfoQ: Перед тем как Novell была выкуплена, некоторые люди работали над запуском Moonlight на планшетах Android. Вы до сих пор работаете в этом направлении?
Miguel: Мы отказались от разработки Moonlight.
InfoQ: Печально слышать такие новости, Moonlight казался весьма многообещающим. У вас не хватило людских ресурсов или вы больше не считаете, что браузерные Silverlight/Moonlight — светлое будущее?
Miguel: Silverlight не получил должного распространения в интернете, и, соотвественно, не стал важной технологией, которой, как я думал, он станет.
Ну и Microsoft добавила искусственных ограничений в Silverlight, которые сделали его бесполезным для создания настольных приложений.
Сейчас мы больше не верим, что Silverlight подходящая платформа для технологии типа пиши-один-раз-запускай-везде, в ней просто слишком много ограничений, чтобы быть полезной. В данный момент мы верим, что в мире C# лучше всего отделить код представления. Программисты будут использовать одно ядро приложения на всех платформах и писать отдельный интерфейс для каждой целевой платформы: iOS с MonoTouch, Android с MonoDroid, Mac с MonoMac, Windows с WPF/Winforms, Web с ASP.NET и Windows/Linux с Gtk.
Конечно это не пиши-один-раз-запускай-везде, зато результатом будут приложения, использующие нативные средства и возможности платформ.
InfoQ: Если бы у вас было больше контрибьюторов для открытой части Mono, то над какой частью проекта вам бы больше всего хотелось, чтобы они работали?
Miguel: Пожалуй над грядущим API версии 4.5 и WCF.
Microsoft обновили большое количество API в .NET, для поддержки async из C# 5. Несмотря на то, что мы провели работу над библиотеками базовых классов, я бы лично хотел, чтобы System.Data и его производные, вроде нашего провайдера Sqlite, поддерживали async, так же как и весь стек ASP.NET, который сейчас также поддерживает async.
Для улучшения ASP.NET необходимо с выгодой пользоваться всем открытым кодом, который Microsoft недавно опубликовала для ASP.NET. Без этого Mono сможет запускать лишь половину от этого нового открытого кода.
InfoQ: Я полагаю вы следили за судебной тяжбой Oracle/Google над Android API. Что вы думаете о сложившейся ситуации?
Miguel: Выглядит как война, и после первых залпов невиновных и «хороших» нет. Репутация обоих компаний сильно пострадала.
InfoQ: Не боитесь ли вы, что если API будут признаны объектом авторских прав, то Microsoft поставит под угрозу проект Mono?
Miguel: Нет.
В деле Google и Оracle спорным вопросом являются некоторые основные API, потому что ни у одного из API высокого уровня не получилось стать полезным в этой многомиллиардной борьбе. По существу, Google принял решение не использовать высокоуровневую часть, по той причине, что им нужен был другой набор API, подходящий под Андройд. В случае с Mono/.NET авторские права основных API были переданы ECMA/ISO для распространения, а API высокого уровня стали весьма сомнительными для использования в многомиллиардной индустрии. Если бы многомиллиардный бизнес возник с появлением .NET/Mono, то он, вероятно, использовал бы ядро (среда исполнения и BCL — прим. пер.) и отказался бы от высокого уровня, таким же образом, как мы сделали для MonoTouch и MonoDroid: мы используем ядро, но не реализуем ни одного API Windows высокого уровня, и вместо этого заменяем его нативным API для Apple или Android.
Этой мой первый перевод, если вы видите какие-то ошибки, пожалуйста, сообщите о них в пм.
P.S. Спасибо большое читательу kekekeks за помощь в переводе и стилистике.
Автор: gouranga