Re[3]: Версиионирование программ
От: Dym On Россия  
Дата: 19.08.15 11:29
Оценка:
L>Ну как сказать для себя, я программист на предприятии, просто раньше я за номер версии использовал номер ревизии из svn а тут появилось свободное время и решил может есть какие-то стандарты на этот счет чтобы не придумывать велосипед решил поискать, поспрашивать.
Если номер версии не торчит в названии продукта на продажу сторонним покупателям и у вас нет дикомфорта в использовании номера ревизии из svn в качестве номера версии, то и менять ничего не надо (ну только если делать уж совсем нечего).
Счастье — это Glück!
Re[3]: Версиионирование программ
От: Dym On Россия  
Дата: 19.08.15 11:33
Оценка:
L>Вы имеете ввиду что если продукт с версией 5.0 перестали покупать то просто меняем версию на 6.0 без изменений в коде и ждем пополнения средств?
Не это. В ПО постоянно вносятся исправления, какие-то фичи добавляются, пока продажи идут хорошо, то выпускаются версии 5.1, 5.2 и т.д. Можно рассылать бесплатные апдейты. Когда продажи проседают, в какой-то момент объявляете не 5.3, а 6.0 с предложением обновить лицензию платно. Ну и в новой версии, конечно, надо иконки перерисовать .
Счастье — это Glück!
Re[4]: Версиионирование программ
От: lvlsynaps Россия Уютерра
Дата: 19.08.15 11:56
Оценка:
Здравствуйте, Dym On, Вы писали:

L>>Вы имеете ввиду что если продукт с версией 5.0 перестали покупать то просто меняем версию на 6.0 без изменений в коде и ждем пополнения средств?

DO>Не это. В ПО постоянно вносятся исправления, какие-то фичи добавляются, пока продажи идут хорошо, то выпускаются версии 5.1, 5.2 и т.д. Можно рассылать бесплатные апдейты. Когда продажи проседают, в какой-то момент объявляете не 5.3, а 6.0 с предложением обновить лицензию платно. Ну и в новой версии, конечно, надо иконки перерисовать .
Помоему вы более просто перефразировали про 5.3 и 6.0 и иконки т.е мы имеем ввиду одно и то же.
Re[4]: Версиионирование программ
От: lvlsynaps Россия Уютерра
Дата: 19.08.15 12:02
Оценка:
Здравствуйте, Dym On, Вы писали:

L>>Ну как сказать для себя, я программист на предприятии, просто раньше я за номер версии использовал номер ревизии из svn а тут появилось свободное время и решил может есть какие-то стандарты на этот счет чтобы не придумывать велосипед решил поискать, поспрашивать.

DO>Если номер версии не торчит в названии продукта на продажу сторонним покупателям и у вас нет дикомфорта в использовании номера ревизии из svn в качестве номера версии, то и менять ничего не надо (ну только если делать уж совсем нечего).
Ну как сказать дискомфорт просто захотелось провентилировать этот вопрос возможно как-то причесать, ведь номер ревизии из свн имеет некоторые недостатки возможны скачки версий из-за лишних коммитов, я просто привык в конце дня делать коммит на всякий случай а на следующий день могу сделать ревер мердж и новый коммит в результате получается пропасть между версиями хотя был исправлен всего лишь один баг. Пользователям это вроде не мешает, самому неприятно.
Re[12]: Версиионирование программ
От: lvlsynaps Россия Уютерра
Дата: 19.08.15 12:15
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, lvlsynaps, Вы писали:


L>>Вообще эта спецификация не дает определения что такое публичное API, скажем если одна программа занимается только тем что что стягивает данные из сервера с БД и рисует их на экране у нее есть публичное API?


S>Вообще-то даёт, сразу после объяснения, зачем оно вообще нужно:

S>

S>В системе с множественными зависимостями выпуск новой версии может быстро превратиться в кошмар. Если спецификации зависимости слишком жесткие, вы находитесь в опасности блокирования выпуска новой версии (невозможность обновить пакет без необходимости выпуска новой версии каждой зависимой библиотеки). Если спецификация зависимостей слишком свободна, вас неизбежно настигнет версионное несоответствие (необоснованное предположение совместимости с будущими версиями).

