як застосовується семантична версія для програм без API


42

У http://semver.org/ - яка, на мій погляд, здається, найбільш широко застосовується у версії версій - рекомендується збільшити основний номер версії, коли вводиться зміна, яка порушує / модифікує API.

Є два пов'язані сценарії, я не бачу, як застосувати цю інструкцію:

  1. Що робити, якщо мій код не пропонує API? Як мені версію коду?
  2. Що робити, якщо мій код почне пропонувати API на пізній стадії свого розвитку?

7
У пункті 1 специфікації зазначено: Програмне забезпечення, що використовує семантичну версію, ОБОВ'ЯЗКОВО оголосити публічний API. Цей API може бути оголошений у самому коді або суворо існувати в документації. Однак це робиться, воно повинно бути точним і всебічним. Тож я здогадуюсь, що ви технічно не використовуєте SemVer, тому це повністю залежить від вас.
Мураха P

Перегляньте цю статтю, яка пропонує гарне рішення для програм, які не пропонують жодного API, як-от додатків для настільних комп’ютерів: softwareengineering.stackexchange.com/a/357887/269082
ferit

Відповіді:


48

Semver в основному стурбований версіями бібліотек і пакетів таким чином, щоб уникнути пекло залежностей, оскільки це різні втілення. Однак ідея Semver може поширюватися на всі види програм - будь-який фрагмент коду має якийсь інтерфейс користувача, або він досить марний.

  • Бібліотека програмування або веб-служба має API.
  • Споживче програмне забезпечення може мати графічний інтерфейс.
  • Програми командного рядка мають набір комутаторів та опцій.
  • Файли конфігурації - це також інтерфейс користувача.

Використовуючи приклад споживчого програмного забезпечення, такого як текстовий процесор:

  • Збільште номер виправлення, коли ви надсилаєте виправлення помилки, наприклад: " виправлена ​​помилка, коли програма завжди виходить з ладу в 00:00 у вівторок ".
  • Збільшення другорядного номера версії при додаванні нової функції, наприклад: " додана підтримка підкресленого тексту ".
  • Збільшуйте основну версію, коли ви істотно переробляєте користувальницький інтерфейс або переписуєте всі внутрішні пристрої. Наприклад: " Панелі інструментів використовують занадто багато властивостей екрана. Тепер інтерфейс користувача надається лише за допомогою жестів дотику »- така зміна порушить існуючі робочі процеси.

Однак багато проблем, які Семвер намагається вирішити, не існують поза зоною управління залежностями. У споживчих додатках версія - це не лише версія, але й маркетинговий актив.

  • Firefox та Chrome випускають нові версії порівняно часто і збільшують їх основний номер версії при кожному випуску. Це призводить до смішно високої кількості версій (обом зараз 30 років). Веб-переглядач з більшим номером версії повинен бути просто кращим, ніж браузер із меншим номером версії, правда?

  • Основний номер версії операційної системи Apple OS X став частиною назви (X - 10 за римськими цифрами), що робить малий номер версії ефективним основним номером версії.

  • Операційна система Ubuntu використовує схему версій року.month.patchlevel. Це дозволяє легко згадати, скільки років вашій ОС, але значно ускладнює з'ясування, які версії сумісні, і скільки триває підтримка кожної версії.

  • Ядро Linux зіткнулося з номером версії від 2.6.39 до 3.0.0, оскільки воно 39було дещо більшим і відзначало 20-річчя Linux.

  • Легендарна система набору TeX Дональда Кнута використовує номер версії, який, починаючи з версії 3, переходить до π, додаючи ще одну цифру при кожному випуску: 3.14159265…. Це означає, як система наближається до досконалості. Аналогічно, система Metafont сходиться до e : 2.7182818….

Таким чином, багато заявок не надто добре обслуговуються Semver. Виберіть схему версій, яка підходить для ваших користувачів (незалежно від того, чи є вони іншими програмістами або споживачами), і дотримуйтесь її послідовності.


1
Багато програмного забезпечення, що виробляється засобами розробки Microsoft, мають формат ABCD, де AB - це "загальні" основні / другорядні номери версій, а CD кодує дату / час, коли програмне забезпечення було створене.
MZB

Мені подобається семантика системи версій π.
Ogier Schelvis
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.