Version Compatibility

Client Server Protocol Recording
2.2.0 2.x.x dp:4.24.0 24.0
2.1.4–2.1.20 dp:4.21.2 21.2
2.1.3
2.1.2
2.1.0, 2.1.1
2.0.9–2.0.11 dp:4.20.1 20.1
2.0.8
2.0.6, 2.0.7
2.0.0–2.0.5
1.0.5, 1.0.6 1.0.x 15.6 ≤15.6
1.0.4
1.0.3
1.0.0–1.0.2

Drawpile’s versions consists of three or four parts:

  1. The server version.
  2. The major version.
  3. The minor version.
  4. If it’s a development or beta release, it will have some kind of suffix identifying it as such.

For example, if you got version 1.2.3, the server version is 1, major version is 2 and minor version is 3. A beta release may look something like 1.2.3-beta.4.

A change in the minor version doesn’t break any compatibility. It may add new features or fix bugs, but all files and sessions will be interoperable. The protocol version won’t change between these.

A change in the major version represents a client-side change. Usually this means that you can’t join sessions hosted by different major versions, but the server doesn’t need to be updated.

A change in the server version means that the network protocol is entirely incompatible. The client and server version must match for anything to work.

Protocol Versions

Drawpile’s network protocol also has versions. They work similar to the application version.

All clients in the same session must share the exact protocol version number (e.g. dp:4.22.0), unless they happen to provide additional compatibility modes.

A client can use any server that supports the same server protocol version (4 in case of Drawpile 2.0.) However, some new features may not work with older servers.

The protocol version number consists of four parts:

  1. namespace (dp)
  2. server version (4, indicates change to client↔server protocol)
  3. major version(20, indicates change to client↔client message structure)
  4. minor version (1, indicates change to client↔client message semantics)

See the protocol revision history for details

Stability Promises

  • Compatibility is never broken in patch releases (e.g. 2.0.0 → 2.0.1)
  • Client compatability may only be broken between minor number bumps (e.g. 2.0.0 → 2.1.0)
  • Server compatibility may only be broken between major number bumps (e.g. 2.0.0 → 3.0.0)
  • Any new feature added without a protocol version bump must be backward/forward compatible

Notes About Recording Compatiblity

  • Version 1.0.6 can play recordings made with all previous versions (exact reproduction not guaranteed)
  • Version 2.0.0 cannot play recordings made with older versions
  • Opening recordings with a newer minor number will likely produce unexpected results
  • Opening recordings with a newer major number will likely result in missing drawing actions