S>В качестве решения данной проблемы я предлагаю простой набор правил и требований, которые определяют, как назначаются и увеличиваются номера версий. Для того чтобы эта система работала, вам необходимо определить публичный API. Он может быть описан в документации или определяться самим кодом. Главное, чтобы этот API был ясным и точным. Однажды определив публичный API, вы сообщаете об изменениях в нём особым увеличением номера версий.


S>Кэп намекает, что в случае, когда с софтом работает напрямую пользователь, в качестве API выступает UI. В смысле, не кнопочки и не пиксели, речь про набор возможностей и поведение программы.

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



S>Посмотрите на это дело с точки зрения it-директора. Нужно скажем, установить софт для n+1-го пользователя, вышла новая версия 1.2.4. Имеет ли смысл её ставить, если у остальных пользователей стоит 1.1.0 и обучение проводилось именно на этой версии?


S>В случае, если версии соответствуют semver ответ очевиден. Если нет — нет.
Re[13]: Версиионирование программ
От: Sinix  
Дата: 19.08.15 12:44
Оценка:
Здравствуйте, lvlsynaps, Вы писали:

L>зачем тогда использовать для этого аббревиатуру API у которой уже есть четкое определение, если эта спецификация дает для нее такие плавающие рамки, и каждый сам решать что такое API может действительно эта система больше для библиотек подходит?


Ну так способ нумерации в semver заточен в первую очередь на разруливание зависимостей библиотек/пакетов.
Для других задач его никто не запрещает использовать, провести аналогию API <-> UI как бы несложно
Re[14]: Версиионирование программ
От: lvlsynaps Россия Уютерра
Дата: 20.08.15 09:32
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, lvlsynaps, Вы писали:


L>>зачем тогда использовать для этого аббревиатуру API у которой уже есть четкое определение, если эта спецификация дает для нее такие плавающие рамки, и каждый сам решать что такое API может действительно эта система больше для библиотек подходит?


S>Ну так способ нумерации в semver заточен в первую очередь на разруливание зависимостей библиотек/пакетов.

S>Для других задач его никто не запрещает использовать, провести аналогию API <-> UI как бы несложно
Слушай, можешь привести простой пример работы данной системы как он изначально задуман для каких нибудь выдуманных программ?
Re[11]: Версиионирование программ
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 20.08.15 10:47
Оценка:
Здравствуйте, lvlsynaps, Вы писали:

L>Вообще эта спецификация не дает определения что такое публичное API, скажем если одна программа занимается только тем что что стягивает данные из сервера с БД и рисует их на экране у нее есть публичное API?


Если посмотреть на ситуацию под другим углом, то можно считать, что это не программа стягивает, а в программу засовывают. И тогда изменение формата засовываемых в нее данных будет фактическим изменением публичного API.
HgLab: Mercurial Server and Repository Management for Windows
Re[15]: Версиионирование программ
От: Sinix  
Дата: 20.08.15 11:08
Оценка:
Здравствуйте, lvlsynaps, Вы писали:

L>Слушай, можешь привести простой пример работы данной системы как он изначально задуман для каких нибудь выдуманных программ?


Не вопрос На примере той же студии:
VS 2015            - 14.0.0
VS 2015 + хотфикс  - 14.0.123
VS 2015 update 1   - 14.1.0
VS 2017            - 15.0.0


решение, что относить к релизу, что к хотфиксу, что к обновлению — за разработчиками. Общий подход — см рекомендации на semver.org.
Re[16]: Версиионирование программ
От: lvlsynaps Россия Уютерра
Дата: 20.08.15 11:21
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, lvlsynaps, Вы писали:


L>>Слушай, можешь привести простой пример работы данной системы как он изначально задуман для каких нибудь выдуманных программ?


S>Не вопрос На примере той же студии:

S>
S>VS 2015            - 14.0.0
S>VS 2015 + хотфикс  - 14.0.123
S>VS 2015 update 1   - 14.1.0
S>VS 2017            - 15.0.0
S>


S>решение, что относить к релизу, что к хотфиксу, что к обновлению — за разработчиками. Общий подход — см рекомендации на semver.org.

