Введение
Присвоение уникального идентификатора каждому обновлению программного обеспечения
Software versioning is the process of assigning either unique version names or unique version numbers to unique states of computer software. Within a given version number category (e. g., major or minor), these numbers are generally assigned in increasing order and correspond to new developments in the software. At a fine grained level, revision control is used for keeping track of incrementally different versions of information, whether or not this information is computer software, in order to be able to roll any changes back. Modern computer software is often tracked using two different software versioning schemes: an internal version number that may be incremented many times in a single day, such as a revision control number, and a release version that typically changes far less often, such as semantic versioning
Later lists of files including their versions were added, and dependencies amongst them. Linux distributions like Debian, with its dpkg, early on created package management software which could resolve dependencies between their packages. Debian's first try was that a package knew other packages which depended on it. From 1994 on this idea was inverted, so a package that knew the packages it needed. When installing a package, dependency resolution was used to automatically calculate the packages needed as well, and install them with the desired package. To facilitate upgrades, minimum package versions were introduced. Thus the numbering scheme needed to tell which version was newer than the required one.
Версионирование программного обеспечения — это процесс присвоения уникальных имен версий или уникальных номеров версий различным состояниям компьютерного программного обеспечения. В пределах заданной категории номеров версий (например, основной или дополнительной), эти номера обычно присваиваются в порядке возрастания и соответствуют новым разработкам в программном обеспечении. На более детальном уровне, системы контроля версий используются для отслеживания последовательных изменений информации, независимо от того, является ли эта информация компьютерным программным обеспечением, чтобы иметь возможность откатить любые изменения. Современное компьютерное программное обеспечение часто отслеживается с использованием двух различных схем версионирования: внутреннего номера версии, который может быть увеличен много раз в течение одного дня, например, номера ревизии, и номера релизной версии, которая обычно меняется гораздо реже, например, семантического версионирования. Позже были добавлены списки файлов, включая их версии, и зависимости между ними. Дистрибутивы Linux, такие как Debian с его dpkg, на ранних этапах создали программное обеспечение для управления пакетами, которое могло разрешать зависимости между пакетами. Первая попытка Debian заключалась в том, что пакет знал о других пакетах, от которых он зависел. Начиная с 1994 года, эта идея была изменена: пакет стал знать о пакетах, которые необходимы ему. При установке пакета разрешение зависимостей использовалось для автоматического вычисления необходимых пакетов и их установки вместе с запрошенным пакетом. Для упрощения обновлений были введены минимальные версии пакетов. Таким образом, схема нумерации должна была определять, какая версия новее требуемой.
Software versioning is the process of assigning either unique version names or unique version numbers to unique states of computer software. Within a given version number category (e. g., major or minor), these numbers are generally assigned in increasing order and correspond to new developments in the software. At a fine grained level, revision control is used for keeping track of incrementally different versions of information, whether or not this information is computer software, in order to be able to roll any changes back. Modern computer software is often tracked using two different software versioning schemes: an internal version number that may be incremented many times in a single day, such as a revision control number, and a release version that typically changes far less often, such as semantic versioning
Later lists of files including their versions were added, and dependencies amongst them. Linux distributions like Debian, with its dpkg, early on created package management software which could resolve dependencies between their packages. Debian's first try was that a package knew other packages which depended on it. From 1994 on this idea was inverted, so a package that knew the packages it needed. When installing a package, dependency resolution was used to automatically calculate the packages needed as well, and install them with the desired package. To facilitate upgrades, minimum package versions were introduced. Thus the numbering scheme needed to tell which version was newer than the required one.
Схемы
Для отслеживания различных версий программного обеспечения разработано множество схем нумерации версий. Широкое распространение компьютеров также привело к использованию этих схем в областях, не связанных с информационными технологиями.
Идентификаторы, основанные на последовательности
В схемах версионирования программного обеспечения на основе последовательностей каждому выпуску программного обеспечения присваивается уникальный идентификатор, состоящий из одной или нескольких последовательностей чисел или букв. Это единственное, что объединяет все схемы; они значительно различаются по таким параметрам, как количество последовательностей, значение, придаваемое каждой последовательности, и способы их увеличения.
Степень совместимости
Некоторые проекты используют номер основной версии для обозначения несовместимых выпусков. Два примера – Apache Portable Runtime (APR) и FarCry CMS. Зачастую программисты разрабатывают новое программное обеспечение с обратной совместимостью, то есть новое программное обеспечение предназначено для корректного взаимодействия со старыми версиями (используя устаревшие протоколы и форматы файлов) и с самой последней версией (используя актуальные протоколы и форматы файлов). Например, IBM z/OS рассчитана на корректную работу с тремя последовательными основными версиями операционной системы, работающими в одном sysplex. Это позволяет пользователям, управляющим высокодоступным компьютерным кластером, поддерживать работоспособность большинства компьютеров, последовательно отключая, обновляя и возвращая в строй по одному компьютеру. Часто заголовки пакетов и форматы файлов содержат номер версии – иногда совпадающий с номером версии программного обеспечения, создавшего их, а иногда – отдельный "номер версии протокола", не зависящий от номера версии программного обеспечения. Код, предназначенный для обработки устаревших протоколов и форматов файлов, часто считается ненужным балластом.
Определение стадии разработки
Программное обеспечение на экспериментальной стадии (альфа или бета) часто использует ноль в первой ("основной") позиции последовательности номеров для обозначения своего статуса. Однако эта схема полезна только на ранних этапах разработки, а не для последующих релизов стабильного программного обеспечения, где номер версии уже превысил 0, как, например, в Movable Type. В десятичной системе счисления 1.81 является минорной версией, следующей за 1.8, а обновления, содержащие только исправления ошибок, могут обозначаться буквенным суффиксом, например, 1.81a или 1.81b. Стандартная схема нумерации версий GNU имеет вид: основная.минорная.ревизия, однако Emacs является заметным примером использования другой схемы, в которой основная цифра (1) была опущена и добавлена ревизия, специфичная для пользовательских установок, которая всегда равна нулю в оригинальных пакетах Emacs, но увеличивается дистрибьюторами.
Снова установить
В некоторых случаях разработчики могут решить сбросить номер основной версии. Это иногда делается для обозначения начала нового этапа разработки. Например, Minecraft Alpha выходила в версиях от 1.0.0 до 1.2.6, а с выходом бета-версии номер основной версии был сброшен до 1.0 и продолжался до 1.8. После полноценного релиза игры номер основной версии снова был сброшен до 1.0.0.
Разделительные последовательности
При печати последовательности могут быть разделены символами. Выбор символов и их использование зависит от схемы. В следующем списке приведены гипотетические примеры схем разделения для одного и того же релиза (тринадцатой третьей ревизии второго уровня, четвертой второй ревизии второго уровня, второй первой ревизии):
Схема может использовать один и тот же символ между всеми последовательностями: 2.4.13, 2/4/13, 2 4 13.
Схема может разделять некоторые последовательности, но не другие: 2.413.
В пределах одного и того же идентификатора схема может использовать разные символы: 2.4 13 (например, Minecraft Beta увеличилась с 1.7 до 1.7 01 до 1.7.2).
A scheme choice of which sequences to separate may be inconsistent, separating some sequences but not others: 2.413
A scheme's choice of characters may be inconsistent within the same identifier: 2.4 13 (for instance, Minecraft Beta incremented from 1.7 to 1.7 01 to 1.7.2)
Когда для разделения последовательностей используется точка, она может как представлять, так и не представлять десятичную точку — см. раздел «Инкрементирование последовательностей» для различных стилей интерпретации.
Количество последовательностей
Иногда существует четвертый, непубликуемый номер, обозначающий версию сборки программного обеспечения (как это принято в Microsoft). Adobe Flash — заметный пример, когда публично указывается номер версии, состоящий из четырех частей, например, 10.1.53.64. Некоторые компании также включают дату сборки. Номера версий могут также содержать буквы и другие символы, например, Lotus 1 2 3 Release 1a.
Отрицательные числа
Некоторые проекты используют отрицательные номера версий. Примером является компилятор SmartEiffel, который начинался с −1.0 и увеличивал их до 0.0.
Дата выпуска
Многие проекты используют схему версионирования, основанную на дате, называемую Calendar Versioning (также известную как CalVer). Ubuntu — один из примеров проекта, использующего версионирование по календарю; например, Ubuntu 18.04 был выпущен в апреле 2018 года. Это удобно тем, что позволяет легко соотносить версии с графиками разработки и сроками поддержки. Некоторые видеоигры также используют дату в качестве версии, например, аркадная игра Street Fighter EX. При запуске она отображает номер версии в виде даты и кода региона, например, 961219 ASIA. При использовании дат в версионировании, например, в именах файлов, обычно применяется схема ISO 8601 YYYY MM DD, поскольку это позволяет легко сортировать строки по возрастанию или убыванию. Дефисы иногда опускаются. Проект Wine ранее использовал схему версионирования на основе даты, в которой указывались год, месяц и день выпуска; например, "Wine 20040505". В Minecraft использовался аналогичный формат версии, но вместо этого применялся формат DDHHMM, например: rd 132211, где 13 — 13 мая, а 2211 — 22:11. Номера сборок Microsoft Office представляют собой закодированную дату: первые две цифры указывают количество месяцев, прошедших с января года начала проекта (каждый крупный релиз Office считается отдельным проектом), а последние две цифры — день этого месяца. Таким образом, 3419 — это 19-й день 34-го месяца после января года начала проекта. Другие примеры, идентифицирующие версии по году, включают Adobe Illustrator 88 и WordPerfect Office 2003. Когда год используется для обозначения версии, это обычно делается в маркетинговых целях, и при этом существует и фактический номер версии. Например, Windows 95 имеет внутреннюю версию MS DOS 7.00 и Windows 4.00; аналогично, Windows 2000 имеет внутреннюю версию NT 5.0.
Python (англ.)
Фонд программного обеспечения Python опубликовал PEP 440 – Идентификация версий и спецификация зависимостей, описывающий их собственную гибкую схему, определяющую сегмент эпохи, сегмент выпуска, сегменты предварительного и последующего выпуска, а также сегмент выпуска для разработки.
Текс
TeX имеет своеобразную систему нумерации версий, необычную особенность, изобретённую его разработчиком Дональдом Кнутом. Начиная с версии 3.1, обновления обозначаются добавлением дополнительной цифры в конце, так что номер версии асимптотически приближается к числу π (это форма унарной нумерации; номер версии равен количеству цифр). По состоянию на февраль 2021 года номер версии — 3.141592653. Это отражает высокую стабильность TeX и то, что ожидаются лишь незначительные обновления. Разработчик TeX, Дональд Кнут, заявил, что «абсолютно последнее изменение (которое будет сделано после его смерти)» будет изменение номера версии на π, после чего все оставшиеся ошибки станут постоянными особенностями. Аналогичным образом, номер версии Metafont асимптотически приближается к числу Эйлера, *e*.
Римская цифра X одновременно использовалась в маркетинговых целях для различных продуктовых линеек. И QuickTime, и Final Cut Pro перешли из версии 7 непосредственно в версию 10, став QuickTime X и Final Cut Pro X. Как и сама Mac OS X, эти продукты не были обновлениями предыдущих версий, а совершенно новыми программами. Как и в случае с OS X, основные релизы для этих программ увеличивали второй разряд номера, а незначительные релизы обозначались третьим разрядом. Буква «X» была удалена из названия Final Cut с выпуском macOS 11.0 (см. ниже), а фирменный стиль QuickTime потерял актуальность, когда в 2011 году фреймворк был заменён на AVFoundation (программа для воспроизведения видео QuickTime изначально называлась QuickTime Player). Следующий релиз macOS от Apple, предварительно пронумерованный как 10.16, был официально представлен как macOS 11 на WWDC в июне 2020 года и выпущен в ноябре 2020 года. Следующая версия macOS, macOS Monterey, была выпущена в октябре 2021 года и увеличила свой основной номер версии до 12.
Microsoft Windows
Операционная система Microsoft Windows впервые получила стандартные номера версий для Windows 1.0 – Windows 3.11. После этого Microsoft перестала указывать номер версии в названии продукта. Для Windows 95 (версия 4.0), Windows 98 (4.10) и Windows 2000 (5.0) год выпуска включался в название продукта. После Windows 2000 Microsoft создала семейство Windows Server, которое продолжило использовать стиль, основанный на годе выпуска, но с одним отличием: для незначительных релизов Microsoft добавляла суффикс "R2" к названию, например, Windows Server 2008 R2 (версия 6.1). Этот стиль сохранялся до настоящего времени. Однако клиентские версии Windows не придерживались единого стиля. Сначала они получали имена с произвольными буквенно-цифровыми суффиксами, как в случае с Windows Me (4.90), Windows XP (5.1) и Windows Vista (6.0). Затем Microsoft снова стала использовать последовательные номера в названии, но на этот раз это были не номера версий; номера версий Windows 7, Windows 8 и Windows 8.1 составляют соответственно 6.1, 6.2 и 6.3. В Windows 10 номер версии увеличился до 10.0, а последующие обновления ОС изменяли только номер сборки и номер редакции сборки (UBR). Преемник Windows 10, Windows 11, был выпущен 5 октября 2021 года. Несмотря на название "11", основная версия новой Windows не была увеличена до 11, а осталась на том же значении 10.0, что и у Windows 10.
Другие схемы
Некоторые производители программного обеспечения используют различные схемы для обозначения релизов своего программного обеспечения. Проект Debian использует схему нумерации основных и дополнительных версий для выпусков своей операционной системы, но во время разработки использует кодовые имена из фильма «История игрушек» для обозначения стабильных, нестабильных и тестовых релизов. BLAG Linux и GNU используют очень большие номера версий: основные релизы имеют номера, такие как 50000 и 60000, а дополнительные релизы увеличивают этот номер на 1 (например, 50001, 50002). Альфа- и бета-версии получают десятичные номера версий, незначительно меньшие, чем номер основного релиза, например, 19999.00071 для альфа-версии 1 версии 20000 и 29999.50000 для бета-версии 2 версии 30000. Начиная с 9001 в 2003 году, самая последняя версия на 2011 год – 140000. Urbit использует систему версионирования Кельвина (названную в честь абсолютной шкалы температуры Кельвина): номера версий программного обеспечения начинаются с высокого числа и уменьшаются до версии 0, после чего программное обеспечение считается завершённым и дальнейшие изменения в него не вносятся.
Номера внутренних версий
Программное обеспечение может иметь "внутренний" номер версии, который отличается от номера версии, указанного в названии продукта (и который обычно следует правилам нумерации версий более последовательно). Например, Java SE 5.0 имеет внутренний номер версии 1.5.0, а версии Windows, начиная с NT 4, продолжают использовать стандартную числовую нумерацию версий внутри системы: Windows 2000 – NT 5.0, XP – Windows NT 5.1, Windows Server 2003 и Windows XP Professional x64 Edition – NT 5.2, Windows Server 2008 и Vista – NT 6.0, Windows Server 2008 R2 и Windows 7 – NT 6.1, Windows Server 2012 и Windows 8 – NT 6.2, а Windows Server 2012 R2 и Windows 8.1 – NT 6.3, однако первая версия Windows 10 была 10.0 (10.0.10240). При этом важно отметить, что Windows NT имеет только пятую основную редакцию, поскольку ее первый релиз был пронумерован 3.1 (чтобы соответствовать номеру выпуска Windows того времени), а выпуск Windows 10 привел к скачку версии с 6.3 до 10.0.
Предварительные версии
В сочетании с различными схемами версионирования, перечисленными выше, обычно используется система обозначения предварительных версий, по мере продвижения программы через этапы жизненного цикла выпуска программного обеспечения. Программы на ранней стадии разработки часто называют "альфа"-версиями, по аналогии с первой буквой греческого алфавита. После достижения определенной зрелости, но еще не будучи готовыми к выпуску, они могут называться "бета"-версиями, по аналогии со второй буквой греческого алфавита. Как правило, альфа-версии тестируются только разработчиками, а бета-версии распространяются для тестирования сообществом. Некоторые системы используют числовые версии, меньшие 1 (например, 0.9), чтобы указать на приближение к финальному релизу "1.0". Это распространенная практика в программном обеспечении с открытым исходным кодом. Однако, если предварительная версия предназначена для существующего программного пакета (например, версии 2.5), к номеру версии может быть добавлена буква "a" или "alpha". Таким образом, альфа-версия 2.5 может быть обозначена как 2.5a или 2.5.a. Альтернативным подходом является обозначение предварительных версий как "релиз-кандидатов", при котором программные пакеты, готовящиеся к выпуску в качестве определенной версии, получают этот тег версии, дополненный "rc #", указывающим номер кандидата; после выпуска финальной версии тег "rc" удаляется.
Поезд спуска
Поезд выпуска программного обеспечения — это форма графика выпуска программного обеспечения, при которой несколько различных серий версионных выпусков для разных продуктов выпускаются в виде ряда "поездов" по регулярному графику. Обычно для каждой линейки продуктов одновременно существует несколько различных поездов выпуска, каждый из которых проходит путь от первоначального выпуска до зрелости и последующего снятия с поддержки по запланированному графику. Пользователи могут опробовать более новый поезд выпуска, прежде чем внедрять его в производственную среду, что позволяет им экспериментировать с новыми, "сырыми" версиями на ранней стадии, продолжая использовать точечные релизы предыдущего поезда для своих производственных систем до перехода на новый поезд выпуска, когда он достигнет зрелости. Программная платформа IOS от Cisco на протяжении многих лет использовала график выпуска в виде поездов с множеством различных поездов. В последнее время модель поезда выпуска также была принята рядом других платформ, включая Firefox и Fenix для Android, Eclipse, LibreOffice, Ubuntu, Fedora, Python, digiKam и VMware.
Версии с нечетным номером для релизов разработчиков
Между версиями 1.0 и 2.6.x ядро Linux использовало нечётные номера второстепенных версий для обозначения версий разработки и чётные – для обозначения стабильных версий; например, Linux 2.3 представлял собой семейство разработки второго основного дизайна ядра Linux, а Linux 2.4 – семейство стабильных версий, к которому развился Linux 2.3. После номера второстепенной версии в ядре Linux следует номер релиза, по возрастанию; например, Linux 2.4.0 → Linux 2.4.22. Начиная с релиза ядра 2.6 в 2004 году, Linux больше не использует эту систему и перешёл к гораздо более короткому циклу выпуска. Аналогичная система чётных и нечётных номеров используется в некоторых других программах с длительными циклами выпуска, таких как Node.js до версии 0.12, а также GNOME и WineHQ.
Убрать наиболее значимый элемент
У Java от Sun временами использовалась гибридная система, где внутренний номер версии всегда был 1.x, а в маркетинге указывался только x: JDK 1.0.3, JDK 1.1.2 – 1.1.8, J2SE 1.2.0 ("Java 2") – 1.4.2, Java 1.5.0, 1.6.0, 1.7.0, 1.8.0 ("Java 5, 6, 7, 8").
JDK 1.0.3
JDK 1.1.2 through 1.1.8
J2SE 1.2.0 ("Java 2") through 1.4.2
Java 1.5.0, 1.6.0, 1.7.0, 1.8.0 ("Java 5, 6, 7, 8")
Sun также отказалась от первой цифры в нумерации Solaris, где Solaris 2.8 (или 2.9) в маркетинговых материалах именовалась как Solaris 8 (или 9). Подобный переход произошел и с конструктором открытой АТС Asterisk в начале 2010-х годов, когда лидеры проекта объявили, что за текущей версией 1.8.x последует версия 10. Этот подход, подвергшийся критике со стороны многих из-за нарушения семантического значения частей номера версии, был принят все большим числом поставщиков, включая Mozilla (для Firefox).
Системы упорядочения номеров версий
Версионные номера очень быстро эволюционируют от простых целых чисел (1, 2, ...) до рациональных чисел (2.08, 2.09, 2.10) и затем до нечисловых "номеров", таких как 4:3.4.3 2. Поэтому эти сложные номера версий лучше рассматривать как строки символов. Операционные системы, включающие средства управления пакетами (например, все нетривиальные дистрибутивы Linux или BSD), будут использовать алгоритм, специфичный для данного дистрибутива, для сравнения номеров версий различных программных пакетов. Например, алгоритмы сортировки Red Hat и производных дистрибутивов отличаются от алгоритмов дистрибутивов, подобных Debian. В качестве примера неожиданного поведения при реализации порядка номеров версий, в Debian ведущие нули игнорируются в частях номера, поэтому 5.0005 и 5.5 считаются равными, а 5.5 < 5.0006. Это может ввести пользователей в заблуждение; инструменты поиска по строкам могут не найти заданный номер версии; и это может привести к скрытым ошибкам в управлении пакетами, если программисты используют структуры данных с индексацией строк, такие как хэш-таблицы, индексированные номером версии. Для упрощения сортировки некоторые программные пакеты представляют каждый компонент схемы "основной.незначительный.релиз" с фиксированной шириной. Perl представляет свои номера версий в виде числа с плавающей точкой; например, релиз Perl 5.8.7 также может быть представлен как 5.008007. Это позволяет теоретически представить версию 5.8.10 как 5.008010. Другие программные пакеты упаковывают каждый сегмент в фиксированное количество бит; например, в Microsoft Windows номер версии 6.3.9600.16384 будет представлен в шестнадцатеричном формате как 0x0006000325804000. Схема с плавающей точкой перестает работать, если любой сегмент номера версии превышает 999; упакованная двоичная схема, использующая по 16 бит на сегмент, перестает работать после 65535.
and then to non numeric "numbers" such as 4:3.4.3 2. These complex version numbers are therefore better treated as character strings. Operating systems that include package management facilities (such as all non trivial Linux or BSD distributions) will use a distribution specific algorithm for comparing version numbers of different software packages. For example, the ordering algorithms of Red Hat and derived distributions differ to those of the Debian like distributions. As an example of surprising version number ordering implementation behavior, in Debian, leading zeroes are ignored in chunks, so that 5.0005 and 5.5 are considered as equal, and 5.5<5.0006. This can confuse users; string matching tools may fail to find a given version number; and this can cause subtle bugs in package management if the programmers use string indexed data structures such as version number indexed hash tables. To ease sorting, some software packages represent each component of the major. minor. release scheme with a fixed width. Perl represents its version numbers as a floating point number; for example, Perl's 5.8.7 release can also be represented as 5.008007. This allows a theoretical version of 5.8.10 to be represented as 5.008010. Other software packages pack each segment into a fixed bit width; for example, on Microsoft Windows, version number 6.3.9600.16384 would be represented as hexadecimal 0x0006000325804000. The floating point scheme breaks down if any segment of the version number exceeds 999; a packed binary scheme employing 16 bits apiece breaks down after 65535.
Версия 1.0 как веха
Сообщества свободного программного обеспечения и открытого исходного кода обычно выпускают программное обеспечение на ранних стадиях разработки и делают это часто. Первоначальные версии имеют номера меньше 1, и эти версии 0.x используются для обозначения того, что программное обеспечение не завершено и недостаточно надежно для общего использования или применения в текущем состоянии. Обратная несовместимость – обычное явление для версий 0.x. Версия 1.0 используется как важный рубеж, указывающий на то, что программное обеспечение включает в себя как минимум все основные функции, а также те, которые разработчики планировали реализовать в этой версии, и считается достаточно надежным для общего выпуска. Достичь версии 1.0.0 удалось только к 1994 году. Разработчики эмулятора аркадных игр MAME не планируют выпускать версию 1.0 программы, поскольку всегда будут появляться новые аркадные игры для эмуляции, и проект, таким образом, никогда не сможет быть полностью завершен. Соответственно, за версией 0.99 последовала версия 0.100. С момента широкого распространения интернета большинство поставщиков коммерческого программного обеспечения перестали придерживаться принципа, согласно которому основная версия должна быть "полной", и вместо этого полагаются на патчи с исправлениями ошибок для устранения известных проблем, для которых найдено решение и которые можно исправить.
Номера версий в маркетинге
Относительно распространенной практикой является значительное увеличение номеров версий в маркетинговых целях. Иногда разработчики программного обеспечения пропускают релиз 1.0 или быстро выпускают версию с последующим номером, поскольку многие клиенты считают программное обеспечение версии 1.0 слишком незрелым для использования в производственной среде. Например, как в случае с dBase II, продукт запускается с номером версии, который создает впечатление большей зрелости, чем есть на самом деле. В других случаях номера версий увеличиваются, чтобы соответствовать номерам конкурентов. Это можно увидеть на многих примерах нумерации версий продуктов Microsoft, America Online, Sun Solaris, Java Virtual Machine, SCO Unix и WordPerfect. Microsoft Access перешла с версии 2.0 на версию 7.0, чтобы соответствовать номеру версии Microsoft Word. Microsoft также стала объектом "догоняющей" нумерации: браузеры Netscape пропустили версию 5, перейдя сразу к 6-й, в соответствии с Microsoft Internet Explorer, но также и потому, что пакет приложений Mozilla унаследовал номер версии 5 в строке пользовательского агента на этапе разработки до версии 1.0, а Netscape 6.x был создан на кодовой базе Mozilla. Другой пример стремления не отставать от конкурентов – переход Slackware Linux с версии 4 на версию 7 в 1999 году.
Суеверия
Версия Microsoft Office 2007 имела внутренний номер 12. Следующая версия, Office 2010, имеет внутренний номер 14 из-за суеверий, связанных с числом 13. Visual Studio 2013 – это версия 12.0 продукта, а новая версия Visual Studio 2015 имеет номер версии 14.0 по той же причине. Roxio Toast перешла из версии 12 в версию 14, вероятно, чтобы избежать суеверий, связанных с числом 13. WordPerfect Office от Corel, версия 13, продается как "X3" (римское число 10 и "3"). Эта практика продолжилась в следующей версии, X4. То же самое произошло с графическим пакетом Corel (например, CorelDRAW, Corel Photo Paint), а также с программой для видеомонтажа "Video Studio". Sybase пропустила основные версии 13 и 14 в своем реляционном продукте баз данных Adaptive Server Enterprise, перейдя с 12.5 на 15.0. ABBYY Lingvo Dictionary использует нумерацию 12, x3 (14), x5 (15). SUSE Linux Enterprise пропустила версии 13 и 14 после версии 12 и сразу выпустила SLES 15 в июле 2018 года.
Культура гейков
Дистрибутив SUSE Linux начал отсчет с версии 4.2, отсылая к числу 42 – "ответу на главный вопрос о жизни, Вселенной и всем сущем", упомянутому в книге Дугласа Адамса "Автостопом по Галактике". Дистрибутив Slackware Linux получил версию 13.37, как отсылка к леету. Finnix пропустил версии с 93.0 до 100, частично чтобы подтвердить утверждение "Finnix '95 не будет", что является отсылкой к Windows 95. Спецификация формата Tagged Image File Format использует 42 в качестве внутреннего номера версии с момента своего создания, и её разработчики не планируют его менять в будущем, поскольку это противоречило бы принципам разработки.
Преодоление предполагаемых трудностей с маркетингом
В середине 1990-х годов быстро развивающаяся CMMS Maximo перешла из Maximo Series 3 сразу к Series 5, пропустив Series 4 из-за предполагаемых маркетинговых сложностей, связанных с этой цифрой на китайском рынке, где число 4 ассоциируется со "смертью" (см. тетрафобию). Это не помешало выпуску версии 4.0 Maximo Series 5. (После выпуска версии 1.0 серии 5 система нумерации "серий" была упразднена, что фактически привело к сбросу номеров версий.)
В области программного обеспечения
Номера версий используются конечными пользователями или клиентами для идентификации или сравнения их копии программного продукта с другой, например, с самой новой версией, выпущенной разработчиком. Для программистов или компаний версионирование часто применяется к каждому отдельному изменению, когда отдельные части программного обеспечения сравниваются с более новыми или старыми версиями этих же частей, часто в рамках совместной системы контроля версий. В XXI веке все больше программистов стали использовать формализованную политику версионирования, такую как семантическое версионирование. Цель этих политик – облегчить другим программистам понимание того, когда изменения в коде могут привести к несовместимости с их собственным кодом. Такие политики особенно важны для программных библиотек и фреймворков, но также могут быть полезны для приложений командной строки (которые могут вызываться из других приложений) и любых других приложений (которые могут быть расширены или использоваться в скриптах сторонними разработчиками). Версионирование также необходимо для реализации многих схем исправления и обновления программного обеспечения, особенно для автоматического определения, что и куда обновлять.
В технической поддержке
Номера версий позволяют специалистам службы поддержки точно определить, какую версию кода использует пользователь, чтобы исключить уже исправленные ошибки в качестве причины проблемы и тому подобное. Это особенно важно для программ с большим сообществом пользователей, особенно когда поддержка оказывается не разработчиками. Семантика нумерации версий, ревизий и изменений также важна для ИТ-специалистов, которые используют её для оценки объема необходимого тестирования и анализа перед внедрением новой версии. Как правило, чем масштабнее изменения, тем выше вероятность возникновения проблем (хотя изучение журнала изменений, если он есть, может показать лишь незначительные или несущественные правки). Это одна из причин критики подхода, при котором отказываются от крупных релизов, как это сделано в Asterisk и других проектах: теперь ИТ-специалистам необходимо (или, по крайней мере, рекомендуется) проводить полное регрессионное тестирование для каждого обновления.
Использование, не связанное с программным обеспечением
Некоторые компьютерные файловые системы, такие как OpenVMS Filesystem, также хранят версии файлов. Версионность документов в целом аналогична практике, используемой в компьютерной сфере и разработке программного обеспечения, где при каждом небольшом изменении структуры, содержимого или условий номер версии увеличивается на 1 или на другое значение – большее или меньшее, в зависимости от личных предпочтений автора и масштаба или значимости внесенных изменений. Номера версий программного обеспечения встречаются и в других медиа. В некоторых случаях это прямая аналогия (например, Jackass 2.5 – версия фильма Jackass Number Two с дополнительными материалами; второй альбом Garbage под названием Version 2.0; или Dungeons & Dragons 3.5, где правила были пересмотрены по сравнению с третьим изданием, но не настолько, чтобы считаться четвертым). Чаще всего это используется для создания ассоциации с высокими технологиями и не обозначает фактическую «версию» (например, Tron 2.0 – видеоигра, продолжение фильма Tron, или телесериал The IT Crowd, где второй сезон называют Version 2.0). Особенно примечательным примером является Web 2.0, обозначающий веб-сайты начала 2000-х годов, ориентированные на пользовательский контент, удобство использования и совместимость. Файлы технических чертежей и CAD-программ также могут использовать простейшие номера версий для отслеживания изменений.