NEVALOR STUDIO

Write. Revise. Finish.

—

A focused writing space for developing novels, short stories, poetry, essays and other literary projects — free worldwide for budding and professional writers, with no login required. Your work remains private and secure: even Nevalor Publishers does not know who you are or what you write unless you choose to send us your manuscript for publishing.

THE WRITING SPACE

Everything you need to develop a manuscript

Nevalor Studio brings writing, organisation, revision, formatting, statistics and manuscript export together in one focused workspace.

Nevalor Studio manuscript editor
01 — WRITE

A dedicated place for your manuscript

Create projects, organise chapters and write or revise your manuscript in a focused writing environment. Chapters can be rearranged, and saved revisions allow you to preserve earlier versions of your work.

Nevalor Studio formatting menu
02 — FORMAT

Keep the manuscript clean and readable

Format paragraphs, headings and quotations, or apply italic, underline and alignment. Dedicated scene breaks make it simple to separate scenes while keeping the manuscript structure clear.

Nevalor Studio Revision History
03 — REVISE

Earlier versions remain within reach

Save revisions as your manuscript develops. Revision History lets you open earlier saved versions, view them and restore one when needed, while your current text is preserved before restoration.

Nevalor Studio manuscript statistics
04 — UNDERSTAND

See how your manuscript is developing

Statistics show total words, total characters, chapters, average words per chapter, the longest and shortest chapters, estimated reading time and blank chapters.

Nevalor Studio Export Manuscript
05 — EXPORT

Turn your manuscript into a finished file

Export your manuscript as TXT, JSON or PDF. PDF export includes proper book formatting, including page numbers and scene breaks. Choose from several book sizes. English (UK) hyphenation is applied automatically.

MORE TOOLS

Search & Replace

Search your chapter or project, with case-sensitive search and options to find, replace one occurrence or replace all.

Writing Tools

Find the next or previous match, move to the beginning or end, centre the cursor, insert date and time, undo and redo.

Focus Mode

Give the writing area more room by removing unnecessary elements while you concentrate on the manuscript.

Backup JSON

Create a backup of your project and saved revision history, then import it whenever you need to restore your work.

Export TXT

Export a plain-text copy of your manuscript whenever you need a simple, portable version of your work.

Writing Session Target

Set a writing target for your session and keep track of your progress while working on your manuscript.

New to Nevalor Studio?

Learn how Studio works, explore its tools and discover how to begin your first project.

READ THE USER GUIDE →

Your next book starts with a blank page.

Enter Nevalor Studio and begin writing.

ENTER NEVALOR STUDIO

Reading a Version Number: Major, Minor, Patch

Studio Editorial | Digital Publishing

THE PREMISE
“ A label such as v2.1.2 looks like a small piece of technical housekeeping. In fact, it is a compact promise. Each digit tells you what has changed, how much has changed and whether what worked yesterday will still work today — if you know how to read it. ”

Every app on your phone, every program on your computer and every page of code behind a website carries a small label of numbers and dots. Most people never look at it. Those who do can learn a great deal from three digits.

A version number is the name a piece of work gives to one particular moment in its life. It answers a simple but important question: which copy is this? When a program is fixed, improved or rebuilt, the new copy needs a new name, so that people can tell it apart from the old one, report problems accurately and decide whether it is safe to upgrade.

Writers and publishers have always understood this need. A manuscript passes through drafts; a book passes through editions and printings. Software simply made the problem more urgent. A program may change every week, and thousands of other programs may depend on it. Without a clear, shared way of naming each change, the whole system would become guesswork.

The most widely used answer to that problem is a three-part number such as 2.1.2. This article explains what each part means, how the numbers move, what the letters and symbols around them signify, and why not every version number follows the same rules.

Anatomy of v2.1.2

The modern convention is called Semantic Versioning, often shortened to SemVer. It was written by Tom Preston-Werner, a co-founder of GitHub, and published at semver.org; version 2.0.0 of the specification, the one still in use, appeared in 2013. Its central idea is that a version number should carry meaning. Each of the three positions answers a different question about the change.

Anatomy of a version number
v
Prefix
2
Major
.
1
Minor
.
2
Patch
Major · 2
Something has changed in a way that may break what depended on the old version.
Minor · 1
New features have been added, but everything that worked before still works.
Patch · 2
Mistakes have been fixed; nothing new has been added and nothing has been broken.

In the specification’s own words, you increment the MAJOR version “when you make incompatible API changes”, the MINOR version “when you add functionality in a backward compatible manner” and the PATCH version “when you make backward compatible bug fixes”.