Ну подожди я просил как изначально задуман семвер , ведь VS это не библиотека а IDE самостоятельная программа какой публичный API она объявляет?
Re[12]: Версиионирование программ
От: lvlsynaps Россия Уютерра
Дата: 20.08.15 11:36
Оценка:
Здравствуйте, Нахлобуч, Вы писали:

Н>Здравствуйте, lvlsynaps, Вы писали:


L>>Вообще эта спецификация не дает определения что такое публичное API, скажем если одна программа занимается только тем что что стягивает данные из сервера с БД и рисует их на экране у нее есть публичное API?


Н>Если посмотреть на ситуацию под другим углом, то можно считать, что это не программа стягивает, а в программу засовывают. И тогда изменение формата засовываемых в нее данных будет фактическим изменением публичного API.

Да можно и так посмотреть, а вот другой случай конкретно мой: программа затягивает данные из одной системы генерирует другие на основе их и передает в другую систему. Но при этом это не библиотека а самостоятельный проект, который использует библиотеки но самое важное что проект с другими системами не может быть использован т.к их нет и не планируется.
Re[17]: Версиионирование программ
От: Sinix  
Дата: 20.08.15 11:47
Оценка:
Здравствуйте, lvlsynaps, Вы писали:

S>>решение, что относить к релизу, что к хотфиксу, что к обновлению — за разработчиками. Общий подход — см рекомендации на semver.org.

L>Ну подожди я просил как изначально задуман семвер , ведь VS это не библиотека а IDE самостоятельная программа какой публичный API она объявляет?

Давай так: определись сам, какой ответ ты хочешь услышать, сравни с текстом на semver.org и определись, подходит оно тебе или нет.
Копировать цитаты и объяснять смысл фразы "использовать с умом" как-то надоело

Ладно один-два раза. Но обсждение на две страницы из-за того, что лень прочитать спецификацию | поискать "semver desktop versioning" — это перебор

Тем более что вопрос обсуждался неоднократно и ответы везде совпадают:
http://programmers.stackexchange.com/questions/255190/how-does-semantic-versioning-apply-to-programs-without-api
http://programmers.stackexchange.com/questions/200002/semantic-versioning-for-desktop-applications
Re[18]: Версиионирование программ
От: lvlsynaps Россия Уютерра
Дата: 20.08.15 12:04
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, lvlsynaps, Вы писали:


S>>>решение, что относить к релизу, что к хотфиксу, что к обновлению — за разработчиками. Общий подход — см рекомендации на semver.org.

L>>Ну подожди я просил как изначально задуман семвер , ведь VS это не библиотека а IDE самостоятельная программа какой публичный API она объявляет?

S>Давай так: определись сам, какой ответ ты хочешь услышать, сравни с текстом на semver.org и определись, подходит оно тебе или нет.

S>Копировать цитаты и объяснять смысл фразы "использовать с умом" как-то надоело

S>Ладно один-два раза. Но обсждение на две страницы из-за того, что лень прочитать спецификацию | поискать "semver desktop versioning" — это перебор


S>Тем более что вопрос обсуждался неоднократно и ответы везде совпадают:

S>http://programmers.stackexchange.com/questions/255190/how-does-semantic-versioning-apply-to-programs-without-api
S>http://programmers.stackexchange.com/questions/200002/semantic-versioning-for-desktop-applications
Я хочу понять на примере для чего создан семвер и в чем его сильные стороны, потому что для десктопных приложений это натягивание.
Re[19]: Версиионирование программ
От: Sinix  
Дата: 20.08.15 13:01
Оценка: +2
Здравствуйте, lvlsynaps, Вы писали:

L>Я хочу понять на примере для чего создан семвер и в чем его сильные стороны, потому что для десктопных приложений это натягивание.


