Знаете ли вы, кто такой Джон Гэллоуэй? А между тем, он есть. Он не только один из авторов «Professional ASP.NET MVC», но и человек, который является исполнительным директором .NET Foundation, по сути – отвечает за весь опенсорс .NET. Основные темы этой статьи: подробности работы .NET Foundation, примеры решаемых задач и пара слов о книгах и переходе на .NET Core. Добро пожаловать под кат!
— .NET Foundation – одно из наиболее захватывающих предприятий за всю историю .NET. Бет Месси написала отличный пост на Медиуме о том, как это начиналось. Вы присоединились к .NET Foundation в 2017 году. Можете поделиться своей историей, как это выглядело для вас?
— Честно говоря, прежде чем попасть на эту работу, я был мало знаком и с .NET Foundation конкретно, и с такого рода организациями вообще. Однажды предыдущий исполнительный директор .NET Foundation и икона опенсорса Мартин Вудвард рассказал, что берет на себя новую интересную роль в Microsoft и хочет, чтобы я подумал о том, чтобы занять его место в .NET Foundation. К счастью, благодаря Мартину и Бет, я уже был немного знаком с .NET Foundation. Но осознав, чем является эта организация, я был очень рад открывшейся возможности.
.NET Foundation — независимая организация (основанная и частично поддерживаемая Microsoft, но тем не менее — отдельная), целью которой является поддержка опенсорсного .NET. Для этого нужно делать много работы:
- поддерживать более 75 опенсорсных .NET-проектов (некоторые законтрибьютила Microsoft, но большинство пришли из сообщества);
- решать юридические и логистические вопросы, позволяющих компаниям и отдельным разработчикам работать над проектами в .NET Foundation;
- организовывать работу группы Meetup Pro, насчитывающей почти 300 групп по всему миру с общей численностью более 215 тысяч участников;
- создавать материалы для презентаций и воркшопов для поддержки спикеров, рассказывающих о .NET;
- поддерживать нескольких сотен мероприятий по всему миру, включая .NET Conf;
- оказывать спонсорскую поддержку конференций и хакатонов;
- проводить множество невидимой снаружи работы по устранению препятствий, юридических и логистических проблем, мешающих росту .NET-сообщества;
- участвовать во всем, что может помочь .NET-сообществу расти и делать крутые штуки.
— Вы – исполнительный директор .NET Foundation. Можете рассказать подробней, чем вы занимаетесь?
— Это интересная, увлекательная и непростая работа. Я сотрудник Microsoft, и Microsoft позволяет тратить большую часть моего рабочего времени на .NET Foundation. Это похоже на систему, когда компания позволяет сотруднику контрибьютить в опенсорсные проекты. Я отчитываюсь нашему совету директоров, работаю с консультативным советом, стратегическим техническим советом, корпоративной спонсорской группой. Только что я перечислял вещи, которыми занимается .NET Foundation; моя работа – воплотить все эти идеи в жизнь. Я управляю всем, включая бюджет, регистрацию бизнеса, юридические соглашения, новые инициативы, коммуникации, магазин атрибутики, локальные мероприятия, всевозможные новые вещи и события. Конечно, когда всем занимается один человек – это не масштабируется, поэтому другая важная часть работы в том, чтобы развивать организацию и подключать новых людей.
— Исполнительному директору приходится участвовать во множестве разных задач. Уверен, вы знаете множество интересных историй о .NET Foundation. Можете что-нибудь рассказать? Есть ли какие-то необычные или странные проблемы, которые приходится решать?
— Отличный вопрос! Мои любимые истории – о том, как мы сделали что-то полезное, что помогло сразу множеству людей.
Например, однажды я прочитал в Twitter, что сервис SymbolSource закрывается. SymbolSource отдает отладочные символы для пакетов NuGet, и раньше они самостоятельно предоставляли поддержку двух уровней: платную и бесплатную. Через несколько лет ведения такого бизнеса они поняли, что платный вариант не приносит достаточного дохода, чтобы продолжать оказывать бесплатный сервис, и им придется его закрыть. Я связался с ними, и вместе с командой NuGet мы превратили это в проект .NET Foundation и запустили бесплатный вариант на мощностях .NET Foundation в Azure.
Еще одна интересная задача — получить сертификаты и сервисы для подписывания кода проектов .NET Foundation. Для опенсорсных проектов считается хорошей практикой подписывать бинарные сборки (инсталлятор, пакеты NuGet и т.п.), но получение таких услуг требует регистрации проекта в качестве юридического лица, да и организация подписи сборок — не такое уж простое занятие. Oren Novotny, член консультативного совета и в дальнейшем – управляющего совета, придумал отличное решение – регистрировать проекты как фирменные наименования .NET Foundation. Мы начали работать с DigiCert, провайдером сертификатов, и получили скидку для проекта .NET Foundation. Дальше мы оформили .NET Foundation как суб-сертификационную организацию, благодаря чему каждый отдельный проект смог получить сертификат уже на своё имя. После чего мы настроили подписывающий сервис на нашу подписку Azure и дали возможность пользоваться им всем нашим проектам, кому это нужно. Это была идея Орена, но я очень рад, что этим занялась именно .NET Foundation и воплотила идею в жизнь.
— Недавно был анонс .NET Foundation Open Membership. Кроме того, совет директоров выбирается на основе открытого голосования. Можете рассказать чуть больше об этом, и почему это так важно для .NET-сообщества?
— .NET Foundation была отдельной сущностью с момента основания, но изначально два из трех директоров были сотрудниками Microsoft, а третий назначался Microsoft и поэтому не был полностью независимым. Мы изучили множество других опенсорсных организаций, и нам понравилось, как это работает в GNOME: люди, наиболее активные в сообществе разработчиков, могут стать членами организации и дальше избирать собственный совет. Поэтому в нашем новом совете есть один член, назначенный Microsoft (Бет Месси), а оставшиеся шесть директоров – выборные члены. Каждый из них работает в течение одного года, после которого может участвовать в переизбрании, если захочет.
Это важно по двум основным причинам:
- Это очень ясным образом даёт контроль за .NET Foundation опенсорсному сообществу .NET, позволяет решать, что делает эта организация, и распространяет это на сообщество, расширяя количество вовлеченных людей.
- Это хорошая модель для масштабирования того, чем мы занимаемся или можем заниматься. Вместо того, чтобы всей работой занимался единственный исполнительный директор (я), теперь есть семь членов совета и сотни членов сообщества, образующих команды и работающих над вещами, которые кажутся им важными. .NET Foundation включает в себя множество различных проектов.
— Представьте, что у кого-то из участников нашей конференции есть собственный опенсорсный проект. Что он должен сделать, чтобы присоединиться к организации? Какую помощь он получит, если это произойдёт?
— Если хочется присоединиться к организации, можно начать вот с этой страницы: https://dotnetfoundation.org/projects. Если вам почему-то не ответили, хорошая идея – пингануть нас по адресу contact@dotnetfoundation.org. Иногда на нас сваливается куча работы и мы стараемся не выводить проекты быстрей, чем справляемся с их поддержкой. Но проверить никогда не помешает. После этого вам нужно будет заполнить несколько форм, чтобы проверить, что проект хорошо вписывается в организацию. После чего я выношу проект на совет, мы подписываем соглашение, меняем копирайты и подключаем к нашим сервисам.
После присоединения проекта мы вместе работаем над внедрением необходимых сервисов: подписывание кода, соглашение контрибьютора на пулл-реквесты, билд-серверы,
— Вы – один из авторов серии книг «Professional ASP.NET MVC». Последняя из них («Professional ASP.NET MVC 5») опубликована в 2014 году. Стоит ли ждать обновления серии для ASP.NET Core?
— Не знаю. Я был в команде авторов во времена ASP.NET 1.0, мы вместе работали над наброском книги, но все мы были очень заняты другими вещами, и оказалось очень сложно успевать за темпом развития ASP.NET Core – как только мы утвердили набросок, уже случился ASP.NET Core 1.1, 2.0 и так далее. Кроме того, документация Microsoft стала настолько хороша за последние годы, что книги стали куда менее необходимы. Я получил огромное удовольствие, работая над книгами, но не знаю, когда выйдет следующая, и будет ли вообще обновление у «Professional ASP.NET».
— Многие участники нашей конференции поддерживают легаси-проекты на ASP.NET и полном .NET Framework. Как думаете, имеет ли смысл портировать их на .NET Core? Какие преимущества можно получить от такого обновления?
— Я делал про это целые доклады – и это непростой вопрос. Дам ответ небольшим списком мыслей:
- Если вы разрабатываете что-то новое, рекомендуется использовать ASP.NET Core.
- Если у вас приложение на ASP.NET MVC или WebAPI и вы не погрузились в глубокие кастомизации, вы сможете портировать большое количество кода — в особенности сервисы, модели и большую часть логики в контроллерах. По мне так, проще создать новый проект ASP.NET Core и скопировать туда код. Например, команда Stack Overflow портировала свой код с ASP.NET MVC на ASP.NET Core – и они говорят, что это заняло почти год, но и проект у них довольно большой.
- Если у вас есть приложения на Web Forms, портировать будет довольно сложно. Тем не менее, есть несколько возможностей делать инкрементальные обновления. Проект на DotVVM работает и с OWIN, и с ASP.NET Core, поэтому возможно инкрементально обновлять страницы на DotVVM, работающем с OWIN, и как только всё заработает на DotVVM – переключиться на ASP.NET Core. Кроме того, модели вроде Razor Pages или Blazor концептуально кажутся проще большинству разработчиков WebForms, чем MVC, поэтому при портировании советую выбрать что-то из них.
- Но если у вас есть хорошо работающие проекты на Web Forms, можно и просто оставить .NET Framework. Microsoft не будет добавлять новые фичи в него, но и поддерживать не перестанет еще долго.
— Окончательный релиз .NET Core 3.0 должен состояться во второй половине 2019. Каковы самые интересные отличия этой версии? Можно ли уже попробовать preview-версии, или стоит подождать стабильного релиза?
— Ох, там столько новых вещей! Некоторые самые топовые фичи предназначены для десктопных разработчиков – можно начинать перенос своих WPF и Windows Forms приложений на .NET Core, одновременно получив side-by-side deployment, улучшения производительности, новые API из .NET Core, возможность собирать всё в один EXE, MSIX и многое другое. Есть множество приятных фичей в платформе и SDK вроде возможности использовать C# 8.0 и многоуровневую компиляцию. Веб-разработчики смогут делать ещё более быстрые веб-сервисы с помощью таких штук, как HTTP/2, быстрой обработки JSON, нового шаблона воркера и так далее.
Спрашивать меня, стоит ли переходить на preview версии – не всегда полезно. Я ведь всегда скажу – да, конечно переходить! Но в данный момент у нас есть Preview 5, и основные изменения происходят в тулинге и улучшении поддержки десктопной разработки. Это совершенно точно правильное время, как минимум, чтобы начать тестирование, нахождение и починку блокирующих багов.
Напоминаем, что Джон послезавтра выступит с докладом «Open source software foundations: not totally boring, actually super awesome» на конференции DotNext 2019 Piter. Если вы хотели прийти, то это последний шанс. Билеты здесь.
Автор: Олег Чирухин