The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Значительный выпуск криптографической библиотеки OpenSSL 1.1.1, opennews (??), 11-Сен-18, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


40. "Значительный выпуск криптографической библиотеки OpenSSL 1.1..."  +1 +/
Сообщение от ююю (?), 11-Сен-18, 23:58 
> (а например, для версионирования версий софта, для которого оно в большинстве случаев не подходит), это приводит к проблемам

А можно реальные примеры вашего примера? Желательно со ссылками.
А то складывается впечатление, что у кого-то просто знания "матчасти" не хватает.
Буду рад открыть для себя что-то новое.

Ответить | Правка | Наверх | Cообщить модератору

44. "Значительный выпуск криптографической библиотеки OpenSSL 1.1..."  –1 +/
Сообщение от Аноним (41), 12-Сен-18, 00:35 
Там сверху ссылка на доклад. Не появляйся сдесь пока его целиком не посмотришь, пожалуйста.
Ответить | Правка | Наверх | Cообщить модератору

48. "Значительный выпуск криптографической библиотеки OpenSSL 1.1..."  +/
Сообщение от ююю (?), 12-Сен-18, 01:11 
С докладчиком не согласен. Тратить на тебя время тоже желание пропало.
Ответить | Правка | Наверх | Cообщить модератору

58. "Значительный выпуск криптографической библиотеки OpenSSL 1.1..."  +/
Сообщение от Аноним (41), 12-Сен-18, 13:12 
Спасибо что честно признал свою неправоту.
Ответить | Правка | Наверх | Cообщить модератору

49. "Значительный выпуск криптографической библиотеки OpenSSL 1.1..."  +3 +/
Сообщение от Аноним (38), 12-Сен-18, 01:23 
> А можно реальные примеры вашего примера? Желательно со ссылками.

Год-два назад я думал, что СемВер решит все мои проблемы, поэтому решил полазать по их багтрекеру. Многие тикеты содержат интересные обсуждения на тему версий и того, насколько СемВер может быть применим в тех или иных условиях. После прочтения всех открытых на тот момент тикетов сложилось общее впечатление о СемВере, однако искать конкретные цитаты сейчас мне некогда.

Если есть желание действительно разобраться в теме, то ОЧЕНЬ советую почитать их багтрекер. Все открытые задачи. Там не так много, за день можно управиться.

Из того, что могу сходу озвучить:

1. Нумерация СемВер основана на понятии совместимости, тогда как нумерация софта традиционно отталкивается от понятий функционала и/или объёма выполненных работ. Это ортогональные понятия.

В случае СемВер изменение версий имеет следующие значение:
- мажорная - изменён/добавлен функционал, пропала совместимость,
- минорная - добавлен функционал, сохранена совместимость,
- патч - функционал не изменён, сохранена совместимость.

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

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

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

Мажорная версия в случае СемВер меняется ТОЛЬКО когда ломается совместимость. А в случае версионирования ПО мажорную версию можно менять, например, каждые пять лет просто чтоб продемонстрировать "взрослось" проекта.

Плюс с точки зрения софта, если для исправления мелкой ошибки пришлось значительно поменять какой-то интерфейс или workflow, то меняется патч-версия. Тогда как в случае СемВер, по логике, нужно было бы менять старшую цифру из-за несовместимых изменений.

2. СемВер плохо отражает процесс разработки ПО.

Например, сортировка пререлизных версий идёт по алфавиту. Нам просто повезло, что согласно алфавиту alpha < beta < pre < rc. Но добавьте сюда ещё какую-нибудь стадию, специфичную для вашего проекта, и очень вероятно, что она не впишется в такой порядок.

В СемВер нет пострелизных версий. Вы можете создать 1.0.0-rc.1, но после релиза создать 1.0.0-daily.1 вы не сможете, так как daily будет между beta и pre. Для ежедневных сборок приходится либо использовать 1.0.0+daily.1 (при том, что при сравнении версий метаданные могут игнорироваться), либо нужно угадать, какой будет следующая версия (1.0.1, 1.1.0 или 2.0.0) и дальше делать её пререлизы (1.0.1-daily.1, 1.0.1-daily.2, ...). Если при этом появится функциональное добавление, то после 1.0.1-daily.2 у вас уже будет 1.1.0-daily.1. Это вместо того, чтоб плодить 1.0.0-daily.N а в нужный момент сразу решить, как назвать новую версию.

Тот факт, что любой daily заведомо окажется старше любого beta и младше любого pre (официальная позиция СемВер), не позволяет строить схемы с daily-релизами, местно прерываемыми другими релизами. В СемВер нельзя объявить, что daily невозможно сравнивать с beta/pre.