В топике на это отвечали по меньшей мере трижды. И на самом сайте на нескольких языках — тоже.
Re[13]: Версиионирование программ
От: Sinclair Россия https://github.com/evilguest/
Дата: 24.08.15 19:37
Оценка:
Здравствуйте, lvlsynaps, Вы писали:
L>Да можно и так посмотреть, а вот другой случай конкретно мой: программа затягивает данные из одной системы генерирует другие на основе их и передает в другую систему.
Что будет, когда формат данных в одной из систем поменяется?
Например, если вы тянете данные напрямую из СУБД, и поменялась структура таблиц.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: Версиионирование программ
От: fddima  
Дата: 27.08.15 15:32
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Заслуга semver в том, что весь этот зоопарк был утрамбован в простой и однозначный стандарт с рекомендациями, FAQ и поддержкой почти всех частных случаев вплоть до текстовых меток. Ну и ещё в том, что он поспел как раз к волне хайпа на git и к отмиранию понятия "номер ревизии".

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

SemVer, просто подходит его автору и его видению мира, а в нормальном понимании версий — это ерунда, потому, что разный софт традиционно версионируится по разному. OpenSSL к примеру 1.0.2d. Во-вторых, эта вся семантика-романтика — не учитывает природу и натуру софта и/или целевого использования. Скажем, если мы говорим о семантике и совместимости API на уровне исходных кодов или бинарных сборок? Потому, что, изменившиеся зависимости — должны пораждать новые версии продуктов, вне зависимости от того меняют они API или нет. При чём, иногда изменение некоторых зависимостей — должны порождать новые мажорные версии, при этом надо ещё как-то конечным пользователям донести и свой версию своего контракта (API). Есть и случаи, когда софт собирается под кастомера, и тут скорее всего хоть и будет базовая A.B.C — но остальная номенклатура будет зависить от внутреннего процесса (рассматривать это как отдельный продукт, или как суб-продукт). В общем, есть тысяча точек вращения, и semver не подходит для всего, хотя в него вписывается и многое.
А вот ещё примеры из реальной жизни:
1. У Intel встречаются версии 15.28.24.64.4229 и 15.28.24.4229. 64 — это x64. Тем не менее они используют именно такую нумерацию.
2. OpenSSL и другие, — схема X.Y.Zp — где p — hotfix/patch после X.Y.Z.
3. Debian-like: (на примере mono) 3.2.8+dfsg-4ubuntu1.1 и 4.0.3.20-0xamarin1. Хотя бывают и более замысловатые: 2.6.3+dfsg-1~xamarin2. При этом там используется почти обычный alphanumeric формат, и исходную версию продукта никто не меняет (и большинство из них нормально влазят).
4. Ну и наконец, версия Windows не ограничивается A.B.C.D. А номер билда выглядит приблизительно так: 10525.0.amd64fre.th2_release.150812-1658.

А так да — всё просто и однозначно. Особенно если перестать использовать дурацкие псеводстандарты, которым вдобавок никто не следует.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[7]: Версиионирование программ
От: · Великобритания  
Дата: 27.08.15 19:16
Оценка:
Здравствуйте, fddima, Вы писали:

f> SemVer, просто подходит его автору и его видению мира, а в нормальном понимании версий — это ерунда, потому, что разный софт традиционно версионируится по разному.

Ключевое слово тут "традиционно". Нет никакой рациональной необходимости в этом зоопарке. Поэтому и предлагается стандарт.

f> OpenSSL к примеру 1.0.2d. Во-вторых, эта вся семантика-романтика — не учитывает природу и натуру софта и/или целевого использования. Скажем, если мы говорим о семантике и совместимости API на уровне исходных кодов или бинарных сборок?

Исходный код обязан каждый раз порождать идентичную бинарную сборку. Поэтому — какая разница? Если не так — значит в процессе разработки бардак и нет такого понятия как reproducible build.

f> Потому, что, изменившиеся зависимости — должны пораждать новые версии продуктов, вне зависимости от того меняют они API или нет. При чём, иногда изменение некоторых зависимостей — должны порождать новые мажорные версии, при этом надо ещё как-то конечным пользователям донести и свой версию своего контракта (API).

А какая разница конечному пользователю почему изменилось поведение — из-за изменения самого кода или какой-то зависимости? И да, делаем мажорную версию, если надо.

f> Есть и случаи, когда софт собирается под кастомера, и тут скорее всего хоть и будет базовая A.B.C — но остальная номенклатура будет зависить от внутреннего процесса (рассматривать это как отдельный продукт, или как суб-продукт). В общем, есть тысяча точек вращения, и semver не подходит для всего, хотя в него вписывается и многое.