An API — an application programming interface — is simply the public face of a program: the functions, commands, settings or formats that other people and other programs rely on. The key word throughout is compatible. The question each digit answers is not “how much work went into this?” but “will this change disturb the people who already use it?”

Read this way, v2.1.2 says a great deal: this is the second generation of the product; it has gained one round of new features since that generation began; and it has received two rounds of bug fixes since those features arrived.

How the digits move

A version number behaves rather like the odometer in a car, with one important difference: when a higher digit goes up, every digit to its right returns to zero. The specification is explicit about this. The patch number resets when the minor number increases, and both reset when the major number increases.

From v2.1.2, the next release could be…
A bug fix
2.1.2 → 2.1.3
Only the last digit moves.
A new feature
2.1.2 → 2.2.0
The minor digit rises; the patch returns to zero.
A breaking change
2.1.2 → 3.0.0
A new generation begins, and the count starts again.

Two further rules keep the system honest. First, each part must be a whole, non-negative number without leading zeros — 2.1.2, not 2.01.02. Second, once a version has been released, its contents must never be altered. If something is wrong with 2.1.2, the fix becomes 2.1.3. A version number is a name for one fixed thing, and the name must not quietly come to mean something else.

Numbers, not decimals

The most common misreading of version numbers comes from school arithmetic. Because the parts are separated by dots, it is tempting to read them as decimal fractions. They are not. Each part is a separate whole number, counted on its own.

Which is newer: 2.9 or 2.10?
Read as a decimal
2.9 > 2.10
Because 0.9 is larger than 0.1. Wrong.
Read as a version
2.10 > 2.9
Because ten comes after nine. Right.

So the sequence 1.8.0, 1.9.0, 1.10.0, 1.11.0 is perfectly normal, and a program can reach version 4.27.103 without anything unusual having happened. Comparing two versions means comparing the major numbers first; only if they are equal do you compare the minor numbers, and only if those are equal do you compare the patches.

Before 1.0, and the meaning of 1.0.0

Many projects begin life with a version number that starts with zero, such as 0.3.1. Semantic Versioning gives this a precise meaning: “Major version zero (0.y.z) is for initial development.” While the first digit is zero, anything may change at any time, and nobody should treat the program as stable.

That makes 1.0.0 a genuine milestone rather than a vanity number. According to the specification, “Version 1.0.0 defines the public API.” It is the moment the makers say, in effect: this is the shape of the thing, and from now on we will tell you, through the version number, whenever we change it in a way that matters.

Alpha, beta and release candidates

Before a version is finished, its makers often want people to test it. Semantic Versioning allows a pre-release label to be attached with a hyphen: 2.2.0-alpha, 2.2.0-beta.2, 2.2.0-rc.1. The traditional sequence is:

Alpha — early and incomplete; features may still be missing or unstable. Beta — feature-complete, but still being tested and corrected. Release candidate (rc) — believed to be ready; released for final checks, and published unchanged if no serious problem appears.

A pre-release always ranks below the finished version it leads to. So 2.2.0-rc.1 comes before 2.2.0, not after it. The specification gives a full example of the order:

The climb to a finished release
alpha
alpha.1
beta
beta.2
beta.11
rc.1
1.0.0
Every step before the last is a pre-release of 1.0.0, and each ranks below the finished version. Note that beta.11 comes after beta.2: numbers are compared as numbers.

A second, rarer addition is build metadata, attached with a plus sign: 1.0.0+20130313144700 or 1.0.0-beta+exp.sha.5114f85. It records information about how a particular copy was produced — a date, a build number, an identifier from the code repository — but it is deliberately ignored when deciding which version is newer.

The complete form, read left to right
2.1.2-rc.1+build.45
2.1.2
The version itself: major, minor, patch.
-rc.1
Pre-release: not yet final; ranks below 2.1.2.
+build.45
Build metadata: a record, ignored in ordering.

What about the “v”?

Strictly speaking, the letter is not part of the number. The Semantic Versioning specification addresses this directly: “v1.2.3” is not itself a semantic version, but “prefixing a semantic version with a ‘v’ is a common way (in English) to indicate it is a version number.” So v2.1.2 and 2.1.2 name the same release. The “v” is a label on the jar, not part of its contents — useful in a sentence, a file name or a heading, where a bare 2.1.2 might be mistaken for a date, a price or a section number.

Why the promise matters

The real value of Semantic Versioning becomes clear when programs depend on one another. A modern website or app may be assembled from hundreds of smaller packages written by other people. Each of those packages keeps changing. The version number is how the builder decides, automatically and safely, which updates to accept.

Package managers turn the meaning of the digits into rules. In the widely used npm system for JavaScript, for example, a caret or a tilde in front of a version sets the range of updates that may be installed:

Trusting the digits: two common ranges
^2.1.2
≥ 2.1.2 and < 3.0.0
Accept new features and fixes, but never a new major version.
~2.1.2
≥ 2.1.2 and < 2.2.0
Accept bug fixes only; wait for a person to approve new features.

This only works if the people publishing the packages keep their side of the bargain. If a breaking change is slipped into a patch release, thousands of projects that trusted the number may break overnight. That is why the discipline matters more than the digits themselves. A version number is useful exactly to the extent that it is honest.

The same discipline governs how features are retired. Semantic Versioning recommends that a feature should first be marked as deprecated — still working, but officially on its way out — in at least one minor release, before it is finally removed in a new major release. Users get warning; the major number tells them when the warning has come true.

Not every version number is semantic

Semantic Versioning is widespread, but it is a convention, not a law. Many respected projects number their releases in other ways, each suited to its own purpose. Before reading meaning into a version number, it is worth knowing which system produced it.

Six ways of counting
Semantic
2.1.2
Digits describe compatibility. Used by countless libraries and packages.
Calendar
24.04
Digits describe the date. Ubuntu 24.04 was released in April 2024.
Four-part
2.0.1.3
Major, minor, build, revision — the pattern of Microsoft’s .NET.
Running count
4.20 → 5.0
The Linux kernel moves its first digit when the second grows “large enough”.
Release train
94, 95, 96…
Browsers raise the major number on a fixed schedule, every four weeks.
Marketing
“5” = 1.5.0
A public name chosen for the market, not the code — as with Java 5.

Calendar versioning, or CalVer, uses the release date as the number. Ubuntu’s versions follow a year-and-month pattern, so 24.04 means April 2024; the Python installer pip uses the year followed by a release count. Such numbers say nothing about compatibility, but they tell you at a glance how old a release is.

Four-part versions add a further level of detail. Microsoft’s .NET defines its version as major, minor, build and revision. A different build number usually means the same source code recompiled; a different revision is intended to be fully interchangeable — a security fix, for example.

The Linux kernel says plainly in its own documentation that it does not use Semantic Versioning. A new kernel arrives every two or three months and its second number simply increases; when that number is judged large enough, the first number goes up instead — which is how Linux 4.20 was followed by 5.0. Fixes to an existing kernel are then released with a third number, as in 5.2.21.

Web browsers use a release train: a new major version leaves on schedule whether its changes are large or small. Google moved Chrome to a new milestone every four weeks starting with Chrome 94 in 2021, and Mozilla moved Firefox to a four-week cycle in 2020. That is why browser numbers are now in the hundreds; a high major number there means a long history, not a long list of breaking changes.

Marketing versions are chosen for the public rather than the engineers. Sun Microsystems released Java “5.0” in 2004, while the version string inside the software still read 1.5.0. Years later, the version-string scheme introduced with Java 9 dropped the old “1.” prefix entirely. The public name and the technical name had simply drifted apart.

The curious case of TeX

The most eccentric version number in computing belongs to TeX, the typesetting system created by the computer scientist Donald Knuth and still used for mathematical and scientific publishing. Knuth decided that TeX was essentially finished. From version 3 onwards, instead of counting up, each update would add one more digit of π.

TeX · VERSION 3.141592653Ï€
A version number that converges
3
3.1
3.14
3.141 …
3.141592653 (2021)

The current version of TeX is 3.141592653, last updated in 2021. Its companion program, METAFONT, approaches the number e in the same way and stands at 2.7182818. Knuth has said that after his death the version number will be set to Ï€ itself, and any remaining bugs will become permanent features. The joke carries a serious idea: a version number can express a philosophy. TeX’s numbers say that the work is not growing any more, only becoming more exact.

Publishers were versioning first

Long before software, the book trade developed its own versioning system — and its logic is remarkably close to Semantic Versioning.

A new edition of a book means the text has been substantially revised: chapters added, rewritten or removed. Page numbers no longer match, and a citation to the old edition may not work for the new one. That is a major version. A new printing, or impression, reproduces the same edition, perhaps with a handful of typographical errors corrected. Page numbers stay the same, and every reference remains valid. That is a patch.

From a copyright page
Second Edition
10 9 8 7 6 5 4 3
The printer’s key: each time the book is reprinted, the lowest number is removed. This copy belongs to the third printing of the second edition — in software terms, roughly version 2.0.2.

Readers, librarians and scholars rely on these distinctions for the same reason programmers rely on version numbers: to know exactly which text is in front of them. When a reference in a Nevalor Post article cites a particular edition, it is doing precisely what a dependency list does in software — naming the version that the argument was built upon.

The changelog: the story behind the number

A version number tells you how much has changed. It cannot tell you what. That is the job of the changelog, a plain record of the notable changes in each release. The widely followed guide Keep a Changelog, created by Olivier Lacan, recommends that changelogs be written for people rather than machines, that every version have an entry with its release date, that the latest version come first, and that changes be grouped under six headings: Added, Changed, Deprecated, Removed, Fixed and Security.

A changelog entry, in practice
## [2.1.2] — 2026-10-12
### Fixed
– Chapter links no longer open the wrong page on mobile.
– Curly quotation marks now display correctly in titles.

## [2.1.0] — 2026-09-28
### Added
– Readers can now bookmark a chapter.
### Deprecated
– The old print layout; it will be removed in 3.0.0.

Notice how the changelog and the number support each other. Version 2.1.0 added a feature, so the minor digit rose. Version 2.1.2 only fixed problems, so only the patch digit moved. And the deprecation warning tells readers, well in advance, that the next major version will remove something.

Versioning your own work

Version numbers are not only for large software companies. Anyone who edits the same file repeatedly — a web page, a template, a manuscript, a design — benefits from naming each copy clearly. At Nevalor, every piece of code delivered for the website carries a version number in its opening HTML comment, so that the right copy is always the one that gets pasted. The same habit serves a writer revising a novel or an editor preparing a page.

Five habits of good versioning
1
Put the number on the thing.
In the file’s header, the page’s footer or the book’s copyright page — not only in your head.
2
Change it every time.
Even the smallest released change deserves a new number.
3
Never reuse a number.
Once v2.1.2 exists, it means one thing forever.
4
Let the digit match the change.
Fixes move the last digit; additions move the middle; upheavals move the first.
5
Write down what changed.
A few lines of changelog turn a number into a history.
A version number is not a measure of effort.
It is a promise about what has changed — and what has not.

The next time an app asks you to update to version 2.1.2, the number will no longer be a meaningless string. You will know that you are on the second generation of the program, that it has gained one round of new features, and that this update — moving only the last digit — fixes problems without asking you to relearn anything.

Three small digits, two dots and an optional “v”. Read carefully, they tell the story of a piece of work: where it began, how it has grown and how much its makers can be trusted to keep their word.

Studio Editorial | Digital Publishing
Version numbers, semantic versioning and release practice

Editorial Note

This Studio Editorial offers a general introduction to version numbers for writers, publishers and readers rather than a technical manual. Rules quoted from Semantic Versioning are taken from version 2.0.0 of the specification. Release schedules and numbering practices described for individual products are accurate at the time of writing and may change; readers working with a particular system should consult its official documentation, listed below.

References and further study

Chromium Blog. “Speeding Up Chrome’s Release Cycle.” March 4, 2021.

Coghlan, Alyssa, and Donald Stufft. “PEP 440 – Version Identification and Dependency Specification.” Python Enhancement Proposals. Accessed October 12, 2026.

Hashemi, Mahmoud. “Calendar Versioning.” CalVer. Accessed October 12, 2026.

Knuth, Donald E. “The Future of TeX and METAFONT.” TUGboat 11, no. 4 (1990): 489.

Kothari, Ritu, and Yan Or. “Moving Firefox to a Faster 4-Week Release Cycle.” Mozilla Hacks, September 2019.

Lacan, Olivier. “Keep a Changelog 1.1.0.” Keep a Changelog. Accessed October 12, 2026.

Linux Kernel Documentation. “How the Development Process Works.” The Linux Kernel. Accessed October 12, 2026.

Microsoft. “Version Class (System).” Microsoft Learn: .NET API Reference. Accessed October 12, 2026.

npm. “node-semver: The Semantic Versioner for npm.” GitHub. Accessed October 12, 2026.

OpenJDK. “JEP 223: New Version-String Scheme.” OpenJDK. Accessed October 12, 2026.

Preston-Werner, Tom. “Semantic Versioning 2.0.0.” Semantic Versioning. Accessed October 12, 2026.

Sun Microsystems. “Version 1.5.0 or 5.0?” J2SE 5.0 Release Notes. Santa Clara, CA: Sun Microsystems, 2004.

Ubuntu. “Releases.” Ubuntu Wiki. Accessed October 12, 2026.

Comments

Popular Posts

Some Great Authors
Explore Great Authors →
CURATED INDEX | BROWSE BY LABEL