При нумерации версий софта бывает удобно использовать только две цифры (1.2) или добавить четвёртую (1.2.0.240, например для обозначения номера билда). СемВер недостаточно гибок, чтобы позволить такое.

При создании версии 1.0.0 вы делаете 0.1.0, 0.2.0, 0.3.0... 1.0.0. Но для создания версии 2.0.0 у вас нет такого запаса по числам, приходится изголяться и делать 2.0.0-dev.1.0, 2.0.0-dev.2.0 и т.д. И это описано в самом СемВер, вместо того чтоб запретить всё, начинающееся с нуля, и форсировать схему с 1.0.0-dev.1.0.

Некоторые проекты являются "модификацией" основного проекта. Основной выпускает версию 1.2.3, а модификация патчит эту версию и делает 1.2.3.0. После нахождения ошибок в модификации, выпускается 1.2.3.1. После релиза 1.2.4 основного проекта выпускается модификация версии 1.2.4.0. Это, конечно, можно переложить на СемВер, но для автора "модификации" (да и для пользователей) такой способ выглядит более наглядным. Использовать версии типа 1.2.3-modified.1 нельзя, так как это считается пререлизной версией, то есть 1.2.3-modified.1 < 1.2.3. Использовать 1.2.3+modified.1 тоже нельзя, так как инструмент сравнения версий может игнорировать метаданные, так что может получиться 1.2.3+modified.1 = 1.2.3+modified.2.

И лично я вообще не понимаю, зачем им дефис. Почему бы не использовать точку: 2.0.0.dev.1.0, всё же понятно.

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

Ответить | Правка | К родителю #40 | Наверх | Cообщить модератору

50. "Значительный выпуск криптографической библиотеки OpenSSL 1.1..."  +/
Сообщение от ююю (?), 12-Сен-18, 02:13 
Огромное спасибо за такой развернутый ответ! Респект.

> Если есть желание действительно разобраться в теме, то ОЧЕНЬ советую почитать их
> багтрекер. Все открытые задачи. Там не так много, за день можно управиться.

ОК, спасибо за наводку.

> Из того, что могу сходу озвучить:
> 1. Нумерация СемВер основана на понятии совместимости, тогда как нумерация софта традиционно
> отталкивается от понятий функционала и/или объёма выполненных работ. Это ортогональные
> понятия.

....

> Плюс с точки зрения софта, если для исправления мелкой ошибки пришлось значительно
> поменять какой-то интерфейс или workflow, то меняется патч-версия. Тогда как в
> случае СемВер, по логике, нужно было бы менять старшую цифру из-за
> несовместимых изменений.

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

> 2. СемВер плохо отражает процесс разработки ПО.
> Например, сортировка пререлизных версий идёт по алфавиту. Нам просто повезло, что согласно
> алфавиту alpha < beta < pre < rc. Но добавьте сюда
> ещё какую-нибудь стадию, специфичную для вашего проекта, и очень вероятно, что
> она не впишется в такой порядок.

Честно говоря, не вижу в этом проблемы. Заказчик получает доступ к папке с релизами, а там вполне можно добиться вменяемой сортировки версий. Сами по себе "alpha < beta < pre < rc", такой себе канон, сильно зависит от внутренней модели разработки, "pre" - уже не помню, когда видел последний раз.


>[оверквотинг удален]
> 1.2.3, а модификация патчит эту версию и делает 1.2.3.0. После нахождения
> ошибок в модификации, выпускается 1.2.3.1. После релиза 1.2.4 основного проекта выпускается
> модификация версии 1.2.4.0. Это, конечно, можно переложить на СемВер, но для
> автора "модификации" (да и для пользователей) такой способ выглядит более наглядным.
> Использовать версии типа 1.2.3-modified.1 нельзя, так как это считается пререлизной версией,
> то есть 1.2.3-modified.1 < 1.2.3. Использовать 1.2.3+modified.1 тоже нельзя, так как
> инструмент сравнения версий может игнорировать метаданные, так что может получиться 1.2.3+modified.1
> = 1.2.3+modified.2.
> И лично я вообще не понимаю, зачем им дефис. Почему бы не
> использовать точку: 2.0.0.dev.1.0, всё же понятно.

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

например версия может быть appname-1.2.RC1-ubuntu+master.build3455.2fbf9281
в ней есть major(1),minor(2),patchlevel(RC1-ubuntu+master.build3455.2fbf9281),
при этом patchlevel точно описывает: состояние, под какую ось, из какой ветки взят код, номер билда/хэш коммита/дату билда и т.п.