По-моему стандарт достаточно универсален, поэтому можно вписать всё.

f> А вот ещё примеры из реальной жизни:

f> 1. У Intel встречаются версии 15.28.24.64.4229 и 15.28.24.4229. 64 — это x64. Тем не менее они используют именно такую нумерацию.
И что? Традиция. платформу можно положить в build metadata или в имя продукта. Ведь очевидно, что ...64... и ...86... это, очевидно, не увеличение версии.

f> 2...

f> 3...
f> 4...
ubuntu и windows можно объяснить тем, что это не совсем версии продукта, а идентификаторы сборок: оригинальный номер продукта (mono 4.0.3.20) + номер и обёртки чтобы это положить в dep-package list.

f> А так да — всё просто и однозначно. Особенно если перестать использовать дурацкие псеводстандарты, которым вдобавок никто не следует.

А что использовать-то? Каждый должен сочинять то на что горазд?
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[8]: Версиионирование программ
От: fddima  
Дата: 27.08.15 20:02
Оценка:
Здравствуйте, ·, Вы писали:

Основной посыл был:

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


Повсеместное форсирование semver — не учитывает главного, — а именно, потребностей разработчика, и сложности (или простоты) софта. Или вообще назначения.

>Ключевое слово тут "традиционно". Нет никакой рациональной необходимости в этом зоопарке. Поэтому и предлагается стандарт.

Это не стандарт, и даже не рекомендация. В мире пишут люди с лева направо и справа налево, почему бы не писать всем справа на лево? Ну что бы по стандарту? Нет никакой реальной необходимости как либо ограничивать разработчиков в выборе схемы версионирования, тем более что в основном все популярные схемы — основаны на последовательности идентификаторов, с индикацией важности изменения определяемой позицией каждого идентификатора. 1.0.2d — точно такая же версия.

f>> OpenSSL к примеру 1.0.2d. Во-вторых, эта вся семантика-романтика — не учитывает природу и натуру софта и/или целевого использования. Скажем, если мы говорим о семантике и совместимости API на уровне исходных кодов или бинарных сборок?

·>Исходный код обязан каждый раз порождать идентичную бинарную сборку. Поэтому — какая разница? Если не так — значит в процессе разработки бардак и нет такого понятия как reproducible build.
Исходный код никому ничего не обязан, и идентичные бинарники не генерируются при тех же равных и так. Кроме того артефакты могут зависеть от установленного софта и его обновлений. Поэтому "reproducible build" гарантировать всё равно никто не сможет, особенно с течением времени. Легче все артефакты хранить, в том числе и с .pdb.
Кроме того библиотека версии A.B.C может поставляться в 3-х упаковках: с UTF8 строками, с UTF16 строками и UTF32. Как автору библиотеки — тебе может быть фиолетово, для тебя — это всё есть A.B.C. Для потребителей артефактов — это 3 разных версии, с несовместимым ABI.

f>> Потому, что, изменившиеся зависимости — должны пораждать новые версии продуктов, вне зависимости от того меняют они API или нет. При чём, иногда изменение некоторых зависимостей — должны порождать новые мажорные версии, при этом надо ещё как-то конечным пользователям донести и свой версию своего контракта (API).

·>А какая разница конечному пользователю почему изменилось поведение — из-за изменения самого кода или какой-то зависимости? И да, делаем мажорную версию, если надо.
Тут обратная ситуация. Нам как потребителям-девелоперам всё ещё интересная версия, которая бы не была рандомным числом.

·>По-моему стандарт достаточно универсален, поэтому можно вписать всё.

За рамками A (A.B.C) — ничего универсального нет. Любой постфикс делает версию 'prerelease'. Префиксы вдобавок ограничены странными правилами. Невозможно указать postrelease. Вообще в интернете если поискать есть полно критики semver.

f>> 1. У Intel встречаются версии 15.28.24.64.4229 и 15.28.24.4229. 64 — это x64. Тем не менее они используют именно такую нумерацию.

·>И что? Традиция. платформу можно положить в build metadata или в имя продукта. Ведь очевидно, что ...64... и ...86... это, очевидно, не увеличение версии.
Build metadata не являются частью версии в semver2 и из сравнения исключаются. При этом очевидно что 64 и 86 — есть весьма разные билды, которые живут параллельно -> следовательно платформу невозможно положить в build metadata. Что касатеся очевидности, то предшествование версий обеспечивается принятой схемой версионирования, и некоторые из них — очевидны. Другие нет. При этом семантика схемы — обеспечивается автором. На ручнике или с помощью тулзов. Поэтому кроме как говорить о возможной рекомендации — не приходится.

·>ubuntu и windows можно объяснить тем, что это не совсем версии продукта, а идентификаторы сборок: оригинальный номер продукта (mono 4.0.3.20) + номер и обёртки чтобы это положить в dep-package list.

В случае с debian — это именно версия пакета. Т.к. этот пакет собирается особым образом, наносятя патчи, конфигурируются и прочие вещи. Это позволяет пушить изменения (исправления), в том числе и секьюрити фиксы, для библиотек, базовая версия которых к тому моменту — не изменилась. Вместе с тем, это не параллельное версионирование. Это больше похоже на бранч.

f>> А так да — всё просто и однозначно. Особенно если перестать использовать дурацкие псеводстандарты, которым вдобавок никто не следует.

·>А что использовать-то? Каждый должен сочинять то на что горазд?
Ещё раз — semver пихать куда не попадя — не нужно.
Для продуктов может быть достаточно A.B. Для библиотек A.B.C, мы всё равно все к этом привыкли. Для иных случаев — ровно то, что решит автор, если он чувствует в этом необходимость.

Короче говоря — как только будете заниматься маппингом технологических версий на внешние, только лишь для того, что бы угодить тулзам, которые с другими схемами версий не работают — тогда станет всё понятно.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[8]: Версиионирование программ
От: · Великобритания  
Дата: 27.08.15 20:44
Оценка:
Здравствуйте, ·, Вы писали:

·> ubuntu и windows можно объяснить тем, что это не совсем версии продукта, а идентификаторы сборок: оригинальный номер продукта (mono 4.0.3.20) + номер и обёртки чтобы это положить в dep-package list.

Это отличается потому, что ты, собирая свой продукт, будешь добавлять зависимость mono версии "4.0.3.20", а не "4.0.3.20+dfsg-1~xamarin2", а дальше package manager сам разберётся что делать с этими +-~.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[9]: Версиионирование программ
От: · Великобритания  
Дата: 27.08.15 21:53
Оценка: +1
Здравствуйте, fddima, Вы писали:

f>

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

Так натягивается же.

f> Повсеместное форсирование semver — не учитывает главного, — а именно, потребностей разработчика, и сложности (или простоты) софта. Или вообще назначения.

Учитывает достаточно чтобы покрыть и сложный (не путаем с переусложнённым), и простой софт.

f> >Ключевое слово тут "традиционно". Нет никакой рациональной необходимости в этом зоопарке. Поэтому и предлагается стандарт.


f> Это не стандарт, и даже не рекомендация.

Спецификация, набор правил, соглашение. Какая разница?

f> В мире пишут люди с лева направо и справа налево, почему бы не писать всем справа на лево? Ну что бы по стандарту?

Плохая аналогия. Не надо путать культурные ценности и инженерную дисциплину.

f> Нет никакой реальной необходимости как либо ограничивать разработчиков в выборе схемы версионирования, тем более что в основном все популярные схемы — основаны на последовательности идентификаторов, с индикацией важности изменения определяемой позицией каждого идентификатора. 1.0.2d — точно такая же версия.

Зачем у тебя в розетке 220 вольт? Ведь нет никакой необходимости, и 22, и 2200 — точно такие же вольты.

f> ·>Исходный код обязан каждый раз порождать идентичную бинарную сборку. Поэтому — какая разница? Если не так — значит в процессе разработки бардак и нет такого понятия как reproducible build.


