NOTES ON VERSION COMPATIBILITY

This file attempts to document the compatibility issues between
different Subversion clients and servers. More specifically, where we
want to change our (WebDAV) protocol usage in an incomptabile way, and
our stepwise plan towards rolling out that change.


BINARY PROPERTIES
=================

Change: to signify that a property is binary, we will add an attribute
        onto the property element that specifies its encoding (base64
        or standard XML entity escaping).

Problem: old clients and servers will not be looking for this
         attribute, and will not decode the contents appropriately.

The current plan from issue 1015:
---------------
Okay, I've decided to propagate this functionality in three stages,
with a couple of milestones between each stage:

   (1) server and client learn to recognize and handle the new
   'V:encoding' attribute on properties.  at this point, no binary
   properties will actually be coming across the ra-dav wire.  (0.20
   milestone)

   (2) server starts to transmit non-XML-safe properties with the
   'V:encoding="base64"' attribute and the property value
   base64-encoded.  during this interim period, clients will be to get
   binary properties from the server, but will not be able to commit
   new or modified binary properties.  (0.21 milestone)

   (3) clients starts to transmit non-XML-safe properties with the
   'V:encoding="base64"' attribute and the property value
   base64-encoded.  this is the moment of full support.  (0.22
   milestone)

All the code for full support will be in place, but disabled
functionality will be wrapped in SVN_DAV_FEATURE_BINARY_PROPS
#defines.

When stage 2 is ready to go into 0.21, we just remove the #defines
from the code in mod_dav_svn, commit, and reset this issue to have a
0.24 milestone.

When stage 3 is ready to go into 0.22, we just remove the #defines
from the code in libsvn_ra_dav, lose the #define itself from
svn_dav.h, commit, and close this issue.
---------------


REPOSITORY UUIDS
================

Change:

Problem:

Plan:


PROPERTY NAMESPACES
===================

Change:

Problem:

Plan:


HANDLING OF UNKNOWN XML ELEMENTS
================================

Change:

Problem:

Plan:

  [note: need to review any "else" conditions to ensure we don't fall
   into them for unknown/future props; some if constructs might have
   assumed only (say) three elements were possible, so only tested for
   two of them, and fell to the else for the third]
