Pull to refresh

Comments 71

По данным OpenNet, независимые разработчики пытались вернуть в репозиторий dotnet watch удаленный код Hot Reload, который уже числился открытым и входил в состав предварительного выпуска .NET 6 RC1, но Microsoft не допустила это изменение в GitHub, а также ограничила возможность оставления комментариев в обсуждении.

Verge уточнила, что подобные действия Microsoft вызвали возмущение многих независимых разработчиков и участников сообщества открытого ПО.

Я смотрю коллеги слегка подзабыли какой МС свирепый капиталист и какие решения она может принимать просто потому что вам некуда деться.

Попрошу уточнить: «молодые коллеги».
А на практике кто испробовал это дело? И может ли оно работать, скажем, после смены интерфейса для наследования и соответственно поведения классов работающих с… и т.д.?
Я вообще себе плохо представляю ситуацию, когда кто-то тупо меняет какой-то for раз за разом, чтобы получить желаемый результат. Или у Hot Reload есть другое применение?

Работает оно, и это реально удобно, если нужно в отладке поправить небольшую ошибку или дописать кусочек кода. Даже в старом варианте Edit & Continue

Но это не про изменение объявлений классов или интерфейсов. У HotReload, насколько я понял, практически те же ограничения, что и у Edit & Continue, их там куча.

Даже при изменении захвата переменной в лямбде - уже нужен перезапуск. Но всё равно удобно, особенно дописывать, когда попал в нужное место

Вроде там вообще нет поддержки C++. Значит C#

UFO just landed and posted this here

А как Вы это делаете без JRebel?

UFO just landed and posted this here
Возможно я неправильно понимаю этот функционал, но мой опыт дал мне следующее:
— если приложение упало, то пора заняться дампом
— если из дампа ничего не понятно, то пора занятся архитектурой
— если с архитектурой всё плохо, то пора задуматься про v2.0
Да, приложение необходимо продумать по самые «кости» до начала реализации кодовой базы. Знаю, что так редко случается, но это нужно.
И как результат — я не вижу что я могу «быстро» подправить, чтобы «что-то получилось».
Вы уж простите меня, но Hot Reload слишком смахивает на средство для того, чтобы скрыть «говнокод».

Честно говоря, не понял откуда такой высосаный из пальца негатив.
Причём тут дамп и архитектура? Кейс вроде простой и понятный - меньше итераций, простой трейсинг, живая отладка. Как минимум "кости" не всегда ваши.

Это не негатив, а моё не понимание практичной части функционала. Просто не могу представить кейс где такой функционал нужен.

UPD: Скажем так: у меня в софте утечка памяти, вроде простой кейс, легко (относительно) обнаружить, если есть данные о среде выполнения и событиях + стек и т.д.
То как я могу использовать Hot Reload для решения проблемы?
Возможен другой вариант: не тот ключ в конфиге читаю? Ну значит я сам виноват, и Hot Reload мне уже не поможет.

Точно не понимаете. Hot Reload для быстрого внесения изменений в приложение без перезапуска.

Раньше цикл разработки выглядел так: бронируем рабочее время компьютера (на следующей неделе), пишем программу на листочке, пробиваем её на перфокартах, приносим перфокарты в нужное помещение в забронированное время, засовываем в компьютер, через какое-то время получаем распечатку результатов, из неё понимаем, что допустили ошибку, повторяем процесс с начала (с бронирования времени компьютера на следующей неделе).


Иными словами, время между внесением исправлений в код и наблюдением результатов измерялось днями.


В результате многочисленных улучшений, вносимых нетерпеливыми инженерами как в программной, так и в аппаратной части, за прошедшие десятилетия это время сократилось настолько, что вы можете перекомпилировать свой проект на своём компьютере даже по несколько раз в минуту.


"Всё равно долго", решили нетерпеливые инженеры и разрешили наблюдать результаты изменений, не дожидаясь перекомпиляции.

Большинство программ в той части, которая требует наиболее пристального внимания и итеративных правок не сводится к чему-то, что достаточно просто откомпилировать. Зачастую, проходит несколько минут до того, как удастся стриггерить выполнение нужного участка кода в нужном окружении. Иногда э о можно нивелировать написанием тестов, но зачастую написание адекватного теста может потребовать еще большего времени.

То, что пол века назад одна итерация занимала недели, не означает, что я должен мириться с потерей нескольких минут после каждой допущенной ошибки.

Ну я вот сегодня хотел фарш для пельменей накрутить, и тоже не нашёл чем бы мне Hot Reload помог ) Я даже сомневаюсь, что он, в приципе, мне мог помочь в этом деле.

А Hot Reload разве для мясорубки сделали? Обращайтесь к производителю

С таким же посылом, можно обвинить производителя кроватей: "Не удалось показать мастер-класс в копуляции, верстаем взад"

Отнюдь! Представьте как было бы удобно менять свинину на говядину/баранину прямо в готовых пельменях, без необходимости переделывать всё с начала, чтобы можно было за минуту проверить пять разных составов и выбрать самый вкусный. А люди бы жаловались что не видят смысла в этой функции, потому что когда у них пельмени на пол упали то замена начинки не поможет и в любом случае придётся делать всё заново