f> Исходный код никому ничего не обязан, и идентичные бинарники не генерируются при тех же равных и так. Кроме того артефакты могут зависеть от установленного софта и его обновлений. Поэтому "reproducible build" гарантировать всё равно никто не сможет, особенно с течением времени. Легче все артефакты хранить, в том числе и с .pdb.

Бардак, что ещё сказать... У нас нет "установленного софта". Точная версия jdk, python, и прочего явно указана в исходном коде.

f> Кроме того библиотека версии A.B.C может поставляться в 3-х упаковках: с UTF8 строками, с UTF16 строками и UTF32. Как автору библиотеки — тебе может быть фиолетово, для тебя — это всё есть A.B.C. Для потребителей артефактов — это 3 разных версии, с несовместимым ABI.

Для потребителей это три разных библиотеки. Потребитель скорее всего будет использовать одну из них (или так же делать три упаковки) и отслеживать изменения именно "A.B.C".

f> ·>А какая разница конечному пользователю почему изменилось поведение — из-за изменения самого кода или какой-то зависимости? И да, делаем мажорную версию, если надо.

f> Тут обратная ситуация. Нам как потребителям-девелоперам всё ещё интересная версия, которая бы не была рандомным числом.
Не понял мысль. Что-то у тебя падежов не склоняется.

f> ·>По-моему стандарт достаточно универсален, поэтому можно вписать всё.


f> За рамками A (A.B.C) — ничего универсального нет. Любой постфикс делает версию 'prerelease'. Префиксы вдобавок ограничены странными правилами. Невозможно указать postrelease.

А какой смысл вложен в этот postrelease? Почему нельзя сделать A.B.(C+1)?

f> Вообще в интернете если поискать есть полно критики semver.

Я нашел два:
1. Effort is required to do the right thing
2. This will be an ongoing effort until downstream projects adopt Semantic Versioning.
Хех...

f> Build metadata не являются частью версии в semver2 и из сравнения исключаются.

И правильно что исключаются. Сравнение нужно для чего? Для того, чтобы принять решение — нужно ли обновление версии или нет и оценить сложность. Я вот помню уже попадал на такую граблю, когда выбирал последний релиз смотря на строки типа "15.28.24.64.4229", "15.28.24.64.4532", "15.28.24.86.4532" .

f> При этом очевидно что 64 и 86 — есть весьма разные билды, которые живут параллельно -> следовательно платформу невозможно положить в build metadata. Что касатеся очевидности, то предшествование версий обеспечивается принятой схемой версионирования, и некоторые из них — очевидны. Другие нет. При этом семантика схемы — обеспечивается автором. На ручнике или с помощью тулзов. Поэтому кроме как говорить о возможной рекомендации — не приходится.

Но уж точно платформу нельзя класть в значимый номер версии.
Понятно, конечно, что можно делать. Но это вовсе не значит, что так нужно делать.

f> В случае с debian — это именно версия пакета. Т.к. этот пакет собирается особым образом, наносятя патчи, конфигурируются и прочие вещи. Это позволяет пушить изменения (исправления), в том числе и секьюрити фиксы, для библиотек, базовая версия которых к тому моменту — не изменилась. Вместе с тем, это не параллельное версионирование. Это больше похоже на бранч.

А когда прописываешь зависимости, ты же указываешь mono "4.0.3.20", а не "4.0.3.20+dfsg-1~xamarin2". Правильно понимаю?

f> Ещё раз — semver пихать куда не попадя — не нужно.

f> Для продуктов может быть достаточно A.B. Для библиотек A.B.C, мы всё равно все к этом привыкли.
Для маркетинга продуктов хоть "XYZ", но внутри должно быть A.B.C — чтобы сисадмины могли это в своих puppet/chef-скриптах писать и программисты легко интегрироваться.

f> Для иных случаев — ровно то, что решит автор, если он чувствует в этом необходимость.

Извини, но софтостроение — инженерная дисциплина. Там не чувствовать надо, а рационально решать.

f> Короче говоря — как только будете заниматься маппингом технологических версий на внешние, только лишь для того, что бы угодить тулзам, которые с другими схемами версий не работают — тогда станет всё понятно.

semver ничего о внешних (маркетинговых) версиях не говорит, хоть Lollipop, хоть Vista.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.