Открывая этот билет, я хочу понять нашу позицию в отношении пространства имен Ploeh.AutoFixture, которое в настоящее время есть в AutoFixture, и каково наше видение этого пространства в будущем. Этот вопрос уже возник и мы обязательно встретимся с ним снова :)
Есть два варианта поведения: оставить как есть или удалить префикс Ploeh
. У каждого варианта есть свои плюсы и минусы.
Идея состоит в том, чтобы пока сохранить префикс Ploeh
во всех пространствах имен, несмотря на то, что Марк больше не является владельцем репо.
__Плюсы: __
v4
.__ Минусы: __
Ploeh
. Новым (и существующим) потребителям может быть непонятно, почему у нас такой необычный префикс :)Можно изменить все файлы во всех проектах и удалить префикс Ploeh
. Технически это сделать несложно, поэтому вопрос только в нашем решении.
Плюсы и минусы такие же, как у опции _Keep as is_:
__ За: __
__ Минусы: __
v4
будет вынужден изменить импорт пространства имен. Кроме того, может случиться так, что полные имена типов жестко запрограммированы где-то в виде строк. Конечно, это будет сделано только один раз, и это легко сделать, но есть люди, которые не следят за всем этим, а просто используют AF - им это будет довольно скучно.Прежде всего, я хотел бы услышать мнение @ploeh об этом изменении и о том, какой путь он лично предпочитает. Ты, Марк, много сюда вложил, так что твое видение имеет значение.
Также я хотел бы привлечь ребят из основной команды: @ecampidoglio , @moodmosaic и @adamchester.
После того, как мы решим, у нас возникнет проблема с нашим решением, поэтому позже мы могли бы перенаправить всех, кто спрашивает / не соглашается здесь :)
Насколько мне известно, в подавляющем большинстве проектов OSS корневое пространство имен совпадает с именем, поэтому я не вижу здесь никаких проблем. Поскольку это было бы критическим изменением, вам просто нужно увеличить основную версию.
👍 для изменения корневого пространства имен на AutoFixture
в критической версии.
Я не против сохранить пространство имен Ploeh. Право собственности не относится и
пространство имен изменяется для вещей, которые работают отлично, почему ..?
В воскресенье, 2 апреля 2017 г., в 14:04 Адам Ральф [email protected] написал:
👍 для изменения корневого пространства имен на AutoFixture в критической версии.
-
Вы получаете это, потому что подписаны на эту ветку.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/AutoFixture/AutoFixture/issues/745#issuecomment-290999395 ,
или отключить поток
https://github.com/notifications/unsubscribe-auth/AAwCv_G4V_0nKgVTPpSAOpmMAQ8BMJQ6ks5rr9UpgaJpZM4Mw1jd
.
Я согласен с общим анализом (плюсы и минусы указаны выше).
Как уже было отмечено здесь несколькими людьми, изменение пространства имен было бы критическим изменением. OTOH, изменение пространства имен между версией 3 и версией 4 кажется, по крайней мере, защищенным из-за изменения в управлении. Было бы намного сложнее защитить удаление Ploeh между версией 4 и версией 5.
Если вы хотите удалить «Ploeh» из пространства имен, сейчас самое время это сделать.
@ploeh Спасибо за ответ. Еще один вопрос к вам - какой вариант вы лично предпочитаете? :) Я знаю, что это немного сложный вопрос, но я считаю, что я не единственный, для кого это имеет значение, так как вы являетесь основателем (или соучредителем, я не уверен: flasted :).
Я предпочитаю, чтобы вы приняли решение, которое, по вашему мнению, является лучшим для продвижения проекта 😉
С внешней точки зрения я могу сказать, что наличие пространства имен Ploeh.Autofixture
сделало мое первое использование библиотеки немного сложнее, потому что пространство имен не связано ни с именем пакета, ни с проектом здесь, на GitHub.
Это своего рода сюрприз, когда вы набираете using Auto...
и получаете пустой список от Intellisense.
Я согласен с @Kralizek.
Но проблема с переименованием проекта в Fixture.Net (хотя лично я бы поддержал этот шаг) означала бы разрыв с довольно широко известным в сообществе .NET именем.
Согласен с тем, что написал @ploeh
Если вы хотите удалить «Ploeh» из пространства имен, сейчас самое время это сделать.
Конечно, это может произойти только в ветке v4
.
Изменение пространства имен довольно просто, поиск и замена, и вы делаете это в своем собственном исходном коде.
Проблема с nuget, если другие пакеты используют AutoFixture и не имеют правильного разделителя версии в nuspec, тогда это также сломается. Но пока пользователь может легко вернуться к AutoFixture 3.x. Об этом можно сказать в документации, публикации в блоге и т. Д.
Я за удаление Ploeh из пространства имен, мне никогда не нравились личные имена в пространстве имен, делал это в начале своих проектов, ненавидел меня за это;)
если другие пакеты используют AutoFixture и не имеют правильного разделителя версии в nuspec, это также приведет к поломке
Я бы не стал об этом беспокоиться. Та же проблема существует для каждой критической версии. Если последующие пакеты решили не устанавливать исключительную верхнюю границу для следующей основной версии, например, <dependency id="AutoFixture" version="[3.0,4.0)" />
, то они вызывают эту проблему каждый раз, когда выпускается основная версия AutoFixture.
@abatishchev Fixture.Net
результат другого обсуждения? Я был бы очень счастлив, просто изменив пространство имен на AutoFixture
@moodmosaic Не могли бы вы также добавить свою позицию по этому поводу? Я считаю, что для принятия окончательного решения нам нужно узнать мнение всех основных специалистов по сопровождению.
Ι уже сделал .
@moodmosaic Я видел этот ответ, но не уверен, что понял вашу позицию. Вы голосуете за сохранение пространства имен или за его удаление? :)
Я голосую за его сохранение. Менее разрушительный.
Почему вас беспокоит совершение разрушительных действий? Многие люди просят об этом изменении.
Еще менее разрушительным было бы оставить проект как есть без каких-либо изменений. Но весь этот процесс не в этом, не так ли?
Мне лично хотелось бы, чтобы вы продвигались вперед с этим изменением.
@moodmosaic Я видел этот ответ, но не уверен, что понял вашу позицию.
Я был бы в порядке, если бы корневое пространство имен было переименовано просто в AutoFixture в v4
.
Хотя я поддерживаю свое предыдущее голосование за сохранение пространства имен Ploeh
, я не против его удаления, если этого хочет большинство людей.
Учитывая смену владельца, я понимаю, что это будет иметь смысл для дальнейшего развития проекта, и сейчас самое время. На данный момент единственные контраргументы, которые я могу придумать, основаны исключительно на эмоциях.
@ecampidoglio , у меня тоже были эмоции, но я думаю, что это более `` правильно '' только с _AutoFixture_ в v4 ...
@moodmosaic Спасибо за ответ, то же самое происходит и со мной. Чем больше я изучаю этот проект, тем больше я вижу и осознаю объем работы, проделанной здесь Марком - огромное количество различных обсуждений, незначительные изменения, ответы на SO и т.д. выглядит неблагодарным по отношению к Марку.
С другой стороны, я понимаю, что простой префикс AutoFixture
будет выглядеть намного лучше и последовательнее. На самом деле, здесь нет ничего ужасного, так как имя Марка по-прежнему будет присутствовать в списке авторов пакетов, вики, проблемах .. С голосами @adamchester и @ecampidoglio за сохранение префикса становится еще труднее принять решение - много здесь присутствует эмоциональный материал. Наверное, нужно разделить эмоциональную составляющую и не путать. Лично я не рассматриваю обрезку пространства имен как акт обесценивания работы Марка - для меня причина в чистом домашнем хозяйстве. Я все равно буду ему очень благодарен, даже если приставка отсутствует.
Однако, учитывая, что я начал работать над проектом слишком поздно (и меня никто не знает), я чувствую, что не могу полностью понять вклад Марка, и поэтому последнее слово определенно должно быть за основными участниками.
@zvirja Я думаю, вы неправильно поняли мой предыдущий комментарий :
Я не возражаю, если его уберут, если этого хочет большинство людей.
Итак, да, я бы предпочел оставить его, но меня устраивает пространство имен AutoFixture
в версии 4. 😉
Мое мнение в основном то же, что и @ecampidoglio - я бы предпочел оставить пространство имен как есть, только чтобы избежать ненужных сбоев для пользователей, но я согласен изменить его на AutoFixture
в версии 4.
это выглядит неблагодарным по отношению к Марку.
Не беспокойся об этом. Лучшее, что вы можете мне сказать, - это сохранить AutoFixture в живых. Если вы можете это сделать, мне удалось создать что-то, что жизнеспособно само по себе. Мало что могло быть более удовлетворительным, чем это.
Спасибо за ответ, Марк!
Учитывая все ответы выше и учитывая, что основная команда не против изменить пространство имен, я добавлю это в область видимости v4.
Еще одна вещь, о которой я забыл спросить, - имена сборок. Похоже, что в настоящее время имена сборок также начинаются с Ploeh. Если мы удалим префикс пространства имен, имеет смысл переименовать и сборки (например, с Phoeh.AutoFixture.dll
на AutoFixture.dll
). Я считаю, что NuGet изящно справится с этим изменением. Единственное, о чем мы могли бы беспокоиться, это то, что это будет новый идентификатор сборки и будет невозможно выполнить перенаправление сборки с v3 на v4.
Что вы думаете об этих @moodmosaic , @adamchester и @ecampidoglio - есть ли у вас возражения по поводу переименования сборки? Похоже на важное изменение, но пока не готов оценить насколько.
После переименования пространств имен в v4 перенаправление привязки сборки к v4 станет бессмысленным. По этой причине, и чтобы быть последовательным, я думаю, имеет смысл переименовать сборки в AutoFixture (. *).
Хорошая мысль, я это пропустил. Действительно, полные имена всех типов будут разными, поэтому перенаправление не имеет смысла. Если у @adamchester и @ecampidoglio нет других проблем, давайте также изменим имена.
Выполнено! Пространство имен «Ploeh» и префикс имени сборки будут удалены из версии 4, так что вместо этого оно будет начинаться с «AutoFixture». Это изменение позволяет отразить обновленное право собственности, поскольку теперь продукт разрабатывается только командой AutoFixture.
Имейте в виду, что это нарушает целостность сборки. Т.е. в новом пакете не будет новой версии сборки. Вместо этого предыдущая сборка будет удалена и заменена полностью новой сборкой с новым идентификатором. Это означает, что такие вещи, как переадресация привязки, не могут работать между сборкой, содержащейся в пакете 3.x, и сборкой, содержащейся в 4.x.
Возможно, это не проблема, но я подумал, что стоит указать на это.
Кстати - вы проверили поведение NuGet при обновлении пакета? Я думаю, что для проектов в стиле SDK все будет работать нормально, поскольку проект содержит только элемент <PackageReference>
указывающий на пакет, а не на сборки. Но с помощью csproj старого стиля, возможно, стоит убедиться, что NuGet вносит желаемое изменение в ссылку на сборку с одной сборки на другую.
@adamralph Спасибо за беспокойство!
Это означает, что такие вещи, как переадресация привязки, не могут работать между сборкой, содержащейся в пакете 3.x, и сборкой, содержащейся в 4.x.
Ага, я это знаю. Однако мы уже изменили пространство имен по умолчанию, то есть мы изменили идентификацию для всех типов в сборках. В этом случае перенаправление привязки сборки не будет иметь смысла, поскольку код в любом случае не будет работать без повторной компиляции и исправления импорта. Поэтому я считаю, что нас это полностью устраивает. Это огромное изменение, но оно произойдет только один раз.
Кстати - вы проверили поведение NuGet при обновлении пакета?
Да, я уже тестировал это, и он отлично работает. Единственное, что вам нужно сделать, это запустить замену текста, чтобы исправить using Ploeh.AutoFixture
на using AutoFixture
. После этого проект успешно компилируется и тесты проходят успешно.
Единственное, что вам нужно сделать, это запустить замену текста, чтобы исправить использование Ploeh.AutoFixture для использования AutoFixture. После этого проект успешно скомпилирован и успешно запущен.
Да, точно.
Самый полезный комментарий
Не беспокойся об этом. Лучшее, что вы можете мне сказать, - это сохранить AutoFixture в живых. Если вы можете это сделать, мне удалось создать что-то, что жизнеспособно само по себе. Мало что могло быть более удовлетворительным, чем это.