Один раз воспользовался. Быстро надо было сделать вывод, воспользовался форматированием строк (вроде "String.Format("{0,6} {1,15}") и вот подбирать "на лету" очень сильно помогло. Поменял цифру, "hot reload" - тут же сморишь вывод. Время было сокращено кратно.

Если вы не понимаете ценность функционала, просто не пользуйтесь им.

А что без падения ошибок не бывает? Для примера типичная рабочая ситуация: вот я пишу на blazor server, делая какой-нибудь отчет (табличку или график), библиотека компонентов для вывода данных сторонняя. Иногда по 5-10 раз меняешь настройки компонента, чтобы смотрелось нормально, и без Hot Reload приходится каждый раз перезапускать проект. А так поправил настройку и все, можешь дальше смотреть - нормально или нет.

Пользуюсь в ситуациях, когда перезапуска ждать слишком долго. Например, вы проверяете код на реальных данных и дошли до очередной точки остановки, и понимаете что код дальше не сработает (или он уже не сработал, тогда вы перемещаете курсор назад) потому что вы забыли что-то и переписываете этот фрагмент. Естественно, то что было создано кодогенерацией такой функцией исправлять не удобно, хотя скорее всего можно.

Да криво эта функция работает на реальных боевых проектах. Не 3.1 Core, не 4.7 не удалось на горячую внести изменения.

UFO just landed and posted this here

Не вижу куда нажать чтобы циферка -1 около напоминающего щит легионера значка сменилась на 0. Хочу этого потому, что считаю, что репутационные потери действительно огромны и совершенно не ко времени ибо грозит переманивание начинающих разработчиков к Эппл, причём только к Эппл, путём обновления Playgrounds.

Хочу только добавить, что мне кажется, что речь больше не идёт о разработчиках на .NET. Речь уже идёт о разработке под Windows вообще, на чём угодно и как угодно. До этого шага Микрософт всё было логично - из Windows делаем платформу для кросс-платформенной разработки, на ней пишут подо всё, включая или даже начиная с Эппл, и из милости - под Windows. После этого шага - не понимаю ничего.

Да ничего не случится. Действия Майкрософт никак не повлияет на открытые решения. Да и функция сомнительна, прочитайте выше моё непонимае этого функционала.
UFO just landed and posted this here
но Microsoft не допустила это изменение в GitHub, а также ограничила возможность оставления комментариев в обсуждении.

PR не закрыт и не закрывался, комменты открыты.
Issue также не закрыт и не закрывался, комменты открыты.
, а также ограничила возможность оставления комментариев в обсуждении изначального ПР-а с удалением кода.

— вот так должно было это звучать, на самом деле.

В PR по вашей ссылке нет огранчиения оставления комментариев.

А в чём проблема с тем, чтобы собрать свой форк, в котором откатить удаление и в дальнейшем поддерживать этот форк в актуальном состоянии? Понятно, что рано или поздно поломается, но всё же какое-то время он проживёт.

Другое дело в том, что форк придётся вести не на github-е по понятным причинам, но гит позволяет это делать влёгкую.

Тут проблема не в конкретной фиче, без которой конечно можно прожить. Люди боятся что это станет тенденцией

По идее, раз эта часть больше не под открытой лицензией, то просто добавить известный код нельзя. Надо переписать "своими словами". Ну и поддерживать форк целого дотнет ради одной фишки ещё поискать желающих.

Что значит не под открытой лицензией?
Этот код был опубликован под открытой лицензией? Был. А значит его можно использовать в соответствии с условиями этой лицензии.


Да и прямо на гитхабе никто не запретит форк вести, необязательно даже другой хостинг искать.

В чём проблема сделать свой форк? Понятно, что будут проблемы. Другое дело, что придется вести не на github-е во избежание будущих проблем. Но тем не менее, мне интересно, в чём же всё же проблема?

Если речь про софт, для которого они являются майнтейнерами - тут решение только в создании форка. Тоже самое может быть с вашей любимой библиотекой: завтра единственный майнтейнер сойдёт с ума и начнёт внедрять в неё загрузчик вируса. Или лишать половины функционала ПО, которым пользовалось куча народу (вспомните про автора TrueCrypt).

В этом и слабость и, одновременно, сила опенсорса. Если для кого-то данная фича критична - однозначно стоит делать форк (возможно, даже первоначально на том же GitHub-е, чтобы проверить, на сколько далеко Microsoft готов зайти). Если многим важна данная фича - форк станет популярен. Далее, будет одно из трёх - либо они пойдут на попятную, либо пойдут на еще большие репутационные потери, пытаясь бороться с форком, либо постараются этот форк не замечать.

На мой непросвещённый взгляд, у них нет никаких юридических прав даже со своего же GitHub'а такие форки удалять.

UFO just landed and posted this here

Наверное, да, был не совсем прав, при грамотно составленном ToS могут что угодно выпиливать, но всё равно не уверен, что риски только репутационные были, наверняка же и у антимонопольных регуляторов могли бы вопросы возникнуть, почему это они без обоснований удаляют со своего хостинга конкурирующий с VS продукт.

Привет новый mono.

Я кстати не знаю, что с mono стало, после того как объявили о слиянии кода с кодом от МС.

Mono существует, на нём работает Visual Studio for Mac (которая сама по себе пример аналогичного поведения Майкрософт – они взяли открытый MonoDevelop, какое-то время дорабатывали его в том же репозитории, при этом имея свои приватные дополнения, потом переписали и вынесли в приватные репозитории редактор кода, так что оно и запускаться перестало, а потом просто перестали пушить в репозиторий MonoDevelop). Мобильные приложения Xamarin.iOS вроде бы тоже всё ещё через Mono+LLVM компилируются в машинный код.

Но оно не развивается, версия застряла на 6.12 и меняются только номера сборки.

На mono не работают некоторые интересные вещи, так компиляторы Nemerle и Boo сигфолтятся.

Дорогие дотнетчики, форкайте пока не поздно. Майкрософт не изменить. Пока не поздно, бегите, иначе они вас поставят на колени

Я думал это конкуренция с PHP и Python.

Так, я не понял. У меня эта фича работает на маке для asp.net проекта на .NET 5 на маке. Просто пишу dotnet watch run. У меня в .NET 6 перестанет работать?

Это не оно, у вас компилируется и перезапускается проект при изменениях, а Hot Reload патчит код без перезапуска

А там честный hot reload. Понял, спасибо

Это, конечно, хорошо, что вернули и извинились, но меня интересует один вопрос: для чего надо было так опрометчиво рисковать репутацией?


Будто Балмер дал совет по развитию .NET.

Эксклюзивные фишки в vs. Они частенько так делают. Например некоторый функционал xbox gamepad работает только в играх из windows store. В стимовских версиях игр, например, не работают impulse triggers.

а там очень интересное извинение

"мы зря решили удалить код, мы просто не будем его вызывать"

Получается функции в бесплатной версии не будет всё равно?

Ну вот вам и опенсорс :)) Ничего у МС не поменялось за столько лет.

