Size: a a a

2020 November 09

LL

Lama Lover in pro.elixir
V
> Автор публикует пакет с именем, репозиторий говорит ему что это имя свободно.

Как я понимаю, репозиторий не проверяет имена модулей внутри каждой либы и не предупреждает "вы хотите зарегистрировать либу Bar, так вот модуль Bar уже содержится в либе Foo". Ну значит будет как я и говорю - конфликты модулей с ростом популярности эликсира будут встречаться всё чаще. Проёб-by-design.
Так что "проёб-by-design" в твоих придирках
источник

LL

Lama Lover in pro.elixir
Да и потом, модули можно перегружать, и это даже имеет смысл. Так что тут всё тоже нормально
источник

LL

Lama Lover in pro.elixir
Мне лично не хватает именно инструмента чтобы можно было как-то во время компиляции проекта переименовывать модули, при их создании. Да, такой фичи нет. Но это разговор о mix, а не о hex
источник

V

V in pro.elixir
Lama Lover
Имена модулей невозможно отследить. Эликсир в компайле тьюринг полный, а значит нужно решить проблему остановки, чтобы понять скомпилируется ли вообще код
Упарываться в край не обязательно. Вот это https://github.com/tpoulsen/focus/blob/master/lib/lens/lens.ex#L1 выкупается статическим анализом.
источник

LL

Lama Lover in pro.elixir
V
Упарываться в край не обязательно. Вот это https://github.com/tpoulsen/focus/blob/master/lib/lens/lens.ex#L1 выкупается статическим анализом.
Как ты сказал
> Если администрация пакетного репозитория не отслеживает такие моменты, то они случатся с вероятностью 1, так что всё закономерно

Так что либо нужно гарантировать что модули не будут пересекаться, либо этого не нужно гарантировать вовсе. Полумеры приводят к конфликтам с вероятностью 1 (по твоим словам)
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
V
Упарываться в край не обязательно. Вот это https://github.com/tpoulsen/focus/blob/master/lib/lens/lens.ex#L1 выкупается статическим анализом.
Но это не задача hexpm. Hexpm - это же не валидатор библиотеки по определению.
источник

LL

Lama Lover in pro.elixir
Dmitry Russ (Aleksandrov)
Но это не задача hexpm. Hexpm - это же не валидатор библиотеки по определению.
Удваиваю
источник

V

V in pro.elixir
Dmitry Russ (Aleksandrov)
Но это не задача hexpm. Hexpm - это же не валидатор библиотеки по определению.
Тогда КТО или ЧТО должно быть таким валидатором?
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
V
Тогда КТО или ЧТО должно быть таким валидатором?
Credo например
источник

V

V in pro.elixir
Dmitry Russ (Aleksandrov)
Credo например
Кредо следит за тем, чтобы я не наговнякал сам себе. Он не следит за тем, чтобы я не наговнякал кому-то, как автор Focus наговнякал автору Lens.
источник

LL

Lama Lover in pro.elixir
V
Тогда КТО или ЧТО должно быть таким валидатором?
Пользователь библиотек. Если он подключает две зависимости с пересекающимися модулями, то пусть он сам решает эту проблему, потому что
1) Названия модулей невозможно отследить до окончания компиляции
2) Перекомпиляция модулей иногда может иметь место
источник

V

V in pro.elixir
Lama Lover
Пользователь библиотек. Если он подключает две зависимости с пересекающимися модулями, то пусть он сам решает эту проблему, потому что
1) Названия модулей невозможно отследить до окончания компиляции
2) Перекомпиляция модулей иногда может иметь место
Тебе удалось таким образом решить конфликт?
источник

LL

Lama Lover in pro.elixir
V
Тебе удалось таким образом решить конфликт?
Каким "таким" ?
источник

LL

Lama Lover in pro.elixir
Я переименовал модуль Lens из lens в Lenss
источник

LL

Lama Lover in pro.elixir
источник

V

V in pro.elixir
в хекспм или в коде приложения?
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
V
Кредо следит за тем, чтобы я не наговнякал сам себе. Он не следит за тем, чтобы я не наговнякал кому-то, как автор Focus наговнякал автору Lens.
Может - если он будет проверять консистентность названия модулей.
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
V
Кредо следит за тем, чтобы я не наговнякал сам себе. Он не следит за тем, чтобы я не наговнякал кому-то, как автор Focus наговнякал автору Lens.
Потому что он бы тогда сказал, типа Ваш модуль находится не в правильном неймспейсе. Переименуйте Lens в Focus.Lens.
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Для этого не нужно делать глобальную проверку через hexpm - и это уж точно не задача hexpm заниматься валидацией пакета.
источник

V

V in pro.elixir
Dmitry Russ (Aleksandrov)
Может - если он будет проверять консистентность названия модулей.
Я говорю что credo - инструмент внутреннего аудита кода, а не внешнего.
Когда я спрашиваю "что ты предложишь вметсо hexpm" я имею ввиду внешний аудит.
Внешний аудит должен гарантировать отсутствие конфликта неймспейсов, чтобы пользователь загрузил любые две либы А и Б, и они друг друга не поломали.

> это уж точно не задача hexpm

Тогда чья эта задача?
источник