> 3. В багтрекере вообще периодически встречаются комментарии, что СемВер предназначен для
> разного рода АПИ, и ни для чего другого (правда, я не
> обращал внимания, комментарии ли это мейнтейнеров СемВера или нет). Если версия
> вашего софта можно рассматривать как АПИ, то СемВер применим. Но если
> вы, к примеру, провели масштабный рефакторинг, то ни для пользователя, ни
> с точки зрения совместимости ничего не поменялось. Однако вы в этом
> случае можете счесть приемлемым увеличить мажорную версию.

имхо, всё что угодно можно рассматривать как АПИ. :) Даже конституцию.

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

Ответить | Правка | Наверх | Cообщить модератору

56. "Значительный выпуск криптографической библиотеки OpenSSL 1.1..."  +/
Сообщение от Онанимус (?), 12-Сен-18, 10:31 
> должны быть новые фичи, чтобы пользователь захотел поставить новую версию.

Увеличение скорости работы, снижение потребления ресурсов, пересмотр кода с точки зрения безопасных методик - может считаться новыми фичами (в функционале ничего не поменялось)?

Ответить | Правка | Наверх | Cообщить модератору

69. "Значительный выпуск криптографической библиотеки OpenSSL 1.1..."  +/
Сообщение от your mom (?), 12-Сен-18, 17:08 
Ну, на практике такое встречается когда "проведен глубокий рефакторинг кода, снижено потребление памяти, улучшена стабильность приложения" - единственная фича нового релиза.
Ответить | Правка | Наверх | Cообщить модератору

70. "Значительный выпуск криптографической библиотеки OpenSSL 1.1..."  +/
Сообщение от yet another anonymous (?), 12-Сен-18, 18:17 
> при этом patchlevel точно описывает: состояние, под какую ось, из какой ветки взят код, номер билда/хэш коммита/дату билда и т.п.

Во-первых, избыточно (ср.: хеш и ветка; хотя без репозитория, содержащего этот коммит --- бесполезно); во-вторых, недостаточно (ABI, компилятор, etc.); в-третьих, бесполезно (под какую ось,... номер билда, дату билда).

Ответить | Правка | К родителю #50 | Наверх | Cообщить модератору

75. "Значительный выпуск криптографической библиотеки OpenSSL 1.1..."  +/
Сообщение от Аноним (75), 12-Сен-18, 22:08 
> С другой стороны, если приходится значительно менять интерфейс - сложно назвать это "мелкой ошибкой"

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

> Заказчик получает доступ к папке с релизами, а там вполне можно добиться вменяемой сортировки версий.

Вменяемую сортировку придётся делать самим и, вероятно, она будет несовместима с СемВер.

> patchlevel(RC1-ubuntu+master.build3455.2fbf9281)

А вот и нет. У вас в одном поле patchlevel сразу несколько величин, влияющих на сравнение и сортировку версий: статус (RC), номер релиза (1 после RC), номер билда (3455). То есть в вашем случае у вас не major.minor.patchlevel, а major.minor.stage.release.build, то есть 5 величин. СемВер позволяет только три.

Я, кажется, понимаю, вы хотите сказать, что сама схема major.minor.patchlevel логична, и под неё, в принципе, можно подогнать любую другую с определёнными допущениями. Но суть СемВера в том, что схема именно такая, как они описывают, а не почти такая же. Ваш пример - это уже не СемВер, и библиотеки, заявляющие поддержку СемВер, с вашим примером работать не будут. И люди, "имеющие опыт" работы с СемВер, тоже не поймут, что есть что. И проблема не в дефисах/плюсах/точках.

> выпускать функционально такой же продукт (но внутренне переработанный!) особого смысла нет, должны быть новые фичи, чтобы пользователь захотел поставить новую версию.

Почему? После 5 лет развития была версия 1.19.6. Автор решил, что добавлять новый функционал лучше в форме плагинов (не с точки зрения пользователя, а с точки зрения реализации и архитектуры приложения), а это будет возможно только после рефакторинга и добавления схемы работы с плагинами. Он переписывает кучу кода, выпускает 2.0.0, и уже на её основе начинает пилить 2.1.0 с новым функционалом в форме плагинов. Пользователям, конечно, нет смысла обновляться до 2.0.0, но автору такой подход может быть проще, чем сразу писать плагины и в качестве 2.0.0 выкладывать версию уже с новым функционалом.

Ответить | Правка | К родителю #50 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру