Има много начини за номериране на версиите на програмите. Общото е, че едно число се увеличава, но разликата между новата и старата версия рядко носи числов смисъл, а по-скоро маркира етапа в развитието на продукта.
По този повод професор Edsger Dijkstra твърди, че 1.0 трябва да е финалната версия, от която програмата не трябва да може да става по-добра. Заради подобни твърдения той е упрекван от мнозина в академичен утопизъм. Аз бих бил убеден от доводите на напатилите практици, ако не беше гениалния твърдоглавец D.J. Bernstein, чийто основни продукти qmail и djbdns са няколко минорни версии над 1.0, само заради още по-гениалната упоритост на хора като Георги Гунински да му натрият носа. Друг академичен гигант Donald Knuth прегръща безкрайната незавършеност на софтуера и избира конвенцията да добавя още една цифра от числата pi или е, за да означава новата версия на програмните пакети ТеX и Metafont.
На този фон се замислих как аз бих изразил етапа на развитие на програмка или документ. В традиционната Unix философия едно нещо трябва да върши само едно нещо, но пък да го върши добре. Воден от подобни мисли, стигнах до следните философски изисквания за промяната на номера:
- Версията никога не трябва да достига 1.0, а само да клони към него. Съвършенството не е достижимо, може само да се стремим към него. Аз не съм Дийкстра или djb, за да си въобразявам, че мога да направя нещо перфектно.
- Нарастването на номера трябва да отразява подхода от общото към конкретното и разбирането, че последващите малки по обем подобрения и оптимизации отнемат равно усилие с първоначалното създаване на общата груба функционалност на първия работещ прототип. Казано по друг начин – усилието да стигнеш от версия 0.5 до версия 0.6 е равно, примерно, на усилието да стигнеш от 0.95 до 0.96. Нямам отговор каква е тази функция и какви стойности трябва да е достигнала след определен брой итерации.
- Версията трябва да не преминава float point точността на нормален човек. Т.е. трябва да използва разумно малък брой цифри, за да не се затрудни сравнението и възприемането ѝ като нова.
Съзнавам че изискванията са неясни най-вече по отношение на т.2 и затова ще се опитам да дам няколко познати примера. Подобни ситуации са Ахил и костенурката, състезанието на Червената кралица от Алиса или отношението на Парето. Най-лесно ми е да илюстрирам идеята с графиката на функцията 1-1/х, но не мисля, че тя най-добре отразява усещането ми:
Може ли някой, който разбира по-добре математика, да опита да изкаже с функция ситуацията, която се опитвам да опиша?