Autofixture: Обсуждение: префикс пространства имен Ploeh

Созданный на 2 апр. 2017  ·  32Комментарии  ·  Источник: AutoFixture/AutoFixture

Открывая этот билет, я хочу понять нашу позицию в отношении пространства имен Ploeh.AutoFixture, которое в настоящее время есть в AutoFixture, и каково наше видение этого пространства в будущем. Этот вопрос уже возник и мы обязательно встретимся с ним снова :)

Есть два варианта поведения: оставить как есть или удалить префикс Ploeh . У каждого варианта есть свои плюсы и минусы.

Оставить как есть

Идея состоит в том, чтобы пока сохранить префикс Ploeh во всех пространствах имен, несмотря на то, что Марк больше не является владельцем репо.

__Плюсы: __

  1. Это увековечит вложения @ploeh в этот проект, поскольку они были довольно большими.
  2. Это не приведет к критическим изменениям во время перехода на v4 .

__ Минусы: __

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

Измените префикс

Можно изменить все файлы во всех проектах и ​​удалить префикс Ploeh . Технически это сделать несложно, поэтому вопрос только в нашем решении.

Плюсы и минусы такие же, как у опции _Keep as is_:

__ За: __

  1. Право собственности. Будет ясно, что AutoFixture - это отдельная организация, которая сама управляет проектом. Марк (Плоэ) больше не руководит проектом. Также меньше людей подумают, что этот проект принадлежит Марку.
  1. Упрощенное пространство имен. Это удалит ненужные слова из пространства имен и сделает импорт пространства имен менее подробным.

__ Минусы: __

  1. Это будет серьезное изменение, поскольку каждый, кто перейдет на v4 будет вынужден изменить импорт пространства имен. Кроме того, может случиться так, что полные имена типов жестко запрограммированы где-то в виде строк. Конечно, это будет сделано только один раз, и это легко сделать, но есть люди, которые не следят за всем этим, а просто используют AF - им это будет довольно скучно.

Прежде всего, я хотел бы услышать мнение @ploeh об этом изменении и о том, какой путь он лично предпочитает. Ты, Марк, много сюда вложил, так что твое видение имеет значение.

Также я хотел бы привлечь ребят из основной команды: @ecampidoglio , @moodmosaic и @adamchester.

После того, как мы решим, у нас возникнет проблема с нашим решением, поэтому позже мы могли бы перенаправить всех, кто спрашивает / не соглашается здесь :)

question

Самый полезный комментарий

это выглядит неблагодарным по отношению к Марку.

Не беспокойся об этом. Лучшее, что вы можете мне сказать, - это сохранить AutoFixture в живых. Если вы можете это сделать, мне удалось создать что-то, что жизнеспособно само по себе. Мало что могло быть более удовлетворительным, чем это.

Все 32 Комментарий

Насколько мне известно, в подавляющем большинстве проектов 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. После этого проект успешно скомпилирован и успешно запущен.

Да, точно.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги