   X.Org   and   XFree86  Version  Numbering  SchemesThe  XFree86
   Project,  IncUpdated for X11R7.2 by Keith Packard and Kevin E.
   Martin22  May  2006X.Org  has adopted the same basic numbering
   scheme  used  by the XFree86 Project, Inc. for their releases.
   The  actual numbers are different, but the basic scheme is the
   same.  This  document reflects the policy that X.Org uses. The
   version  numbering  schemes  used by XFree86 have changed from
   time  to  time.Releases, Development Streams and BranchesAs of
   the  release of version X11R6.7 in March 2004, X.Org has three
   release  branches.  First  is the trunk of the CVS repository.
   This  is  the  main development stream, where all new work and
   work  for  future releases is done.Second is the stable bugfix
   branch  for  the  latest  full  release (7.1.0). It is created
   around  the  time  of  the release. The branch for the current
   release  is  called "XORG-7_1-branch". Fixes for bugs found in
   the  release  will  be  added  to  this branch (as well as the
   trunk),  and updates to this release (if any) will be cut from
   this  branch. Similar stable branches are present for previous
   full  releases.The  X.Org  Foundation is planning to make full
   releases from the main development stream at regular intervals
   in  the  6-12  month  range.  The  feature  freezes  for these
   releases  will usually be 2-3 months before the release dates.
   This  general  plan  is  a goal, not a binding commitment. The
   actual  release  intervals  and  dates  will depend to a large
   degree  on  the  resource  available  to  X.Org. Full releases
   consist  of  full  source  code  tarballs,  plus  full  binary
   distributions    for   a   range   of   supported   platforms.
   Update/bugfix  releases  will be made on an as-required basis,
   depending  also  on  the  availability  of resources, and will
   generally  be  limited  to serious bug and security fixes. New
   features  will  not  usually  be  added  in  update  releases.
   Update/bugfix  releases  will  not  be full releases, and will
   consist  of  source  code  patches,  plus binary updates to be
   layered  on  top  of  the  previous full release.The next full
   release  will  be  version  7.2.Aside  from  actual  releases,
   snapshots of the active release branches are tagged in the CVS
   repository  from  time  to  time.  Each  such  snapshot has an
   identifiable  version  number.Current  (new) Version Numbering
   SchemeStarting with the main development branch after X11R6.7,
   the  X.Org  versions  are  numbered  according  to  the scheme
   outlined here.The version numbering format is M.m.P.s, where M
   is  the major version number, m is the minor version number, P
   is  the  patch  level,  and  s  is  the  snapshot number. Full
   releases  have  P  set to zero, and it is incremented for each
   subsequent  bug fix release on the post-release stable branch.
   The  snapshot  number  s  is  present only for between-release
   snapshots  of  the development and stable branches.Development
   BranchImmediately  after  forming a release stable branch, the
   patch  level  number for the main development branch is bumped
   to  99,  and the snapshot number is reset. The snapshot number
   is  incremented  for each tagged development snapshot. The CVS
   tag  for  snapshots  is  "XORG-M_m_P_s".  When the development
   branch enters feature freeze, the snapshot number is bumped to
   900.  A stable branch may be created for the next full release
   at  any  time after the feature freeze. When it is, the branch
   is   called   "XORG-M_m-branch".   The   snapshot   number  is
   incremented from there until the release is finalised. Each of
   these  snapshots is a "release candidate". When the release is
   finalised,  the  minor version is incremented, the patch level
   is  set  to  zero,  and  the snapshot number removed.Here's an
   example  which  shows  the  version  number  sequence  for the
   development   leading  up  to  version  6.8:6.7.99.1The  first
   snapshot   of   the  pre-6.8  development  branch.6.7.99.23The
   twenty-third    snapshot    of    the    pre-6.8   development
   branch.6.7.99.900The     start     of    the    6.8    feature
   freeze.6.7.99.903The  third 6.8 release candidate.6.8.0The 6.8
   release.6.8.99.1The  first pre-6.9 development snapshot, which
   is  the  first  main  branch  snapshot  after creating the 6.8
   stable  branch.Stable  BranchAfter  a full release, the stable
   branch  for  the release will be maintained with bug fixes and
   important  updates  until the next full release. Any snapshots
   on  this  branch are considered "release candidates", which is
   indicated  by  setting  s  to a number above 900. The snapshot
   number  is  incremented  for  each release candidate until the
   update  release  is  finalised.  The  patch level value (P) is
   incremented  for  each  update release.Here's an example which
   shows   a   version   number   sequence  for  a  6.8.x  stable
   branch:6.8.0The   6.8  release.6.8.0.901The  first  pre  6.8.1
   snapshot.6.8.0.903The  third pre 6.8.1 snapshot, also known as
   the    third    6.8.1    release    candidate.6.8.1The   6.8.1
   release.6.8.1.901The  first  pre 6.8.2 snapshot.6.8.2The 6.8.2
   release.Finding  the  X.Org  X Server Version From a ClientThe
   X.Org  X servers report a VendorRelease value that matches the
   X.Org  version  number. There have been some cases of releases
   where   this   value  wasn't  set  correctly.  The  rules  for
   interpreting  this  value  as well as the known exceptions are
   outlined  here.For post-6.7.0 development and release versions
   using  the  new  numbering  scheme, the VendorRelease value is
   MMmmPPsss.  That  is, version M.m.P.s has VendorRelease set to
   M * 10000000 + m * 100000 + P * 1000 + s.The  following  is  a
   code  fragment  taken  from  xdpyinfo.c  that  shows  how  the
   VendorRelease    information    can    be    interpreted.   if
   (strstr(ServerVendor(dpy),   "X.Org"))   {   int   vendrel   =
   VendorRelease(dpy);       printf("X.Org      version:      ");
   printf("%d.%d.%d",  vendrel  /  10000000, (vendrel / 100000) %
   100,   (vendrel  /  1000)  %  100);  if  (vendrel  %  1000)  {
   printf(".%d", vendrel % 1000); } }