Поменялось очень много. Не всё, но многое. Решение по слухам принял VP подразделения.

  • Ну что, народ подсел?

  • Я не думаю, что...

  • Отлично, выпиливаем бесплатный функционал!

Это не та фича, которая ещё чуть ли не в VC6 была? (Или 7.1). Чего-то-там-Continue. Кстати, и тогда не помню, чтоб народ от неё прям кипятком писался. Лично я попробовал пару раз — мне не зашло.

Интересно другое. Как в принципе можно изъять код из open source? Там же все лицензии системы Ниппель: добавить да, удалить нет (только за ненужность). Иногда люди это плохо понимают в вики-проектах: написали статью, потом обиделись и стёрли, а их забанили и отправили читать текст, под которым они подписались при коммите. Но Microsoft? У них там своя лицензионная атмосфэра?

Ну и Гитхаб показал свой звериный оскал. Само слово всегда казалось мне оксюмороном. «Децентрализованный хаб». Надеюсь, все это надолго запомнят.

First and foremost, we want to apologize.

По крайней мере, реагируют они быстро и правильно.

добавить да, удалить нет (только за ненужность)

Как раз по этой причине и решили удалить, типа смена приоритетов/не отвечает качествам.

А модерация комментов, про которую написано в новостной заметке?

Интересно другое. Как в принципе можно изъять код из open source?

Никак. Они просто выкатили апдейт, убирающий эту функцию.


Ну и Гитхаб показал свой звериный оскал.

А гитхаб-то что сделал? Многочисленные форки, восстанавливающие функционал, не удалял, вся дичь происходила исключительно внутри майкросовтовских репозиториев.

Про ГитХаб беру назад. Я решил, что «Microsoft… ограничила возможность оставления комментариев в обсуждении» было административным произволом владельца.

Что тут ещё сказать? Красиво эффективный менеджер Microsoft сделал отличную рекламу компилятору от Intel.

Вроде бы и ничего сильно жизненеобходимого не потеряли, но люди же в Twitter тоже опасаются, что это может стать тенденцией. А тут громкий скандал буквально из ничего.

Красиво эффективный менеджер Microsoft сделал отличную рекламу компилятору от Intel.

Каким образом изменение обвязки вокруг компилятора C# влияет на интеловский компилятор, который собирает фортран и плюсы? ЦА у них практически не пересекаются.

С какой-то стороны даже хорошо, что Майкрософт показал своё лицо сейчас, а не позже. Ситуацию они так себе исправили, я бы это описал словами "ложки нашлись, но осадочек остался." Уверен, что многих этот шаг отпугнёт

Много шума из ничего.
Этот hot reload, который по сути rebranded edit & continue, никогда толком не работал и по прежнему толком не работает даже в VS2022.


Компания сделала это ради вставки Hot Reload только в коммерческую версию нового редактора Visual Studio 2022 и получения преимущества над открытой версией Visual Studio Code.

Что, простите? О каком преимуществе речь? VS Code — это огрызок со цветовой схемой VS, которому до настоящей VS как до луны, наличие или отсутствие hot reload тут не меняет ничего.

Sign up to leave a comment.

Other news

Change theme settings