Знаете ли вы, кто такой Джон Гэллоуэй? А между тем, он есть. Он не только один из авторов «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. Если вы хотели прийти, то это последний шанс. Билеты здесь.